如何自动保存文件失去焦点在Emacs [英] How to automatically save files on lose focus in Emacs

查看:175
本文介绍了如何自动保存文件失去焦点在Emacs的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

解决方案

可以配置Emacs,以便在emacs窗口失去
焦点时保存所有文件p>我使用这个,只有在emacs运行在X下(就像在ubuntu这样的东西,它可能会像ubuntu这样的东西)才会有效。

 
(和(featurep'x)window-system)
(defvar on-blur - saved-window-id 0最后一个已知的聚焦窗口)
(defvar on -blur - timer nil定时器刷新已知的聚焦窗口)
(defun on-blur - refresh()
如果emacs失去焦点,则运行on-blur-hook
(let *((active-window(x-window-property
_NET_ACTIVE_WINDOWnilWINDOW0 nil t))
(active-window-id(if(numberp active-window)
活动窗口
(string-to-number
(格式%x00%x
(汽车活动窗口)
(cdr active-window)))
(emacs-window-id(string-to-number
(frame-parameter nil'outer-window-id))))
(和
(= emacs-window-id on-blur - saved-window-id)
(not(= active-window-id on-blur - saved-window-id) )
(run-hooks'on-blur-hook))
(setq on-blur - saved-window-id active-window-id)
(run-with-timer 1(n-on-blur - refresh)))
(add-hook'on-blur-hook#'(lambda()(save-some-buffers t)))
--refresh))


Is it possible to configure Emacs, so that it saves all files when the emacs window loses focus?

解决方案

I use this, it will only work if emacs is running under X (like it probably would in something like ubuntu).

(when
   (and (featurep 'x) window-system)
 (defvar on-blur--saved-window-id 0 "Last known focused window.")
 (defvar on-blur--timer nil "Timer refreshing known focused window.")
 (defun on-blur--refresh ()
   "Runs on-blur-hook if emacs has lost focus."
   (let* ((active-window (x-window-property
                          "_NET_ACTIVE_WINDOW" nil "WINDOW" 0 nil t))
          (active-window-id (if (numberp active-window)
                                active-window
                              (string-to-number
                               (format "%x00%x"
                                       (car active-window)
                                       (cdr active-window)) 16)))
          (emacs-window-id (string-to-number
                            (frame-parameter nil 'outer-window-id))))
     (when (and
            (= emacs-window-id on-blur--saved-window-id)
            (not (= active-window-id on-blur--saved-window-id)))
       (run-hooks 'on-blur-hook))
     (setq on-blur--saved-window-id active-window-id)
     (run-with-timer 1 nil 'on-blur--refresh)))
 (add-hook 'on-blur-hook #'(lambda () (save-some-buffers t)))
 (on-blur--refresh))

这篇关于如何自动保存文件失去焦点在Emacs的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