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

1週間ほど更新が滞ります

諸事情で1週間ほど更新が滞ります。 多分、来週の半ばぐらいに復帰できると思います。 あと今週土曜日に予定していた C++オンライン読書会なんですがこれもちょっと参加できそうにないです…ごめんなさ…。 余裕があれば顔出しぐらいはできるかもしれませんが…

昨日書いた neosnippet が本家に取り込まれた

vim

取り込まれました。 neosnippet で autoload に定義されている関数を prefix 付きで展開する [参照] http://lingr.com/room/vim/archives/2013/01/29#message-13777397

neosnippet で autoload に定義されている関数を prefix 付きで展開する

vim

autoload で定義する関数は、 " plugin/vim-sugarpot/autoload/sugarpot/remote.vim function! sugarpot#remote#func_name() endfunction のようにディレクトリ構成を prefix として付属させて定義することがあります。 しかし、ディレクトリが深いとこれを…

neobundle.vim で neobundle.vim を更新する

vim

通常、neobundle.vim を使用する場合、自分で runtimepath に追加して使用します。 しかし、これだけでは neobundle.vim で管理されずに neobundle.vim から更新を行うことができません。 こういう『runtimepath には追加しないけど neobundle.vim で管理し…

reanimate の category を master に merge しました

vim

これを master に merge しました。 保存しているデータのディレクトリ構成が変わっているので注意して下さい。 手動で変更させる必要があります。 詳しい変更は上記の記事を参考にして下さい。 問題があればコメントお願いします。

今日の vimrc 読書会は Shougo さんの vimrc を読みます

ネタがなかったので vimrc 読書会の宣伝でも。 さて、今日 23:00〜から開催される vimrc 読書会は unite.vim や neocomplcache の作者でお馴染みの Shougo さんの vimrc を読みます。 vimrc読書会 vimrc の量がちょっと多いので今日と来週の2回に分けて読む…

exists({:command}) に関する覚書

vim

:help exists() 読んでて知らなかったので覚書。 さて、特定のコマンドや変数、関数が存在するかどうかを判定する時に使用する exists() 関数ですが、コマンドの有無を判定する場合、戻り値に複数の意味が存在します。 :help exists() から引用するとこうい…

quickrun.vim で Vim script を非同期で実行

vim

