macOS Mojave (10.14) 下 Emacs 的 AppleScript 支持异常

有升级了macOS Mojave的朋友吗?Emacs还能不能正常使用了? 继续讨论:

从 macOS Mojave 开始,用 AppleScript 从一个程序控制另一个程序,首先需要用户授权,一般会弹出这样的窗口

但我这边的 Emacs 不会弹出类似的确认窗口,而是直接报错

(do-applescript
 "tell application \"Google Chrome\" to get title of active tab of first window")
error-> AppleScript error 1

我用的是官方的 Cocoa Emacs,不清楚 Mac Port 行不行。

还在用 EI Capitan。

不过看这个图标,通过/禁止之后可能会写入 System Preferences > Security & Privacy > Accessibility,去那里面看看是不是已经存在相关规则了。

Accessibility 里已经允许了 Emacs。macOS 10.14 多了个 Automation,App A 控制 App B 首先要用户同意。

1 个赞

邮件列表有个问题跟你遇到的一样,楼下 #32888 - 27.0.50; Cannot access other apps via applescript on Mojave - GNU bug report logs 回复说要往 (Emacs) Info.plist 里添加:

<key>NSAppleEventsUsageDescription</key>
<string>Some message</string>

相关链接:

2 个赞

Wow,把这两行加到 Info.plist 后重启 Emacs 就好了。

diff -u --label /Users/xcy/src/emacs/nextstep/Emacs.app/Contents/Info.plist --label \#\<buffer\ Info.plist\> /Users/xcy/src/emacs/nextstep/Emacs.app/Contents/Info.plist /var/folders/7f/s191h4q97p90374yw15ssrs00000gn/T/buffer-content-4FHTBv
--- /Users/xcy/src/emacs/nextstep/Emacs.app/Contents/Info.plist
+++ #<buffer Info.plist>
@@ -675,5 +675,7 @@
 	</array>
 	<key>NSAppleScriptEnabled</key>
 	<string>YES</string>
+	<key>NSAppleEventsUsageDescription</key>
+	<string>Emacs requires permission to send some event to another application.</string>
 </dict>
 </plist>

Diff finished.  Sun Oct 28 17:41:12 2018
2 个赞