소스 검색

org-src: Small fix to auto-save feature

* lisp/org-src.el (org-src-mode): Trigger auto-save even when current
  buffer is not and edit buffer.
Nicolas Goaziou 10 년 전
부모
커밋
bf01f6fe66
1개의 변경된 파일14개의 추가작업 그리고 15개의 파일을 삭제
  1. 14 15
      lisp/org-src.el

+ 14 - 15
lisp/org-src.el

@@ -548,27 +548,26 @@ There is a mode hook, and keybindings for `org-edit-src-exit' and
 \\[org-edit-src-abort]"
 	"Exit with \\[org-edit-src-exit] or abort with \
 \\[org-edit-src-abort]"))))
-  ;; Possibly set-up various auto-save features (for the edit buffer
+  ;; Possibly activate various auto-save features (for the edit buffer
   ;; or the source buffer).
   (when org-edit-src-turn-on-auto-save
     (setq buffer-auto-save-file-name
 	  (concat (make-temp-name "org-src-")
 		  (format-time-string "-%Y-%d-%m")
 		  ".txt")))
-  ;; Install idle auto save feature, if necessary.
-  (or org-src--auto-save-timer
-      (zerop org-edit-src-auto-save-idle-delay)
-      (setq org-src--auto-save-timer
-	    (run-with-idle-timer
-	     org-edit-src-auto-save-idle-delay t
-	     (lambda ()
-	       (let ((edit-buffers (org-remove-if-not #'org-src-edit-buffer-p
-						      (buffer-list))))
-		 (if edit-bufffers
-		     (dolist (b edit-bufffers)
-		       (when (buffer-modified-p) (org-edit-src-save)))
-		   (cancel-timer org-src--auto-save-timer)
-		   (setq org-src--auto-save-timer nil))))))))
+  (unless (or org-src--auto-save-timer (zerop org-edit-src-auto-save-idle-delay))
+    (setq org-src--auto-save-timer
+	  (run-with-idle-timer
+	   org-edit-src-auto-save-idle-delay t
+	   (lambda ()
+	     (let (edit-flag)
+	       (dolist (b (buffer-list))
+		 (when (org-src-edit-buffer-p)
+		   (unless edit-flag (setq edit-flag t))
+		   (when (buffer-modified-p) (org-edit-src-save))))
+	       (unless edit-flag
+		 (cancel-timer org-src--auto-save-timer)
+		 (setq org-src--auto-save-timer nil))))))))
 
 (defun org-src-mode-configure-edit-buffer ()
   (when (org-bound-and-true-p org-src--from-org-mode)