LoginSignup
1
1

More than 5 years have passed since last update.

CotEditor 上で書いた Ruby のコードを動かして結果を後ろに挿入する

Last updated at Posted at 2017-07-17

はじめに

テキストエディターで何かを編集中,ちょっと何かを計算させたり,何らかのプログラムを実行させてその結果を使ったりしたいときがある。

いちいちコマンドラインに移ってやるのは面倒。

ここでは,Mac 用テキストエディターである CotEditor 上で選択状態にしたテキストを Ruby の式として評価した結果をうしろに挿入させる,ということを CotEditor のスクリプトで実現させてみる。

他の言語にも簡単に応用できる。

スクリプトのコード

CotEditor のスクリプトはいろんな言語で書けるが,Ruby の式を評価させたいのだから,Ruby を使ってみよう。

以下のようなファイルを CotEditor のスクリプトフォルダーに入れると,スクリプトメニューから呼び出すことができる。

ruby-eval.rb
#!/usr/bin/ruby
#
# %%%{CotEditorXInput=Selection}%%%
# %%%{CotEditorXOutput=InsertAfterSelection}%%%

Encoding.default_external = "utf-8"

begin
  print " #=> ", eval(STDIN.read)
rescue
  print " #=> ERROR:\n", $!
end

先頭行には Ruby 処理系のパスを書く。rbenv で入れた Ruby のパスも書けるが,which ruby とかで調べた shims を含むパスを書いてもダメで,rbenv のルートの下にある versions/2.4.1/bin/ruby みたいなパスを指定する。

それに続くコメント部分が入出力の指定。

CotEditorXInput は,何を入力とするかを指定する。Selection の場合,現在開いているファイルの選択部分を入力とする。

CotEditorXOutput は出力をどう使うかを指定する。InsertAfterSelection の場合,選択部分の直後に挿入する。

このやり取りはスクリプトの標準入力・標準出力で行われるので,STDIN.read で受け取り,print で書き出せばよい。

なお,例外が発生した場合はエラーメッセージを挿入するようにした。

より詳しくは

入出力の指定方法などは CotEditor ヘルプの「UNIX スクリプトとの連携」を見ればよい。

また,スクリプトファイルのファイル名を工夫することで,メニュー上の並び順を制御したり,サブメニュー化したり,キーボードショートカットに対応させたりすることができる。その使用についてはヘルプの「CotEditor スクリプトのファイル名規則」を参照。

関連記事

EmEditor 上で書いた Ruby のコードを動かして結果を後ろに挿入する - Qiita

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1