Fix lsearch strings with newline characters

* lisp/org.el (org-link-search): Fix regexp.
* testing/lisp/test-org.el (test-org/fuzzy-links): Add test.

Reported-by: Matt Lundin <mdl@imapmail.org>
<http://permalink.gmane.org/gmane.emacs.orgmode/112876>
This commit is contained in:
Nicolas Goaziou 2017-03-27 13:34:04 +02:00
parent 18d9b2181b
commit 4dde26f086
2 changed files with 13 additions and 2 deletions

View File

@ -11172,7 +11172,8 @@ of matched result, which is either `dedicated' or `fuzzy'."
(normalized (replace-regexp-in-string "\n[ \t]*" " " s)) (normalized (replace-regexp-in-string "\n[ \t]*" " " s))
(starred (eq (string-to-char normalized) ?*)) (starred (eq (string-to-char normalized) ?*))
(words (split-string (if starred (substring s 1) s))) (words (split-string (if starred (substring s 1) s)))
(s-multi-re (mapconcat #'regexp-quote words "[ \t]+\\(?:\n[ \t]*\\)?")) (s-multi-re
(mapconcat #'regexp-quote words "\\([ \t]*\n[ \t]*\\|[ \t]+\\)"))
(s-single-re (mapconcat #'regexp-quote words "[ \t]+")) (s-single-re (mapconcat #'regexp-quote words "[ \t]+"))
type) type)
(cond (cond

View File

@ -2217,7 +2217,17 @@ Foo Bar
(should (should
(org-test-with-temp-text "* [1]\n[[*%5B1%5D<point>]]" (org-test-with-temp-text "* [1]\n[[*%5B1%5D<point>]]"
(org-open-at-point) (org-open-at-point)
(bobp)))) (bobp)))
;; Match search strings containing newline characters.
(should
(org-test-with-temp-text-in-file "Paragraph\n\nline1\nline2\n\n"
(let ((file (buffer-file-name)))
(goto-char (point-max))
(insert (format "[[file:%s::line1 line2]]" file))
(beginning-of-line)
(let ((org-link-search-must-match-exact-headline nil))
(org-open-at-point))
(looking-at-p "line1")))))
;;;; Link Escaping ;;;; Link Escaping