forked from mirrors/org-mode
org-src: Fix idle auto-save feature
* lisp/org-src.el (org-edit-src-code): Fix regexp. (org-edit-src-exit): Do not remove auto-save timer. This is handled by the timer itself. `org-edit-src-save' calls `org-edit-src-exit', which then clears the auto-save timer, thus preventing any further auto-saves before the next `org-edit-src-code' call. Thanks to Adriaan Sticker for reporting it. http://permalink.gmane.org/gmane.emacs.orgmode/90650
This commit is contained in:
parent
d4a7ba2a96
commit
01f736b763
|
@ -376,23 +376,21 @@ the display of windows containing the Org buffer and the code buffer."
|
|||
(when (fboundp edit-prep-func)
|
||||
(funcall edit-prep-func full-info)))
|
||||
(or org-edit-src-code-timer
|
||||
(zerop org-edit-src-auto-save-idle-delay)
|
||||
(setq org-edit-src-code-timer
|
||||
(unless (zerop org-edit-src-auto-save-idle-delay)
|
||||
(run-with-idle-timer
|
||||
org-edit-src-auto-save-idle-delay t
|
||||
(lambda ()
|
||||
(cond
|
||||
((and (string-match "\*Org Src" (buffer-name))
|
||||
(buffer-modified-p))
|
||||
(org-edit-src-save))
|
||||
((not
|
||||
(delq nil (mapcar
|
||||
(lambda (b)
|
||||
(string-match "\*Org Src" (buffer-name b)))
|
||||
(buffer-list))))
|
||||
(cancel-timer org-edit-src-code-timer)
|
||||
(setq org-edit-src-code-timer)))))))))
|
||||
t)))
|
||||
(run-with-idle-timer
|
||||
org-edit-src-auto-save-idle-delay t
|
||||
(lambda ()
|
||||
(cond
|
||||
((org-string-match-p "\\`\\*Org Src" (buffer-name))
|
||||
(when (buffer-modified-p) (org-edit-src-save)))
|
||||
((not (org-some (lambda (b)
|
||||
(org-string-match-p "\\`\\*Org Src"
|
||||
(buffer-name b)))
|
||||
(buffer-list)))
|
||||
(cancel-timer org-edit-src-code-timer)
|
||||
(setq org-edit-src-code-timer nil))))))))
|
||||
t)))
|
||||
|
||||
(defun org-edit-src-continue (e)
|
||||
"Continue editing source blocks." ;; Fixme: be more accurate
|
||||
|
@ -757,8 +755,8 @@ with \",*\", \",#+\", \",,*\" and \",,#+\"."
|
|||
(delete-region beg (max beg end))
|
||||
(unless (string-match "\\`[ \t]*\\'" code)
|
||||
(insert code))
|
||||
;; Make sure the overlay stays in place
|
||||
(when (eq context 'save) (move-overlay ovl beg (point)))
|
||||
;; Make sure the overlay stays in place
|
||||
(when (eq context 'save) (move-overlay ovl beg (point)))
|
||||
(goto-char beg)
|
||||
(if single (just-one-space)))
|
||||
(if (memq t (mapcar (lambda (overlay)
|
||||
|
@ -774,9 +772,6 @@ with \",*\", \",#+\", \",,*\" and \",,#+\"."
|
|||
(unless (eq context 'save)
|
||||
(move-marker beg nil)
|
||||
(move-marker end nil)))
|
||||
(when org-edit-src-code-timer
|
||||
(cancel-timer org-edit-src-code-timer)
|
||||
(setq org-edit-src-code-timer nil))
|
||||
(unless (eq context 'save)
|
||||
(when org-edit-src-saved-temp-window-config
|
||||
(set-window-configuration org-edit-src-saved-temp-window-config)
|
||||
|
|
Loading…
Reference in a new issue