summaryrefslogtreecommitdiff
path: root/lisp/net/goto-addr.el
diff options
context:
space:
mode:
authorPhil Sainty <psainty@orcon.net.nz>2019-06-25 16:02:12 +0200
committerLars Ingebrigtsen <larsi@gnus.org>2019-06-25 16:02:12 +0200
commit9e81b22113de41ba80df9c5a7aaf08a056180785 (patch)
tree0d165c0eec80b6088b4336b7d3c5d2f221bae393 /lisp/net/goto-addr.el
parent0454bfd3313c069ca395f02ab6f377a17ff44965 (diff)
downloademacs-9e81b22113de41ba80df9c5a7aaf08a056180785.tar.gz
Fix `goto-address-url-regexp'
* lisp/net/goto-addr.el (goto-address-uri-schemes-ignored): New variable. (goto-address-uri-schemes): Ditto. (goto-address-url-regexp): Use them to compose the final regexp. * lisp/net/goto-addr.el: The URI schemes to be recognised by `goto-address-mode' were not regexp-quoted (Bug#23343).
Diffstat (limited to 'lisp/net/goto-addr.el')
-rw-r--r--lisp/net/goto-addr.el42
1 files changed, 26 insertions, 16 deletions
diff --git a/lisp/net/goto-addr.el b/lisp/net/goto-addr.el
index af2b83653dd..eaa1356955a 100644
--- a/lisp/net/goto-addr.el
+++ b/lisp/net/goto-addr.el
@@ -59,6 +59,7 @@
;;; Code:
+(require 'seq)
(require 'thingatpt)
(autoload 'browse-url-url-at-point "browse-url")
@@ -101,23 +102,32 @@ A value of t means there is no limit--fontify regardless of the size."
"[-a-zA-Z0-9=._+]+@\\([-a-zA-Z0-9_]+\\.\\)+[a-zA-Z0-9]+"
"A regular expression probably matching an e-mail address.")
+(defvar goto-address-uri-schemes-ignored
+ ;; By default we exclude `mailto:' (email addresses are matched
+ ;; by `goto-address-mail-regexp') and also `data:', as it is not
+ ;; terribly useful to follow those URIs, and leaving them causes
+ ;; `use Data::Dumper;' to be fontified oddly in Perl files.
+ '("mailto:" "data:")
+ "List of URI schemes to exclude from `goto-address-uri-schemes'.
+
+Customisations to this variable made after goto-addr is loaded
+will have no effect.")
+
+(defvar goto-address-uri-schemes
+ ;; We use `thing-at-point-uri-schemes', with a few exclusions,
+ ;; as listed in `goto-address-uri-schemes-ignored'.
+ (seq-reduce (lambda (accum elt) (delete elt accum))
+ goto-address-uri-schemes-ignored
+ (copy-sequence thing-at-point-uri-schemes))
+ "List of URI schemes matched by `goto-address-url-regexp'.
+
+Customisations to this variable made after goto-addr is loaded
+will have no effect.")
+
(defvar goto-address-url-regexp
- (concat
- "\\<\\("
- (mapconcat 'identity
- (delete "mailto:"
- ;; Remove `data:', as it's not terribly useful to follow
- ;; those. Leaving them causes `use Data::Dumper;' to be
- ;; fontified oddly in Perl files.
- (delete "data:"
- (copy-sequence thing-at-point-uri-schemes)))
- "\\|")
- "\\)"
- thing-at-point-url-path-regexp)
- ;; (concat "\\b\\(s?https?\\|ftp\\|file\\|gopher\\|news\\|"
- ;; "telnet\\|wais\\):\\(//[-a-zA-Z0-9_.]+:"
- ;; "[0-9]*\\)?[-a-zA-Z0-9_=?#$@~`%&*+|\\/.,]*"
- ;; "[-a-zA-Z0-9_=#$@~`%&*+|\\/]")
+ (concat "\\<"
+ (regexp-opt goto-address-uri-schemes t)
+ thing-at-point-url-path-regexp)
"A regular expression probably matching a URL.")
(defvar goto-address-highlight-keymap