2011-06-01から1ヶ月間の記事一覧

Boost のバージョンの取得方法

ideone の Boost のバージョンを取得したかったのでついでに覚書。 [ソース] #include <boost/version.hpp> #include <iostream> int main(){ std::cout << BOOST_VERSION << std::endl; std::cout << "major version:" << BOOST_VERSION / 100000 << std::endl; std::cout << "minor vers</iostream></boost/version.hpp>…

Vim で、mpl::string を使いやすくしてみる

mpl::string は、4文字ごとに分割しないとダメなので、コードを書くのがめんどくさかったりします。 // 4文字数えるのなんてめんどくさいよ!! mpl::string<'yaki','niku','tabe','taiJ','P'> yakinikutabetaiJP; こんな時は、Vim Script でやっちゃいまし…

Vim レベル

vim

3分ぐらいで考えた、Vim レベル。 自分基準なので、他の人に該当するかは分かりません。 vimrc をつくる vimrc に設定を書く Vim Plugin を導入する vim.org で Plugin を探し始める 自分好みのキーバンドを設定する コマンドを作り始める Vim Script でコー…

mpl::fold で遊んでみた

いまさら fold が便利だという事に気がついた! やっぱり、自分でコードを書かないとダメですねー。 [ソース] // 文字数が足りなかったので、ユーザ側で文字数を拡張 #define BOOST_MPL_LIMIT_STRING_SIZE 48 #include <boost/mpl/fold.hpp> #include <boost/mpl/vector.hpp> #include <boost/mpl/string.hpp> #include <boost/mpl/copy.hpp> #incl</boost/mpl/copy.hpp></boost/mpl/string.hpp></boost/mpl/vector.hpp></boost/mpl/fold.hpp>…

Quickrun で、プリプロセスの出力設定

Quickrun で、C++ のプリプロセスの出力設定です。 Boost.PP で遊ぶ場合に必須ですね。 下記の設定だと、非同期に処理されて、Vim のバッファに出力が行われます。 [_vimrc] let $BOOST_ROOT="D:/boost/boost_1_46_1" let include_dirs = $BOOST_ROOT let g:…

Boost.PP で、FizzBuzz をやってみた

とりあえず、何も考えずにベタ書き。 [ソース] #include <boost/preprocessor/if.hpp> #include <boost/preprocessor/cat.hpp> #include <boost/preprocessor/comparison/equal.hpp> #include <boost/preprocessor/logical/and.hpp> #include <boost/preprocessor/arithmetic/mod.hpp> #include <boost/preprocessor/enum_shifted.hpp> #define …</boost/preprocessor/enum_shifted.hpp></boost/preprocessor/arithmetic/mod.hpp></boost/preprocessor/logical/and.hpp></boost/preprocessor/comparison/equal.hpp></boost/preprocessor/cat.hpp></boost/preprocessor/if.hpp>

Vim で、連続して複数行のインデントを行う

vim

visual モードで、複数行のインデントを行うと、normal モードに戻ってしまい、連続でインデントが出来ないので、キーバインドを設定。 [_vimrc] " visual モードで連続して、インデント出来るように設定 vnoremap <silent> > >gv vnoremap <silent> < <gv [キーバインド] > →にインデントをずら</gv></silent></silent>…

Vim で、任意の位置から include を挿入する

vim

任意の位置から、include の挿入を簡単に行います。 include の定義は、include オプションに依存します。 [_vimrc] " 最後に定義された include 箇所へ移動して挿入モードへ nnoremap <silent> <Space>ii :execute "?".&include<CR> :noh<CR> o [キーバインド] ii 最後に定義された</cr></cr></space></silent>…

Vim で、対応する括弧をハイライトする

vim

Vim のオプションで設定できる、[set showmatch] では、カーソルが対応する括弧に一瞬移動してしまい、コーディングの妨げになってしまいます。 Highlight-UnMatched-Brackets プラグインを使用して、コーディングの妨げにならないように対応する括弧のハイ…

Vim で、Boost.PP を読みやすくする

C++

window.twttr = (function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0], t = window.twttr || {}; if (d.getElementById(id)) return t; js = d.createElement(s); js.id = id; js.src = "https://platform.twitter.com/widgets.js"; fjs.paren…

Quickrun で、複数の設定から選択してコンパイルする

vim

