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

VAC 2013 62日目: バッファの任意の位置がコメントかどうかを判定する

vim

この記事は Vim Advent Calendar 2013 62日目の記事になります。 さて、Vim script を書いていると『コメント内は処理したくない』みたいな事を行いたいと思うことがあります。 そういう場合は次のように synID() を利用すると簡単に実装する事ができます。 …

libclang の Python binding を使用する 〜 definition 編〜

前回は Cursor に関する記事を書きました。 次は型情報について書く予定だったのですが、先に definition 周りについて書きます。 さて、定義位置は Cursor の get_definition() メソッドを使用して取得する事ができます。 [ソース] # -*- coding: utf-8 -* …

over.vim に :/ でハイライトする機能を追加した

vim

over.vim に 『:/ 時に入力されたパターンをハイライトする』機能を実装しました。 [設定] " 0 以外が設定されていれば :/ or :? 時にそのパータンをハイライトする。 let g:over#command_line#search#enable_incsearch = 1 " 0 以外が設定されていれば :/ o…

Vim script の奇妙なエラー

vim

Vim script でよくわからないエラーがでたので覚書。 仕様なのかどうかは不明。 さて、Vim script では次のように関数内で関数を定義する事ができます。 [ソース] function! s:func() " 関数内で関数を定義 function! Test() echo "Test()" echo function("T…

libclang の Python binding を使用する 〜 Cursor 編〜

前回は SourceLocation に関する記事を書きました。 今回は Cursor について簡単に書きます。 Cursor は指定したファイル位置の情報を取得する事ができます。 [ソース] # -*- coding: utf-8 -* import clang.cindex from clang.cindex import Cursor # sourc…

libclang の Python binding を使用する 〜 SourceLocation 編〜

前回は diagnostics に関する記事を書きました。 今回は SourceLocation について簡単に書きます。 SourceLocation はファイルの位置情報を保持するデータになります。 任意のファイルの位置の情報を取得する場合などに使用します。 前回使用した diagnostic…

Vim Advent Calendar 2013 56日目 :substitute をプレビューする over.vim にスクロール機能を実装した

vim

この記事は Vim Advent Calendar 2013 56日目の記事になります。 だいぶ綱渡り感高いですが、がんばって続けています。 さて、今回は @haya14busa さんからアイディアをもらって :substitute をプレビューする over.vim にスクロールする機能を実装してみま…

libclang の Python binding を使用する 〜 diagnostics 編〜

前回は unsave_files に関する記事を書きました。 今回は diagnostics について簡単に書きます。 diagnostics はパースした結果のエラーや警告などを取得する事ができます。 [ソース] import clang.cindex # source code source = """\ struct X{ const int …

C++ 関連の vim 逆引きリファレンスのページをつくっている

この記事は Vim Advent Calendar 2013 54日目の記事になります。 『C++ のコード補完プラグインは種類が多いのでまとめたほうがよい』みたいな意見があったのでそれらをまとめるついでに書いてみました。 まぁ前からそういうページはほしいと思っていたので…

libclang の Python binding を使用する 〜 unsave_files 編〜

前回は Index に関する記事を書きました。 今回は存在しないファイルをパースする方法について書きます。 Vim などを使用しているとわかりやすいんですが、ファイルは存在していないけど編集中のソースファイルをパースしたい、という事はあると思います。 …

Vim でカーソル下の単語を移動するたびにハイライトする

vim

この記事は Vim Advent Calendar 2013 52日目の記事になります。 quickhl.vim の延長線なのですが、カーソル下の単語を移動するたびにハイライトするようなスクリプトを書いてみました。 どういうことかというと以下のような感じ。 そもそも quickhl.vim に…

Vim script でヒアドキュメント…を書きたかった

vim

Vim script でもヒアドキュメントが書きたいんじゃーって事で少し考えてみた。 Vim script では次のような if 文内のコードは評価がされないのでそれを利用してみた。 if 0 ここは評価されない ああああああああああ いいいいいいいいいいい endif [ソース] …

libclang の Python binding を使用する 〜 Index 編〜

前回は Config に関する記事を書きました。 今回は Index 周りについて簡単に書きます。 libclang では Index を使用してソースコードをパースし、TranslationUnit の生成を行います。 [test.cpp] struct X{ int value1 = 0; float value2 = 0.0f; }; int ma…

libclang の Python binding を使用する 〜 Config 編〜

前回は Python binding を導入する記事を書きました。 今回は Config 周りについて書きます。 libclang の Python binding(以下、cindex.py)では Config クラスで読み込む動的ライブラリ(以下 libclang)の管理を行います。 Config では以下のような設定…

Vim Advent Calendar 2013 : Vim で libclang を使用した C++ の便利プラグインをつくった

この記事は Vim Advent Calendar 2013 48日目の記事になります。 Vim Advent Calendar 2013 の記事を書きたい人は明日すぐに書けますよ!! Vim Advent Calendar 2013 さて、今回の記事なのですが、少し前から Clang の libclang を使用したプラグインを作成…

libclang の Python binding を使用する 〜導入編〜

