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

C++14 で Boost.Fusion の invoke と make_fused 書いてみた

C++

C++14 で Boost.Fusion の invoke と make_fused を簡単に書いてみました。 [ソース] #include <tuple> #include <array> #include <utility> #include <iostream> template< typename F, typename Seq, std::size_t ...Indexes > constexpr auto invoke_impl( F func, Seq const& seq, std::i</iostream></utility></array></tuple>…

Vim Advent Calendar 2013 : Vim を使っている/始めたいなら読んでおきたい Web の記事

vim

この記事は Vim Advent Calendar 2013 1日目の記事になります。 さて、今年も Advent Calendar の季節がやってきましたね! 今年もがんばって行きたいと思います。 また、去年の Vim Advent Calendar はこちらになります。 今年1発目の記事って事で簡単に We…

Vim Advent Calendar 2012 まとめ

vim

この記事は Vim Advent Calendar 2012 365日目の記事になります。 そう… 365日目です!! 今日は11月30日、明日には12月01日が始まります。 本当に1年ぶっ続けでやってしまった と、いう事で Vim Advent Calendar 2012 最後の記事なのですが、特に面白いネタ…

Vim で自動的に set spell を行う

vim

先日 Vim のスペルチェックに日本語を除外する機能が実装されました。 せっかくなのでスペルチェックをいい感じに使ってみたいと思います。 さすがに常にスペルチェックを有効にするとちょっと鬱陶しいので以下の様な設定をしてみました。 [ソース] set spel…

gift.vim に対象のウィンドウに対してコマンドを実行する機能を追加した

vim

gift.vim に対象のウィンドウに対してコマンドを実行する機能を追加してみました。 gift#execute() を使用します。 " ウィンドウ番号 2 に対して、"let w:mami = 10" を :execute する echo gift#execute(gift#uniq_winnr(2), "let w:mami = 10") " タブペー…

over.vim のコマンドラインで :substitute {pattern} と {string} を移動する

vim

