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

2013年に書いた Vim プラグインその他まとめ

今年書いた Vim プラグインその他をリストアップしてみた. Vim プラグイン clever-split.vim 現在のウィンドウの縦幅や横幅,開くバッファの最大の桁数などを考慮して縦分割・横分割・新規タブの中から開き方を賢く選択肢てくれるプラグイン conflict-marke…

Boost.MPL で条件の分岐先の評価を遅延したい

Boost.MPL でテンプレートの評価を遅延するやり方が分かっていなかったので調べてみたメモ. 具体例で書く. ある正数からその正数以下の連番文字列を作り出すメタ関数を考える.例えば,5 を入力すると "12345" が得られるものとする.面倒くさいので,入力…

Boost.Spirit.Qi と Boost.Variant で簡単な電卓つくった

Boost.Spirit.Qi は今まで parse() とか phrase_parse() に直接パーサを渡すだけで簡単にパースできる場合にしか使っていなかったので,真面目に文法を定義してパースしてみた. 作ったのは,四則演算と括弧と対数関数と指数関数が使える簡単な電卓. Boost.…

Travis CI で最新の Clang (3.5) を使ってテストする

Travis CI は Github アカウントと連携してリポジトリに .travis.yml というファイルを置くことで Github に push したときに自動でテストを回して CI してくれるサービス. Travis で使われている Ubuntu 12.04 に入っているコンパイラは gcc 4.6 と clang …

