Xcodeで編集中のテキストの選択中の範囲のテキストを取得するAppleScriptです。
Xcode v9.2+macOS 10.12.6およびXcode v9.3.1+macOS 10.13.5betaで動作を確認しています。
Xcode上で編集中のソーステキストの選択範囲(selected character range)を取得し、さらに実際に選択範囲のテキストを取得しています。
Xcode上でソーステキストではなくXibファイルやplistなどの他のファイルを選択中の場合にはfalseを返します。
また、本Scriptでは個別に独立したWindow上に表示中のテキストについては無視します。
常識的なMacのテキスト編集系のGUIアプリケーションであれば、
①指定パスのテキストをオープンできる
②テキストを指定パスに保存できる
③表示中のテキストの選択範囲のテキストを取得できる
④表示中のテキストの選択範囲の内容を書き換えることができる
という動作は期待したいところですが、Xcodeについては①②が怪しく(Workspace Documentに新規テキストを追加するとかできそうもない)、③はなんとかなったものの、④ができるかどうか試行錯誤してみないとわからない、といったところです(パスを取得できているので、Xcodeを経由しないで直接ファイルを書き換えれば不可能ではなさそうですが、、、)。
AppleScript対応アプリケーションが標準でそなえているopen/close/quit/count/delete/exists/make/moveなどのコマンドをのぞくと、XcodeのAppleScript用語辞書に掲載されているコマンドは、build、clean、stop、run、testの5つだけ。archiveとかのproduct(ビルド後に生成されるバイナリ)を操作するための命令は用意されていません(わざと?)。
AppleScript名:表示中のソースの選択中の範囲のテキストを取得する v3 |
— Created 2018-05-19 by Takaaki Naganoya — 2018 Piyomaru Software use AppleScript version "2.4" use scripting additions use framework "Foundation" tell application "Xcode" tell front file document try set selRange to selected character range if selRange = {} or selRange = missing value then return false –No Selection or other copy selRange to {aSelBegin, aSelEnd} set aText to text of it set aSelText to text aSelBegin thru aSelEnd of aText on error return "" –No Selection or other end try return aSelText end tell end tell –> (* " property parent : class \"NSObject\" property NSTimer : class \"NSTimer\"" *) |