From cd52bef7715ed551972ad5331fce50260cfcda50 Mon Sep 17 00:00:00 2001 From: Samuel Loury Date: Fri, 4 Jan 2013 14:01:43 +0100 Subject: [PATCH] Make org-open-at-point behave the same with plain links and with bracket links. * lisp/org.el (org-open-at-point): make org-open-at-point handle a plain link even if the cursor is before it TINYCHANGE --- lisp/org.el | 36 ++++++++++++++++++++++++++++++------ 1 file changed, 30 insertions(+), 6 deletions(-) diff --git a/lisp/org.el b/lisp/org.el index b0fcb58..5d75055 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -9911,12 +9911,36 @@ application the system uses for this file type." (throw 'match t)) (save-excursion - (let ((plinkpos (org-in-regexp org-plain-link-re))) - (when (or (org-in-regexp org-angle-link-re) - (and plinkpos (goto-char (car plinkpos)) - (save-match-data (not (looking-back "\\[\\["))))) - (setq type (match-string 1) - path (org-link-unescape (match-string 2))) + (when (or (org-in-regexp org-angle-link-re) + (let ((match (org-in-regexp org-plain-link-re))) + (and + ;; link at point is a plain link + match + ;; check that it is not of the form + ;; [[http://orgmode.org][Org]]Mode. in that + ;; case, if the cursor is on "Mode", then the + ;; string "http://orgmode.org][Org]]Mode" is + ;; recognized as a plain link while it should + ;; not be + (save-excursion + (progn + ;; go to the begining of the match, If we + ;; were in the special case, we should now + ;; be in a org-bracket-link-regexp + (goto-char (car match)) + (not + (org-in-regexp org-bracket-link-regexp)))))) + (let ((line_ending (save-excursion (end-of-line) + (point)))) + ;; if in a line before a plain link or a + ;; bracket link + (or + (re-search-forward org-plain-link-re + line_ending t) + (re-search-forward org-bracket-link-regexp + line_ending t)))) + (setq type (match-string 1) + path (org-link-unescape (match-string 2))) (throw 'match t)))) (save-excursion (when (org-in-regexp (org-re "\\(:[[:alnum:]_@#%:]+\\):[ \t]*$")) -- 1.7.10.4