(進捗あります!✧\\٩(‘ω’)و //✧)o 。('、3)_ヽ)_

この記事は 進捗 Advent Calendar の 13 日目の記事となります. 年も暮れて1年の振り返りをする時期になってきたので,今年を振り返るのも兼ねて参加してみました. 進捗どうですか? → Vim 今年は Vim のプラグインをたくさん書いた気がします.ざっと数え…

Vim で C++ を書くときの逆引きリファレンス

この記事は C++ AdventCalendar 2013 の 10 日目の記事です. 本記事では Vim で C++ を書いている人を対象として,逆引きで Vim の機能やプラグインについて紹介していきます. すべてについて細かく書いているとキリが無いので,基本的な使い方とプラグイ…

無数のパッチを組み合わせて君だけの MacVim を作ろう!

Vim

この記事は Vim Advent Calendar 2013 の 9 日目の記事です. 昨日は id:daisuzu さんの Fabricで最新のVimをバラまく でした.僕はサーバでの Vim で自前の環境使うのは諦めているので,すごいなぁと感心するばかりです. 先日開催された VimConf2013 にて…

VimConf 2013 で発表してきた

vim

クックパッドで開催された Vim Conference 2013 に参加してきた. 発表 How to suggest new features for Vim (香り屋さん) いかにして取り込まれやすいパッチを書くかという話だった.基本的に Vim の方針(Vim is a text editor)に反するものは取り込まれ…

コマンドオプションを解析するライブラリ Vital.OptionParser を書いた

Vim

この記事はVim AdventCalendar 2012の 343 日目の記事です. 昨日は cohama さんの Vim で Ruby の def end とかを自動入力する vim-endwise を vim-smartinput で実装してみた でした. そろそろ終わりが見えてきて,僕が投稿するのもこれが最後な気がしま…

Momonga.vim #2 に行ってきた

vim

title: Momonga.vim #2 date: 2013-10-16 21:02 tags: [vim, momongavim, 2] categories: [vim] 書き留め 昼食 thinca さん達と食べる予定をしていたのに遅延してきた特別快速を1つ前に来る快速と勘違いして乗ってしまいあえなく遅刻,1人で食べることに… 本…

Mac で HappyHackingKeyboard Pro 2 を使う

デスクトップ欲しいなぁと思っていたので先日 iMac を購入したけれど,ワイヤレスキーボードがイマイチだったので Happy Hacking Keyboard にすることにした. 打ちやすいし余計なキーとか無いので良いけれど,若干自分好みに設定しないといけなかったのでメ…

clever-f.vim でカーソルの横移動を便利にする

Vim

この記事はVim Advent Calendar 2012 291 日目の記事になります.徐々に気温も秋らしくなり,終わりが見えてきてますね. この記事では,Vim の f キーを拡張する clever-f.vim というプラグインを紹介します. 今まで tekkoc さんや thinca さんに紹介して…

tmux で一時的に pane を最大化する

Vim には,分割しているウィンドウのうちカーソルが居るカレントウィンドウを除いて他を閉じる :only というコマンドがあります.それを拡張して,一時的にカレントウィンドウを最大化し,最大化前に戻せる ZoomWin というプラグインがあり,愛用しています…

clever-f.vim が VimL の Weekly trending repositories on Github に入った

Vim

Vim の f キーを拡張するプラグイン,clever-f.vim が Github の Trending repositories(VimL) に入っていたので記念カキコ.挙動をカスタマイズできるようにしたり migemo 的な拡張を入れたりしてコミットが活発だったからだろうか. 追記(9/8): Monthly t…

C や C++ のコードを自動で整形する clang-format を Vim で

この記事は Vim Advent Calendar 269 日目の記事になります. きつねさんとおぼえる!Clang という本を読んでいて,clang 周りで色々役立ちそうなツールがあることを知ったので,その中でも C や C++ のソースコードを整形する clang-format というツールの …

caw.vim 用のオペレータマッピング

Vim

コメントアウト用のオペレータマッピングが欲しかったので,caw.vim から tcomment_vim に乗り換えようと思ったけれど,tcomment_vim が色々いまいちだったので結局 caw.vim に戻ってオペレータマッピングは自前で定義することにした. https://github.com/r…

neocomplcache から neocomplete.vim へ乗り換える

Vim

現在 neocomplcache は開発が neocomplete.vim へと移っており,保守のみが行われている状態です.しかし,neocomplcache は結構細かく設定していたりして移行に手間取りそうで二の足を踏んでいる人も多いのではないでしょうか.僕もそうだったのですが,今…

C++ のソースコードの中に犬の顔文字が現れうることに気づいた

C++

int main() { (U'ω'); return 0; } このコードを g++ でコンパイルすると,件の行で statement has no effect と警告が出る.けれど実際は,プログラマを癒やす効果があるのでこの警告はコンパイラのバグだと思う.バグ報告したい. 追記: こうすれば警告が…

Travis CI で Vim プラグインのテストを自動化する

最近 Vim 界でも続々とテストフレームワークプラグインが出てきており,自分もぼちぼち kana さん作の vim-vspec でテストを書いたりしている. 最近,Travis CI で C++ なリポジトリのテストを自動化した ので,ついでに Vim プラグインのほうも自動化して…

Travis CI で最新の gcc を使って自動テスト

Travis CI にある gcc は現在 4.6 で,普通に使う分には申し分ないけれど,最新の C++ の機能を使っている場合,最新の gcc や clang でテストを実行する必要がある場合がある. Travis CI の VM は Ubuntu らしく,最新の gcc を利用したければ自分で apt …

Homebrew で最新の libc++ と clang をビルドする

追記(9/23) homebrew-versions に llvm34 というフォーミュラが入っているので,公式に最新の LLVM を入れるには,このフォーミュラを使ったほうが良い.このフォーミュラを使うと,インストールはサンドボックスの中に行われ,システムの clang と衝突しな…

続・文字型の可変長パラメータ引数を使ってコンパイル時に文字列を生成する

C++

char 型の可変長パラメータ引数を使ってコンパイル時に文字列を生成する の続き. まず,ワイド文字を全く考えていなかったので,std::basic_string のように文字型をテンプレートにしてみた. template< class CharT, CharT... Chars > struct basic_string…

テンプレートの部分特殊化の引数リストにかかる制約

C++

昨日文字列を表す型を書いていて,このコードがエラーになるのが引っかかった. template<class T, T... CS> struct S{}; template<int I, class T> struct X1; template<class T, T C, T... CS> struct X1<0, S<T, C, CS...>>{}; template<class T, int I, T... CS> struct X1<I, S<T, CS...>>{}; template<int I, class T> struct X2; template</int></i,></class></t,></class></int></class>

char 型の可変長パラメータ引数を使ってコンパイル時に文字列を生成する

C++

C++11 から可変長のテンプレート引数を取ることが出来るようになったので, template< char... Chars > struct string {}; というクラステンプレートをつくって文字列を可変長パラメータパックに突っ込むことを考えてみた. 例えば,"moudameda" という文字…

Mac で最新の安定版 Vim (7.3.969)をインストールする

この記事の内容は deprecated です. 現在,Vim はパッチレベル 969 までが安定版,それ以降を開発版として開発が進められています. Mac で最新の開発版のパッチを適用した MacVim を使用したければ,Homebrew で macvim の HEAD を入れると簡単です. $ br…

non-static data member initializer と初期化子リストの優先度

C++

C++11 からデータメンバ宣言場所で非静的メンバの初期化が出来るようになりましたが,この初期化は初期化子リストによる初期化が省略されたときのみ行われます. #include <iostream> struct X{ int const i = 42; X(){} // 初期化子リスト無し X(char) : i(-42){} // </iostream>…

一時ウィンドウを手軽に出し入れできる tmpwin.vim を作った

Vim

この記事は Vim アドベントカレンダー 183 日目の記事です. 早いもので,始まってからもう半年になりますね. ちなみに昨日の記事は manga-osyo さんの Vim Advent Calendar 2012 中間発表 でした. 本記事では,一時ウィンドウを簡単に開いたり閉じたりで…

TokyoVim #14 に参加して git-messenger.vim を作ってみた

もう一週間も前ですが,TokyoVim #14 に参加して来ました. この4月に東京に来てからこういうコミュニティは初参加です. 最近 Vim script を書いていなかったので,とりあえず何か書きたいと思って,git-messenger.vimというプラグインを書きました. git-m…

unlet でリストの要素を削除できる

Vim

unlet は変数の定義を削除するだけでなく,配列の要素の削除に使えると知ったのでメモ. 具体的には次のように使える let a = [1, 2, 3, 4, 5] unlet a[2] echo a " => [1, 2, 4, 5] let b = [1, 2, 3, 4, 5] unlet b[2:-2] echo b " => [1, 2, 5] まだまだ …

type_traits と tuple を使ってコンパイル時 FizzBuzz

C++

#include <iostream> #include <type_traits> #include <tuple> struct fizz{ static char const value[ ]; }; char const fizz::value[ ] = "fizz"; struct buzz{ static char const value[ ]; }; char const buzz::value[ ] = "buzz"; struct fizzbuzz{ static char const value[ ]; }; c</tuple></type_traits></iostream>…