テキストエディタ「mi」の最前面のドキュメントをAppleScriptとみなして構文確認してmiの本文に戻すAppleScriptです。
ながらくバージョン3.0のβ版が公開されていたものの、正式版が登場しなかったテキストエディタ「mi」。その正式版が2018.4.21に唐突に登場しました。
そこで、正式版のmiをAppleScriptからコントロールしていろいろ試してみました。
miのAppleScript対応機能は必要なものは十分にそろっているレベルで、最前面のドキュメントの選択部分を取得したり、選択部分に演算結果を戻してみたりと、期待されるような処理は行えます。
そこで、ひととおりの機能を確認してみると、書類の「モード」(種別ごとの書式情報切り替え)をAppleScriptから確認できたりと、他のエディタでは見られないような実装もあります。
ただ、どのテキストエディタでもそうなのですが、書式情報だけ切り替えて認識できてもほとんど実用性はなく、テキストエディタ上でAppleScriptを書く意味はほとんどありません。「構文確認」が行えないので、構文チェックや短縮表記の展開などが一切行えないためです。
▲mi上でモードを「AppleScript」に指定して編集
▲構文確認した結果をmi上に書き戻したところ。「app」–>「application」、「end」–>「end tell」などの短縮表記を展開している
そこで、AppleScript自体でAppleScriptのテキストを構文確認して文法チェックや短縮表現の展開などを行い、結果をテキストエディタ(ここではmi)に書き戻すようにしてみました。
このぐらいの処理なら、アプリケーションに依存している部分はほどんとないので、CotEditorでもJeditΩでも、BBEditでも問題なく行えます。
AppleScript名:miの最前面のドキュメントをAppleScriptとみなして構文確認して戻す |
— Created 2018-04-24 by Takaaki Naganoya — 2018 Piyomaru Software use AppleScript version "2.5" use scripting additions use framework "Foundation" use framework "OSAKit" property OSAScript : a reference to current application’s OSAScript property OSALanguage : a reference to current application’s OSALanguage property OSALanguageInstance : a reference to current application’s OSALanguageInstance set targX to 1024 –View Width set targY to 2048 –View Height tell application "mi" tell front document if mode is not equal to "AppleScript" then return set theSource to content end tell end tell –Compile AppleScript Source set osaCon to current application’s OSAScriptController’s alloc()’s init() set osaView to current application’s OSAScriptView’s alloc()’s initWithFrame:(current application’s NSMakeRect(0, 0, targX, targY)) osaCon’s setScriptView:osaView osaCon’s setLanguage:(OSALanguage’s languageForName:"AppleScript") osaView’s setString:theSource osaCon’s compileScript:(missing value) –Compile(構文確認) set aRes to (osaView’s |string|()) as string tell application "mi" tell front document set content to aRes end tell end tell |