DSL の見出し抽出には Vim の複合ファイルタイプを積極的に利用しよう

obsolete この記事で紹介している、Vim の複合ファイルタイプ(compound filetype){記述言語}.{DSL} を {記述言語}_{DSL}.vim の outline info にマップするというやり方は改めます。このやり方だとユーザーがいちいち ftdetect にて複合ファイルタイプの設…

2つの文字列の編集距離を求める

vim

unite-outline で使おうと思ったけど、ボツになったので貼っとく。 Wikipedia に載っていた擬似コードをほぼそのまま Vim script に落とし込んだだけです (^^;レーベンシュタイン距離といわれるもので、2つの文字列がどの程度異なっているかを、文字列1を…

ctags を使った見出し抽出

C, C++, Java…… この辺の言語の見出し抽出を、正規表現を使ったパターンマッチングで行うのは限界にきていた(というか最初から無理な話であったw)ので、見出しの抽出ロジックを outline info が独自に定義できるようにした。設定したパターンにマッチした…

デフォルトの outline info の作成ポリシー

昨夜、unite-outline の見出し一覧に表示される文字列を簡単にカスタマイズできるように、ユーザーが見出しの変換関数を既存の outline info にモンキーパッチできる仕組みを実装したところ、Lingr の Vim部屋にて、「この機能は unite本体側に実装したほう…

alignta の副産物たち

vim

alignta って実は開発の過程でできた副産物の方がコードの量からいっても多かったりします。その多くは人が既にやっていることで、目新しいものはないし、車輪の再発明もいいところなんですが、こういうものをこつこつ作ることで、結構 Vim script の経験値…

alignta v0.2.0 での変更点について

現在 alignta*1 を使っている人向けの記事です。version 0.2.0 で shifting alignment による整列の仕様や整列オプションの指定書式が一部変更になりました。他にも追加された機能やなくなった変数があったりするので、主な変更点をここにまとめておきます。…

Vimノート - Vim script で構文解析するには、という考察

考察というか、ぼんやりと考えてみました的なもの。まず、C/C++ の関数定義、あるいは Java のメソッド定義(コンストラクタ含む)を正規表現マッチによって拾うのはかなり苦しい*1。これらの言語の outline info は結構涙ぐましいものになっていて、「正規…

unite-outline まとめ

unite-outline の関連エントリが増えてきたのでまとめ。自演乙。((ちなみに、私は長島☆自演乙☆雄一郎選手のファンです ( ̄ー ̄)bグッ!)) unite.vim で簡易アウトライン機能一発目の紹介記事。スクリーンショットを随時追加している。 unite-outline の outli…

unite-outline が見出しとして抽出するコメントの形式と見出しレベル

前回のエントリで、unite-outline では、飾り枠線で装飾されたコメントを積極的に見出しとして拾うようにしていると書きました。*1プログラミング言語用の outline info では、見出しとして抽出されるコメントの形式と設定される見出しレベルに一貫した決ま…

unite-outline に特定の種類の見出しを非表示にする機能を追加

unite-outline では、「見出し」をプログラミング言語の構文上の要素に限定せず、「ジャンプ先として適当なもの」と大きくゆるくとらえており、飾り枠線で装飾されたコメントなんかも積極的に見出しとして拾うようにしています。 ▲ 飾り枠線で装飾されたコメ…

ニコニコ動画の検索結果フィルタおよび USConfig 開発終了のお知らせ

最初のリリースからちょうど一年が経過した Nicovideo Results Filter ですが、誠に勝手ながら現在のバージョン(0.2.7_2010-11-21)をもって開発を終了させていただきます。今後、ニコニコ動画の方でページの仕様変更などがあり、スクリプトが動作しなくな…

unite-outline の outline info の仕様を拡張

unite-outline のファイルタイプ別見出し抽出方法の定義ファイルである outline info の仕様を拡張したので告知します。後方互換性は保たれていますので、既存の outline info が使えなくなるとかいった話ではありません。*1ただ、outline info の仕様で、少…

Vim script の要求バージョンを調べる

vim

自作プラグインの required version を調べるべく、doc/version7.txt から Vim script のこの機能はこのバージョンから、という情報をざっくり拾ってみた。 7.3 strwidth() 7.2 Float 7.0 List Dictionary Funcref :let var +=, -=, .= いまどきの Vim scrip…

Vim script で abbrev

vim

Ruby の abbrev を移植してみた。 :echo util#abbrev(["perl", "python", "ruby"]) ↓ {'pytho': 'python', 'r': 'ruby', 'ru': 'ruby', 'perl': 'perl', 'pe': 'perl', 'pyt': 'python', 'py': 'python', 'ruby': 'ruby', 'per': 'perl', 'pyth': 'python', …

unite.vim で簡易アウトライン機能

ここでいう「アウトライン機能」とは、極々大雑把に、「ファイルの見出し一覧的なものを表示する機能」および、「見出し一覧から項目を選択することで該当個所へジャンプできる機能」、ぐらいの意味です。(世間一般において「アウトライン機能」といった場…

Vim の Rubyインターフェースを使ってみた

Rubyインターフェースを使い、ファイルのパスをゴニョゴニョするための一連のユーティリティ関数を書いてみた。それぐらい Vim script で書けよ、というものが大半*1だけど、一度使ってみたかったということもあり、練習も兼ねて。ていうか、色々と楽でいい…

ニコニコ動画の検索結果フィルタをアップデート

ニコニコ動画の検索結果をフィルタリングする Greasemonkeyスクリプト をアップデートしました。原宿へのリニューアルによって「タイトル」フィルタと、キャッシュを利用するフィルタ全般が正常に動作しなくなっていたのを修正しました。機能の追加などはあ…

USConfig - 旧バージョンのタグを削除しました

USConfig v1.11 をリリース でお知らせしている通り、初回のロード(ブラウザに設定がまた保存されていない状態でのロード)に不具合のあった v1.10未満のバージョンについて、GitHub のレポジトリからタグを削除しました。GitHub のページの「Downloads」か…

commentout.vim 改 - その2

vim

NERD Commenter などに興味をそそられつつも、 commentout.vim : ソースをコメントアウト ←→ コメントアウト解除 ― 名無しのvim使い を継承したキーマップ設定を自分好みに改造しつつ、数年来ずっと使っているのですが、 commentout.vim 改 - Alone Like a R…

Vim の置換系キーマップを晒してみる - その2

vim

ただ今、vimrc の複雑なキーマップ設定をユーザー定義関数の呼び出しに置き換えたくなる症候群の真っ最中。手始めに Vim の検索/置換系キーマップを晒してみる にある置換系キーマップをすっきりとしたものにすべく、オプション文字列を元に、置換のための…

ニコニコ動画の検索結果フィルタ v0.2.5 リリース

ニコニコ動画の検索結果をフィルタリングする Greasemonkeyスクリプト をアップデートしました。フィルタの設定画面をページ最上部のメニューから呼び出せるようになりました。

USConfig v1.11 をリリース

Greasemonkeyスクリプトに設定画面を追加するライブラリ USConfig の v1.11 をリリースしました。 改善点 v1.0x では Config.load() まわりで大ポカをやらかしており、 スクリプトの初回インストール後(まだブラウザに設定が保存されていない状態の時)、設…

] という名前のファイルを作らない

vim

編集中のファイルを保存しようとして :w<CR> と打ちたいところが、なぜか誤って :w] と打ってしまい、カレントディレクトリに ] という名前のファイルを作ってしまう、という謎の手癖に長いこと悩まされていたが、先日思い切って cnoremap ] <Nop> とやってみた。手癖</nop></cr>…

