dynamicsoar's log

主に研究関係のメモ

TeXstudioで toggle comment/uncomment したい→マクロを使う

イントロ

TeXstudio は、デフォルトではコメントアウトは cmd+T, アンコメントは cmd+U になっている*1。しかし多くのプログラミング用エディタでは1つのショートカット*2コメントアウト・アンコメントを実現する。このようなものは toggle(トグル)と呼ばれ*3、たとえば Notepad++ では ctrl+Q*4 だし、mac のアプリでは一般的に cmd+/ がそれのようだ。というわけで TeXstudio でもこのような toggle comment/uncoment をしたい。

具体的な手順

Macro の登録

Macro を使う。User Manual の section 4.5 に詳しく書いてあるが、いまはどうせコピペするだけなので読まなくても良い。

メニューバーの右の方にある Macros > Edit Macros... を選択。ダイアログが開いたら左下の Add でエントリを追加し、Down を押して一番下に持っていく(後でショートカットを自分で設定するため)。右上の Name に適当な名前(toggle comment とか)を入れる。右下の空欄にスクリプトを書くのだが、偉大なる先人が既に書いてくれている ↓

http://sourceforge.net/p/texstudio/wiki/Scripts/#advanced-comment-toggle

User Manual によると Javascript らしい。これをコピペする。すると自動的に Type は Script になるはず(おそらく %SCRIPT で判別してる?)。Abbreviation と Trigger のところは空欄のままで良い(ショートカットはここではなく別に設定する。後述する)。OKを押して閉じる。

Shortcut の設定

cmd+, で*5 Preferences を開き、Shortcuts > Menus > Macros を見ると、いま登録したマクロが表示されている。そのエントリの Current Shortcut のところをダブルクリックして、自分の好きなキーコンビネーションを登録する。自分は cmd+Q にした。もし既存のショートカットとかぶっていると、ちゃんと警告してくれる。cmd+Q の場合、もちろん quit(このアプリでは Exit と言ってるが)なので、警告が出る。それから、その右の列に Additional Shortcut というところがあり、たとえばここに cmd+/ を追加で登録することもできる。残念ながら追加できるのは1パタンだけのようだ。

UPDATE 2016-01-01: 問題点

いま使ってて気づいたけど、これ

  1. カーソルが置いてあるブロックに対して実行
  2. 複数の文(ブロック)を選択して実行

の両方できるんだけど、1. の方は文中に \% あったら uncomment はできるが comment out ができない。ダメじゃん… Javascript 解読するしかないか。2. の方は問題ない。

さらに UPDATE

正規表現よくわからんので、自分専用の応急処置だが、

hasComment = line.match(/\s*%/)

の部分を

hasComment = line.match(/^%/)

に変えたところ、「カーソルが置いてあるブロックに対して実行」については望みの挙動になった。しかし「複数の文(ブロック)を選択して実行」については変な挙動に…まぁ自分はこっち使わないからいいか…。あとで正規表現勉強したらちゃんと直そう。あるいは分かる人がいれば教えて下さい(or 直接 wiki 編集しちゃって下さい)。

*1:Preferences > Shortcuts > Menus > Idefix から確認可能。ただ、今見たら Default は ctrl+T, ctrl+U になっていて、Current に cmd+T, cmd+U が書かれている。もしかしたら自分で変えたのかもしれない。いずれにせよ今の主題は toggle したいということなので、まぁどっちでもいい。

*2:ホットキー、キーバインド、キーコンビネーション…厳密には何かが違うのだろうがよくわからないので検索用に全部書いとく。

*3:ピンとこなければ toggle switch で google image 検索せよ。toggle という英単語はこのイメージ。ただアプリ的には「おなじコマンドで」コメントアウト・アンコメントをするので、メカニカルレバーの切替よりは押しボタンの方がより近い気はする(でももう toggle って言葉があまりにもよく使われてるし英語の意味的にもそういうのを包含してるんだろう、たぶん)。

*4:Notepad++ ではさらに ctrl+K で「コメントアウトあろうがなかろうがさらにコメント記号を左からかぶせる」ができて超便利。…というか TeXstudio の comment out はまさにこの動作だな。

*5:あるいはメニューのTeXstudio>Preferences...でもいいが。