2012-07-01から1ヶ月間の記事一覧

:QuickRun かどうかの判定を行う hook 処理

vim

Vim script で :QuickRun 時のみ処理したい場合があったので判定できる様な hook を書いてみました。 [ソース] " :QuickRun 時のみ処理する " :source 時は処理されない if exists("quickrun_running") echo "hoge" endif " quickrun_running {{{ let s:hook…

Vim script から Vim のキーマッピングを呼び出す

vim

この間の vimrc 読書会で教えてもらいました。 feedkeys 関数でエミュレート出来るみたいです。 [ソース] function! g:twice() call feedkeys("yy") call feedkeys("p") call feedkeys("p") endfunction " call g:twice() でカーソル行をヤンクして2回コピー…

第4回vimrc読書会

vim

feedkeys() をおぼえた! これで勝つる。 [次回の読書会予定] 来週の 8/4(土) 23:00〜から行う予定です。 あと来週の生贄はわたしの vimrc らしいです_(:3ゝ∠)_ vimrc が5個ぐらいあるんだけどどうしよう…。

C++Now! 読書会 やりたい

C++

EffectiveC++ 読書会とかあるんですが C++Now! の資料を眺める『C++Now! 読書会』とかやりたいですね。 オフラインではなく、vimrc 読書会のようにオンラインチャットとかで。 オフラインだと参加出来ない人もいると思うし、何より発言しづらいと思うので。 …

Vim script のエラーを全て出力する quickrun-runner

vim

quickrun 0.6.0 (多分)から Vim script を実行する為の quickrun-runner が実装されました。 これを使用することで Vim script のエラーを quickrun-outputter で出力を行う事が出来ます。 しかし、現状の使用では最初のエラーしか出力が行われず、全ての…

LLVM/Clang ベースの clang-ctags

libclang を利用した ctags が開発されているらしい。 Announcing "clang-ctags" clang-ctags - github libclang の Python モジュール(cindex.py)を使用しているので Python で実装されているみたいですね。 ざっと見てみたところ Emacs で使用されている e…

Vim script のエラーを出力する quickrun-outputter

vim

元ネタ:関数対応版:Vim scriptをsourceしてエラーがあればquickfixに表示する - ぼっち勉強会 Vim script のエラー出力はちょっと特殊で、関数内でエラーが出た場合、その関数内の相対的な行番号を返すというすごく不親切なフォーマットだったりします。 わ…

BOOST_TYPE_ERASURE_MEMBER

Boost.TypeErasure に BOOST_TYPE_ERASURE_MEMBER というマクロが用意されており、これを使用すれば簡単に Concept を定義出来ます。 使い方はこんな感じ。 [ソース] #include <boost/type_erasure/any.hpp> #include <boost/type_erasure/member.hpp> #include <boost/mpl/vector.hpp> #include <boost/range/algorithm/for_each.hpp> #include <vector> BOOST_TYPE_ERASURE…</vector></boost/range/algorithm/for_each.hpp></boost/mpl/vector.hpp></boost/type_erasure/member.hpp></boost/type_erasure/any.hpp>

:QuickRun 時に cmdopt を追加する hook

vim

quickrun では config に cmdopt でコマンドオプションを設定することができます。 しかし、それとは別に :QuickRun 時にコマンドオプションを追加したい場合があります。 既存の機能では :QuickRun -cmdopt {オプション} のように :QuickRun 時にコマンドオ…

第三回vimrc読書会

vim

と をおぼえましたまる [次回] 第四回 vimrc読書会は7/28(土)23:00から行われます。 わたしはちょっと参加できるか分からない…。

コンパイルエラーを unite.vim へ出力した動画をキャプチャ

quickrun の結果を unite.vim へと出力を行なっている動画をキャプチャしました。 今はこんな感じでデバッグを行っています。 ウィンドウでバッファ管理を行うようにしたので、unite.vim が出力されている時でも簡単にファイルを行き来出来ていい感じ。

vimfiler でファイルのアイコンを表示させてみた

vim