ニコニコ動画の検索結果フィルタをアップデート

ニコニコ動画の検索結果をフィルタリングする Greasemonkeyスクリプト をアップデートしました。ニコニコ動画の検索結果HTML の変更に対応。機能の追加などはありません。

watir-webdriverメモ - なるべく新規ウィンドウを作らないための小技

前置き Webアプリのテストなど、Webブラウザを使ってのルーチンワークの自動化にしばらく FireWatir を使っていましたが、 自分でパッチ*1をあてないと NameError や NoMethodError が出る*2 自分でパッチをあてないと text field に日本語文字列を設定でき…

シェルを求めて三千里〜vimshell への回帰〜

vim

前回の続き。ここまでの流れとは打って変わって話は大転回(笑)Conque を使っていよいよ本格的に Vim から zsh を使えるようになったものの、何かが劇的に変わったとか、改善されたというようなことは実は起こらなかった。わはは。というのは、シェルを使っ…

直前の単語境界からカーソル位置までを大文字にする

vim

THIS_IS_A_CONSTANT_NAME のような、すべて大文字からなる定数名の入力を多少楽にする方法について。補完がきく状況であれば補完すれば済む話ですが、新規に定数を定義する場合や、定数名が補完候補としてキャッシュされていない場合などは、どうしても自分…

ニコニコ動画の検索結果フィルタをアップデート

ニコニコ動画の検索結果をフィルタリングする Greasemonkeyスクリプト をアップデートしました。ニコニコ動画の検索結果HTML の変更の影響で、 ○列表示の認識失敗 検索結果中の動画件数カウント失敗 テーブルを詰め直す際に削除されるべきでない動画まで削除…

Vim のスペルチェッカ早わかり

vim

Vim付属のスペルチェック機能を使う上で、とりあえずこれだけ覚えておけば OK、というコマンドを表にまとめてみました。(Vim付属のスペルチェック機能は、Vim が +syntax付きでビルドされていなければ使えません。+syntax の有無は vim --version で確認で…

ポインタ変数に対するconst宣言

c

前々から、 定数データへのポインタ と 定数ポインタ の違いについて、 const修飾子をどこに付けたらどっちの意味だっけ? と頭がこんがらがることが多かったので、 const修飾子について const char* const ダブルポインタにどこまでconstが付けれるのか - …