From 3ad4da1dc674226339af1437de8c0552316d5b89 Mon Sep 17 00:00:00 2001 From: "F. Jason Park" Date: Mon, 22 May 2023 23:42:11 -0700 Subject: [PATCH] [5.6] Simplify erc-tab interface * etc/ERC-NEWS: Improve section mentioning `erc-tab'. * lisp/erc/erc-button.el (erc-button-alist): Restore a commented out version of the "" entry, which was dropped in 5adda2f4683 "Revise FORM-as-function interface in erc-button-alist" for being redundant and hence wasteful. This may help any unlikely objectors better adapt to the churn. (erc-button-next, erc-button-previous): Don't bother accommodating raw prefix arguments; expect numeric arguments only. * lisp/erc/erc.el (erc-tab): Change interactive spec to lowercase "p". (Bug#60933) --- etc/ERC-NEWS | 12 ++++++------ lisp/erc/erc-button.el | 7 +++---- lisp/erc/erc.el | 8 ++++---- 3 files changed, 13 insertions(+), 14 deletions(-) diff --git a/etc/ERC-NEWS b/etc/ERC-NEWS index d257bdcbf51..3d110ca43c6 100644 --- a/etc/ERC-NEWS +++ b/etc/ERC-NEWS @@ -215,12 +215,12 @@ changes are encouraged to voice their concerns on the bug list. *** Miscellaneous changes Two helper macros from GNU ELPA's Compat library are now available to third-party modules as 'erc-compat-call' and 'erc-compat-function'. -In the area of buttons, 'Info-goto-node' has been supplanted by plain -old 'info' in 'erc-button-alist', and the bracketed "" -pattern entry has been removed because it was more or less redundant. -And the "TAB" key is now bound to a new command, 'erc-tab', that only -calls 'completion-at-point' when point is in the input area and -module-specific commands, like 'erc-button-next', otherwise. +In 'erc-button-alist', 'Info-goto-node' has been supplanted by plain +old 'info', and the "" entry has been removed because it was +more or less redundant. In all ERC buffers, the "" key is now +bound to a new command, 'erc-tab', that calls 'completion-at-point' +inside the input area and otherwise dispatches module-specific +commands, like 'erc-button-next'. * Changes in ERC 5.5 diff --git a/lisp/erc/erc-button.el b/lisp/erc/erc-button.el index 4307dc3b860..33b93ff6744 100644 --- a/lisp/erc/erc-button.el +++ b/lisp/erc/erc-button.el @@ -128,6 +128,7 @@ erc-button-alist ;; things hard to maintain. '((nicknames 0 erc-button-buttonize-nicks erc-nick-popup 0) (erc-button-url-regexp 0 t browse-url-button-open-url 0) + ;; (" ]+\\) *>" 0 t browse-url-button-open-url 1) ;;; ("(\\(\\([^~\n \t@][^\n \t@]*\\)@\\([a-zA-Z0-9.:-]+\\)\\)" 1 t finger 2 3) ;; emacs internal ("[`‘]\\([a-zA-Z][-a-zA-Z_0-9!*<=>+]+\\)['’]" @@ -629,15 +630,13 @@ erc-button-next "Go to the ARGth next button." (declare (advertised-calling-convention (arg) "30.1")) (interactive "p") - (setq arg (pcase arg ((pred listp) (prefix-numeric-value arg)) (_ arg))) - (erc--button-next arg)) + (erc--button-next (or arg 1))) (defun erc-button-previous (&optional arg) "Go to ARGth previous button." (declare (advertised-calling-convention (arg) "30.1")) (interactive "p") - (setq arg (pcase arg ((pred listp) (prefix-numeric-value arg)) (_ arg))) - (erc--button-next (- arg))) + (erc--button-next (- (or arg 1)))) (defun erc-button-previous-of-nick (arg) "Go to ARGth previous button for nick at point." diff --git a/lisp/erc/erc.el b/lisp/erc/erc.el index 0be9eb69432..b8ad37a55a0 100644 --- a/lisp/erc/erc.el +++ b/lisp/erc/erc.el @@ -4773,11 +4773,11 @@ erc--tab-functions "Functions to try when user hits \\`TAB' outside of input area. Called with a numeric prefix arg.") -(defun erc-tab (&optional arg) +(defun erc-tab (arg) "Call `completion-at-point' when typing in the input area. -Otherwise call members of `erc--tab-functions' with raw prefix -ARG until one of them returns non-nil." - (interactive "P") +Otherwise call members of `erc--tab-functions' with a numeric +prefix ARG until one of them returns non-nil." + (interactive "p") (if (>= (point) erc-input-marker) (completion-at-point) (run-hook-with-args-until-success 'erc--tab-functions arg))) -- 2.40.0