pro*_*ave 47 emacs ubuntu emacs23
在登录Ubuntu时,我使用Ubuntu的Startup程序启动Emacs(版本23)守护程序.然后,每当我需要编辑某些内容时,我就会启动Emacs客户端.当我从Ubuntu注销时,它说Emacs当然还在运行.我需要在某处附加一个脚本来告诉Gnome在我注销/关闭时关闭emacs.
1)脚本应该是什么样的?"kill-emacs"似乎不起作用.
2)我应该把这个脚本放在哪里?启动程序(系统 - >会话菜单)面板中没有任何内容看起来很有用.我更喜欢在用户帐户中使用的东西,而不是使用root访问权攻击PostSession脚本或其他东西.
hax*_*ney 32
ShreevatsaR是对的,答案是kill-emacs或者save-buffers-kill-emacs,两者都是交互式的,因此可以在Emacs中运行M-x save-buffers-kill-emacs.这可能是最好的方法,因为您可以保存修改过的文件.
另一种方法是制作一个这样的shell文件:
#!/bin/bash
emacsclient -e "(kill-emacs)"
Run Code Online (Sandbox Code Playgroud)
您可以从任何地方(菜单图标,面板等)运行.
gen*_*ack 14
这个linuxquestions.org页面有一个Python脚本,可以在登录期间运行,监听Gnome在关机期间发出的"自己保存"事件.你可以修改它来做:
emacsclient -e '(save-buffers-kill-emacs)'
Run Code Online (Sandbox Code Playgroud)
官方文档:https://www.emacswiki.org/emacs/EmacsAsDaemon#toc8
ShreevatsaR的另一个附录:python脚本就像一个魅力,但我建议使用
emacsclient -e '(let ((last-nonmenu-event nil))(save-buffers-kill-emacs))'Run Code Online (Sandbox Code Playgroud)
作为命令.将last-nonmenu-event设置为nil会强制emacs进入鼠标模式,因此您可以在迷你缓冲区中获得"漂亮"对话框而不是提示.
或者甚至更加花哨(在emacs配置中的某个地方):
(defun shutdown-emacs-server () (interactive)
(when (not (eq window-system 'x))
(message "Initializing x windows system.")
(x-initialize-window-system)
(when (not x-display-name) (setq x-display-name (getenv "DISPLAY")))
(select-frame (make-frame-on-display display '((window-system . x))))
)
(let ((last-nonmenu-event nil)(window-system "x"))(save-buffers-kill-emacs)))
Run Code Online (Sandbox Code Playgroud)
然后:
emacsclient -e '(shutdown-emacs-server)'Run Code Online (Sandbox Code Playgroud)
如果您使用systemd,您可能对此单元文件感兴趣,该文件允许您从控制台/远程系统中正常管理Emacs服务器:
[Unit]
Description=Emacs: the extensible, self-documenting text editor
[Service]
Type=forking
ExecStart=/usr/bin/emacs --daemon
ExecStop=/usr/bin/emacsclient --eval "(kill-emacs)"
Restart=always
# Remove the limit in startup timeout, since emacs
# cloning and building all packages can take time
TimeoutStartSec=0
[Install]
WantedBy=default.target
Run Code Online (Sandbox Code Playgroud)
(它以与上面已经建议的方式相同的方式杀死守护进程.)
您可以将单元文件命名为〜/ .config/systemd/user/emacs.service,以便它绑定到您的用户而不是以root身份运行它; 管理它:
$ systemctl --user {enable,disable,start,restart,stop} emacs.service
请注意:我从别的地方拿了这张纸条,不记得在哪里.
| 归档时间: |
|
| 查看次数: |
25628 次 |
| 最近记录: |