mirror of
https://git.savannah.gnu.org/git/emacs/org-mode.git
synced 2024-12-01 08:17:34 +00:00
org-element: Fix radio link parser
* lisp/org-element.el (org-element--object-lex): Fix parsing of radio links within emphasis. * testing/lisp/test-org-element.el (test-org-element/link-parser): Add test. Reported-by: R C <recifx@gmail.com> <http://permalink.gmane.org/gmane.emacs.orgmode/113063>
This commit is contained in:
parent
74379eaaa2
commit
8a2ffac88a
@ -4366,6 +4366,10 @@ to an appropriate container (e.g., a paragraph)."
|
||||
(if (memq 'table-cell restriction) (org-element-table-cell-parser)
|
||||
(let* ((start (point))
|
||||
(limit
|
||||
;; Object regexp sometimes needs to have a peek at
|
||||
;; a character ahead. Therefore, when there is a hard
|
||||
;; limit, make it one more than the true beginning of the
|
||||
;; radio target.
|
||||
(save-excursion
|
||||
(cond ((not org-target-link-regexp) nil)
|
||||
((not (memq 'link restriction)) nil)
|
||||
@ -4381,8 +4385,8 @@ to an appropriate container (e.g., a paragraph)."
|
||||
((and (= start (1+ (line-beginning-position)))
|
||||
(= start (match-end 1)))
|
||||
(and (re-search-forward org-target-link-regexp nil t)
|
||||
(match-beginning 1)))
|
||||
(t (match-beginning 1)))))
|
||||
(1+ (match-beginning 1))))
|
||||
(t (1+ (match-beginning 1))))))
|
||||
found)
|
||||
(save-excursion
|
||||
(while (and (not found)
|
||||
@ -4456,7 +4460,8 @@ to an appropriate container (e.g., a paragraph)."
|
||||
(org-element-link-parser)))))))
|
||||
(or (eobp) (forward-char))))
|
||||
(cond (found)
|
||||
(limit (org-element-link-parser)) ;radio link
|
||||
(limit (forward-char -1)
|
||||
(org-element-link-parser)) ;radio link
|
||||
(t nil))))))
|
||||
|
||||
(defun org-element--parse-objects (beg end acc restriction &optional parent)
|
||||
|
@ -1618,6 +1618,17 @@ e^{i\\pi}+1=0
|
||||
(org-test-with-temp-text "* <<<a>>>\n<point>a-bug"
|
||||
(org-update-radio-target-regexp)
|
||||
(org-element-parse-buffer)))
|
||||
;; Pathological case: radio target in an emphasis environment.
|
||||
(should
|
||||
(eq 'bold
|
||||
(org-test-with-temp-text "* <<<radio>>>\n<point>*radio*"
|
||||
(org-update-radio-target-regexp)
|
||||
(org-element-type (org-element-context)))))
|
||||
(should
|
||||
(eq 'link
|
||||
(org-test-with-temp-text "* <<<radio>>>\n*<point>radio*"
|
||||
(org-update-radio-target-regexp)
|
||||
(org-element-type (org-element-context)))))
|
||||
;; Standard link.
|
||||
;;
|
||||
;; ... with description.
|
||||
|
Loading…
Reference in New Issue
Block a user