2009年9月21日月曜日

emacsからスクリプトエディターを開く

emacsで開いているapplescriptソースコードを、 ScriptEditor上で開くemacs lisp コマンド。

applescript-browse

(defun applescript-browse-url (script &optional action)
  "Convert script to applescript URL\n\
   action --- \"new\"(default) or \"insert\" or \"append\"\n\
   ex. (applescript-browse-url \"say time string of(current date)\")"
  (format "applescript://com.apple.scripteditor?action=%s&script=%s"
          (if action action "new") (url-hexify-string script)))

(defun applescript-browse (pfx)
  "バッファーの内容をApplescript URL protocolを使って、スクリプトエディター上に開く。\n\
  生成されたURLはキルリングに追加される。\n\
  リージョンを対象とする場合は、C-u で実行する。"
  (interactive "P")
  (save-excursion
    (let ((url
           (applescript-browse-url 
            (encode-coding-string
             (my-trim-string
              (apply (function buffer-substring-no-properties)
                     (if (equal pfx '(4))
                         (list (region-beginning) (region-end))
                       (list (point-min) (point-max)))))
             'utf-8))))
      (kill-new url)
      (browse-url url)
    )))

(defun my-trim-string (str)
  "stringの両端の空白を取り除く"
  (replace-regexp-in-string
   "^[ \\\t\\\r\\\n]+" ""
   (replace-regexp-in-string "[ \\\t\\\r\\\n]+$" "" str)))

使い方

M-x applescript-browseで、カレントバッファーの全内容が、 スクリプトエディターで開かれる。
リージョンを対象とする場合は、 C-u M-x applescript-browse で実行する。
また、applescript:// で始まるURLをキルリングに追加しているので、 applescript-browseを実行後、C-yでそれを貼付ける事ができる。

仕組みは、Applescript URL protocol supportというのを使って、 単にbrowse-urlしているだけだ。
URL protocol supportについては、 Script NoteさんAppleScript/URL PROTOCOL SUPPORT に、とてもわかりやすい説明がある。

0 件のコメント:

コメントを投稿