通过按Alt + F4关闭emacs-client框架时杀死关联的缓冲区

时间:2009-12-06 06:43:15

标签: emacs

我习惯了emacsclient,以便像vim一样快速响应,将emacs放入服务器模式,命令为“emacs --daemon”。但是当我查看一些文件然后按Alt + F4关闭它们时,我发现很多缓冲区都存活起来很烦人。我必须在关闭帧之前明确地杀死缓冲区。

我想知道,如果有办法让emacsclient在这一点上表现得更像一个轻量级的GUI编辑器(例如vim)?

3 个答案:

答案 0 :(得分:3)

我认为你在寻找麻烦,但你可以试试这个:

(add-hook 'delete-frame-functions
          (lambda (frame)
            (let* ((window (frame-selected-window frame))
                   (buffer (and window (window-buffer window))))
              (when (and buffer (buffer-file-name buffer))
                (kill-buffer buffer)))))

答案 1 :(得分:2)

我建议您使用命令quit-window,它正是您想要的(使用前缀参数);它已经是q special-mode(即非自插入)缓冲区的绑定。你可以将它绑定到C-f4,当你输入C-u C-f4时它会终止缓冲区和框架。

答案 2 :(得分:1)

执行以下操作:

(defun my-kill-buffer-and-frame ()
  "kill the current buffer and the current frame"
  (interactive)
  (when (y-or-n-p "Are you sure you wish to delete the current frame?")
    (kill-buffer)
    (delete-frame)))

如果你确定你总是想要这样做,你可以摆脱提示:

(defun my-kill-buffer-and-frame ()
  "kill the current buffer and the current frame"
  (interactive)
  (kill-buffer)
  (delete-frame))

然后将其绑定到您选择的键上,如下所示:

(global-set-key [(f5)] 'my-kill-buffer-and-frame)

享受!