Nozomu Ando
nand****@mac*****
2005年 12月 29日 (木) 15:29:53 JST
mac-key-mode.el に関してですが、私の環境は英語環境だから、ということも あるのだと思いますが、マルチバイト文字を含むファイル名/ディレクトリ名に 関してうまく動かないようです。 というわけで、mac-key-show-in-finder と mac-key-open-terminal に関して 改変してみました。CVS HEAD へのパッチを添付します。 変更点は: ファイル名を do-applescript に渡す時に <<data utf8xxxx>> as Unicode text の形式で渡す (<< >> は実際には mac-roman の ?\307 ?\310 で、 xxxx は utf-8 の文字列のの16進表現) mac-key-open-terminal で " や $ などがディレクトリ名に含まれていた 場合、そのまま do script with command に渡すのはまずいので、 quoted form of を使う。 buffer-file-name には ~/ が含まれている可能性があるので、 expand-file-name するようにする というようなところです。 参考になりましたら幸いです。 Nozomu Ando *** mac-key-mode.el 17 Dec 2005 23:50:13 +0900 1.9 --- mac-key-mode.el 29 Dec 2005 15:03:21 +0900 *************** *** 206,211 **** --- 206,217 ---- ;; Show In Finder + (defun mac-key-applescript-utf8data (str) + (concat "\307data utf8" + (mapconcat (lambda (ch) (format "%02X" ch)) + (encode-coding-string str 'utf-8) "") + "\310")) + (defun mac-key-show-in-finder () "Document forthcoming..." (interactive) *************** *** 243,255 **** (condition-case err (progn (do-applescript ! (format "tell application \"Finder\" to select (\"%s\" as POSIX file)" ! (if (eq selection-coding-system 'sjis-mac) ! (replace-regexp-in-string ! "\\\\" "\\\\\\\\" ! (encode-coding-string file selection-coding-system)) ! (encode-coding-string file selection-coding-system)) ! )) (if mac-key-smartactivate-command (shell-command (concat mac-key-smartactivate-command --- 249,258 ---- (condition-case err (progn (do-applescript ! (concat ! "tell application \"Finder\" to select ((" ! (mac-key-applescript-utf8data (expand-file-name file)) ! " as Unicode text) as POSIX file)")) (if mac-key-smartactivate-command (shell-command (concat mac-key-smartactivate-command *************** *** 293,300 **** (condition-case err (progn (do-applescript ! (format "tell application \"Terminal\" to do script with command \"cd %s\"" dir)) ! (if mac-key-smartactivate-command (shell-command (concat mac-key-smartactivate-command " -i com.apple.Terminal")) --- 296,306 ---- (condition-case err (progn (do-applescript ! (concat "tell application \"Terminal\" to do script" ! " with command \"cd \" & quoted form of (" ! (mac-key-applescript-utf8data (expand-file-name dir)) ! " as Unicode text)")) ! (if mac-key-smartactivate-command (shell-command (concat mac-key-smartactivate-command " -i com.apple.Terminal"))