diff options
author | Nicolas Goaziou <mail@nicolasgoaziou.fr> | 2017-08-21 11:31:29 +0200 |
---|---|---|
committer | Nicolas Goaziou <mail@nicolasgoaziou.fr> | 2017-08-21 11:31:29 +0200 |
commit | e40d2df6808ab803247270a5620253a216948539 (patch) | |
tree | 3ce8a2da62851ca4fd138df43bc4c9764d415574 | |
parent | 197c581620419ffd5e93fa9459d9f2adbc8c647e (diff) | |
parent | 4df137420d8201ab540e573738e2663effcc62b8 (diff) | |
download | org-mode-e40d2df6808ab803247270a5620253a216948539.tar.gz |
Merge branch 'maint'
-rw-r--r-- | lisp/org-src.el | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/lisp/org-src.el b/lisp/org-src.el index fe5ea07..fd7efc5 100644 --- a/lisp/org-src.el +++ b/lisp/org-src.el @@ -424,11 +424,10 @@ Assume point is in the corresponding edit buffer." (buffer-string)))) (defun org-src--edit-element - (datum name &optional major write-back contents remote) + (datum name &optional initialize write-back contents remote) "Edit DATUM contents in a dedicated buffer NAME. -MAJOR is the major mode used in the edit buffer. A nil value is -equivalent to `fundamental-mode'. +INITIALIZE is a function to call upon creating the buffer. When WRITE-BACK is non-nil, assume contents will replace original region. Moreover, if it is a function, apply it in the edit @@ -489,12 +488,13 @@ Leave point in edit buffer." (unless preserve-ind (org-do-remove-indentation)) (set-buffer-modified-p nil) (setq buffer-file-name nil) - ;; Start major mode. - (if (not major) (fundamental-mode) + ;; Initialize buffer. + (when (functionp initialize) (let ((org-inhibit-startup t)) - (condition-case e (funcall major) - (error (message "Language mode `%s' fails with: %S" - major (nth 1 e)))))) + (condition-case e + (funcall initialize) + (error (message "Initialization fails with: %S" + (error-message-string e)))))) ;; Transmit buffer-local variables for exit function. It must ;; be done after initializing major mode, as this operation ;; may reset them otherwise. @@ -837,7 +837,10 @@ A coderef format regexp can only match at the end of a line." (org-src--edit-element definition (format "*Edit footnote [%s]*" label) - #'org-mode + (let ((source (current-buffer))) + (lambda () + (org-mode) + (org-clone-local-variables source))) (lambda () (if (not inline?) (delete-region (point) (search-forward "]")) (delete-region (point) (search-forward ":" nil t 2)) @@ -850,8 +853,7 @@ A coderef format regexp can only match at the end of a line." (when (org-element-lineage definition '(table-cell)) (while (search-forward "\n" nil t) (replace-match ""))))) contents - 'remote) - (org-clone-local-variables (org-src--source-buffer))) + 'remote)) ;; Report success. t)) |