我知道将鼠标用作Emacs用户是一个坏习惯。但是,有时通过单击Finder左上角的红色“x”关闭按钮而不是仅仅重复使用C-x 4 0来关闭我的多个Emacs帧中的“一些”是方便的。
有没有办法重新绑定OS X GUI关闭按钮来杀死(C-x 4 0)帧的缓冲区 - 也就是说,同时杀死缓冲区和帧?如果缓冲区没有文件名,Emacs会要求我保存或丢弃缓冲区。
我的Emacs在OS X上是24.3.1。
答案 0 :(得分:1)
首先,将鼠标与Emacs一起使用 不是。恰恰相反。但是,正如你所说,它可能是一个糟糕的习惯:任何过度的事都可能是一个坏习惯。 Emacs特别适用于鼠标(Emacs鼠标比平时更强大),并且没有鼠标它工作正常。使用鼠标有利于:直接访问任何位置,只需指向。
是的,当您单击窗口管理器delete-frame
图标(或窗口管理器用于删除窗口的任何图标)时,您可以使Emacs执行命令(例如X
)。你这样做:
(define-key special-event-map [delete-frame] 'delete-frame)
(在库thumb-frm.el
中,我使用最小化图标(可选)来缩放框架,作为另一个示例。)
更具体地回答您的评论问题。此代码提示要终止缓冲区(默认值:当前缓冲区)。如果只有一个帧,则退出Emacs。否则,它只删除选定的帧。
(defun foo (&optional buffer)
(interactive (list (read-buffer "Buffer: " (current-buffer))))
(if (not (cadr (frame-list)))
(save-buffers-kill-terminal) ; Kill Emacs, if last frame
(kill-buffer buffer)
(delete-frame (selected-frame) 'FORCE)))
(define-key special-event-map [delete-frame] 'foo)