Fix storing coderef link on when a code ref already exists

* lisp/org.el (org-store-link): Fix storing coderef link on when
  a code ref already exists.
This commit is contained in:
Nicolas Goaziou 2018-11-03 16:38:28 +01:00
parent 6382a6bbb3
commit eb8041ef82

View file

@ -9242,23 +9242,31 @@ non-nil."
(setq desc (or (plist-get org-store-link-plist :description) (setq desc (or (plist-get org-store-link-plist :description)
link))) link)))
;; Store a link from a source code buffer. ;; Store a link from a remote editing buffer.
((org-src-edit-buffer-p) ((org-src-edit-buffer-p)
(let ((coderef-format (org-src-coderef-format))) (let ((coderef-format (org-src-coderef-format)))
(cond ((org-match-line (org-src-coderef-regexp coderef-format)) (cond
(setq link (format "(%s)" (match-string-no-properties 3)))) ;; A code reference exists. Use it.
(interactive? ((save-excursion
(let ((label (read-string "Code line label: "))) (beginning-of-line)
(end-of-line) (re-search-forward (org-src-coderef-regexp coderef-format)
(setq link (format coderef-format label)) (line-end-position)
(let ((gc (- 79 (length link)))) t))
(if (< (current-column) gc) (setq link (format "(%s)" (match-string-no-properties 3))))
(org-move-to-column gc t) ;; No code reference. Create a new one then store the link
(insert " "))) ;; to it, but only in the function is called interactively.
(insert link) (interactive?
(setq link (concat "(" label ")")) (end-of-line)
(setq desc nil))) (let* ((label (read-string "Code line label: "))
(t (setq link nil))))) (reference (format coderef-format label))
(gc (- 79 (length link))))
(if (< (current-column) gc)
(org-move-to-column gc t)
(insert " "))
(insert reference))
(setq link (format "(%s)" label))
(setq desc nil))
(t (setq link nil)))))
;; We are in the agenda, link to referenced location ;; We are in the agenda, link to referenced location
((equal (bound-and-true-p org-agenda-buffer-name) (buffer-name)) ((equal (bound-and-true-p org-agenda-buffer-name) (buffer-name))