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

Vim Advent Calendar 2013 の募集を開始しました

vim

今年もやります。 Vim Advent Calendar 2013 - ATND 去年参加された方もそうでない方も Vim について語りたい方であればぜひぜひご参加下さい。 また、12月まで待ちきれない!という方は去年の Vim Advent Calendar 2012への登録をどうぞ。 Vim Advent Calen…

unite-messages をつくってみる

vim

この記事は Vim Advent Calendar 2012 334日目の記事になります。 明日以降の担当者がまだ決まっていないので誰か書きたい方がいれば @osyo_memo までご連絡下さい。 ちなみに Vim Advent Calendar 2013 は明日あたりから募集する予定です。 関連:俺が見た…

marching.vim をいろいろと改良した

先日 Vim で C++ のコード補完を行うプラグインをつくったのですが、いろいろと改良しました。 キャッシング周りはだいぶマシになったんじゃなかろうかと。 [主な改良点] キャッシング周りの強化 バッファごとにキャッシングを保持するようにした 同期版の実…

unite.vim の action を定義する

vim

この記事は Vim Advent Calendar 2012 332日目の記事になります。 さて、unite.vim なのですが unite-menu などで候補を Vim のコマンドとして実行する事ができます。 この時にコマンドを実行するとそのコマンドがコマンド履歴に追加されます。 しかし、この…

Visual Studio 2013 を試してみた

C++

先日 Visual Studio 2013 がリリースされたということなので C++11 的な意味で試してみました。 Visual Studio 2013 では以下の C++11 の機能が新しく実装されました。 Non-static data member initializers Variadic templates Initializer lists Default t…

江添亮氏の C++11の参考書が公開された

C++

C++11参考書の公開:C++11の文法と機能 - 本の虫 と、いう事で以前から作成されていた参考書が github で公開されました。 すばらっ。 最近は C++ あんまり触れてないので復習がてら眺めてみようかなぁ。 あと Web からも閲覧できるように github に gh-page…

Emacs の zone-mode のような Vim プラグインをつくった

vim

すみません、少し遅れました。 この記事は Vim Advent Calendar 2012 329日目の記事になります。 元ネタ http://lingr.com/room/vim/archives/2013/10/24#message-17160863 https://twitter.com/tek_koc/status/393244775702212608 https://gist.github.com/…

textobj-multitextobj で任意のグループをマッピングする機能を追加した

vim

g:textobj_multitextobj_textobjects_group_i 等は特定のグループ名しか設定できなかったんですが、任意のグループをマッピングできる機能を実装してみました。 [今まで] " "A" 〜 "E" のグループ名を使用する必要があった let g:textobj_multitextobj_texto…

C++14 の Initialized lambda captures を試してみた

C++

Clang 3.4(svn) では既に実装されていたので軽く試してみました。 [ソース] #include <iostream> int main(){ int x = 4; auto y = [&r = x, x = x + 1](){ r += 2; return x + 2; }; std::cout << "x = " << x << " y = " << y() << std::endl; std::cout << "x = " <</iostream>…

自作プラグインを neobundle.vim で管理する

vim

この記事は Vim Advent Calendar 2012 326日目の記事になります。 [追記] 色々とコードを修正しました。 昨日 Lingr の Vim 部屋で 「neobundle.vim で自作プラグインの管理はどうするのか」 みたいな話が出ていたので今回はわたしが行っている管理方法の紹…

Vim の関数内で set hlsearch しても反映されない場合の対処方法

vim

