让 Emacs shell 命令发送桌面通知
多亏了 Emacs 的 钩子 机制,你可以配置 Emacs 在某个外部命令完成后调用一个 elisp 函数。
-- Jürgen Hötzel(作者)
我总是使用 Eshell 来与操作系统进行交互,因为它与 Emacs 无缝整合、支持处理 (远程) TRAMP 文件,而且在 Windows 上也能工作得很好。
启动 shell 命令后 (比如耗时严重的构建任务) 我经常会由于切换缓冲区而忘了追踪任务的运行状态。
多亏了 Emacs 的 钩子 机制,你可以配置 Emacs 在某个外部命令完成后调用一个 elisp 函数。
我使用 John Wiegleys 所编写的超棒的 alert 包来发送桌面通知:
(require 'alert) (defun eshell-command-alert (process status) "Send `alert' with severity based on STATUS when PROCESS finished." (let* ((cmd (process-command process)) (buffer (process-buffer process)) (msg (format "%s: %s" (mapconcat 'identity cmd " ") status))) (if (string-prefix-p "finished" status) (alert msg :buffer buffer :severity 'normal) (alert msg :buffer buffer :severity 'urgent)))) (add-hook 'eshell-kill-hook #'eshell-command-alert)
alert 的规则可以用程序来设置。就我这个情况来看,我只需要当对应的缓冲区不可见时得到通知:
(alert-add-rule :status '(buried) ;only send alert when buffer not visible :mode 'eshell-mode :style 'notifications)
这甚至对于 TRAMP 也一样生效。下面这个截屏展示了失败的 make 命令产生的 Gnome 桌面通知。
via: https://blog.hoetzel.info/post/eshell-notifications/
作者: Jürgen Hötzel 选题: lujun9972 译者: lujun9972 校对: wxy
本文由 LCTT 原创编译, Linux中国 荣誉推出
点击“了解更多”可访问文内链接
相关推荐
kekenow 2020-06-02
Watanuki00 2020-05-31
kekenow 2020-05-27
applecarelte 2020-05-17
hell0kitty 2020-05-06
严谨死板君 2020-04-26
猫师 2020-03-16
Watanuki00 2020-02-19
nixebo 2020-02-02
Watanuki00 2020-01-31
Watanuki00 2019-11-18
kekenow 2019-10-22
Jouen 2011-09-18
DeanChen 2012-02-21
nixebo 2019-04-04
御前带刀侍卫 2014-12-19
suncrx 2014-12-12
robertzhouxh 2014-03-10