From 3c64f0661727485d6ee3bfa1aae956b441fa8312 Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Wed, 7 Dec 2016 23:11:10 +0100 Subject: [PATCH] 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 --- lisp/org-src.el | 2 +- lisp/ox.el | 15 ++++++--------- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/lisp/org-src.el b/lisp/org-src.el index bcc93acdc..89f3238b6 100644 --- a/lisp/org-src.el +++ b/lisp/org-src.el @@ -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_ ]*\\)") diff --git a/lisp/ox.el b/lisp/ox.el index 63d03943b..e776849f6 100644 --- a/lisp/ox.el +++ b/lisp/ox.el @@ -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))))