是否可以配置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. 在emacs或xemacs文件上進行自動保存(最好是失去焦點)
- 2. 如何讓Vim在失去焦點時自動保存文件?
- 3. 如何在失去焦點時自動保存我的Visual Studio 2015文件?
- 4. Textmate2保存在失去焦點
- 5. 如何在失去焦點後保存NumericUpDown的無效值?
- 6. 如何在slickgrid失去焦點時進行單元格保存
- 7. 如何配置Emacs自動保存並備份到點文件?
- 8. ,如何強制將失去焦點保存到按鈕?
- 9. 在失去焦點後保持焦點級別的按鈕
- 10. Flex:失去組件焦點
- 11. jQuery失去焦點事件
- 12. UITextField失去焦點事件
- 13. 在角4如何失去焦點KEYUP
- 14. 配置「保存在失去焦點」在Visual Studio 2010
- 15. UIGestureRecognizer「失去焦點」?
- 16. Flex:ItemEditor失去焦點!
- 17. 層失去焦點
- 18. java - 失去焦點
- 19. UISearchBar失去焦點
- 20. TextBox失去焦點
- 21. Ultraoptionset失去焦點
- 22. TinyMCE - 在Chrome上粘貼失去焦點
- 23. 在c中失去焦點#
- 24. 頁在WPF失去焦點
- 25. 在safari中失去焦點
- 26. 當文本控件失去焦點時如何獲取事件?
- 27. 文本框失去焦點與jQuery自動完成選擇
- 28. C#WPF XAML自動文本框失去焦點而打字
- 29. 記事本上的EVENT_OBJECT_DESTROY失去焦點?
- 30. Android的java啓動失去焦點
作爲廣告宣傳在Ubuntu上運行,並不需要將Emacs作爲工作流程的核心。 – 2013-03-19 15:55:22