0
0
Fork 1
mirror of https://git.savannah.gnu.org/git/emacs/org-mode.git synced 2024-09-29 19:07:52 +00:00

Merge branch 'master' into next

This commit is contained in:
Nicolas Goaziou 2018-11-04 15:28:07 +01:00
commit 77b417f01a
2 changed files with 29 additions and 20 deletions

View file

@ -300,12 +300,6 @@ Return nil if there is no such buffer."
(eq (marker-buffer end) (marker-buffer org-src--end-marker))
(throw 'exit b))))))
(defun org-src--source-buffer ()
"Return source buffer edited by current buffer."
(unless (org-src-edit-buffer-p) (error "Not in a source buffer"))
(or (marker-buffer org-src--beg-marker)
(error "No source buffer available for current editing session")))
(defun org-src--get-lang-mode (lang)
"Return major mode that should be used for LANG.
LANG is a string, and the returned major mode is a symbol."
@ -774,6 +768,19 @@ If BUFFER is non-nil, test it instead."
(local-variable-p 'org-src--beg-marker buffer)
(local-variable-p 'org-src--end-marker buffer))))
(defun org-src-source-buffer ()
"Return source buffer edited in current buffer.
Raise an error when current buffer is not a source editing buffer."
(unless (org-src-edit-buffer-p) (error "Not in a source buffer"))
(or (marker-buffer org-src--beg-marker)
(error "No source buffer available for current editing session")))
(defun org-src-source-type ()
"Return type of element edited in current buffer.
Raise an error when current buffer is not a source editing buffer."
(unless (org-src-edit-buffer-p) (error "Not in a source buffer"))
org-src--source-type)
(defun org-src-switch-to-buffer (buffer context)
(pcase org-src-window-setup
(`current-window (pop-to-buffer-same-window buffer))
@ -1103,7 +1110,7 @@ Throw an error if there is no such buffer."
(beg org-src--beg-marker)
(end org-src--end-marker)
(overlay org-src--overlay))
(with-current-buffer (org-src--source-buffer)
(with-current-buffer (org-src-source-buffer)
(undo-boundary)
(goto-char beg)
;; Temporarily disable read-only features of OVERLAY in order to

View file

@ -9094,7 +9094,13 @@ non-nil."
((org-src-edit-buffer-p)
(let ((coderef-format (org-src-coderef-format)))
(cond
;; A code reference exists. Use it.
;; Code references do not exist in this type of buffer.
;; Pretend we're linking from the source buffer directly.
((not (memq (org-src-source-type) '(example-block src-block)))
(with-current-buffer (org-src-source-buffer)
(org-store-link arg interactive?))
(setq link nil))
;; A code reference exists. Use it.
((save-excursion
(beginning-of-line)
(re-search-forward (org-src-coderef-regexp coderef-format)
@ -9107,12 +9113,14 @@ non-nil."
(end-of-line)
(let* ((label (read-string "Code line label: "))
(reference (format coderef-format label))
(gc (- 79 (length link))))
(gc (- 79 (length reference))))
(if (< (current-column) gc)
(org-move-to-column gc t)
(insert " "))
(insert reference)
(setq link (format "(%s)" label))))
;; No code reference, and non-interactive call. Don't know
;; what to do. Give up.
(t (setq link nil)))))
;; We are in the agenda, link to referenced location
@ -10317,18 +10325,12 @@ of matched result, which is either `dedicated' or `fuzzy'."
(let ((element (org-element-at-point)))
(when (and (memq (org-element-type element)
'(example-block src-block))
;; Build proper regexp according to current
;; block's label format.
(let ((label-fmt
(regexp-quote
(or (org-element-property :label-fmt element)
org-coderef-label-format))))
(save-excursion
(beginning-of-line)
(looking-at (format ".*?\\(%s\\)[ \t]*$"
(format label-fmt coderef))))))
(org-match-line
(concat ".*?" (org-src-coderef-regexp
(org-src-coderef-format element)
coderef))))
(setq type 'dedicated)
(goto-char (match-beginning 1))
(goto-char (match-beginning 2))
(throw :coderef-match nil))))
(goto-char origin)
(error "No match for coderef: %s" coderef))))