summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Goaziou <mail@nicolasgoaziou.fr>2014-09-11 18:19:21 +0200
committerNicolas Goaziou <mail@nicolasgoaziou.fr>2014-09-11 18:21:41 +0200
commit01f736b763729e4d1e6a82faa31748f2bd2d1e0a (patch)
tree4e009a97cc4aca589490a5e2852476aff9a03947
parentd4a7ba2a966a1a5539318a5512f273cf91a4af4c (diff)
downloadorg-mode-01f736b763729e4d1e6a82faa31748f2bd2d1e0a.tar.gz
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
-rw-r--r--lisp/org-src.el37
1 files changed, 16 insertions, 21 deletions
diff --git a/lisp/org-src.el b/lisp/org-src.el
index f870b2c..752fa30 100644
--- a/lisp/org-src.el
+++ b/lisp/org-src.el
@@ -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)