diff --git a/lisp/acdw.el b/lisp/acdw.el index d806138..d043aad 100644 --- a/lisp/acdw.el +++ b/lisp/acdw.el @@ -433,47 +433,46 @@ Prompt only if there are unsaved changes." I used `xr' (not included in Emacs) to get the RX form of the default, so I can easily splice the list into it. THIS IS BRITTLE AF!!!" - (rx - (seq word-boundary - (group + (rx-to-string ; thanks wgreenhouse! + `(seq word-boundary (group - (or "www." - (seq - (group - (eval (cons 'or acdw/button-protocols))) - ":"))) - (opt - (group "//" - (one-or-more - (any "0-9a-z" "._-")) - ":" - (zero-or-more - (any "0-9")))) - (or - (seq - (one-or-more - (any "0-9a-z" "!#$%&*+,./:;=?@\\_~-" word)) - "(" - (one-or-more - (any "0-9a-z" "!#$%&*+,./:;=?@\\_~-" word)) - (zero-or-more - (any "0-9a-z" "#$%&*+/=@\\_~-" word)) - ")" - (opt + (group + (or "www." + (seq + (group (or ,@acdw/button-protocols)) + ":"))) + (opt + (group "//" + (one-or-more + (any "0-9a-z" "._-")) + ":" + (zero-or-more + (any "0-9")))) + (or + (seq (one-or-more (any "0-9a-z" "!#$%&*+,./:;=?@\\_~-" word)) - (any "0-9a-z" "#$%&*+/=@\\_~-" word))) - (seq - (one-or-more - (any "0-9a-z" "!#$%&*+,./:;=?@\\_~-" word)) - (any "0-9a-z" "#$%&*+/=@\\_~-" word))))))) + "(" + (one-or-more + (any "0-9a-z" "!#$%&*+,./:;=?@\\_~-" word)) + (zero-or-more + (any "0-9a-z" "#$%&*+/=@\\_~-" word)) + ")" + (opt + (one-or-more + (any "0-9a-z" "!#$%&*+,./:;=?@\\_~-" word)) + (any "0-9a-z" "#$%&*+/=@\\_~-" word))) + (seq + (one-or-more + (any "0-9a-z" "!#$%&*+,./:;=?@\\_~-" word)) + (any "0-9a-z" "#$%&*+/=@\\_~-" word))))))) (defun acdw/add-button-url-regexp-protocol (proto) "Add PROTO to `browse-url-button-regexp' First, add PROTO to `acdw/button-protocols'. Then, build `browse-url-button-regexp' with the new protocol." (add-to-list 'acdw/button-protocols proto) - (setq browse-url-button-regexp (acdw/build-button-url-regexp))) + (setq-default browse-url-button-regexp (acdw/build-button-url-regexp)))