2012-01-01から1年間の記事一覧

第1回 Boost.読書会

C++

行いました。 [ログ] http://www.co-meeting.com/snapshot/507847b3ab5c3703c7000b28 [参加メンバー] Koichi Oyama Shigemasa Watanabe faith_and_brave manga_osyo saki7 計5名 [所感] lingr で行なっている vimrc読書会や C++読書会と違って co-meeting 上…

Visual Studio 2012 に C++11 の機能が追加されるらしい

C++

Announcing November CTP of the C++ compiler, now with more C++11 Visual Studio 2012 に新しい C++11 の機能が追加される(された?)らしいので試してみました。 今回実装されたのは下記の機能です。 Variadic templates Uniform initialization and in…

Vim で一定時間ごとに処理を割り込む

vim

Vim で一定時間ごとに処理を呼びたい場合があると思います。 通常は autocmd に CursorHold や CursorHoldI に設定をすればいいのですが、この設定ではキー入力がない場合に続けてイベントが発生しません。 (一度 CursorHold が呼ばれてからキー入力がない…

Vim Advent Calendar 2012

vim

今年もこの季節がやってきましたね! 去年に引き続き今年もやろうかと思います。 Vim Advent Calendar 2012 基本的に参加人数や内容に関する制限はないので、気になった方はどんどん登録すればいいと思います! 目指せ、365日更新。

Vim script で Maybeモナド

やってみた。 動作するためには reti.vim と chained.vim が必要です。 こういうのをやっていると reti.vim が必須になってきますねぇ。 [ソース] let s:just = 1 let s:nothing = { "tag" : !s:just } function! s:nothing.bind(func) return self endfunct…

Vim script で現在の関数名を取得する

chained.vim を使用します。 [ソース] function! HomuFunction() echo chained#this_func() " => HomuFunction endfunction function! g:homu_function() echo chained#this_func() " => g:homu_function endfunction function! s:homu_function() echo chai…

C++ のラムダ式で [=] した場合、使用されなければコピーされない

C++

ラムダ式のキャプチャで [=] を使用すると全てのローカル変数をコピーしてキャプチャ出来るんですが、ラムダ内で使用されなかった変数はコピーされません。 [ソース] #include <iostream> struct X{ X(){ std::cout << "X::X()" << std::endl; } X(X const&){ std::cou</iostream>…

quickrun.vim の hook に同オプションを複数渡すと…

vim

ちとはまったので覚書。 まぁ普通はしないと思うんですが。 :QuickRun -hook/test/value homu -hook/test/value mami -hook/test/value mado のように同じオプションを複数渡すと hook 側ではリストで受け取ります。 [ソース] " quickrun-test {{{ let s:hoo…

C++ のラムダ式でキャプチャした値を変更する

C++

C++ のラムダ式で変数をコピーしてキャプチャした場合、その変数の値を変更する事ができません。 int n = 10; [n](){ // error n = 42; }; どうしても変更したい場合は mutable を付けることで変更することが出来るようになります。 [ソース] #include <iostream> int </iostream>…

Vim script で関数の引数を不変にする

vim

Vim script の関数の引数は基本的に読み取り専用なんですが、次のように思わぬところで辞書を書き換えてしまうようなケースがあります。 function! s:func(dict) " 呼び出し元の dict まで書き換えられてしまう call filter(a:dict, "len(v:val) < 4") endfu…

neobundle.vim でディレクトリを指定する

vim

neobundle.vim でインストールしたプラグインは neobundle#rc に渡したパスに作成されるのですが、NeoBundle ごとに保存するディレクトリを変更したい場合があります。 その場合は、下記のような感じで base に設定を行えば個別に変更が出来るみたいです。 N…

全ての型を継承する型を定義

Boost.MPL の inherit を使用すれば、テンプレート引数型を全て継承する型を定義することが出来ます。 [ソース] #include <boost/mpl/inherit.hpp> #include <iostream> #include <type_traits> struct X1{ int value; }; struct X2{ void func() const{ std::cout << "X2" << std::endl; } }; int main(){ </type_traits></iostream></boost/mpl/inherit.hpp>…

Vim script でコルーチンな処理を考えてみた

vim

元々 Vim script でスレッド処理が行いたかったのですが、残念ながらどうあがいてもそれは無理なので 『それならばコルーチンを使って細かく処理を分ければいいのでは?』 といったことが事がきっかけ。 まぁコルーチン自体は使ったことがないんですが。 で…

Vim script の is 演算子

vim

はじめて見たんですが、Vim script にインスタンスの参照を比較する is 演算子があります。 使い方はこんな感じ。 [ソース] function! s:main() let l1 = [1, 2, 3] let l2 = l1 " 同じインスタンスを参照しているか if l1 is l2 echo "homu" endif let l1[0…

neocomplcache-snippets-complete の名前が neosnippet に変更されました

vim

neocomplcache-snippets-complete は neosnippet になりました - あるVimmerのブログ という事なので使用している方は注意して下さい。 設定もこんな感じで変更しました。 [before] "スニペットのディレクトリ if !exists("g:neocomplcache_snippets_dir") l…

Vim script のカーソル下の関数を評価する

vim

Vim script のテストコードとか書いている時にいちいち call で呼び出すのも手間だなーって事でいい感じに呼べるようにマッピングしてみました。 必要なものは下記の Vim script です。 current-func-info.vim - github スクリプトローカルな関数を手軽に呼…

LLVM 3.2 は 12月16日にリリース予定

The LLVM Compiler Infrastructure LLVM 3.1 リリースまでのスケジュールは以下の通り。 11月11日 - Branching for 3.2 release 11月12〜29日 - Phase 1 - release candidate testing 11月29日 - End of Phase 1, all features completed 11月30日〜 12月12…

Vim で無名関数を扱うプラグインをつくった

vim

気がついたら結構本格的になってしまっていたのでいっそのことプラグイン化してようかと。 まぁ使い道があるのかわからないけども。 だいたいやりたいことはできた。 ちなみにプラグイン名はでちまるさんに考えてもらいました。 [プラグイン] vim-reti - git…

chained.vim つくった

vim

相変わらずプラグイン名から機能がわからないんですが、先日つくったこれをちょっと書きなおしてプラグインにしてみました。 vim-chained - github スクリプトローカル関数で SID を取得したり関数のコールスタックを取得できます。 まぁ一般ユーザにはあま…

neocomplcache で明示的に初期化を行う

vim

少し前に neocomplcache に遅延初期化機能が実装されました。 これは、Vim の起動時に初期化を行うのではなくて、最初のキー入力時に neocomplcache の初期化を行うというものです。 これで Vim の起動時間が短縮されます。 ただ、わたしの場合『Vim でキー…

Vim で関数の呼び出し元のスクリプト番号を取得する

vim

最近教えてもらった黒魔術を覚書。 と、いうかだいぶ改造したので原型があまり残っていない(基本的なロジックはそのままだけど。 簡単に説明すると g:SID() をつくりました。 とりあえず、こんな感じで使えます。 [使い方] function! s:main() " 呼び出し元…

Vim のタブページを前後に移動するマッピング

vim

欲しかったので書いてみました。 [ソース] " タブページの移動 command! -bar TabMoveNext :execute "tabmove" tabpagenr() % tabpagenr("$") command! -bar TabMovePrev :execute "tabmove" (tabpagenr("$") + tabpagenr() - 2) % tabpagenr("$") " マッピ…

unite-file で .exe や .dll も列挙する

vim

さて、unite-file では .exe ファイルの列挙が行われないのですが、個人的に存在しているファイルが列挙されないのは気持ちが悪いのでユーザ側で列挙されるように設定します。 [ソース] " unite-file の ignore_pattern を設定する call unite#custom_source…

Boost.読書会やります!!

また読書会かよ!!って感じではあるんですが、lingr でノリノリに雑談していたらいつの間にか Boost.読書会をやる事になりました。 な、何をいっているのかry。 こっちは C++オンライン読書会と違って結構真面目です。 例によってオンラインの読書会になり…

C++1y で非型テンプレートパラメータへの提案

C++

n3405 で面白い提案がされていたので覚書。 次のように非型テンプレートパラメータを受け取る場合、型を指定する必要がありました。 template<typename T, T t> struct X{}; X<int, 10>::value // == 10 X<bool, false>::value // == false これを n3405 の提案では // 受け取り側はこんな感じで書く</bool,></int,></typename>…

vital.vim の import と関数呼び出しを簡略化してみた

vim

さて、vital.vim をローカルで遊ぶ場合に一般的には下記のような使い方になると思います。 let s:V = vital#of("vital") let s:DataList = s:V.import("Data.List") let s:Prelude = s:V.import("Prelude") echo s:DataList.char_range("a", "z") echo s:Dat…

Vim で簡単に非同期処理を行うラッパを書いた

vim

バックエンドに vimproc を使用して、Vim script で簡単に外部コマンドの非同期処理が行えるようなラッパを書いてみました。 これで比較的簡単に非同期処理を行うことが出来ると思います。 例によって updatetime に依存しているので、その値が大きいと時間…

vimproc を使用して非同期で外部コマンドを実行し、後から結果を取得する

vim

殆ど quickrun.vim の写経なんですが、自分でも書いてみました。 [ソース] set updatetime=100 augroup vimproc-async-receive-test augroup END " コマンド終了時に呼ばれる関数 function! s:finish(result) echom "finish" echo a:result endfunction func…

C++オンライン読書会のまとめページを作成した

『C++Now! 読書会』改め C++オンライン読書会のページを boostjp につくりました。 vimrc読書会のページとレイアウトが似ていますが全くの偶然です。 C++オンライン読書会 - boostjp 名前を変更したのは C++Now! 以外にも読みたいというリクエストが多かった…

第4回 C++Now! 読書会

どうみてもぼっちです本当にry。 ※あとから人が増えました。 最初は1人で黙々と読んでいました。 Boost.Asio わからないマン。 [読んだ資料] 非同期について考える : Boost.Asioを使用したアプリケーション設計 [ログ] http://lingr.com/room/reading_cpp_n…