diff options
author | Bastien Guerry <bzg@altern.org> | 2013-02-16 11:35:39 +0100 |
---|---|---|
committer | Bastien Guerry <bzg@altern.org> | 2013-02-16 11:35:39 +0100 |
commit | 25aabd7d2f78eb3cdccb17214ffe24a1f19a0e93 (patch) | |
tree | 28c62192dbf02dbb1dc35f283b7349cb316f6bfc | |
parent | 602d6edb56adcc381fd6204b7ac46a0285048126 (diff) | |
download | org-mode-25aabd7d2f78eb3cdccb17214ffe24a1f19a0e93.tar.gz |
org-src.el (org-edit-src-auto-save-idle-delay): New option
* org-src.el (org-edit-src-auto-save-idle-delay): New option.
(org-src-ask-before-returning-to-edit-buffer): Make a defcustom.
(org-edit-src-code-timer): New timer variable.
(org-edit-src-code): Run the timer.
(org-edit-fixed-width-region): Enhance message.
(org-edit-src-exit): Cancel the timer.
Thanks to Andreas Leha for suggesting this.
-rw-r--r-- | lisp/org-src.el | 40 |
1 files changed, 36 insertions, 4 deletions
diff --git a/lisp/org-src.el b/lisp/org-src.el index 298c31d..3994572 100644 --- a/lisp/org-src.el +++ b/lisp/org-src.el @@ -64,6 +64,14 @@ there are kept outside the narrowed region." (const :tag "from `lang' element") (const :tag "from `style' element"))))) +(defcustom org-edit-src-auto-save-idle-delay 5 + "Delay of idle time before auto-saving src code buffers. +When a positive integer N, save after N seconds of idle time. +When 0 (the default), don't auto-save." + :group 'org-edit-structure + :version "24.3" + :type 'integer) + (defcustom org-coderef-label-format "(ref:%s)" "The default coderef format. This format string will be used to search for coderef labels in literal @@ -187,11 +195,14 @@ For example, there is no ocaml-mode in Emacs, but the mode to use is (defvar org-edit-src-block-indentation nil) (defvar org-edit-src-saved-temp-window-config nil) -(defvar org-src-ask-before-returning-to-edit-buffer t +(defcustom org-src-ask-before-returning-to-edit-buffer t "If nil, when org-edit-src code is used on a block that already has an active edit buffer, it will switch to that edit buffer immediately; otherwise it will ask whether you want to return to -the existing edit buffer.") +the existing edit buffer." + :group 'org-edit-structure + :version "24.3" + :type 'boolean) (defvar org-src-babel-info nil) @@ -203,6 +214,7 @@ This minor mode is turned on in two situations: There is a mode hook, and keybindings for `org-edit-src-exit' and `org-edit-src-save'") +(defvar org-edit-src-code-timer nil) (defun org-edit-src-code (&optional context code edit-buffer-name) "Edit the source CODE block at point. The code is copied to a separate buffer and the appropriate mode @@ -341,7 +353,24 @@ the display of windows containing the Org buffer and the code buffer." (org-set-local 'header-line-format msg)) (let ((edit-prep-func (intern (concat "org-babel-edit-prep:" lang)))) (when (fboundp edit-prep-func) - (funcall edit-prep-func full-info)))) + (funcall edit-prep-func full-info))) + (or org-edit-src-code-timer + (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))) (defun org-edit-src-continue (e) @@ -421,7 +450,7 @@ the fragment in the Org-mode buffer." (col (current-column)) (case-fold-search t) (msg (substitute-command-keys - "Edit, then exit with C-c ' (C-c and single quote)")) + "Edit, then exit with C-c ' (C-c and single quote) -- C-c k to abort")) (org-mode-p (derived-mode-p 'org-mode)) (beg (make-marker)) (end (make-marker)) @@ -721,6 +750,9 @@ 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) |