2012-09-01から1ヶ月間の記事一覧
quickrun.vim でファイルが存在しない時に :QuickRun を行うと一度テンポラリファイルに出力してから実行を行なっています。 この時にエラー出力がある場合、テンポラリファイルのパスを参照してしまい、quickfix で該当するバッファを参照することができま…
watchdogs.vim、というか quickrun.vim 側で対応してもらったんですが、参照する errorformat を quickfix/errorformat → l:errorformat → g:errorformat の順で適用してもらうようにしてもらいました。 (前者に設定がなければ後者を参照する。 これで g:er…
Boost.Generic, C++0x Concepts, and C++1y Concepts Boost.Generic - boostjp Boost.Generic ソースコード - sandbox 去年の BoostCon 2011 で発表されたあたまおかしい Boost.Generic が sandbox にて公開されました。 メールに色々と書いてあるんですが、…
any のデフォルトコンストラクタを使用する場合は Concept に relaxed_match を定義する必要があります。 [ソース] #include <boost/type_erasure/any.hpp> #include <boost/type_erasure/member.hpp> #include <boost/mpl/vector.hpp> #include <iostream> BOOST_TYPE_ERASURE_MEMBER((has_call), call, 1) struct X { void call(int n){ std::cout << "X</iostream></boost/mpl/vector.hpp></boost/type_erasure/member.hpp></boost/type_erasure/any.hpp>…
ちょっと致命的なバグがあったので修正しました。 watchdogs.vim を更新して下さい。 :WatchdogsRun 後に hier.vim のハイライトが反映されないという不具合はこれで治ったと思います。 いろいろと不具合報告頂いて助かります。 他にも不具合があれば @manga…
watchdogs.vim では quickfix の出力に quickrun-outputter-quickfix を使用しています。 これは、内部で :cwindow コマンドを使用して quickfix ウィンドウを開いているのですが、ケースによっては quickfix ウィンドウが正しく開かない場合があります。 (…
前々から言っていた watchdogs.vim ですが、そろそろ煮詰まってきたのでまとめ記事にしようかと。 ちなみにこれとは関係ありません。 [追記] watchdogs.vim で quickfix ウィンドウが開かない場合の対処方法 watchdogs.vim でハイライト(hier.vim)が更新さ…
行いました。 1回目に引き続き Haskell の濃い内容でした。 [読んだ資料] Haskell - C++テンプレートメタプログラミングのための擬似言語 [ログ] http://lingr.com/room/reading_cpp_now_2012_doc/archives/2012/09/23#message-12089750 Lingr にログインし…
日頃から大変お世話になっている vim-itunes なのですが、Vim から操作する場合に system でスクリプトを呼び出している為、処理中に Vim のフォーカスが奪われてしまい、快適ではありませんでした。 と、いうことで快適に Vim からスクリプトの呼び出しを行…
:ReanimateEditVimrcLocal コマンドを追加した 元々 reanimate.vim には各データのディレクトリに vimrc_local.vim ファイルを用意しておくことで、データの復元時にそのファイルも読み込んでくる、という機能が実装されているんですが、さすがにいちいち自…
特に欲しい理由はなかったんですが、気分転換に書いてみた。 filetype の定義は runtimepath の syntax と indent を参照しています。 [プラグイン] unite-filetype - github NeoBundle "osyo-manga/unite-filetype" まぁやっていることは filetype を列挙し…
汎用的な quickrun-hook をまとめた shabadou.vim を使用して簡単に quickrun.vim をカスタマイズしましょう! って、事で quickrun-hook を使用した quickrun.vim の設定を順を追って設定していきたいと思います。 shabadou.vim を使用すれば、コマンドが成…
タイトルが横に長い…。 先週も書いていたんですが、quickrun.vim をバックエンドとしたシンタックスチェックプラグインを作っています。 とりあえず、最低限の機能を実装したものを github のリポジトリに上げました。 一応、日本語版 help もあります。 vim…
[追記] 中断した時に正しく終了していなかったので修正。 quickrun.vim 等で Visual Studio の cl.exe を使用してソースファイルをコンパイルをする場合、cl.exe のパスなどを環境変数に設定しておく必要があります これを quickrun-hook で動的に設定する事…
BOOST_FUSION_DEFINE_STRUCT 内で下記のように fusion::vector を使いたい場合があるとします。 BOOST_FUSION_DEFINE_STRUCT( BOOST_PP_EMPTY(), person, (std::string, name) (fusion::vector<int, int>, pos) ) しかし、これでは "fusion::vector" が別々の引数であ</int,>…
BOOST_FUSION_DEFINE_STRUCT でクラスを定義する場合、 名前空間 クラス名 クラスのメンバ を渡して定義するのですが、名前空間を指定しない場合(グローバル空間)もあると思います。 この場合は名前空間に BOOST_PP_EMPTY() を渡せばいいみたいです。 [ソ…
Haskell のコードチェックを行う hlint というツールを試してみました。 [hlint のインストール] $ cabal install happy $ cabal install haskell-src-exts $ cabal install hlint cabal を使ってサクッとインストール。 [テストコード] -- main.hs main = d…
製品版は先月リリースされたんですが、無償版(Express) も公開されました。 これまでの xpress 版では、C++ や C# など言語別に配布されていたんですが、2012 からは Desktop 版という形で各言語を統合した形で配布されるようになりました。 これで無償で Vi…
最近、某マンボウに背びれでペチペチ叩かれながらプラグイン化するにあたって色々と思案していたりします。 手元の環境では既に実装済みなんですが、プラグイン化するにあたって細かい仕様考えをまとめるのがむずい…。。 ぶっちゃけ、シンタックスチェックで…
元々 neocomplcache と clang_complete を併用して使用することが出来ない為、neocomplcache-clang_complete を使用する必要があったのですが、最近追加されたオプションを使用することで neocomplcache-clang_complete を使用する必要なくなりました。 neoc…
ちょっと最新版で試してみたので覚書。 以前、neocomplcache-jsx とか作ったんですが、それを使わないやり方です。 [必要なもの] jsx jsx.vim https://github.com/jsx/jsx.vim neocomplcache https://github.com/Shougo/neocomplcache [vimrc] " neocomplcac…
無事に2回目を終了することが出来ました。 参加者の皆さんはお疲れ様でした。 [読んだ資料] Metaparse – テンプレートメタプログラミングによるコンパイル時構文解析 mpllibs - githubx [ログ] http://lingr.com/room/reading_cpp_now_2012_doc/archives/201…
欲しかったので適当にコマンドを定義。 既存の機能で出来るのかしら。 [ソース] " 使い方は :Unite と同じ command! -nargs=+ -complete=customlist,unite#complete_source \ UniteSilent \ execute ":Unite" <q-args> |call feedkeys("\<C-w>p") 何やっているかは見てわ</c-w></q-args>…
invoke であれば引数に sequence を渡すので 『そこから関数のシグネチャが推論出来るんじゃね?』 とか思ったんですが、引数型は推論出来ても戻り値型が推論できなくて無理でした。 とりあえず、こんな感じ。 [ソース] #include <boost/fusion/include/vector.hpp> #include <boost/fusion/include/make_vector.hpp> #include <boost/fusion/include/invoke.hpp> #incl</boost/fusion/include/invoke.hpp></boost/fusion/include/make_vector.hpp></boost/fusion/include/vector.hpp>…
Boost.TypeErasure の any のコンストラクタは explicit で定義されており、暗黙の型変換が行われません。 これは次のように関数の引数に any を使用する場合に問題になります。 [ソース] #include <boost/type_erasure/any.hpp> #include <boost/type_erasure/operators.hpp> #include <boost/mpl/vector.hpp> #include <iostream> typedef boost::mpl::vect</iostream></boost/mpl/vector.hpp></boost/type_erasure/operators.hpp></boost/type_erasure/any.hpp>…
Haskell で :QuickRun した場合に実行が異様に遅いなぁーと感じで解決方法を調べたので覚書。 結論から言うと updatetime が原因でした。 runner-vimproc はデフォルトでは updatetime の値を参照にしており、これを基準として更新処理を行っています。 その…
特に Emacs を強いられているわけではないのですが、最近 Emacs の機能とかプラグイン(helm とか)が気になってきたのである程度、Emacs 動作できる環境を作っておこうかなーって事で0から再セットアップしてみました。 一応、Emacs → Vim と移り変わったり…
来週の vimrc読書会はいつもより 1時間遅い、 09/09(日)00:00〜 になります。 また、次回の vimrc は量が多いため、来週、再来週の2回に分けて1つの vimrcを読む予定です。 予定では、来週に1時間、再来週に2時間の時間を割り当てる感じになります。 参加…
行いました。 まさかの4時間という長丁場になってしましましたが参加された方はお疲れ様でした。 [読んだ資料] モナドを使って可変長テンプレートメタプログラミング ※参考資料 Expressive C++: Expression Optimization - C++Next [ログ] http://lingr.com/…
Shougo さんに実装していただいのでご紹介。 vimfiler に Visual Studio のような IDE で使用されるファイルエクスプローラを実装してもらいました。 通常の vimfiler と比べると ディレクトリの移動は行われない ディレクトリ移動の変わりに h と l でディ…