summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Goaziou <mail@nicolasgoaziou.fr>2018-11-03 16:38:28 +0100
committerNicolas Goaziou <mail@nicolasgoaziou.fr>2018-11-03 17:04:01 +0100
commiteb8041ef829965dbfcaad544f0052778f1c2bd46 (patch)
tree49657cd93a0a965c4e6f2123e8af7b1345357025
parent6382a6bbb31aad38b3157a8cb6b2e2c8f39fcd6e (diff)
downloadorg-mode-eb8041ef829965dbfcaad544f0052778f1c2bd46.tar.gz
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.
-rw-r--r--lisp/org.el38
1 files changed, 23 insertions, 15 deletions
diff --git a/lisp/org.el b/lisp/org.el
index dce66fc..b069e3a 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -9242,23 +9242,31 @@ non-nil."
(setq desc (or (plist-get org-store-link-plist :description)
link)))
- ;; Store a link from a source code buffer.
+ ;; Store a link from a remote editing buffer.
((org-src-edit-buffer-p)
(let ((coderef-format (org-src-coderef-format)))
- (cond ((org-match-line (org-src-coderef-regexp coderef-format))
- (setq link (format "(%s)" (match-string-no-properties 3))))
- (interactive?
- (let ((label (read-string "Code line label: ")))
- (end-of-line)
- (setq link (format coderef-format label))
- (let ((gc (- 79 (length link))))
- (if (< (current-column) gc)
- (org-move-to-column gc t)
- (insert " ")))
- (insert link)
- (setq link (concat "(" label ")"))
- (setq desc nil)))
- (t (setq link nil)))))
+ (cond
+ ;; A code reference exists. Use it.
+ ((save-excursion
+ (beginning-of-line)
+ (re-search-forward (org-src-coderef-regexp coderef-format)
+ (line-end-position)
+ t))
+ (setq link (format "(%s)" (match-string-no-properties 3))))
+ ;; No code reference. Create a new one then store the link
+ ;; to it, but only in the function is called interactively.
+ (interactive?
+ (end-of-line)
+ (let* ((label (read-string "Code line label: "))
+ (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
((equal (bound-and-true-p org-agenda-buffer-name) (buffer-name))