最近 libclang の Python binding を使用をしようた Vim プラグインを作成しているのでその覚書としてポツポツ書いていこうかと思います。 ibclang とは Clang が提供している構文解析ツールになります。 この構文解析器は Clang から提供されている Python …

C++14 の Generic lambda を利用してローカルクラステンプレートぽい事をする

そういえば、Generic Lambda を利用すればローカルクラステンプレートみたいなことができるかなー、と思って書いてみた。 [ソース] #include <utility> int main(){ auto identity_ = [](auto t){ typedef decltype(t) T; struct impl{ typedef T type; }; return imp</utility>…

Vim Advent Calendar 2013 : unite-choosewin-actions つくった

vim

この記事は Vim Advent Calendar 2013 45日目の記事になります。 Vim Advent Calendar 2013 の記事を書きたい人は明日すぐに書けますよ!! 関連:choosewin.vim をつくりました id:t9md さんが作成した choosewin.vim なのですが、これを unite.vim から呼…

vimshell でコマンド履歴を補完する

vim

Lingr の Vim 部屋でツッコまれるまで忘れていたので覚書。 (vimshell_history_neocomplete) を使用すれば neocomplete.vim でコマンド履歴の補完を行うことができます。 とりあえず、 にマップして使用してみるなど。 augroup my-vimshell autocmd! autocmd…

neosnippet.vim からデフォルトのスニペットが削除された

vim

http://lingr.com/room/vim/archives/2014/01/11#message-18043783 と、言うことで neosnippet.vim からデフォルトのスニペットが削除されました。 今後デフォルトのスニペットを使用する場合は neosnippet-snippets を別に導入しておく必要があります。 Sho…

今日の 21時から Vim プラグイン読書会を行います

vim

今日の夜 21時から Vim プラグイン読書会を行います。 [概要] 日時:2014年1月11日21時〜 読むもの:clever-f.vim 場所:Lingr の Vim部屋 haya14busa さんのサイトに読みどころなどがまとまっているので参加しようと思っている方は予め読んでおくとよいでし…

textobj の両端へ移動する operator つくった

vim

この記事は Vim Advent Calendar 2013 41日目の記事になります。 また、明日11日は21時から Vimプラグイン読書会が開催されます。 Vimプラグイン読書会第2回が1/11(土)21:00から開催されます! « haya14busa 興味のある方は参加してみるとよいと思います。 さ…

vimfiler.vim から起動する unite-grep に対して設定を行う

vim

unite.vim の profile がいまいちよくわかっていないので覚書。 通常、unite.vim を起動する場合はコマンドオプションなどで細かい設定を行うことができるのですが、vimfiler.vim の gr キーから unite-grep を起動した場合はコマンドオプションを指定するこ…

neobundle.vim のログをファイルに出力する

vim

『プラグインで不具合が発生した場合に neobundle.vim のログが後から参照できれば便利だなー』と思っていたら既にそういう機能がありました。 g:neobundle#log_filename に任意のファイルパスを設定するとそのファイルに neobundle.vim のログが出力されま…

LLVM 3.4 がリリース

LLVM 3.4 がリリースされました。 Download LLVM 3.4 LLVM 3.4 Release Notes Clang 3.4 Release Notes Clang Language Extensions — Clang 3.4 documentation Clang Compiler User’s Manual — Clang 3.4 documentation LLVM 3.4 リリースノートの訳 - Boost…

Vim Advent Calendar 2013 : Vim のインサートモードで を の代替にしてはいけない

vim

この記事は Vim Advent Calendar 2013 37日目の記事になります。 早くも明日以降のスケジュールが真っ白です。書きたい人は今のうちですよ! Vim Advent Calendar 2013 今回のネタは、わたしも Vim を使い始めた頃に指摘されたのですが、たまに間違って使用…

Vim で後から呼び出す関数を定義する

vim

Lingr の Vim 部屋で 『vimrc で関数定義は最初に書きたいけど、処理は後ろのほうで行いたい』 みたいな話がでていたので書いてみた。 [ソース] let s:apply = [] " 定義した関数をスタックにためるためのコマンド command! ENDfunction \ execute "function…

codic-vim に手を加えない unite-codic 書いてみた

vim

[追記] codic-vim に関数が追加されて unite-codic.vim が出来ました。 初 unite-source [関連] codic-vim プラグイン — KaoriYa codic-vim 用の unite.vim ソースを書いた - sorry, inumplemented codic-vim とは何なのか!というのは kaoriya さんの記事を…

Boost.Variant で特定の型の値に対して処理を行う

元ネタ:Boost.Variant が特定の型の値を保持していた時だけ処理を実行する - sorry, inumplemented 初 C++。 上記の記事では apply({variant な変数}, {適用したい関数}) という定義になっていたのですが、これを apply({variant な変数}, {期待する varian…

2013年サマリー

去年も載せていたので今年も載せてみます。去年は VAC 一色でしたね。 今年はもうちょっと別の記事を載せていきたいです。 ちなみに去年一番アクセス数が多かった記事は github のアカウントが停止されたアレです。 [おまけ] まだ続いてます。