なぜ、反映されないのかいまいちよくわかっていないんですが対処方法があったので書いておきます。 さて、次のように関数内で set hlsearch を呼び出してもハイライトは行われません。 function! HLsearch() set hlsearch endfunction call HLsearch() [対処…

Vim のバージョンを取得する

vim

Lingr の Vim 部屋で話題になっていたので覚書。 Vim のバージョンは :version で出力する事ができますがスクリプトでは、v:version でバージョン番号が取得できます。 " 7.4 であれば echo v:version " => 704 [パッチ番号を取得] v:version では適用されて…

Vim で範囲内を検索する operator をつくった

vim

この記事は Vim Advent Calendar 2012 323日目の記事になります。 元ネタ http://lingr.com/room/vim/archives/2013/10/16#message-17078174 と、いう事で範囲内の検索を行う operator を書いてみました。 [プラグイン] kana/vim-operator-user - github osy…

C++14 の Generic lambdas で SFINAE その 2

C++

昨日書いたコードはあまり意味がなかったので簡単なラッパーを書いてラムダ式を多重定義で呼び出せるようにしてみました。 これなら SFINAE を使う意味も出てくるかな。 [ソース] #include <iostream> #include <string> template<typename F1, typename F2> struct overload_impl : F1, F2{ using F1::op</typename></string></iostream>…

C++14 の Generic lambdas で SFINAE

C++

まぁ Generic lambdas だと多重定義できないのでほとんど意味は無いのですが。 [ソース] #include <iostream> #include <type_traits> #include <string> int main(){ auto plus = [](auto a, auto b) ->decltype(a + b){ return a + b; }; std::cout << plus(1, 2) << std::endl; std::cout </string></type_traits></iostream>…

neosnippet.vim を活用しよう

vim

この記事は Vim Advent Calendar 2012 320日目の記事になります。 さて、今回は neosnippet.vim の便利そげな使い方でも簡単に書いてみます。 [neosnippet.vim とは] neosnippet.vim とは Shougo 氏が作成されたスニペット補完を行うためのプラグインです。 …

不動点コンビネータで C++14 の Generic Lambdas をつかってみた

C++

せっかくなので書いてみました。 [ソース] #include <iostream> // base code : http://d.hatena.ne.jp/iorate/20110729/1311949434 template<typename F> struct fix_result{ F f; template<typename ...Args> constexpr auto operator()(Args&&... args) const{ return f(*this, std::forward<Args>(args)</args></typename></typename></iostream>…

C++14 の Generic Lambdas で可変長引数

Clang 3.4(svn) で試してみました。 [ソース] #include <iostream> #include <string> int main(){ auto sum = [](auto x, auto&&... args){ for(auto&& n : {args...}){ x += n; } return x; }; std::cout << sum(1, 2, 3) << std::endl; std::cout << sum(std::string("homu"</string></iostream>…

Clang 3.4(svn) の Generic lambdas を試してみた

結構前に実装されたのですがやっとこさ試してみました。 とりあえず、簡単に。 [ソース] #include <iostream> #include <string> int main(){ auto twice = [](auto n){ return n + n; }; std::cout << twice(10) << std::endl; std::cout << twice(0.52) << std::endl; std::c</string></iostream>…

Clang を使用した非同期で C++ のコード補完を行うVimプラグインをつくった

この記事は Vim Advent Calendar 2012 316日目の記事になります。 ちなみによく Twitter とかで 『2012年と2013年の Vim Advent Calendar が並走するのか』 みたいな発言を見かけますが Vim Advent Calendar 2012 は11月末で終了します。 ですので、参加され…

Vim でコード補完時に補完ワードを挿入しないマッピング

vim

neocomplete.vim で自動補完を行っている場合はあまり気にならないんですが、手動でコード補完を行うと一番上の候補の補完ワードがカーソル位置に挿入されます。 これ、あまり好きではないので neocomplete.vim はどうやって対処しているのかなーと思ったら…

quickrun.vim の出力バッファ名をタブページごとに変更する

vim

http://lingr.com/room/vim/archives/2013/10/09#message-16994884 Lingr の Vim 部屋で上記のような発言があったのですが、確かにそう思うことはよくあります。 共通のバッファだと違うタブページで開いている出力バッファの内容も書き換わってしまいますし…

Vim で古い正規表現エンジンと新しい正規表現エンジンを切り替える

vim

この記事は Vim Advent Calendar 2012 313日目の記事になります。 さて、先日リリースされた Vim 7.4 では新しい正規表現エンジンとして NFA の実装が追加されました。 このエンジンはいくつかのパターンで動作が速いのですが、まだすべての機能はサポートさ…

Vim の autoload で定義されてある foo#init() を自動的に呼ぶ 

vim

元ネタ 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"; fj…

restart.vim のコマンドに起動オプションを渡せるようにしてもらった

vim

元々、そういうような機能はあったのですが、一部のオプションは渡す事ができなかったので渡せるように修正して pull request 送って merge してもらいました。 merge ありがとうございました。 最新版では以下のようにして使うことができます。 " リスター…

unite.vim の action の設定方法いろいろ

vim

この記事は Vim Advent Calendar 2012 310日目の記事になります。 さて、前回の Vim Advent Calendar では unite.vim の action について書いたのですが、今回はその action の設定方法なんかを簡単に紹介してみたいと思います。 [デフォルトの action を設…

anzu.vim でマッチしなかった場合のテキストもハイライトできるようにした

vim

g:anzu_status_format と同様にハイライトを設定できるようにしてみました。 " ErrorMsg でハイライトする let g:anzu_no_match_word = '%#ErrorMsg#Pattern not found: %p'

unite.vim の action について理解する

vim

この記事は Vim Advent Calendar 2012 308日目の記事になります。 今回は unite.vim の action について簡単に説明してみようかと思います。 [unite.vim の action とは] action とは、unite.vim で出力される候補に対して処理を行う為の機能です。 候補を選…

vim-textobj-multitextobj にオプションを指定できるように追加した

vim

ちょっと挙動を制御する為に vim-textobj-multitextobj でオプションを設定できるようにしてみました。 次のように設定する事ができます。 " g:textobj_multitextobj_textobjects_a 等に対して辞書を設定する " is_cursor_in が 1 であればカーソルが範囲の…

LLVM/Clang 3.4(svn) に C++14 の機能がいろいろと実装されていた

実装されてしました。 C++98, C++11, and C++14 Support in Clang これで C++14 の機能は全部手が付けられたのかな。 (部分的ではあるけど)Generic lambdas ついに来たか…という感じ。 一応、ビルドはしたんですがまだ試してないのでちょっと触ってみたい…