我已经设置了 emacs -daemon ,以便在登录Gnome时运行,并将 emacsclient 与我在Eclipse中使用的.cpp和.py文件相关联,以便emacs是在Eclipse中选择时,用作这些文件的默认编辑器。通过这种方式,我可以结合emacs的编辑功能以及Eclipse的项目/构建管理和调试工具来获得良好的工作流程。
Anyhoo ...我想阻止C-x C-c关闭我正在编辑的Emacs帧,如果它是唯一在任何给定时刻仍然可见的Emacs帧。
有没有办法查询守护进程Emacs进程以找出打开的帧数,并覆盖默认的Cx Cc行为,什么都不做(如果只剩下1帧),从而确保始终至少一个可见的框架始终打开?
实现此行为并且可以添加到我的.emacs的一些elisp会很棒。
奖励积分:¬) 我有别名,将vi,emacs等映射到“emacsclient -c”,所以我总是会得到emacs帧来来去去。 Eclipse的另一个增强功能是将我想要编辑的文件直接发送到特定的框架,例如第一帧用emacsclient -c打开。
答案 0 :(得分:1)
让emacs不朽(无论你怎样开始它):
(defadvice kill-emacs (around emacs-immortal) nil)
(ad-activate 'kill-emacs)
使用ad-deactivate
停用此技巧。
答案 1 :(得分:0)
在emacs-clients中,save-buffers-kill-terminal
仅调用server-save-buffers-kill-terminal
,因此您可能需要在其上安装建议,以免影响非客户端帧。 frame-list
函数cal用于内省当前存在的帧。它显然总是包含守护进程本身的一个条目,然后每个开放框架包含一个条目。
(defadvice server-save-buffers-kill-terminal (around dont-kill-last-client-frame activate)
(when (< 2 (length (frame-list)))
ad-do-it))