要望があったので over.vim のコマンドラインで :substitute {pattern} と {string} を移動する機能を追加しました。以下のようにしてマッピングして使用します。 " {string} へ移動 OverCommandLineNoremap <A-s> <Plug>(over-cmdline-substitute-jump-string) " {patt</plug></a-s>…

C++ で zip関数を書いてみた

C++

元ネタ zip - gist 久しぶりにメタプログラミングらしいメタプログラミングをした - 本の虫 最近、あまり C++ 触れられてないのでリハビリがてら書いてみた。 [ソース] #include <array> #include <tuple> template<std::size_t ...Indexes> struct index_tuple{}; template< std::size_t Start, st</std::size_t></tuple></array>…

quickrun.vim が終了した時に実行したウィンドウへ戻る

vim

Lingr の Vim 部屋でそういう話がでていたので、gift.vim に quickrun-hook を追加してみました。 quickrun.vim で非同期で処理している間に別のウィンドウへ移動する場合はあると思います。 そういう場合に quickrun.vim の終了後に元のウィンドウへ戻りた…

vim-textobj-multiblock で検索する範囲を制限する

vim-textobj-multiblock で「バッファの行数が多いと遅い」というのを見かけたので対応してみました。 g:textobj_multiblock_search_limit で検索する範囲を設定する事ができます。 " カーソル位置から前後100行の範囲のみでチェックする let g:textobj_mult…

Vim でコマンドからインクルードを挿入するプラグインつくった

vim

この記事は Vim Advent Calendar 2012 358日目の記事になります。 Vim Advent Calendar 2012 も残すところあと4人となりました! なにか書き残したことがある方はお早めにご参加下さい。 また、Vim Advent Calendar 2013 の募集も開始しました。 こちらも興…

over.vim のコマンドラインで = で実装した

vim

「 を実装したと言ったな、すまんありゃ嘘だ」 と、いう言うことで alpaca_taichou さんに突っ込まれたので実装しました。 難しいかと思ったけど LeafCage さんに「input() でおk」と言われたのでさくっと実装できました。 ありがとうございます。 と、いう…

over.vim のコマンドラインでバッファ補完を実装してみた

vim

実験的ですが、over.vim のコマンドラインでバッファ補完を実装してみました。 …先にコマンド補完実装しろという気がしないでもない。 とりあえず、 でバッファのワードを補完する事ができます。 こんな感じ。 200行程度のバッファだとそこまで重くはないん…

automatic.vim に preset を実装した

vim

automatic.vim に preset という機能を実装しました。 例えば『unite.vim が開かれた場合に』という設定は、 " unite.vim が開かれた場合にサイズや位置を変更する let g:automatic_config = [ \ { \ "match" : { \ "autocmd_history_pattern" : 'BufWinEnte…

LLVM 3.4 は12月23日にリリース予定

The LLVM Compiler Infrastructure LLVM 3.4 のリリーススケジュールがトップページに記述されていました。 リリースまでのスケジュールは以下の通りです。 11月19日 - Phase I Testing 11月25日 〜 12月01日 - Fix bugs from Phase I 12月02日 〜 12月08日 …

:QuickRun を codepad で実行する

vim

この記事は Vim Advent Calendar 2012 353日目の記事になります。 Vim Advent Calendar 2013 の募集も開始しました。 興味のある方はぜひご参加下さい。 ブラウザからコードを実行する事ができる codepad というサービスがあります。 これを利用すればローカ…

Vim のスペルチェックで日本語を除外するパッチが採用された

vim

関連:日本語をスペルチェックから除外する · Issue #476 · vim-jp/issues Vim 7.4.088 で上記のパッチ組み込まれました。 (その後 Vim 7.4.092 で一部バグが修正されました。 で、Kaoriya 版 Vim も更新されたので試してみました。 日本語を除外する場合は…

over.vim のコマンドラインに を実装した

vim

要望があったので over.vim のコマンドラインに を実装しました。以下のキーマッピングが使用できます。 キー 処理 カーソル下のファイル名を挿入 カーソル下の word を挿入 カーソル下の WORD を挿入 {0-9a-z"%#:-.*} 番号/名前付きレジスタの挿入 ほとんど…

over.vim のコマンドラインでコマンド履歴を実装した

vim

いつか実装しようかなーと思っていたんですが要望があったので実装しました。 通常のコマンドラインと同じような感じで使用できると思います。 キー 動作 or 1つ前のコマンド履歴を挿入 or 1つ後のコマンド履歴を挿入 そろそろ :substitute のプレビュー以外…

over.vim のコマンドラインのキーマッピングする

vim

over.vim のコマンドラインのキーマッピングする機能を追加しました。 次のようにして使用する事ができます。 " OverCommandLineNoremap {lhs} {rhs} " {lhs} を {rhs} のキーとして割り当てる " ここで設定する事ができるキーは1文字、 " もしくは修飾キー+…

Boost 1.55.0 がリリース

Boost 1.55.0 がリリースされました。 Version 1.55.0 - boost Boost 1.55.0 では Predef が新しいライブラリとして追加されます。 Predef OS やアーキテクチャなどのコンパイル環境を定義済みマクロで利用できる また、Visual Studio 2013 では既知のバグが…

quickrun.vim でリアルタイムに出力を行う場合の注意

この記事は Vim Advent Calendar 2012 347日目の記事になります。 Vim Advent Calendar 2013 の募集も開始しました。 興味のある方はぜひご参加下さい。 今回は Vim 成分薄いんですが、簡単な小ネタでも。 関連:ruby で sleep が含まれているコードを quick…

marching.vim に C言語を対応させた

vim

めんどくさくてやってなかったんですが、犬さんにつつかれて marching.vim を C言語に対応しました。 clang のオプション以外は C++ と同じなので操作方法などは特に違いはありません。 また、neocomplete.vim で自動補完を行う場合は C++ と同様に g:neocom…

C++14 の Generic lambda で bind1st 書いてみた

前回試したときは Generic lambda でキャプチャが出来なかったんですが、今回すべてが実装されたようなので再度試してみました。 [ソース] #include <iostream> template<typename F, typename T> auto bind1st(F func, T t){ return [=](auto... args){ return func(t, args...); }; } int plu</typename></iostream>…

anzu.vim でマッチしたワードの横に件数を表示させるようにした

vim

この記事は Vim Advent Calendar 2012 344日目の記事になります。 Vim Advent Calendar 2013 の募集も開始しました。 興味のある方はぜひご参加下さい。 [anzu.vim の問題点] anzu.vim はバッファを検索した件数や位置を出力するためのプラグインです。 その…

LLVM/Clang 3.4(svn) に C++14 の機能(n3797)がすべて実装された

C++14 の仕様はあまり追えていないのですが、現在のドラフト(n3797)の提案はすべて svn に組み込まれたようです。 http://clang.llvm.org/cxx_status.html#cxx14 Generic Lambdas あたりも全部実装されたようなのでいろいろと遊んでみたい。 土日にでもビ…

:substitute をプレビューする over.vim を少し改良した

vim

コマンドラインを少し改良して、カーソル移動をできるようにしました。 コマンドラインでは次のキーが使用できます。 キー 処理 コマンドの実行 コマンドラインから抜ける レジスタ " の貼り付け or 1文字削除 カーソルの前にある単語を削除 or カーソルを右…

vim-textobj-multiblock をマルチバイト文字に対応させた

vim

vim-textobj-multiblock をマルチバイト文字に対応させました。 次のようにしてマルチバイト文字を設定することができます。 " ()、[]、「」、()に対応 let g:textobj_multiblock_blocks = [ \ [ '(', ')' ], \ [ '[', ']' ], \ [ "「", "」" ], \ [ "(",…

Vim の :substitute をプレビューするプラグインつくった

vim

この記事は Vim Advent Calendar 2012 340日目の記事になります。 Vim Advent Calendar 2013 の募集も開始しました。 興味のある方はぜひご参加下さい。 元ネタ: ※一部加工 http://lingr.com/room/vim/archives/2013/11/02#message-17257647 参考 http://d.…

Vim script で文字列を比較する場合の注意

vim

2回ぐらい Lingr に話題になったネタなんですがいつも忘れているので覚書。 Vim script で文字列を比較する場合、==# を使用する事が多いと思います。 let s:homu = "homu" echo s:homu ==# "mado" " => 0 echo s:homu ==# "homu" " => 1 上記の場合だと問題…

vim-textobj-multiblock に2文字以上設定できるようにした

vim

今までは "{" 〜 "}" みたいに1文字のみの対応だったのですが、"if" 〜 "end" みたいに2文字以上も設定できるように対応しました。 以下のようにして pattern を設定できます。 " function 〜 endfunction " if 〜 endif let g:my_block = [ \ ['\_^\s*\<function\>.*',</function\>…