オペレータが入力されたら相対行番号を表示

Yokohama.vimの行削除のスライドみてて、オペレータが入力されたら、その行から相対的行番号を一時的に左側に表示すればいいんではないかと思った。Vimスクリプトでそんなことできるかどうかは知らんけど。

https://twitter.com/m2ym/status/25606822787

という話があったので, Vimpulseでやってみた.

続きを読む

マルチモニタ環境でウィンドウが画面外にはみ出すのを防止


最近はディスプレイも安いので, ディスプレイを複数台並べて広い作業環境を確保している人も多いはず. うちの自宅環境も, 24インチワイドディスプレイの隣に21.5インチワイドディスプレイを縦置きにしている. 縦置きする理由は, Webブラウザを最大化表示してなるべくスクロールせずに済ますため, 論文などA4サイズのPDFを1画面におさめるため, など. この環境自体には大変満足しているけれど, 少々変則的な配置のため特定のアプリケーションのウィンドウが画面外に表示されてしまって難儀した. それをなんとかしたという話.

続きを読む

Emacs (Viper/Vimpulse)で日本語の文節を扱う

というか、Emacsだとうまく文節ごとに削除してくれたりするんだろうか。それだったらすごいな。

http://twitter.com/tyru/status/19890157313

という話があったので, どうなっているか調べてみた. まず移動に関して, Emacsの単語移動コマンドforward-word/backward-word (M-f/M-b)は, 日本語の場合は文節(のようなもの)に働くらしく, 動作を見る限りは, 漢字の連続+ひらがなの連続をひとまとまりと見なしている感じ. 完全な文節ではないけれど, カーソル移動の単位として用いるには問題ないレベル. 実際にどういう処理をしているのか調べようと思ったけれど, forward-wordはEmacs LispではなくCで書かれているようで, ソースコードを読むのは面倒なので諦めた.

続きを読む

スマートポインタのつくりかた

2年ちょっと前にC++で書いた非侵入的参照カウント方式のスマートポインタ実装を発掘した. スマートポインタの実装にはC++の様々なマニアックな実装手法が隠れていて面白い. せっかくなので, 解説つきで晒すことにした.

このスマートポインタはboost::shared_ptr (以下単にshared_ptr)相当のもので, 当時C++のコードを書かないといけない状況下で「boost使っちゃらめぇぇぇ!」とか言われたために, せめてshared_ptrだけでも抜き出して使おうとしたものの, 依存しているファイルの数が思ったより多くて面倒になったので, 1ファイルで完結する簡易実装を自分で書くことにした, という経緯で生まれたもの. 似たような状況では有用かも知れないし, shared_ptrのソースコードを読む助けにはなるかも知れないけれど, 基本的にはboostが使えるなら素直にshared_ptrを使うべき.

「非侵入的」については詳しく書かない. 参照カウント方式やそれ以外の方式についても含めて, スマートポインタの種類と動作について知りたければ, たとえば以下の参考文献を見ると詳しく説明されている.

続きを読む

Emacs (Vimpulse)でtext-objectでも使えるコメントアウトoperator

EmacsでviをエミュレートするViperを強化してVimをエミュレートするようにしたのがVimpulse. ここ最近開発が活発で, 設計もかなりスマートになって, ゆくゆくは本家Viperを置き換えることを目指すまでになっている. 入れる場合は最新版をgit cloneする.

ぼちぼち散歩 Vimでoperator-userを使って他のプラグインをoperatorとして使えるようにしてみたを見て, Vimpulseでもコメントアウト/アンコメントするoperatorがあったら便利そうなので作ってみた.

続きを読む