gpt4 book ai didi

emacs - 使用 applescript 激活 Emacs 功能的最有效方法

转载 作者:行者123 更新时间:2023-12-02 02:47:58 25 4
gpt4 key购买 nike

是否有更好的方法来使用 applescript 激活 Emacs 中的功能,而不是打开迷你缓冲区来启动该功能?将手指从控制键上移开以使用键盘快捷键启动 applescript 需要一段延迟(以便 Emacs 不会将其注册为命令),并且在输入函数名称后还有另一个延迟进入迷你缓冲区。理想情况下,我想告诉 Emacs 在后台运行特定的函数而不打开迷你缓冲区。以下是一个简单的苹果脚本,用于激活 Emacs,并使用 M-x 打开迷你缓冲区,然后键入函数名称 ( dock ),然后按回车键。无论 Emacs 当前打开(隐藏或在前面)还是关闭,该方法都应该起作用。

仅供引用:对于像我这样的新手程序员,这里有一份关键代码备忘单:https://apple.stackexchange.com/questions/36943/how-do-i-automate-a-key-press-in-applescript/36947#36947?newreg=9adf36816f4245d69f0900ec09588057

<小时/>

编辑:一种较短的方法是在 Emacs 中设置一个附加到函数 (global-set-key (kbd "<f6>") (lambda () (interactive) (dired "/Applications"))) 的键盘快捷键。 -- 例如,F6 激活该功能,然后使用key code 97为 F6 键。然而,学习如何通过名称(使用 applescript)指定运行 Emacs 函数而不打开迷你缓冲区仍然是件好事。

<小时/>
tell application "System Events"
tell application "/Users/HOME/.0.data/.0.emacs/Emacs.app/Contents/MacOS/Emacs" to activate
delay .3
key code 53 # escape
key code 7 # x
key code 2 # d
key code 31 # o
key code 8 # c
key code 40 # k
delay .1
key code 36 # return
end tell

tell application "System Events"
tell application "/Users/HOME/.0.data/.0.emacs/Emacs.app/Contents/MacOS/Emacs" to activate
delay .3
key code 97 # F6
end tell
<小时/>

编辑:修订草案(基于 @Francesco 的回答)——它要求 (server-start)位于 Emacs 启动文件内(例如 init.el )。如果 Emacs GUI 已在运行,则运行 emacsclient在此之前没有任何停顿;否则,启动 Emacs GUI(暂停 1 秒以供服务器加载),然后运行 ​​emacsclient .

on is_running(appName)
tell application "System Events" to (name of processes) contains appName
end is_running
set EmacsRunning to is_running("Emacs")
if EmacsRunning then
tell application "/Users/HOME/.0.data/.0.emacs/Emacs.app/Contents/MacOS/Emacs" to activate
do shell script "/Users/HOME/.0.data/.0.emacs/Emacs.app/Contents/MacOS/bin/emacsclient -e '(dired \"/Applications\")'"
else
tell application "/Users/HOME/.0.data/.0.emacs/Emacs.app/Contents/MacOS/Emacs" to activate
delay 1
do shell script "/Users/HOME/.0.data/.0.emacs/Emacs.app/Contents/MacOS/bin/emacsclient -e '(dired \"/Applications\")'"
end if

最佳答案

我不了解applescript,但是你不能使用emacsclient吗?来做到这一点?

在现有 Emacs 实例中启动服务器 (M-xserver-startRET) 后,您可以运行如下命令:

emacsclient -e "(call-interactively 'dock)"

在 Emacs 中评估任意 lisp 代码。

关于emacs - 使用 applescript 激活 Emacs 功能的最有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20366836/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com