TweetVim のアイコン表示を見ていて 『vimfiler でもファイルのアイコンを表示させれば面白いんじゃないか』 って事で簡単に表示させてみました。 とりあえず、こんな感じ。 [vimfiler] [ソース] let s:icons = { \ "vim" : "D:/vimfiler_icon/vim.ico", \ "…

最後の設定で :QuickRun を行う hook

vim

元ネタ:https://twitter.com/kanno_kanno/status/225611572389756928 C++ でコーディングしている場合、よくヘッダーを変更して :QuickRun する為に .cpp に戻るような動作を行なっているのですが、上記の quickrun-hook を使えばヘッダーからでも簡単に :Q…

Sprout で constexpr fused

最近 Sprout をあんまり触っていなかったんですが、いつの間にか実装されていました。 使い方は Boost.Fusion と同じですね。 [ソース] #include <sprout/functional.hpp> #include <sprout/tuple.hpp> #include <sprout/string.hpp> struct sum{ template<typename String> constexpr float operator ()(int a, String s, float f) const{ </typename></sprout/string.hpp></sprout/tuple.hpp></sprout/functional.hpp>…

Vim で改行時のインデントをスペースかタブ文字かを動的に決定する

vim

Vim で改行する時に前行のインデントを揃えるようにタブ文字を挿入するように設定しているんですが、ごく稀にタブ文字ではなくスペースでインデントを揃えて欲しい場合があります。 と、いうことで の場合にインデントをスペースで揃えるようなマッピングを…

第2回 vimrc 読書会

vim

先週の土曜日に vimrc 読書会が開催されました。 1回目の時は当日に宣伝されいたんですが、2回目は1週間前ぐらいから Twitter で宣伝していたので 1回目よりも人が来ている気がしましたね。 ┌(┌ ^o^)┐クリプボぅ! [vimrc] 当日の生贄 当日は @anekos さ…

quickrun の結果を unite.vim へ出力する

vim

既存の機能で一番簡単に実装するとこんな感じですかね。 [ソース] " quickrun-unite_qf {{{ let s:hook = { \ "name" : "unite_qf", \ "kind" : "hook", \ "config" : { \ "enable" : 0, \ } \} function! s:hook.priority(...) return 999 endfunction func…

TweetVim の TL を自動的に更新する

vim

ツイートした後に自動的に更新してくれると嬉しいよねー って事でちょっとためしてみました。 まぁレスポンスはかなり悪いですが…。 [ソース] augroup tweetvim_group autocmd! autocmd BufEnter \[tweetvim\] :TweetVimHomeTimeline augroup END [tweetvim]…

quickrun 後に元のバッファに戻る

vim

前回、元のタブに戻る quickrun-hook を定義してみたんですが、どうせならウィンドウ、バッファにも戻ったほうがいいかなーってことでちと追記。タブ→ウィンドウ→バッファの順で戻ります。 [ソース] let s:hook = { \ "name" : "back_buffer", \ "kind" : "h…

quickrun 後にコマンドを呼び出したタブに戻る hook

vim

quickrun-runner に vimproc を設定すると非同期で処理が行われるので、実行中(コンパイル中)タブ移動することがよくあります。 わたしの場合は、quickrun 後に unite.vim へと出力を行なっているんですが、その時に移動した先のタブで unite.vim が開いて…

TweetVim でフッターを設定する

vim

デフォルトでそういう機能が付いているかも知れませんが、サクッと Vim script 書きました。 [コード] function! s:tweetvim_footer(footer) silent $ put =a:footer call cursor(1, 1) endfunction let g:tweetvim_footer="[7/14(土)23:00からlingrでvimrc…

Vim の outputter/buffer に filetype を設定する

Emacs でプリプロセスの展開 - Life is very short ハイライトするのはいいなーと思って quickrun-hook で適当に setl ft=cpp でも埋め込もうかと思ったんですが outputter/buffer/filetype で直接設定出来るみたいです。 [quickrun_config] let g:quickrun_…

Vim でウィンドウ内バッファタブ

vim

バッファ移動・可視化するためにバッファごとにタブを生成しています。 しかし、これだとタブ内のウィンドウレイアウトを保持したままバッファ移動する事ができません。 例えば、上部にソースファイルウィンドウ、下部にエラーリストウィンドウを出力したま…

Vim でプリプロセスの展開

quickrun_config に予め設定しておけば便利だよ。ってお話。 [quickrun_config] let g:quickrun_config = { \ "cpp/g++-preprocessor" : { \ "exec" : "%c %o %s:p", \ "command" : "g++.exe", \ "cmdopt" : " -P -E -std=gnu++0x", \ }, \} [:QuickRun cpp/…

quickrun の設定晒し

vim

やりたい事はだいたいできたので晒します。 だいぶ量が多いですが、これでも quickrun-hook のお陰でかなりすっきりとしました。 特に解説とかはしない。 function! s:quickrun_config() return \ extend(copy(g:quickrun#default_config), get(g:, "quickru…

Boost.1.50.0 で がコンパイルエラーになる

Boost 1.5.0 の が gcc(clang) + std=c++0x でコンパイルエラーになります。 [ソース] #include <boost/fusion/include/deque.hpp> int main(){ return 0; } エラーは長いので省略。 msvc だと問題なかったです。 もコンパイルエラーになるし、1.50.1 とか来ないかしら。 [参照] http://lists</boost/fusion/include/deque.hpp>…

quickrun で filetype ごとの初期値を設定する

[目的] quickrun_config で各 filetype ごとに細かく config を設定をする場合、 let g:quickrun_config = { \ \ "cpp/msvc" : { \ "command" : "cl.exe", \ "exec" : "%c %o %s:p", \ "hook/output_encode/encoding" : "sjis" \ "hook/add_include_option/e…

quickrun の最終的なコマンドを出力する

vim

quickrun が構築した最終的なコマンドを確認したい事がたまにあるので、サクッと quickrun-hook で実装。 [ソース] let s:hook = { \ "name" : "output_command", \ "kind" : "hook", \ "config" : { \ "enable" : 1, \ "log" : 0 \ } \} function! s:hook.o…

Vim で python の errorformat

vim

[追記 2014/1/2] 正しくぱーすされていなかったので修正 デフォルトの errorformat ではうまくパースされなかったので適当に定義。 ってか、Vim で python 書いている人もいると思うけど困らないんだろうか。 let &l:errorformat = '%A File "%f"\, line %l%…

msvc2010 で boost::for_each を使用するとコンパイルエラーになる

と、いうのを Twitter で見かけたので試してみましたが、コンパイルエラーになりました。 どうやら から #include が削除されているのが原因みたい。 [ソース] #include <boost/range/algorithm/for_each.hpp> #include <iostream> int main(){ int v[] = {1, 2, 3, 4, 5}; boost::for_each(v, [](int n){ s</iostream></boost/range/algorithm/for_each.hpp>…