summaryrefslogtreecommitdiff
path: root/lisp/erc/erc-button.el
diff options
context:
space:
mode:
authorAmin Bandali <bandali@gnu.org>2019-11-18 10:24:48 -0500
committerAmin Bandali <bandali@gnu.org>2020-01-13 01:51:00 -0500
commit37e0d00c143ddb6d5e978eb1d3ac9c1d1aba3860 (patch)
tree16d37222fb74bc03499852b7acbb47256983ff1b /lisp/erc/erc-button.el
parentd47b157969356f15e038dbbfa4da7769f6f98583 (diff)
downloademacs-37e0d00c143ddb6d5e978eb1d3ac9c1d1aba3860.tar.gz
Improve ERC's matching of nicks and URLs (bug#38257)
* lisp/erc/erc-{button,match}.el (erc-{button,match}-syntax-table): Omit (, ), and '; as they're not valid nick characters, per RFC 2812 section 2.3.1. This enables correct matching/highlighting of nicks when they're surrounded by parens, like (nick), and when adjacent to an apostrophe, like nick's. * lisp/erc/erc-button.el (erc-button-url-regexp): Use the regexp from browse-url-button-regexp, which among other things, seems to handle surrounding pair of parens better.
Diffstat (limited to 'lisp/erc/erc-button.el')
-rw-r--r--lisp/erc/erc-button.el11
1 files changed, 3 insertions, 8 deletions
diff --git a/lisp/erc/erc-button.el b/lisp/erc/erc-button.el
index 6e30b3a7935..e4f5a190913 100644
--- a/lisp/erc/erc-button.el
+++ b/lisp/erc/erc-button.el
@@ -41,6 +41,7 @@
(require 'erc)
(require 'wid-edit)
(require 'erc-fill)
+(require 'browse-url)
;;; Minor Mode
@@ -87,12 +88,9 @@ above them."
:type 'face
:group 'erc-faces)
-(defcustom erc-button-url-regexp
- (concat "\\(www\\.\\|\\(s?https?\\|"
- "ftp\\|file\\|gopher\\|news\\|telnet\\|wais\\|mailto\\):\\)"
- "\\(//[-a-zA-Z0-9_.]+:[0-9]*\\)?"
- "[-a-zA-Z0-9_=!?#$@~`%&*+\\/:;.,()]+[-a-zA-Z0-9_=#$@~`%&*+\\/()]")
+(defcustom erc-button-url-regexp browse-url-button-regexp
"Regular expression that matches URLs."
+ :version "27.1"
:group 'erc-button
:type 'regexp)
@@ -223,14 +221,11 @@ PAR is a number of a regexp grouping whose text will be passed to
(defvar erc-button-syntax-table
(let ((table (make-syntax-table)))
- (modify-syntax-entry ?\( "w" table)
- (modify-syntax-entry ?\) "w" table)
(modify-syntax-entry ?\[ "w" table)
(modify-syntax-entry ?\] "w" table)
(modify-syntax-entry ?\{ "w" table)
(modify-syntax-entry ?\} "w" table)
(modify-syntax-entry ?` "w" table)
- (modify-syntax-entry ?' "w" table)
(modify-syntax-entry ?^ "w" table)
(modify-syntax-entry ?- "w" table)
(modify-syntax-entry ?_ "w" table)