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

quickrun.vim で無名バッファでも quickfix に出力されるようにしてみた

vim

quickrun.vim でファイルが存在しない時に :QuickRun を行うと一度テンポラリファイルに出力してから実行を行なっています。 この時にエラー出力がある場合、テンポラリファイルのパスを参照してしまい、quickfix で該当するバッファを参照することができま…

watchdogs.vim で errorformat が反映されなかった不具合を改善

vim

watchdogs.vim、というか quickrun.vim 側で対応してもらったんですが、参照する errorformat を quickfix/errorformat → l:errorformat → g:errorformat の順で適用してもらうようにしてもらいました。 (前者に設定がなければ後者を参照する。 これで g:er…

Boost.Generic が sandbox にて公開された

Boost.Generic, C++0x Concepts, and C++1y Concepts Boost.Generic - boostjp Boost.Generic ソースコード - sandbox 去年の BoostCon 2011 で発表されたあたまおかしい Boost.Generic が sandbox にて公開されました。 メールに色々と書いてあるんですが、…

Boost.TypeErasure の any でデフォルトコンストラクタを使用する

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 でハイライト(hier.vim)が更新されない不具合を修正

vim

ちょっと致命的なバグがあったので修正しました。 watchdogs.vim を更新して下さい。 :WatchdogsRun 後に hier.vim のハイライトが反映されないという不具合はこれで治ったと思います。 いろいろと不具合報告頂いて助かります。 他にも不具合があれば @manga…

watchdogs.vim で quickfix ウィンドウが開かない場合の対処方法

vim

watchdogs.vim では quickfix の出力に quickrun-outputter-quickfix を使用しています。 これは、内部で :cwindow コマンドを使用して quickfix ウィンドウを開いているのですが、ケースによっては quickfix ウィンドウが正しく開かない場合があります。 (…

watchdogs.vim つくりました

vim

前々から言っていた watchdogs.vim ですが、そろそろ煮詰まってきたのでまとめ記事にしようかと。 ちなみにこれとは関係ありません。 [追記] watchdogs.vim で quickfix ウィンドウが開かない場合の対処方法 watchdogs.vim でハイライト(hier.vim)が更新さ…

第3回 C++Now! 読書会

C++

行いました。 1回目に引き続き Haskell の濃い内容でした。 [読んだ資料] Haskell - C++テンプレートメタプログラミングのための擬似言語 [ログ] http://lingr.com/room/reading_cpp_now_2012_doc/archives/2012/09/23#message-12089750 Lingr にログインし…

vim-itunes に pull request した

vim

日頃から大変お世話になっている vim-itunes なのですが、Vim から操作する場合に system でスクリプトを呼び出している為、処理中に Vim のフォーカスが奪われてしまい、快適ではありませんでした。 と、いうことで快適に Vim からスクリプトの呼び出しを行…

最近の reanimate.vim 事情

vim

:ReanimateEditVimrcLocal コマンドを追加した 元々 reanimate.vim には各データのディレクトリに vimrc_local.vim ファイルを用意しておくことで、データの復元時にそのファイルも読み込んでくる、という機能が実装されているんですが、さすがにいちいち自…

unite-filetype つくった

vim

特に欲しい理由はなかったんですが、気分転換に書いてみた。 filetype の定義は runtimepath の syntax と indent を参照しています。 [プラグイン] unite-filetype - github NeoBundle "osyo-manga/unite-filetype" まぁやっていることは filetype を列挙し…

shabadou.vim を使って quickrun.vim をカスタマイズしよう

vim

汎用的な quickrun-hook をまとめた shabadou.vim を使用して簡単に quickrun.vim をカスタマイズしましょう! って、事で quickrun-hook を使用した quickrun.vim の設定を順を追って設定していきたいと思います。 shabadou.vim を使用すれば、コマンドが成…

quickrun.vim を使用した非同期で動作するシンタックスチェックプラグインをつくっています

vim

タイトルが横に長い…。 先週も書いていたんですが、quickrun.vim をバックエンドとしたシンタックスチェックプラグインを作っています。 とりあえず、最低限の機能を実装したものを github のリポジトリに上げました。 一応、日本語版 help もあります。 vim…

quickrun.vim で動的に各バージョンの Visual Studio のコンパイラを指定する

[追記] 中断した時に正しく終了していなかったので修正。 quickrun.vim 等で Visual Studio の cl.exe を使用してソースファイルをコンパイルをする場合、cl.exe のパスなどを環境変数に設定しておく必要があります これを quickrun-hook で動的に設定する事…

BOOST_FUSION_DEFINE_STRUCT 内で fusion::vector を使用する

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_FUSION_DEFINE_STRUCT でクラスを定義する場合、 名前空間 クラス名 クラスのメンバ を渡して定義するのですが、名前空間を指定しない場合(グローバル空間)もあると思います。 この場合は名前空間に BOOST_PP_EMPTY() を渡せばいいみたいです。 [ソ…

Haskell で hlint を使用したコードチェック

Haskell のコードチェックを行う hlint というツールを試してみました。 [hlint のインストール] $ cabal install happy $ cabal install haskell-src-exts $ cabal install hlint cabal を使ってサクッとインストール。 [テストコード] -- main.hs main = d…

Visual Studio Express 2012 Windows Desktop が公開

製品版は先月リリースされたんですが、無償版(Express) も公開されました。 これまでの xpress 版では、C++ や C# など言語別に配布されていたんですが、2012 からは Desktop 版という形で各言語を統合した形で配布されるようになりました。 これで無償で Vi…

quickrun でシンタックスチェックを行う

vim

最近、某マンボウに背びれでペチペチ叩かれながらプラグイン化するにあたって色々と思案していたりします。 手元の環境では既に実装済みなんですが、プラグイン化するにあたって細かい仕様考えをまとめるのがむずい…。。 ぶっちゃけ、シンタックスチェックで…

neocomplcache-clang_complete が必要なくなりました

元々 neocomplcache と clang_complete を併用して使用することが出来ない為、neocomplcache-clang_complete を使用する必要があったのですが、最近追加されたオプションを使用することで neocomplcache-clang_complete を使用する必要なくなりました。 neoc…

Vim で JSX のコード補完を行う

ちょっと最新版で試してみたので覚書。 以前、neocomplcache-jsx とか作ったんですが、それを使わないやり方です。 [必要なもの] jsx jsx.vim https://github.com/jsx/jsx.vim neocomplcache https://github.com/Shougo/neocomplcache [vimrc] " neocomplcac…

第2回 C++Now! 読書会を開催しました

無事に2回目を終了することが出来ました。 参加者の皆さんはお疲れ様でした。 [読んだ資料] Metaparse – テンプレートメタプログラミングによるコンパイル時構文解析 mpllibs - githubx [ログ] http://lingr.com/room/reading_cpp_now_2012_doc/archives/201…

unite.vim を起動した後に元のウィンドウにフォーカスを戻す

vim

欲しかったので適当にコマンドを定義。 既存の機能で出来るのかしら。 [ソース] " 使い方は :Unite と同じ command! -nargs=+ -complete=customlist,unite#complete_source \ UniteSilent \ execute ":Unite" <q-args> |call feedkeys("\<C-w>p") 何やっているかは見てわ</c-w></q-args>…

Boost.Fusion の invoke に関数テンプレートを渡したかった

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 は暗黙の型変換が行われない

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>…

quickrun の runner-vimproc で実行が遅いと感じた場合の対処方法

vim

Haskell で :QuickRun した場合に実行が異様に遅いなぁーと感じで解決方法を調べたので覚書。 結論から言うと updatetime が原因でした。 runner-vimproc はデフォルトでは updatetime の値を参照にしており、これを基準として更新処理を行っています。 その…

久々に Emacs を使ってみて

特に Emacs を強いられているわけではないのですが、最近 Emacs の機能とかプラグイン(helm とか)が気になってきたのである程度、Emacs 動作できる環境を作っておこうかなーって事で0から再セットアップしてみました。 一応、Emacs → Vim と移り変わったり…

来週の第10回 vimrc読書会は1時間遅れで開始します

vim

来週の vimrc読書会はいつもより 1時間遅い、 09/09(日)00:00〜 になります。 また、次回の vimrc は量が多いため、来週、再来週の2回に分けて1つの vimrcを読む予定です。 予定では、来週に1時間、再来週に2時間の時間を割り当てる感じになります。 参加…

第1回 C++Now! 読書会を開催しました

行いました。 まさかの4時間という長丁場になってしましましたが参加された方はお疲れ様でした。 [読んだ資料] モナドを使って可変長テンプレートメタプログラミング ※参考資料 Expressive C++: Expression Optimization - C++Next [ログ] http://lingr.com/…

vimfiler をプロジェクトエクスプローラとして使用する

vim

Shougo さんに実装していただいのでご紹介。 vimfiler に Visual Studio のような IDE で使用されるファイルエクスプローラを実装してもらいました。 通常の vimfiler と比べると ディレクトリの移動は行われない ディレクトリ移動の変わりに h と l でディ…