Jedit X で ZenCoding

愛用のテキストエディタJedit X」でZen Codingができないものかと探ってみました。

ライブラリ探し

Jedit Xのマクロは AppleScriptでつくることができるのですが、さすがにAppleScript実装のZenCodingというものは無さそう。でも、AppleScriptは「do shell script」でコマンドを実行できるので、Perl やら Rubyで実装されたものがあれば、なんとかなるか、と思って見つけたのが以下です。

Zen Coding の Perl 実装書きました – OTCHY.NET

全ての機能に対応している訳ではないそうですが、よく使う記述には対応しているので、これで十分に満足できそうです。使わせていただきます。

実装してみる

上記サイトから SSSCoding.pm をダウンロードして、Perlのライブラリディレクトリ(Snow Leopardだと、/Library/perl/5.10.0/SSSCoding.pm 辺り)に保存します。で、以下のようにAppleScriptを書いてみました。

tell document 1 of application "Jedit X"
     set range to selected paragraph range
     set startP to loc of range
     set endP to startP + (len of range) - 1
     repeat with i from startP to endP
          set str to paragraph i
          set res to do shell script "perl -MSSSCoding -e 'chomp($ARGV[0]);print SSSCoding::expand($ARGV[0]);'" & " " & quoted form of str
          set paragraph i to res & (ASCII character 10)
     end repeat
end tell

#なんだか改行の処理がややこしくて美しくないですが・・・。

これをスクリプトファイル(.scpt)で保存して、Jedit Xの「スクリプトウィンドウ」に放りこめば完成です。好きなショートカットを割り振っておくと、より便利です。