如何根据GUI使用情况设置Emacs设置?

时间:2012-06-26 15:12:17

标签: emacs

无论出于何种原因,当我在emacs(终端版本)中按backspace时,它会删除光标前的字符,但是在emacs GUI(对于Mac)中按下相同的键会删除光标下的字符。任何人都可以指向我如何设置normal-erase-is-backspace-mode取决于emacs会话是否在GUI中?

对于记录,根据C-h kbackspace密钥在两种情况下都绑定到DEL

3 个答案:

答案 0 :(得分:3)

我在Mac下的emacs配置中使用以下内容,以使退格工作正常:

;; Fix Delete key and activate graphical frame.
(defun my-make-frame-hook ()
  (when (window-system)
    (normal-erase-is-backspace-mode t)
    (when (fboundp 'ns-do-applescript)
      (ns-do-applescript "tell application \"Emacs\" to activate"))))

;; Do this for initial frame...
(my-make-frame-hook)

;; ...and for any subsequently created frame.
(add-hook 'after-make-frame-functions
          '(lambda (frame)
             (select-frame frame)
             (my-make-frame-hook)))

即使你正在使用守护进程模式,这个解决方案也足够健壮,可以完美地工作。

(很明显,ns-do-applescript是为了筹集新的框架。)

(window-system)在这里应该特别感兴趣。

答案 1 :(得分:1)

如果emacs正在使用窗口系统,则函数display-graphic-p将返回t,如果是终端会话,则nil将返回(setq normal-erase-is-backspace (display-graphic-p)) 。你可以这样做:

{{1}}

答案 2 :(得分:0)

您使用的是什么版本的Emacs?你应该为退格工作配置任何东西似乎非常可疑。

开始
emacs -Q

并描述退格如何运作。