是否可以配置Emacs,以便在emacs窗口失去焦点时保存所有文件?如何在Emacs上自动保存失去焦点的文件
回答
我使用这个,它只会在emacs在X下运行时(比如它可能在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))
不知道这是你想要的。
(defun dld-deselect-frame-hook()
(save-some-buffers 1))
(add-hook 'deselect-frame-hook 'dld-deselect-frame-hook)
来源:http://www.dribin.org/dave/blog/archives/2003/09/10/emacs/
编辑:这似乎只在XEmacs的
工作是的,我看了所有的 - 钩和功能,但我没有找到说选择或重点的东西。 – Rockiger 2009-08-05 21:48:10
你可以用`自动保存间隔”,保存您键入的每n个字符。我的设置为100.那么对于每2-3行代码,也许呢?
auto-save-interval是`C源代码'中定义的变量 。其值 是100
文档: *自动保存之间的输入事件数量。零意味着禁用 自动保存,因为键入的字符数为 。
您可以自定义此变量。
这并不回答您的原始问题;这只是一种实现类似的方式。
我知道,我所说的功能是来自Scribes。 编辑html之类的东西非常方便,你不必再按C-x C-s,只需更改窗口并检查浏览器即可。 – Rockiger 2009-08-08 08:53:11
[...]我在说的功能是从 抄写员。 编辑html之类的时候非常方便,你不用 必须再按C-x C-s,你只需要改变窗口并检查你的 浏览器。
在这种情况下,代替切换到浏览器应用程序,命令的Emacs加载浏览器应用程序(或C-c C-v
M-x browse-url-of-buffer
)。使用这种方法,您可以编写自己的功能,节省了缓冲和然后带来的浏览器了,比如:
(defun my-browse-url-of-buffer()
"Save current buffer and view its content in browser."
(interactive)
(save-buffer)
(browse-url-of-buffer))
它勾到一个方便的结合。
或者您仍然可以使用每次保存缓冲区的html-autoview-mode
,自动将文件加载到您喜欢的浏览器中。
这听起来像一个有趣的解决方案。我会试试这个。但是我仍然有点惊讶,Emacs无法对改变焦点等事情做出反应。 – Rockiger 2009-08-11 19:44:49
@Rockiger Emacs似乎并没有提供一种方法来处理未聚焦的事件。 – 2009-08-12 15:45:02
我在Gnu Emacs 24.4中添加了焦点钩子。他们被称为focus-in-hook
和focus-out-hook
。
您可以添加
(defun save-all()
(interactive)
(save-some-buffers t))
(add-hook 'focus-out-hook 'save-all)
到你的.emacs文件,它应该保存在失去重心的所有文件。
- 1. 如何让Vim在失去焦点时自动保存文件?
- 2. 如何在失去焦点时自动保存我的Visual Studio 2015文件?
- 3. Textmate2保存在失去焦点
- 4. 如何在失去焦点后保存NumericUpDown的无效值?
- 5. 如何在slickgrid失去焦点时进行单元格保存
- 6. ,如何强制将失去焦点保存到按钮?
- 7. Flex:失去组件焦点
- 8. UITextField失去焦点事件
- 9. jQuery失去焦点事件
- 10. 配置“保存在失去焦点”在Visual Studio 2010
- 11. 层失去焦点
- 12. UIGestureRecognizer“失去焦点”?
- 13. TextBox失去焦点
- 14. java - 失去焦点
- 15. 当文本控件失去焦点时如何获取事件?
- 16. 文本框失去焦点与jQuery自动完成选择
- 17. C#WPF XAML自动文本框失去焦点而打字
- 18. Android的webview失去焦点
- 19. 失去焦点的按钮
- 20. 的UISearchBar失去焦点
- 21. 失去焦点的页面
- 22. 如何防止Popup失去焦点?
- 23. 如何知道NSTextView失去焦点?
- 24. 如何使Windows Phone textblock失去焦点?
- 25. 没有失去焦点事件jQuery的
- 26. 如何不是在firefox的插件,当焦点失去全屏?
- 27. jQuery对话框失去焦点滚动
- 28. 黑莓浆果有焦点和失去焦点的事件吗?
- 29. Android:如何确保EditText从不失去焦点?
- 30. 在Android上按住home键时,活动失去焦点
作为广告宣传在Ubuntu上运行,并不需要将Emacs作为工作流程的核心。 – 2013-03-19 15:55:22