From 8165be3aa57685ff61471db57f3308caf6e1de94 Mon Sep 17 00:00:00 2001 From: Bastien Guerry Date: Thu, 20 Dec 2012 16:34:27 +0100 Subject: [PATCH] org.el: Prevent link activation in source code blocks MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit * org.el (org-in-fixed-width-region-p): Save match data. (org-in-src-block-p): Use case-folding for searching the block boundaries. (org-activate-plain-links, org-activate-angle-links) (org-activate-bracket-links): Prevent link activation in source code blocks. Thanks to Sébastien Vauban for reporting a related issue. --- lisp/org.el | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/lisp/org.el b/lisp/org.el index 23b72c864..9d2aba866 100644 --- a/lisp/org.el +++ b/lisp/org.el @@ -5295,12 +5295,13 @@ will be prompted for." "Run through the buffer and add overlays to links." (catch 'exit (let (f) - (when (re-search-forward (concat org-plain-link-re) limit t) + (when (and (re-search-forward (concat org-plain-link-re) limit t) + (not (org-in-src-block-p))) (org-remove-flyspell-overlays-in (match-beginning 0) (match-end 0)) (setq f (get-text-property (match-beginning 0) 'face)) - (if (or (eq f 'org-tag) - (and (listp f) (memq 'org-tag f))) - nil + (unless (or (org-in-src-block-p) + (eq f 'org-tag) + (and (listp f) (memq 'org-tag f))) (add-text-properties (match-beginning 0) (match-end 0) (list 'mouse-face 'highlight 'face 'org-link @@ -5439,7 +5440,8 @@ by a #." (defun org-activate-angle-links (limit) "Run through the buffer and add overlays to links." - (if (re-search-forward org-angle-link-re limit t) + (if (and (re-search-forward org-angle-link-re limit t) + (not (org-in-src-block-p))) (progn (org-remove-flyspell-overlays-in (match-beginning 0) (match-end 0)) (add-text-properties (match-beginning 0) (match-end 0) @@ -5467,7 +5469,8 @@ by a #." (defun org-activate-bracket-links (limit) "Run through the buffer and add overlays to bracketed links." - (if (re-search-forward org-bracket-link-regexp limit t) + (if (and (re-search-forward org-bracket-link-regexp limit t) + (not (org-in-src-block-p))) (let* ((help (concat "LINK: " (org-match-string-no-properties 1))) ;; FIXME: above we should remove the escapes. @@ -18958,7 +18961,8 @@ See the individual commands for more information." (defsubst org-in-fixed-width-region-p () "Is point in a fixed-width region?" - (eq 'fixed-width (org-element-type (org-element-at-point)))) + (save-match-data + (eq 'fixed-width (org-element-type (org-element-at-point))))) (defun org-edit-special (&optional arg) "Call a special editor for the stuff at point. @@ -20246,7 +20250,7 @@ and end of string." "Whether point is in a code source block. When INSIDE is non-nil, don't consider we are within a src block when point is at #+BEGIN_SRC or #+END_SRC." - (let (ov) + (let ((case-fold-search t) ov) (or (when (setq ov (overlays-at (point))) (memq 'org-block-background (overlay-properties @@ -20255,7 +20259,7 @@ when point is at #+BEGIN_SRC or #+END_SRC." (save-match-data (save-excursion (move-beginning-of-line 1) - (looking-at ".*#\\+\\(BEGIN\\|END\\)_SRC"))))))) + (looking-at ".*#\\+\\(begin\\|end\\)_src"))))))) (defun org-context () "Return a list of contexts of the current cursor position. -- 2.11.4.GIT