Allow coderef on otherwise empty lines

* lisp/org-src.el (org-src-coderef-regexp): Update regexp.
* lisp/ox.el (org-export-resolve-coderef): Use function above.

Reported-by: D M German <dmg@turingmachine.org>
<http://permalink.gmane.org/gmane.emacs.orgmode/110656>
This commit is contained in:
Nicolas Goaziou 2016-12-07 23:11:10 +01:00
parent c797cc0f87
commit 3c64f06617
2 changed files with 7 additions and 10 deletions

View File

@ -765,7 +765,7 @@ white spaces. Match group 2 contains the same string without any
surrounding space. Match group 3 contains the label.
A coderef format regexp can only match at the end of a line."
(format "\\S-\\([ \t]*\\(%s\\)[ \t]*\\)$"
(format "\\([ \t]*\\(%s\\)[ \t]*\\)$"
(replace-regexp-in-string
"%s"
(if label (regexp-quote label) "\\([-a-zA-Z0-9_][-a-zA-Z0-9_ ]*\\)")

View File

@ -4171,18 +4171,15 @@ error if no block contains REF."
(lambda (el)
(with-temp-buffer
(insert (org-trim (org-element-property :value el)))
(let* ((label-fmt (regexp-quote
(or (org-element-property :label-fmt el)
org-coderef-label-format)))
(ref-re
(format "^.*?\\S-.*?\\([ \t]*\\(%s\\)\\)[ \t]*$"
(format label-fmt ref))))
(let* ((label-fmt (or (org-element-property :label-fmt el)
org-coderef-label-format))
(ref-re (org-src-coderef-regexp label-fmt ref)))
;; Element containing REF is found. Resolve it to
;; either a label or a line number, as needed.
(when (re-search-backward ref-re nil t)
(cond
((org-element-property :use-labels el) ref)
(t (+ (or (org-export-get-loc el info) 0) (line-number-at-pos))))))))
(if (org-element-property :use-labels el) ref
(+ (or (org-export-get-loc el info) 0)
(line-number-at-pos)))))))
info 'first-match)
(signal 'org-link-broken (list ref))))