From 776449fd7d07d56fd947d72706da9f682cdc994b Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Tue, 4 Aug 2015 14:32:55 +0200 Subject: [PATCH] Prevent duplicating calls to `org-link-search' * lisp/org.el (org-open-at-point): Do not call twice `org-link-search' when destination is not accessible within the current narrowed part of the buffer. --- lisp/org.el | 30 ++++++++++++++++-------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/lisp/org.el b/lisp/org.el index 66ae69e13..2a8e8dbe4 100755 --- a/lisp/org.el +++ b/lisp/org.el @@ -10827,22 +10827,24 @@ link in a property drawer line." (if (not arg) (org-mark-ring-push) (switch-to-buffer-other-window (org-get-buffer-for-internal-link (current-buffer)))) - (let ((cmd - (if (equal type "radio") - `(org-search-radio-target - ,(org-element-property :path link)) - `(org-link-search - ,(if (member type '("custom-id" "coderef")) - (org-element-property :raw-link link) - path) + (let ((destination + (org-with-wide-buffer + (if (equal type "radio") + (org-search-radio-target + (org-element-property :path link)) + (org-link-search + (if (member type '("custom-id" "coderef")) + (org-element-property :raw-link link) + path) ;; Prevent fuzzy links from matching ;; themselves. - ,(and (equal type "fuzzy") - (+ 2 - (org-element-property :begin link))))))) - (condition-case nil - (let ((org-link-search-inhibit-query t)) (eval cmd)) - (error (progn (widen) (eval cmd))))))) + (and (equal type "fuzzy") + (+ 2 (org-element-property :begin link))))) + (point)))) + (unless (and (<= (point-min) destination) + (>= (point-max) destination)) + (widen)) + (goto-char destination)))) (t (browse-url-at-point)))))) ;; On a footnote reference or at a footnote definition's label. ((or (eq type 'footnote-reference)