はじめに
テキストエディターで何かを編集中,ちょっと何かを計算させたり,何らかのプログラムを実行させてその結果を使ったりしたいときがある。
いちいちコマンドラインに移ってやるのは面倒。
ここでは,Mac 用テキストエディターである CotEditor 上で選択状態にしたテキストを Ruby の式として評価した結果をうしろに挿入させる,ということを CotEditor のスクリプトで実現させてみる。
他の言語にも簡単に応用できる。
スクリプトのコード
CotEditor のスクリプトはいろんな言語で書けるが,Ruby の式を評価させたいのだから,Ruby を使ってみよう。
以下のようなファイルを CotEditor のスクリプトフォルダーに入れると,スクリプトメニューから呼び出すことができる。
#!/usr/bin/ruby
#
# %%%{CotEditorXInput=Selection}%%%
# %%%{CotEditorXOutput=InsertAfterSelection}%%%
begin
print " # => ", eval(STDIN.set_encoding("UTF-8").read)
rescue
print " # => ERROR:\n", $!
end
先頭行には Ruby 処理系のパスを書く。rbenv で入れた Ruby のパスも書けるが,which ruby
とかで調べた shims
を含むパスを書いてもダメで,rbenv のルートの下にある versions/3.3.4/bin/ruby
みたいなパスを指定する。
それに続くコメント部分が入出力の指定。
CotEditorXInput
は,何を入力とするかを指定する。Selection
の場合,現在開いているファイルの選択部分を入力とする。
CotEditorXOutput
は出力をどう使うかを指定する。InsertAfterSelection
の場合,選択部分の直後に挿入する。
このやり取りはスクリプトの標準入力・標準出力で行われるので,STDIN.read
で受け取り,print
で書き出せばよい。その際,念のためエンコーディングを UTF-8 にしておく。
なお,例外が発生した場合はエラーメッセージを挿入するようにした。
より詳しくは
入出力の指定方法などは CotEditor ヘルプの「UNIX スクリプトとの連携」を見ればよい。
また,スクリプトファイルのファイル名を工夫することで,メニュー上の並び順を制御したり,サブメニュー化したり,キーボードショートカットに対応させたりすることができる。その使用についてはヘルプの「CotEditor スクリプトのファイル名規則」を参照。