Unverified Commit 37e0d00c authored by bandali's avatar bandali

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.
parent d47b1579
Pipeline #4542 passed with stage
in 54 minutes and 33 seconds
......@@ -1569,6 +1569,18 @@ and its value has been changed to Duck Duck Go.
The user option to use instead to alter text to be sent is now
'erc-pre-send-functions'.
---
*** Improve matching/highlighting of nicknames.
Open and close parenthesis and apostrophe are not considered valid
nick characters anymore, matching the given grammar in RFC 2812
section 2.3.1. This enables correct matching and highlighting of
nicks when they are surrounded by parentheses, like (nick), and when
adjacent to an apostrophe, like nick's.
---
*** Set 'erc-button-url-regexp' to 'browse-url-button-regexp'
which better handles surrounding pair of parentheses.
** EUDC
---
......
......@@ -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)
......
......@@ -246,14 +246,11 @@ and other miscellaneous functions."
;; just put it in erc.el
(defvar erc-match-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)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment