使用完 emacsclient 后重现激活 iTerm 窗口

我用图形界面的 Emacs,从 iTerm 调用 emacsclient 编辑完成之后,焦点还是在 Emacs 上,不会返还给 iTerm。比如

~ $ emacsclient  .

这里打开了 Emacs 窗口,C-x # (server-edit) 之后焦点就一直停留在 Emacs 窗口上了。我希望它能返回给 iTerm,特别是 Fish 中 M-e (edit_command_buffer)。

所以写了下面的配置,C-x # 之后强行激活 iTerm 窗口。

(defun chunyang-activate-iterm ()
  (unless (bound-and-true-p with-editor-mode)
    (do-applescript "tell application \"iTerm\" to activate")))

(add-hook 'server-done-hook #'chunyang-activate-iterm)
1 个赞

如果开启了多个 iTerm 窗口,是切换到最近的那个吗?

看起来是会把所有的窗口都调到前面,焦点在最近的那个窗口上。我几乎只用一个 iTerm 窗口,没详细验证过。

感觉还是给常用的几个app各自绑一个快捷键,一键切过去好,也不用想emacsclient之后是留在emacs还是加到terminal。

有没有感觉emacs-mac比ns port要卡… 比如行滚动…

刚切换到 emacs-mac 不久,不知道你是不是指的f按像素(而不是行)滚动看起来卡,如果是的话,你可以把这个特性关掉

mac-mouse-wheel-smooth-scroll ;; 默认启用,改为 nil 来关闭

比较新的官方 Emacs 也有这个功能,只是默认没开。

我指连续的按行滚动

不确定是mac port和ns port的差别还是emacs 26和emacs 27的差别

mac port 的像素滚动是有点性能问题。