身近な人たちが使っているエディタの行番号を指定するコマンドラインオプションを調べてみた。
- 秀丸 : Hidemaru.exe /m3 /j行番号 ファイル名 (注:/m3はすでに開いていたときに二重に開かないようにするオプション)
- WZ Editor : wzeditor.exe /j行番号 ファイル名
- Emacs : emacsclientw.exe –no-wait +行番号 ファイル名 (注:–no-waitは編集終了を待たないオプション)
すでにファイルを開いているときにどうするかがエディタによって異なる。
秀丸は基本的にどうするかユーザーに聞いてくるが、/mオプションによって指定することも出来る。/m3は二重に開くのを禁止し、すでに開いているウィンドウをアクティブにして指定した行番号へ飛んでくれる。
Emacs(emacsclient)は別途オプションを指定しなければすでに開いているウィンドウで指定した行へ飛んでくれる。複数のウィンドウでそのファイルを開いている場合は、全てのウィンドウでカーソルが動く。また、複数のフレームでそのファイルを開いていた場合は、最後にアクティブになったフレームのカーソルだけが動く。というか、開いていない場合でも最後にアクティブになっていたフレームでしか開かないっぽい。
WZ Editor(Ver.7の体験版で確認)は特にオプションも設定も無く、新しいタブで二重に開く。二重に開いた場合はデフォルトで閲覧モードとなり、編集は出来ない。しかし、メニューで編集モードにして編集することは出来る。しかし、編集した内容は最初に開いていた方のタブには反映されない。間違って他のタブで編集した内容を失ってしまう可能性あり。
この中ではWZが一番悪い動作となっている。
WZについては別件でマクロを少しいじってみようと思って調べてみたのだけど、Ver.5までのTX-Cが廃止され、Ver.6からText-Cというのに変わったらしい。これがまた酷い代物で、低レベルな似非C言語で、高レベルな機能を提供する関数が乏しく、その上ろくにドキュメントが無いのである。エディタ内でコマンドプロンプトを表示するサンプルがあったので中を見てみたのだが、CreateProcessやDuplicateHandleといったWin32APIを呼び出して外部コマンドを起動し、出力を取り込むようだ。詳しいことは分からない。何しろ独自関数や型の資料がろくに無いのだから。ウィンドウメッセージの処理なんかも行っているらしく、マクロのソースは複雑怪奇だ。やりたいことは秀丸ならrunex一つで済むような事なのに。