SingleCompile の [:SCChooseCompiler] コマンドを Quickrun でも再現してみました。 複数のコンパイラ設定や、細かいオプションの違いなんかを予め複数設定しておいて、用途によって設定を切り替えます。 (特に C++ は、msvc と gcc で結果が違ったり、C++…

Quickrun で、非同期コンパイル/実行が出来る設定を書いた

vim

Quickrun の製作者である、id:thinca さんに Quickfix へ出力を追加して頂いたので、真面目に Quickrun の設定をしました。 使用している、Quickrun は、v0.5.0 dev です。 詳しくは、ここら辺を参照してください。 とりあえず、現状はこんな感じ。 わかりや…

SingleCompile で、Scala のコンパイルテンプレート

vim

SingleCompile で、Scala のコンパイルテンプレートです。 とりあえず、scala と scalac を使用した版です。 [_vimrc] " scala の bin ディレクトリ let s:scala_bin = "D:/Scala/scala-2.9.0.1/bin" " scala で実行 call SingleCompile#SetCompilerTemplate…

おまえは、今までを書いた boost::is_same の数を覚えているか?

mpl::same_as なんてあったんですね、知りませんでした。 #include <boost/mpl/same_as.hpp> #include <boost/mpl/vector.hpp> #include <boost/mpl/count_if.hpp> #include <boost/mpl/assert.hpp> #include <boost/mpl/apply.hpp> #include <boost/mpl/equal_to.hpp> namespace mpl = boost::mpl; BOOST_MPL_ASSERT(( mpl::equal_to< mpl::app…</boost/mpl/equal_to.hpp></boost/mpl/apply.hpp></boost/mpl/assert.hpp></boost/mpl/count_if.hpp></boost/mpl/vector.hpp></boost/mpl/same_as.hpp>

カーソル移動せずに任意の場所へキー入力で移動する

vim

EasyMotion プラグインを使用することで、任意の単語位置へ簡単に移動することが出来ます。 [プラグイン] vim-easymotion [_vimrc] " キーバインドの先頭キーの設定 " デフォルトだと、'<Leader>' が設定されている " <Space>w の様な呼び出しを行いたいなら下記の設定にな</space></leader>…

Vim から、Evernote にアクセスする

vim

evervim を使用して、Vim 上から Evernote にアクセスして、ノートの作成や編集を行うことが出来ます。 [プラグイン] evervim [外部ツール] Evernote Python [コマンド] コマンド 動作 :EvervimSetup 初回起動時に1度だけ呼び出してアカウントの設定を行う :…

Vim 上から URL を開く

vim

TwitVim などを使用すると Vim 上から直接 URL を開きたいことがあります。 open-browser.vim を使用することで、Vim 上から簡単に URL を開く事が出来ます。 [プラグイン] open-browser.vim [_vimrc] " URL を開くキーバインドの設定 nmap <Space>op <Plug>(openbrowser-</plug></space>…

Vim のバッファ間の移動を楽にする

vim

buftabs を使用して、ステータスライン上に現在のバッファを表示します。 [プラグイン] buftabs [_vimrc] " バッファ名だけを表示する let g:buftabs_only_basename=1 " バッファ名をステータスライン内に表示する let g:buftabs_in_statusline=1 " ステータ…

Boost.Proto の式の戻り値型をユーザで定義する

『とりあえず、これで動いてる』版。これで合ってるのかな? Boost.Proto の BOOST_PROTO_DEFINE_OPERATORS 等を使用しないで、ユーザコードで、operator + や、plus 関数なんかを定義する場合の式の戻り値型を考えます。 式の戻り値型は長いですが、そんな…

Boost.Proto の式を型推論で評価する

うーん、こんな感じ? #include <boost/proto/proto.hpp> #include <iostream> namespace proto = boost::proto; //-------------------------------------- // 適当なベクトル型 struct vec{ int value[3]; }; vec make_vec(int x, int y, int z){ vec v = {{x, y, z}}; return v; } //------</iostream></boost/proto/proto.hpp>…

現在の状態を復元して gVim を再起動する

vim

restart.vim を使用することで、再起動時に現在の状態を復元することが出来ます。 [プラグイン] restart.vim [_vimrc] " 終了時に保存するセッションオプションを設定する let g:restart_sessionoptions \ = 'blank,buffers,curdir,folds,help,localoptions,…