やったーこれで出来たよー。 [ソース] let g:quickrun_config = { \ "vim/async" : { \ 'command': 'vim', \ 'exec': '%C -N -u NONE -i NONE -V1 -e -s --cmd "source %s" --cmd qall!', \ "runner" : "vimproc", \ "hook/output_encode/encoding" : "sjis"…

reanimate.vim にカテゴリ別で保存出来るような機能を実装している

vim

某マンボウに突かれながら実装始めました。 とりあえず、最低限の機能は出来たかな…。 まだ master には merge してないので使ってみたい方は category branch で試してみて下さい。 [注意] 保存ディレクトリの構成を変更しました。 使用する場合は手動でデ…

January standards papers mailing available

C++

January standards papers mailing available - Standard C++ isocpp なんか出てた。

ファイルを開いた時にそのファイルに関連付けられた Vim script 実行する

vim

が欲しいのでちょっと書いています。 要はファイルごとに vimrc_local を設定する感じ。 vimrc_local は上位、もしくは同じディレクトリ内にある vimrc_local.vim を読み込むような仕組みなんですが、個人的にあまりあちこちにファイルを置きたくないので管…

make_array

C++

前回書いたアレで、Sprout でいうところの make_array と make_common_array を同名の関数として定義出来そうなのでやってみました。 [ソース] #include <type_traits> #include <array> template<typename ...Args> std::array< typename std::common_type<typename std::decay<Args>::type...>::type, sizeof...(Args) > mak</typename></typename></array></type_traits>…

func(10) と func(10) で呼び出される関数を分ける

C++

例えば、こんな感じに『引数から型推論を行う関数』を呼び出す時に『テンプレート型を明示的に定義したかどうか』で呼び出される関数を別々にしたい場合があります。 template<typename T> void func(T&& t); // func(10) と func<int>(10) で呼び出す関数を別々にしたい func</int></typename>…

staticデータメンバーの明示的特殊化の使い方?

C++

元ネタ:staticデータメンバーの明示的特殊化 - 本の虫 パッと思い浮かんだのが値の初期化とかですかね。 [ソース] #include <iostream> #include <string> template<typename T> struct X{ static T value; }; template<typename T> T X<T>::value = 42; template<> char X<char>::value = 'c'; template<> floa</char></t></typename></typename></string></iostream>…

:NeoBundle 時にも on_source でプラグインの初期化処理をする

vim

元々 neobundle.vim の機能としては実装されていたんですがちょっと使い勝手をよくして頂いたので覚書。 さて、少し前までは以下のコードでは問題がありました。 " 元々 :NeoBundleLazy を設定していたが何らかの理由で後から :NeoBundle をする事になってし…

Sprout の make_array と make_common_array

最近 Boost ML で『make_array を用意しよう』みたいな提案がなされています。 Proposal: boost::make_array() 内容はあんまり読んでないんですが個人的にはあってもいいかなーと思っています。 最終的にどうなるんかな。 で、それはそれとして Sprout.Array…

定義されている全ての環境変数を取得する

C++

main 関数の第三引数で受け取ることが出来るらしい。 へぇー。 [ソース] #include <iostream> int main(int argc, char* argv[], char* envs[]){ for(auto env = envs ; *env != nullptr ; ++env){ std::cout << *env << std::endl; } return 0; } [出力イメージ] BOOS</iostream>…

C++ で環境変数の値を取得する

C++

そういえば今まで使ったことがないなぁー、ということで調べてみました。 getenv 関数で取得できるみたいです。 [ソース] #include <cstdlib> #include <iostream> int main(){ std::cout << std::getenv("HOME") << std::endl; std::cout << std::getenv("BOOST_ROOT") << std:</iostream></cstdlib>…

neobundle.vim で :NeoBundleSource してなくても :help を参照する

vim

以前、neobundle.vim で :NeoBundleLazy を設定している時にまだ :NeoBundleSource していなければ :help が参照できない。 という事を書いたのですが neobundle.vim に回避機能を実装してもらいました。 Vim を起動して、 :NeoBundleDocs コマンドを実行す…

pstade::oven::outdirected の実装と Boost.Range でエミュレート

pstade::oven::outdirected の実装がどうなっているのかなーとソースコードを見てみたら pstade::oven::counting でラップしているだけでした。 こんな感じ。 std::vector<int> v = {1, 2, 3, 4, 5}; auto outdirect = pstade::oven::counting(std::begin(v), std</int>…

algorithm のコールバック関数で iterator を受け取りたかった

for_each や find_if 等を使う時に、値ではなくて iterator として関数で受け取りたい場合があったのでちょっと調べてみました。 要は Boost.Range にある indirected の逆。 Boost.Range には見当たらなかったんですが PStade.Oven の を使えばいいみた。 […

unite-quickfix で clang のようなハイライトを設定したい

C++

clang ではこんな感じにエラーメッセージがハイライトされて結果が出力されます。 これを unite-quickfix でも出来ないかなーと思ってちょっと試してみました。 [ハイライトない] [ハイライトあり] 見やすい…のか? 現状はこんな感じですね。 まだ全然テスト…

shared_ptr

C++

どうなるのかなーと思ったら問題なくデストラクタが呼ばれるみたい。 ほへー。 [ソース] #include <memory> #include <iostream> struct X{ X(int value) : value(value){} ~X(){ std::cout << "delete X" << std::endl; } int value; }; struct Y{ ~Y(){ std::cout << "delete</iostream></memory>…

第9回 C++オンライン読書会開催しました

C++

先週の土曜日に開催しました。 第9回 C++オンライン読書会 - boostjp C++で例外安全なコーディング - boostjp [次回] 次の C++オンライン読書会は以下の日程になります。 日時:02/02(土) 20時〜 資料:C++11: 高次のThreading

reti.vim でメモ化

vim

こんな感じで書けるかな。 [ソース] function! s:memoize(func) let Func = a:func let cache = {} return reti#execute(join([ \ "if !has_key(cache, string(a:000))", \ " let cache[string(a:000)] = call(Func, a:000)", \ "endif", \ "return cache[st…

unite-menu でソートさせないでそのまま出力する

vim

unite-menu にリストで定義できるように実装してもらいました。 今までは辞書で定義していたため定義した順番で出力出来なかったんですが、リストで定義することでそのままの順番で出力することが出来ます。 if !exists("g:unite_source_menu_menus") let g:…

neobundle.vim でプラグインが読み込まれた時に処理を hook する

vim

neobundle.vim でプラグインが読み込まれた時に処理を hook することができるようになりました。 neobundle#get 関数を使用して hook することができます。 " vimshell だとこんな感じ let s:bundle = neobundle#get("vimshell") " hooks の初期化 let s:bun…

neobundle.vim でプラグインの遅延読み込み

vim

neobundle.vim ver.3 でプラグインの遅延読み込みが実装されているという事なので試してみました。 今までは :NeoBundleLazy したあとに任意のタイミングで :NeoBundleSource を行う必要があったのですが、それを neobundle.vim 側でいい感じに読みこんでく…

コマンドの出力結果をレジスタに出力する

vim

元ネタ:vimコマンドラインに表示されるものをクリップボードに収める方法 - LeafCage備忘録 わたしならコマンドでラップしちゃうかなーと。 command! -nargs=* -complete=command \ OutputRegister \ redir @* \| execute <q-args> \| redir END " command! Hoge ec</q-args>…

2012年サマリー

紹介しているブログがいくつかあったので便乗してわたしも載せてみます。一箇所だけアクセス数が跳ね上がっているのは件のアレ。