emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master f463633: lisp/erc: Use lexical-binding


From: Stefan Monnier
Subject: master f463633: lisp/erc: Use lexical-binding
Date: Thu, 18 Mar 2021 23:14:40 -0400 (EDT)

branch: master
commit f463633f007a92418f1ea7d46347824d51373aa3
Author: Stefan Monnier <monnier@iro.umontreal.ca>
Commit: Stefan Monnier <monnier@iro.umontreal.ca>

    lisp/erc: Use lexical-binding
    
    Also remove various redundant `:group` arguments.
    
    * lisp/erc/erc-backend.el (define-erc-response-handler): Move `declare`
    after the docstring.
    
    * lisp/erc/erc-capab.el: Use lexical-binding.
    (erc-capab-identify-activate): Simplify with `member`.
    
    * lisp/erc/erc-dcc.el (erc-dcc): Move before erc-dcc-mode definition,
    which refers to it.
    (erc-dcc-chat-accept): Remove unused vars `nick` and `buffer`.
    
    * lisp/erc/erc-imenu.el: Use lexical-binding.
    (erc-create-imenu-index): Remove unused var `prev-pos`.
    
    * lisp/erc/erc-match.el: Use lexical-binding.
    (erc-match-message): Remove unused var `old-pt`.
    (erc-match-message): Strength-reduce `eval` to `symbol-value`.
    
    * lisp/erc/erc-page.el: Use lexical-binding.
    (erc-page): Move Custom group before `erg-page-mode` which refers to it.
    
    * lisp/erc/erc-replace.el: Use lexical-binding.
    (erc-replace-insert): Use `functionp`.
    
    * lisp/erc/erc-status-sidebar.el: Use lexical-binding.
    (erc-status-sidebar-open): Remove unused var `sidebar-window`.
    
    * lisp/erc/erc.el: Fix header to use the customary 3 semi-colons.
    (erc-fill-column): Declare variable.
    
    * lisp/erc/erc-autoaway.el: Use lexical-binding.
    * lisp/erc/erc-ezbounce.el: Use lexical-binding.
    * lisp/erc/erc-fill.el: Use lexical-binding.
    * lisp/erc/erc-goodies.el: Use lexical-binding.
    * lisp/erc/erc-ibuffer.el: Use lexical-binding.
    * lisp/erc/erc-identd.el: Use lexical-binding.
    * lisp/erc/erc-join.el: Use lexical-binding.
    * lisp/erc/erc-lang.el: Use lexical-binding.
    * lisp/erc/erc-log.el: Use lexical-binding.
    * lisp/erc/erc-menu.el: Use lexical-binding.
    * lisp/erc/erc-netsplit.el: Use lexical-binding.
    * lisp/erc/erc-networks.el: Use lexical-binding.
    * lisp/erc/erc-pcomplete.el: Use lexical-binding.
    * lisp/erc/erc-ring.el: Use lexical-binding.
    * lisp/erc/erc-speedbar.el: Use lexical-binding.
    * lisp/erc/erc-spelling.el: Use lexical-binding.
    * lisp/erc/erc-truncate.el: Use lexical-binding.
    * lisp/erc/erc-xdcc.el: Use lexical-binding.
---
 lisp/erc/erc-autoaway.el              |  54 +++++++--------
 lisp/erc/erc-backend.el               |  37 +++-------
 lisp/erc/erc-button.el                |  41 +++++------
 lisp/erc/erc-capab.el                 |  32 ++++-----
 lisp/erc/erc-dcc.el                   |  74 ++++++++------------
 lisp/erc/erc-desktop-notifications.el |  10 ++-
 lisp/erc/erc-ezbounce.el              |  18 +++--
 lisp/erc/erc-fill.el                  |  17 ++---
 lisp/erc/erc-goodies.el               |  65 +++++++++---------
 lisp/erc/erc-ibuffer.el               |   9 +--
 lisp/erc/erc-identd.el                |  17 +++--
 lisp/erc/erc-imenu.el                 |   7 +-
 lisp/erc/erc-join.el                  |  26 +++----
 lisp/erc/erc-lang.el                  |   2 +-
 lisp/erc/erc-list.el                  |  26 +++----
 lisp/erc/erc-log.el                   |  57 +++++++---------
 lisp/erc/erc-match.el                 |  48 +++++--------
 lisp/erc/erc-menu.el                  |   2 +-
 lisp/erc/erc-netsplit.el              |  25 +++----
 lisp/erc/erc-networks.el              |  20 +++---
 lisp/erc/erc-notify.el                |  26 +++----
 lisp/erc/erc-page.el                  |  18 +++--
 lisp/erc/erc-pcomplete.el             |  16 ++---
 lisp/erc/erc-replace.el               |  13 ++--
 lisp/erc/erc-ring.el                  |  14 ++--
 lisp/erc/erc-services.el              |  42 +++++-------
 lisp/erc/erc-sound.el                 |   8 +--
 lisp/erc/erc-speedbar.el              |  21 +++---
 lisp/erc/erc-spelling.el              |   8 +--
 lisp/erc/erc-stamp.el                 |  13 ----
 lisp/erc/erc-status-sidebar.el        |  30 ++++----
 lisp/erc/erc-track.el                 |  72 +++++++-------------
 lisp/erc/erc-truncate.el              |   7 +-
 lisp/erc/erc-xdcc.el                  |  14 ++--
 lisp/erc/erc.el                       | 125 +++++++++++++++++-----------------
 35 files changed, 430 insertions(+), 584 deletions(-)

diff --git a/lisp/erc/erc-autoaway.el b/lisp/erc/erc-autoaway.el
index a008566..1a13aa9 100644
--- a/lisp/erc/erc-autoaway.el
+++ b/lisp/erc/erc-autoaway.el
@@ -1,4 +1,4 @@
-;;; erc-autoaway.el --- Provides autoaway for ERC
+;;; erc-autoaway.el --- Provides autoaway for ERC  -*- lexical-binding: t; -*-
 
 ;; Copyright (C) 2002-2004, 2006-2021 Free Software Foundation, Inc.
 
@@ -58,7 +58,7 @@ function each time you change `erc-autoaway-idle-seconds'."
   (setq erc-autoaway-idletimer
        (run-with-idle-timer erc-autoaway-idle-seconds
                             t
-                            'erc-autoaway-set-away
+                            #'erc-autoaway-set-away
                             erc-autoaway-idle-seconds)))
 
 (defun erc-autoaway-some-server-buffer ()
@@ -66,21 +66,21 @@ function each time you change `erc-autoaway-idle-seconds'."
 If none is found, return nil."
   (car (erc-buffer-list #'erc-open-server-buffer-p)))
 
-(defun erc-autoaway-insinuate-maybe (&optional server &rest ignored)
+(defun erc-autoaway-insinuate-maybe (&optional server &rest _ignored)
   "Add autoaway reset function to `post-command-hook' if at least one
 ERC process is alive.
 
 This is used when `erc-autoaway-idle-method' is `user'."
   (when (or server (erc-autoaway-some-server-buffer))
-    (add-hook 'post-command-hook 'erc-autoaway-reset-idle-user)))
+    (add-hook 'post-command-hook #'erc-autoaway-reset-idle-user)))
 
-(defun erc-autoaway-remove-maybe (&rest ignored)
+(defun erc-autoaway-remove-maybe (&rest _ignored)
   "Remove the autoaway reset function from `post-command-hook' if
 no ERC process is alive.
 
 This is used when `erc-autoaway-idle-method' is `user'."
   (unless (erc-autoaway-some-server-buffer)
-    (remove-hook 'post-command-hook 'erc-autoaway-reset-idle-user)))
+    (remove-hook 'post-command-hook #'erc-autoaway-reset-idle-user)))
 
 ;;;###autoload(autoload 'erc-autoaway-mode "erc-autoaway")
 (define-erc-module autoaway nil
@@ -107,36 +107,36 @@ set you no longer away.
 Related variables: `erc-public-away-p' and `erc-away-nickname'."
   ;; Enable:
   ((when (boundp 'erc-autoaway-idle-method)
-     (add-hook 'erc-connect-pre-hook 'erc-autoaway-reset-indicators)
+     (add-hook 'erc-connect-pre-hook #'erc-autoaway-reset-indicators)
      (setq erc-autoaway-last-sent-time (erc-current-time))
      (cond
       ((eq erc-autoaway-idle-method 'irc)
-       (add-hook 'erc-send-completed-hook 'erc-autoaway-reset-idle-irc)
-       (add-hook 'erc-server-001-functions 'erc-autoaway-reset-idle-irc))
+       (add-hook 'erc-send-completed-hook #'erc-autoaway-reset-idle-irc)
+       (add-hook 'erc-server-001-functions #'erc-autoaway-reset-idle-irc))
       ((eq erc-autoaway-idle-method 'user)
-       (add-hook 'erc-after-connect 'erc-autoaway-insinuate-maybe)
-       (add-hook 'erc-disconnected-hook 'erc-autoaway-remove-maybe)
+       (add-hook 'erc-after-connect #'erc-autoaway-insinuate-maybe)
+       (add-hook 'erc-disconnected-hook #'erc-autoaway-remove-maybe)
        (erc-autoaway-insinuate-maybe))
       ((eq erc-autoaway-idle-method 'emacs)
        (erc-autoaway-reestablish-idletimer)))
-     (add-hook 'erc-timer-hook 'erc-autoaway-possibly-set-away)
-     (add-hook 'erc-server-305-functions 'erc-autoaway-reset-indicators)))
+     (add-hook 'erc-timer-hook #'erc-autoaway-possibly-set-away)
+     (add-hook 'erc-server-305-functions #'erc-autoaway-reset-indicators)))
   ;; Disable:
   ((when (boundp 'erc-autoaway-idle-method)
-     (remove-hook 'erc-connect-pre-hook 'erc-autoaway-reset-indicators)
+     (remove-hook 'erc-connect-pre-hook #'erc-autoaway-reset-indicators)
      (cond
       ((eq erc-autoaway-idle-method 'irc)
-       (remove-hook 'erc-send-completed-hook 'erc-autoaway-reset-idle-irc)
-       (remove-hook 'erc-server-001-functions 'erc-autoaway-reset-idle-irc))
+       (remove-hook 'erc-send-completed-hook #'erc-autoaway-reset-idle-irc)
+       (remove-hook 'erc-server-001-functions #'erc-autoaway-reset-idle-irc))
       ((eq erc-autoaway-idle-method 'user)
-       (remove-hook 'post-command-hook 'erc-autoaway-reset-idle-user)
-       (remove-hook 'erc-after-connect 'erc-autoaway-insinuate-maybe)
-       (remove-hook 'erc-disconnected-hook 'erc-autoaway-remove-maybe))
+       (remove-hook 'post-command-hook #'erc-autoaway-reset-idle-user)
+       (remove-hook 'erc-after-connect #'erc-autoaway-insinuate-maybe)
+       (remove-hook 'erc-disconnected-hook #'erc-autoaway-remove-maybe))
       ((eq erc-autoaway-idle-method 'emacs)
        (cancel-timer erc-autoaway-idletimer)
        (setq erc-autoaway-idletimer nil)))
-     (remove-hook 'erc-timer-hook 'erc-autoaway-possibly-set-away)
-     (remove-hook 'erc-server-305-functions 'erc-autoaway-reset-indicators))))
+     (remove-hook 'erc-timer-hook #'erc-autoaway-possibly-set-away)
+     (remove-hook 'erc-server-305-functions #'erc-autoaway-reset-indicators))))
 
 (defcustom erc-autoaway-idle-method 'user
   "The method used to determine how long you have been idle.
@@ -148,7 +148,6 @@ The time itself is specified by `erc-autoaway-idle-seconds'.
 
 See `erc-autoaway-mode' for more information on the various
 definitions of being idle."
-  :group 'erc-autoaway
   :type '(choice (const :tag "User idle time" user)
                 (const :tag "Emacs idle time" emacs)
                 (const :tag "Last IRC action" irc))
@@ -166,7 +165,6 @@ ERC autoaway mode can set you away when you idle, and set 
you no
 longer away when you type something.  This variable controls whether
 you will be set away when you idle.  See `erc-auto-discard-away' for
 the other half."
-  :group 'erc-autoaway
   :type 'boolean)
 
 (defcustom erc-auto-discard-away t
@@ -176,20 +174,17 @@ longer away when you type something.  This variable 
controls whether
 you will be set no longer away when you type something.  See
 `erc-auto-set-away' for the other half.
 See also `erc-autoaway-no-auto-discard-regexp'."
-  :group 'erc-autoaway
   :type 'boolean)
 
 (defcustom erc-autoaway-no-auto-discard-regexp "^/g?away.*$"
   "Input that matches this will not automatically discard away status.
 See `erc-auto-discard-away'."
-  :group 'erc-autoaway
   :type 'regexp)
 
 (defcustom erc-autoaway-idle-seconds 1800
   "Number of seconds after which ERC will set you automatically away.
 If you are changing this variable using lisp instead of customizing it,
 you have to run `erc-autoaway-reestablish-idletimer' afterwards."
-  :group 'erc-autoaway
   :set (lambda (sym val)
         (set-default sym val)
         (when (eq erc-autoaway-idle-method 'emacs)
@@ -201,10 +196,9 @@ you have to run `erc-autoaway-reestablish-idletimer' 
afterwards."
   "Message ERC will use when setting you automatically away.
 It is used as a `format' string with the argument of the idletime
 in seconds."
-  :group 'erc-autoaway
   :type 'string)
 
-(defun erc-autoaway-reset-idle-user (&rest stuff)
+(defun erc-autoaway-reset-idle-user (&rest _stuff)
   "Reset the stored user idle time.
 This is one global variable since a user talking on one net can
 talk on another net too."
@@ -212,7 +206,7 @@ talk on another net too."
     (erc-autoaway-set-back #'erc-autoaway-remove-maybe))
   (setq erc-autoaway-last-sent-time (erc-current-time)))
 
-(defun erc-autoaway-reset-idle-irc (line &rest stuff)
+(defun erc-autoaway-reset-idle-irc (line &rest _stuff)
   "Reset the stored IRC idle time.
 This is one global variable since a user talking on one net can
 talk on another net too."
@@ -272,7 +266,7 @@ active server buffer available."
     (setq erc-autoaway-caused-away t)
     (erc-cmd-GAWAY (format-message erc-autoaway-message idle-time))))
 
-(defun erc-autoaway-reset-indicators (&rest stuff)
+(defun erc-autoaway-reset-indicators (&rest _stuff)
   "Reset indicators used by the erc-autoaway module."
   (setq erc-autoaway-last-sent-time (erc-current-time))
   (setq erc-autoaway-caused-away nil))
diff --git a/lisp/erc/erc-backend.el b/lisp/erc/erc-backend.el
index 73c2b56..b1f97ae 100644
--- a/lisp/erc/erc-backend.el
+++ b/lisp/erc/erc-backend.el
@@ -268,7 +268,6 @@ protection algorithm.")
   "Non-nil means that ERC will attempt to reestablish broken connections.
 
 Reconnection will happen automatically for any unexpected disconnection."
-  :group 'erc-server
   :type 'boolean)
 
 (defcustom erc-server-reconnect-attempts 2
@@ -276,7 +275,6 @@ Reconnection will happen automatically for any unexpected 
disconnection."
 broken connection, or t to always attempt to reconnect.
 
 This only has an effect if `erc-server-auto-reconnect' is non-nil."
-  :group 'erc-server
   :type '(choice (const :tag "Always reconnect" t)
                  integer))
 
@@ -285,7 +283,6 @@ This only has an effect if `erc-server-auto-reconnect' is 
non-nil."
 successive reconnect attempts.
 
 If a key is pressed while ERC is waiting, it will stop waiting."
-  :group 'erc-server
   :type 'number)
 
 (defcustom erc-split-line-length 440
@@ -299,14 +296,12 @@ And a typical message looks like this:
 
 You can limit here the maximum length of the \"Hello!\" part.
 Good luck."
-  :type 'integer
-  :group 'erc-server)
+  :type 'integer)
 
 (defcustom erc-coding-system-precedence '(utf-8 undecided)
   "List of coding systems to be preferred when receiving a string from the 
server.
 This will only be consulted if the coding system in
 `erc-server-coding-system' is `undecided'."
-  :group 'erc-server
   :version "24.1"
   :type '(repeat coding-system))
 
@@ -331,7 +326,6 @@ If you need to send non-ASCII text to people not using a 
client that
 does decoding on its own, you must tell ERC what encoding to use.
 Emacs cannot guess it, since it does not know what the people on the
 other end of the line are using."
-  :group 'erc-server
   :type '(choice (const :tag "None" nil)
                  coding-system
                  (cons (coding-system :tag "encoding" :value utf-8)
@@ -346,37 +340,32 @@ current target as returned by `erc-default-target'.
 Example: If you know that the channel #linux-ru uses the coding-system
 `cyrillic-koi8', then add (\"#linux-ru\" . cyrillic-koi8) to the
 alist."
-  :group 'erc-server
   :type '(repeat (cons (regexp :tag "Target")
                        coding-system)))
 
 (defcustom erc-server-connect-function #'erc-open-network-stream
   "Function used to initiate a connection.
 It should take same arguments as `open-network-stream' does."
-  :group 'erc-server
   :type 'function)
 
 (defcustom erc-server-prevent-duplicates '("301")
   "Either nil or a list of strings.
 Each string is a IRC message type, like PRIVMSG or NOTICE.
 All Message types in that list of subjected to duplicate prevention."
-  :type '(choice (const nil) (list string))
-  :group 'erc-server)
+  :type '(choice (const nil) (list string)))
 
 (defcustom erc-server-duplicate-timeout 60
   "The time allowed in seconds between duplicate messages.
 
 If two identical messages arrive within this value of one another, the second
 isn't displayed."
-  :type 'integer
-  :group 'erc-server)
+  :type 'integer)
 
 (defcustom erc-server-timestamp-format "%Y-%m-%d %T"
   "Timestamp format used with server response messages.
 This string is processed using `format-time-string'."
   :version "24.3"
-  :type 'string
-  :group 'erc-server)
+  :type 'string)
 
 ;;; Flood-related
 
@@ -395,22 +384,19 @@ detailed in RFC 2813, section 5.8 \"Flood control of 
clients\".
     time, send a message, and increase
     `erc-server-flood-last-message' by
     `erc-server-flood-penalty' for each message."
-  :type 'integer
-  :group 'erc-server)
+  :type 'integer)
 
 (defcustom erc-server-flood-penalty 3
   "How much we penalize a message.
 See `erc-server-flood-margin' for an explanation of the flood
 protection algorithm."
-  :type 'integer
-  :group 'erc-server)
+  :type 'integer)
 
 ;; Ping handling
 
 (defcustom erc-server-send-ping-interval 30
   "Interval of sending pings to the server, in seconds.
 If this is set to nil, pinging the server is disabled."
-  :group 'erc-server
   :type '(choice (const :tag "Disabled" nil)
                  (integer :tag "Seconds")))
 
@@ -422,7 +408,6 @@ This must be greater than or equal to the value for
 `erc-server-send-ping-interval'.
 
 If this is set to nil, never try to reconnect."
-  :group 'erc-server
   :type '(choice (const :tag "Disabled" nil)
                  (integer :tag "Seconds")))
 
@@ -1082,9 +1067,6 @@ Finds hooks by looking in the `erc-server-responses' hash 
table."
 (cl-defmacro define-erc-response-handler ((name &rest aliases)
                                           &optional extra-fn-doc extra-var-doc
                                           &rest fn-body)
-  (declare (debug (&define [&name "erc-response-handler@"
-                                  (symbolp &rest symbolp)]
-                           &optional sexp sexp def-body)))
   "Define an ERC handler hook/function pair.
 NAME is the response name as sent by the server (see the IRC RFC for
 meanings).
@@ -1164,6 +1146,9 @@ Would expand to:
   See also `erc-server-311'.\"))
 
 \(fn (NAME &rest ALIASES) &optional EXTRA-FN-DOC EXTRA-VAR-DOC &rest FN-BODY)"
+  (declare (debug (&define [&name "erc-response-handler@"
+                                  (symbolp &rest symbolp)]
+                           &optional sexp sexp def-body)))
   (if (numberp name) (setq name (intern (format "%03i" name))))
   (setq aliases (mapcar (lambda (a)
                           (if (numberp a)
@@ -1226,8 +1211,8 @@ add things to `%s' instead."
        ,@(cl-loop for fn in fn-alternates
                   for var in var-alternates
                   for a in aliases
-                  nconc (list `(defalias ',fn ',fn-name)
-                              `(defvar ,var ',fn-name ,(format hook-doc a))
+                  nconc (list `(defalias ',fn #',fn-name)
+                              `(defvar ,var #',fn-name ,(format hook-doc a))
                               `(put ',var 'definition-name ',hook-name))))))
 
 (define-erc-response-handler (ERROR)
diff --git a/lisp/erc/erc-button.el b/lisp/erc/erc-button.el
index 0a81da3..8b13d1c 100644
--- a/lisp/erc/erc-button.el
+++ b/lisp/erc/erc-button.el
@@ -52,14 +52,14 @@
 ;;;###autoload(autoload 'erc-button-mode "erc-button" nil t)
 (define-erc-module button nil
   "This mode buttonizes all messages according to `erc-button-alist'."
-  ((add-hook 'erc-insert-modify-hook 'erc-button-add-buttons 'append)
-   (add-hook 'erc-send-modify-hook 'erc-button-add-buttons 'append)
-   (add-hook 'erc-complete-functions 'erc-button-next-function)
-   (add-hook 'erc-mode-hook 'erc-button-setup))
-  ((remove-hook 'erc-insert-modify-hook 'erc-button-add-buttons)
-   (remove-hook 'erc-send-modify-hook 'erc-button-add-buttons)
-   (remove-hook 'erc-complete-functions 'erc-button-next-function)
-   (remove-hook 'erc-mode-hook 'erc-button-setup)))
+  ((add-hook 'erc-insert-modify-hook #'erc-button-add-buttons 'append)
+   (add-hook 'erc-send-modify-hook #'erc-button-add-buttons 'append)
+   (add-hook 'erc-complete-functions #'erc-button-next-function)
+   (add-hook 'erc-mode-hook #'erc-button-setup))
+  ((remove-hook 'erc-insert-modify-hook #'erc-button-add-buttons)
+   (remove-hook 'erc-send-modify-hook #'erc-button-add-buttons)
+   (remove-hook 'erc-complete-functions #'erc-button-next-function)
+   (remove-hook 'erc-mode-hook #'erc-button-setup)))
 
 ;;; Variables
 
@@ -91,7 +91,6 @@ above them."
 (defcustom erc-button-url-regexp browse-url-button-regexp
   "Regular expression that matches URLs."
   :version "27.1"
-  :group 'erc-button
   :type 'regexp)
 
 (defcustom erc-button-wrap-long-urls nil
@@ -100,18 +99,15 @@ above them."
 If this variable is a number, consider URLs longer than its value to
 be \"long\".  If t, URLs will be considered \"long\" if they are
 longer than `erc-fill-column'."
-  :group 'erc-button
   :type '(choice integer boolean))
 
 (defcustom erc-button-buttonize-nicks t
   "Flag indicating whether nicks should be buttonized or not."
-  :group 'erc-button
   :type 'boolean)
 
 (defcustom erc-button-rfc-url "http://www.faqs.org/rfcs/rfc%s.html";
   "URL used to browse rfc references.
 %s is replaced by the number."
-  :group 'erc-button
   :type 'string)
 
 (define-obsolete-variable-alias 'erc-button-google-url
@@ -121,7 +117,6 @@ longer than `erc-fill-column'."
   "URL used to search for a term.
 %s is replaced by the search string."
   :version "27.1"
-  :group 'erc-button
   :type 'string)
 
 (defcustom erc-button-alist
@@ -179,7 +174,6 @@ PAR is a number of a regexp grouping whose text will be 
passed to
   CALLBACK.  There can be several PAR arguments.  If REGEXP is
   \\='nicknames, these are ignored, and CALLBACK will be called with
   the nickname matched as the argument."
-  :group 'erc-button
   :version "24.1"                       ; remove finger (bug#4443)
   :type '(repeat
           (list :tag "Button"
@@ -200,20 +194,18 @@ PAR is a number of a regexp grouping whose text will be 
passed to
 
 (defcustom erc-emacswiki-url "https://www.emacswiki.org/cgi-bin/wiki.pl?";
   "URL of the EmacsWiki Homepage."
-  :group 'erc-button
   :type 'string)
 
 (defcustom erc-emacswiki-lisp-url "https://www.emacswiki.org/elisp/";
   "URL of the EmacsWiki ELisp area."
-  :group 'erc-button
   :type 'string)
 
 (defvar erc-button-keymap
   (let ((map (make-sparse-keymap)))
-    (define-key map (kbd "RET") 'erc-button-press-button)
-    (define-key map (kbd "<mouse-2>") 'erc-button-click-button)
-    (define-key map (kbd "TAB") 'erc-button-next)
-    (define-key map (kbd "<backtab>") 'erc-button-previous)
+    (define-key map (kbd "RET") #'erc-button-press-button)
+    (define-key map (kbd "<mouse-2>") #'erc-button-click-button)
+    (define-key map (kbd "TAB") #'erc-button-next)
+    (define-key map (kbd "<backtab>") #'erc-button-previous)
     (define-key map [follow-link] 'mouse-face)
     (set-keymap-parent map erc-mode-map)
     map)
@@ -244,7 +236,7 @@ global-level ERC button keys yet.")
   "Add ERC mode-level button movement keys.  This is only done once."
   ;; Add keys.
   (unless erc-button-keys-added
-    (define-key erc-mode-map (kbd "<backtab>") 'erc-button-previous)
+    (define-key erc-mode-map (kbd "<backtab>") #'erc-button-previous)
     (setq erc-button-keys-added t)))
 
 (defun erc-button-add-buttons ()
@@ -287,7 +279,7 @@ specified by `erc-button-alist'."
         (fun (nth 3 entry))
         bounds word)
     (when (or (eq t form)
-              (eval form))
+              (eval form t))
       (goto-char (point-min))
       (while (erc-forward-word)
         (when (setq bounds (erc-bounds-of-word-at-point))
@@ -306,9 +298,9 @@ specified by `erc-button-alist'."
           (end (match-end (nth 1 entry)))
           (form (nth 2 entry))
           (fun (nth 3 entry))
-          (data (mapcar 'match-string (nthcdr 4 entry))))
+          (data (mapcar #'match-string (nthcdr 4 entry))))
       (when (or (eq t form)
-                (eval form))
+                (eval form t))
         (erc-button-add-button start end fun nil data regexp)))))
 
 (defun erc-button-remove-old-buttons ()
@@ -483,7 +475,6 @@ Examples:
    (format
     \"ldapsearch -x -P 2 -h db.debian.org -b dc=debian,dc=org ircnick=%s\"
     nick)))"
-  :group 'erc-button
   :type '(repeat (cons (string :tag "Op")
                        sexp)))
 
diff --git a/lisp/erc/erc-capab.el b/lisp/erc/erc-capab.el
index 4e4d012..2028917 100644
--- a/lisp/erc/erc-capab.el
+++ b/lisp/erc/erc-capab.el
@@ -1,4 +1,4 @@
-;;; erc-capab.el --- support for dancer-ircd and hyperion's CAPAB
+;;; erc-capab.el --- support for dancer-ircd and hyperion's CAPAB  -*- 
lexical-binding: t; -*-
 
 ;; Copyright (C) 2006-2021 Free Software Foundation, Inc.
 
@@ -80,12 +80,10 @@
 
 If you change this from the default \"*\", be sure to use a
 character not found in IRC nicknames to avoid confusion."
-  :group 'erc-capab
   :type '(choice string (const nil)))
 
 (defface erc-capab-identify-unidentified '((t)) ; same as `erc-default-face'
   "Face to use for `erc-capab-identify-prefix'."
-  :group 'erc-capab
   :group 'erc-faces)
 
 ;;; Define module:
@@ -94,22 +92,22 @@ character not found in IRC nicknames to avoid confusion."
 (define-erc-module capab-identify nil
   "Handle dancer-ircd's CAPAB IDENTIFY-MSG and IDENTIFY-CTCP."
   ;; append so that `erc-server-parameters' is already set by `erc-server-005'
-  ((add-hook 'erc-server-005-functions 'erc-capab-identify-setup t)
-   (add-hook 'erc-server-290-functions 'erc-capab-identify-activate)
+  ((add-hook 'erc-server-005-functions #'erc-capab-identify-setup t)
+   (add-hook 'erc-server-290-functions #'erc-capab-identify-activate)
    (add-hook 'erc-server-PRIVMSG-functions
-             'erc-capab-identify-remove/set-identified-flag)
+             #'erc-capab-identify-remove/set-identified-flag)
    (add-hook 'erc-server-NOTICE-functions
-             'erc-capab-identify-remove/set-identified-flag)
-   (add-hook 'erc-insert-modify-hook 'erc-capab-identify-add-prefix t)
+             #'erc-capab-identify-remove/set-identified-flag)
+   (add-hook 'erc-insert-modify-hook #'erc-capab-identify-add-prefix t)
    (mapc (lambda (buffer)
            (when buffer
              (with-current-buffer buffer (erc-capab-identify-setup))))
-         (erc-buffer-list 'erc-open-server-buffer-p)))
-  ((remove-hook 'erc-server-005-functions 'erc-capab-identify-setup)
-   (remove-hook 'erc-server-290-functions 'erc-capab-identify-activate)
+         (erc-buffer-list #'erc-open-server-buffer-p)))
+  ((remove-hook 'erc-server-005-functions #'erc-capab-identify-setup)
+   (remove-hook 'erc-server-290-functions #'erc-capab-identify-activate)
    ;; we don't remove the `erc-capab-identify-remove/set-identified-flag' hooks
    ;; because there doesn't seem to be a way to tell the server to turn it off
-   (remove-hook 'erc-insert-modify-hook 'erc-capab-identify-add-prefix)))
+   (remove-hook 'erc-insert-modify-hook #'erc-capab-identify-add-prefix)))
 
 ;;; Variables:
 
@@ -121,7 +119,7 @@ character not found in IRC nicknames to avoid confusion."
 
 ;;; Functions:
 
-(defun erc-capab-identify-setup (&optional proc parsed)
+(defun erc-capab-identify-setup (&optional _proc _parsed)
   "Set up CAPAB IDENTIFY on the current server.
 
 Optional argument PROC is the current server's process.
@@ -146,19 +144,19 @@ These arguments are sent to this function when called as 
a hook in
     (setq erc-capab-identify-sent t)))
 
 
-(defun erc-capab-identify-activate (proc parsed)
+(defun erc-capab-identify-activate (_proc parsed)
   "Set `erc-capab-identify-activated' and display an activation message.
 
 PROC is the current server's process.
 PARSED is an `erc-parsed' response struct."
-  (when (or (string= "IDENTIFY-MSG" (erc-response.contents parsed))
-            (string= "IDENTIFY-CTCP" (erc-response.contents parsed)))
+  (when (member (erc-response.contents parsed)
+                '("IDENTIFY-MSG" "IDENTIFY-CTCP"))
     (setq erc-capab-identify-activated t)
     (erc-display-message
      parsed 'notice 'active (format "%s activated"
                                     (erc-response.contents parsed)))))
 
-(defun erc-capab-identify-remove/set-identified-flag (proc parsed)
+(defun erc-capab-identify-remove/set-identified-flag (_proc parsed)
   "Remove PARSED message's id flag and add the `erc-identified' text property.
 
 PROC is the current server's process.
diff --git a/lisp/erc/erc-dcc.el b/lisp/erc/erc-dcc.el
index e72d8fb..234b4b5 100644
--- a/lisp/erc/erc-dcc.el
+++ b/lisp/erc/erc-dcc.el
@@ -1,4 +1,4 @@
-;;; erc-dcc.el --- CTCP DCC module for ERC
+;;; erc-dcc.el --- CTCP DCC module for ERC  -*- lexical-binding: t; -*-
 
 ;; Copyright (C) 1993-1995, 1998, 2002-2004, 2006-2021 Free Software
 ;; Foundation, Inc.
@@ -55,12 +55,6 @@
 ;; Require at run-time too to silence compiler.
 (require 'pcomplete)
 
-;;;###autoload(autoload 'erc-dcc-mode "erc-dcc")
-(define-erc-module dcc nil
-  "Provide Direct Client-to-Client support for ERC."
-  ((add-hook 'erc-server-401-functions 'erc-dcc-no-such-nick))
-  ((remove-hook 'erc-server-401-functions 'erc-dcc-no-such-nick)))
-
 (defgroup erc-dcc nil
   "DCC stands for Direct Client Communication, where you and your
 friend's client programs connect directly to each other,
@@ -71,9 +65,14 @@ Using DCC get and send, you can transfer files directly from 
and to other
 IRC users."
   :group 'erc)
 
+;;;###autoload(autoload 'erc-dcc-mode "erc-dcc")
+(define-erc-module dcc nil
+  "Provide Direct Client-to-Client support for ERC."
+  ((add-hook 'erc-server-401-functions #'erc-dcc-no-such-nick))
+  ((remove-hook 'erc-server-401-functions #'erc-dcc-no-such-nick)))
+
 (defcustom erc-dcc-verbose nil
   "If non-nil, be verbose about DCC activity reporting."
-  :group 'erc-dcc
   :type 'boolean)
 
 (defconst erc-dcc-connection-types
@@ -120,7 +119,8 @@ All values of the list must be uppercase strings.")
 ;; more: the entry data from erc-dcc-list for this particular process.
 (defvar erc-dcc-connect-function 'erc-dcc-open-network-stream)
 
-(defun erc-dcc-open-network-stream (procname buffer addr port entry)
+(defun erc-dcc-open-network-stream (procname buffer addr port _entry)
+  ;; FIXME: Time to try activating this again!?
   (if nil;  (fboundp 'open-network-stream-nowait)  ;; this currently crashes
                                                    ;; cvs emacs
       (open-network-stream-nowait procname buffer addr port)
@@ -286,7 +286,6 @@ The result is also a string."
   "IP address to listen on when offering files.
 Should be set to a string or nil.  If nil, automatic detection of
 the host interface to use will be attempted."
-  :group 'erc-dcc
   :type (list 'choice (list 'const :tag "Auto-detect" nil)
               (list 'string :tag "IP-address"
                     :valid-regexp erc-dcc-ipv4-regexp)))
@@ -295,7 +294,6 @@ the host interface to use will be attempted."
   "IP address to use for outgoing DCC offers.
 Should be set to a string or nil.  If nil, use the value of
 `erc-dcc-listen-host'."
-  :group 'erc-dcc
   :type (list 'choice (list 'const :tag "Same as erc-dcc-listen-host" nil)
               (list 'string :tag "IP-address"
                     :valid-regexp erc-dcc-ipv4-regexp)))
@@ -306,7 +304,6 @@ Should be set to a string or nil.  If nil, use the value of
         You might want to set `erc-dcc-auto-masks' for this.
 `auto' - Automatically accept the request and begin downloading the file
 `ignore' - Ignore incoming DCC Send requests completely."
-  :group 'erc-dcc
   :type '(choice (const ask) (const auto) (const ignore)))
 
 (defun erc-dcc-get-host (proc)
@@ -323,7 +320,6 @@ If variable `erc-dcc-host' is non-nil, use it.  Otherwise 
call
 (defcustom erc-dcc-port-range nil
   "If nil, any available user port is used for outgoing DCC connections.
 If set to a cons, it specifies a range of ports to use in the form (min . max)"
-  :group 'erc-dcc
   :type '(choice
           (const :tag "Any port" nil)
           (cons :tag "Port range"
@@ -335,7 +331,6 @@ If set to a cons, it specifies a range of ports to use in 
the form (min . max)"
 accepted automatically.  A user identifier has the form \"nick!login@host\".
 For instance, to accept all incoming DCC send offers automatically, add the
 string \".*!.*@.*\" to this list."
-  :group 'erc-dcc
   :type '(repeat regexp))
 
 (defun erc-dcc-server (name filter sentinel)
@@ -391,7 +386,6 @@ the accepted connection."
 (defcustom erc-dcc-get-default-directory nil
   "Default directory for incoming DCC file transfers.
 If this is nil, then the current value of `default-directory' is used."
-  :group 'erc-dcc
   :type '(choice (const nil :tag "Default directory") directory))
 
 ;;;###autoload
@@ -468,7 +462,7 @@ where FOO is one of CLOSE, GET, SEND, LIST, CHAT, etc."
          'dcc-chat-offer ?n nick)
         t))))
 
-(defun erc-dcc-do-CLOSE-command (proc &optional type nick)
+(defun erc-dcc-do-CLOSE-command (_proc &optional type nick)
   "Close a connection.  Usage: /dcc close type nick.
 At least one of TYPE and NICK must be provided."
   ;; disambiguate type and nick if only one is provided
@@ -540,7 +534,7 @@ PROC is the server process."
 
 (defvar-local erc-dcc-byte-count nil)
 
-(defun erc-dcc-do-LIST-command (proc)
+(defun erc-dcc-do-LIST-command (_proc)
   "This is the handler for the /dcc list command.
 It lists the current state of `erc-dcc-list' in an easy to read manner."
   (let ((alist erc-dcc-list)
@@ -703,7 +697,6 @@ the matching regexp, or nil if none found."
 `ask' - Report the Chat request, and wait for the user to manually accept it
 `auto' - Automatically accept the request and open a new chat window
 `ignore' - Ignore incoming DCC chat requests completely."
-  :group 'erc-dcc
   :type '(choice (const ask) (const auto) (const ignore)))
 
 (defun erc-dcc-handle-ctcp-chat (proc query nick login host to)
@@ -757,13 +750,11 @@ the matching regexp, or nil if none found."
 
 (defcustom erc-dcc-block-size 1024
   "Block size to use for DCC SEND sessions."
-  :group 'erc-dcc
   :type 'integer)
 
 (defcustom erc-dcc-pump-bytes nil
   "If set to an integer, keep sending until that number of bytes are
 unconfirmed."
-  :group 'erc-dcc
   :type '(choice (const nil) integer))
 
 (define-inline erc-dcc-get-parent (proc)
@@ -837,7 +828,6 @@ bytes sent."
   '(erc-dcc-display-send erc-dcc-send-block)
   "Hook run whenever the remote end of a DCC SEND offer connected to your
 listening port."
-  :group 'erc-dcc
   :type 'hook)
 
 (defun erc-dcc-nick (plist)
@@ -900,7 +890,6 @@ other client."
 
 (defcustom erc-dcc-receive-cache (* 1024 512)
   "Number of bytes to let the receive buffer grow before flushing it."
-  :group 'erc-dcc
   :type 'integer)
 
 (defvar-local erc-dcc-file-name nil)
@@ -942,12 +931,12 @@ and making the connection."
       (set-process-coding-system proc 'binary 'binary)
       (set-buffer-file-coding-system 'binary t)
 
-      (set-process-filter proc 'erc-dcc-get-filter)
-      (set-process-sentinel proc 'erc-dcc-get-sentinel)
+      (set-process-filter proc #'erc-dcc-get-filter)
+      (set-process-sentinel proc #'erc-dcc-get-sentinel)
       (setq entry (plist-put entry :start-time (erc-current-time)))
       (setq entry (plist-put entry :peer proc)))))
 
-(defun erc-dcc-append-contents (buffer file)
+(defun erc-dcc-append-contents (buffer _file)
   "Append the contents of BUFFER to FILE.
 The contents of the BUFFER will then be erased."
   (with-current-buffer buffer
@@ -1000,7 +989,7 @@ rather than every 1024 byte block, but nobody seems to 
care."
          proc (erc-pack-int received-bytes)))))))
 
 
-(defun erc-dcc-get-sentinel (proc event)
+(defun erc-dcc-get-sentinel (proc _event)
   "This is the process sentinel for CTCP DCC SEND connections.
 It shuts down the connection and notifies the user that the
 transfer is complete."
@@ -1025,25 +1014,21 @@ transfer is complete."
 
 (defcustom erc-dcc-chat-buffer-name-format "DCC-CHAT-%s"
   "Format to use for DCC Chat buffer names."
-  :group 'erc-dcc
   :type 'string)
 
 (defcustom erc-dcc-chat-mode-hook nil
   "Hook calls when `erc-dcc-chat-mode' finished setting up the buffer."
-  :group 'erc-dcc
   :type 'hook)
 
 (defcustom erc-dcc-chat-connect-hook nil
   ""
-  :group 'erc-dcc
   :type 'hook)
 
 (defcustom erc-dcc-chat-exit-hook nil
   ""
-  :group 'erc-dcc
   :type 'hook)
 
-(defun erc-cmd-CREQ (line &optional force)
+(defun erc-cmd-CREQ (line &optional _force)
   "Set or get the DCC chat request flag.
 Possible values are: ask, auto, ignore."
   (when (string-match "^\\s-*\\(auto\\|ask\\|ignore\\)?$" line)
@@ -1058,7 +1043,7 @@ Possible values are: ask, auto, ignore."
                                      erc-dcc-chat-request)))
       t)))
 
-(defun erc-cmd-SREQ (line &optional force)
+(defun erc-cmd-SREQ (line &optional _force)
   "Set or get the DCC send request flag.
 Possible values are: ask, auto, ignore."
   (when (string-match "^\\s-*\\(auto\\|ask\\|ignore\\)?$" line)
@@ -1075,7 +1060,7 @@ Possible values are: ask, auto, ignore."
 
 (defun pcomplete/erc-mode/CREQ ()
   (pcomplete-here '("auto" "ask" "ignore")))
-(defalias 'pcomplete/erc-mode/SREQ 'pcomplete/erc-mode/CREQ)
+(defalias 'pcomplete/erc-mode/SREQ #'pcomplete/erc-mode/CREQ)
 
 (define-obsolete-variable-alias 'erc-dcc-chat-filter-hook
   'erc-dcc-chat-filter-functions "24.3")
@@ -1087,19 +1072,19 @@ the unprocessed output.")
 
 (defvar erc-dcc-chat-mode-map
   (let ((map (make-sparse-keymap)))
-    (define-key map (kbd "RET") 'erc-send-current-line)
-    (define-key map "\t" 'completion-at-point)
+    (define-key map (kbd "RET") #'erc-send-current-line)
+    (define-key map "\t" #'completion-at-point)
     map)
   "Keymap for `erc-dcc-mode'.")
 
 (define-derived-mode erc-dcc-chat-mode fundamental-mode "DCC-Chat"
   "Major mode for wasting time via DCC chat."
   (setq mode-line-process '(":%s")
-        erc-send-input-line-function 'erc-dcc-chat-send-input-line
+        erc-send-input-line-function #'erc-dcc-chat-send-input-line
         erc-default-recipients '(dcc))
-  (add-hook 'completion-at-point-functions 'erc-complete-word-at-point nil t))
+  (add-hook 'completion-at-point-functions #'erc-complete-word-at-point nil t))
 
-(defun erc-dcc-chat-send-input-line (recipient line &optional force)
+(defun erc-dcc-chat-send-input-line (recipient line &optional _force)
   "Send LINE to the remote end.
 Argument RECIPIENT should always be the symbol dcc, and force
 is ignored."
@@ -1150,14 +1135,14 @@ other client."
     (setq erc-input-marker (make-marker))
     (erc-display-prompt buffer (point-max))
     (set-process-buffer proc buffer)
-    (add-hook 'kill-buffer-hook 'erc-dcc-chat-buffer-killed nil t)
+    (add-hook 'kill-buffer-hook #'erc-dcc-chat-buffer-killed nil t)
     (run-hook-with-args 'erc-dcc-chat-connect-hook proc)
     buffer))
 
 (defun erc-dcc-chat-accept (entry parent-proc)
   "Accept an incoming DCC connection and open a DCC window."
-  (let* ((nick (erc-extract-nick (plist-get entry :nick)))
-         buffer proc)
+  (let* (;; (nick (erc-extract-nick (plist-get entry :nick)))
+         proc) ;; buffer
     (setq proc
           (funcall erc-dcc-connect-function
                    "dcc-chat" nil
@@ -1167,9 +1152,10 @@ other client."
     ;; XXX: connected, should we kill the ip/port properties?
     (setq entry (plist-put entry :peer proc))
     (setq entry (plist-put entry :parent parent-proc))
-    (set-process-filter proc 'erc-dcc-chat-filter)
-    (set-process-sentinel proc 'erc-dcc-chat-sentinel)
-    (setq buffer (erc-dcc-chat-setup entry))))
+    (set-process-filter proc #'erc-dcc-chat-filter)
+    (set-process-sentinel proc #'erc-dcc-chat-sentinel)
+    ;; (setq buffer
+    (erc-dcc-chat-setup entry))) ;; )
 
 (defun erc-dcc-chat-filter (proc str)
   (let ((orig-buffer (current-buffer)))
diff --git a/lisp/erc/erc-desktop-notifications.el 
b/lisp/erc/erc-desktop-notifications.el
index 056fb23..990f013 100644
--- a/lisp/erc/erc-desktop-notifications.el
+++ b/lisp/erc/erc-desktop-notifications.el
@@ -45,13 +45,11 @@
 
 (defcustom erc-notifications-icon nil
   "Icon to use for notification."
-  :group 'erc-notifications
   :type '(choice (const :tag "No icon" nil) file))
 
 (defcustom erc-notifications-bus :session
   "D-Bus bus to use for notification."
   :version "25.1"
-  :group 'erc-notifications
   :type '(choice (const :tag "Session bus" :session) string))
 
 (defvar dbus-debug) ; used in the macroexpansion of dbus-ignore-errors
@@ -99,11 +97,11 @@ This will replace the last notification sent with this 
function."
 (define-erc-module notifications nil
   "Send notifications on private message reception and mentions."
   ;; Enable
-  ((add-hook 'erc-server-PRIVMSG-functions 'erc-notifications-PRIVMSG)
-   (add-hook 'erc-text-matched-hook 'erc-notifications-notify-on-match))
+  ((add-hook 'erc-server-PRIVMSG-functions #'erc-notifications-PRIVMSG)
+   (add-hook 'erc-text-matched-hook #'erc-notifications-notify-on-match))
   ;; Disable
-  ((remove-hook 'erc-server-PRIVMSG-functions 'erc-notifications-PRIVMSG)
-   (remove-hook 'erc-text-matched-hook 'erc-notifications-notify-on-match)))
+  ((remove-hook 'erc-server-PRIVMSG-functions #'erc-notifications-PRIVMSG)
+   (remove-hook 'erc-text-matched-hook #'erc-notifications-notify-on-match)))
 
 (provide 'erc-desktop-notifications)
 
diff --git a/lisp/erc/erc-ezbounce.el b/lisp/erc/erc-ezbounce.el
index 8378ff5..331d29a 100644
--- a/lisp/erc/erc-ezbounce.el
+++ b/lisp/erc/erc-ezbounce.el
@@ -1,4 +1,4 @@
-;;; erc-ezbounce.el ---  Handle EZBounce bouncer commands
+;;; erc-ezbounce.el ---  Handle EZBounce bouncer commands  -*- 
lexical-binding: t; -*-
 
 ;; Copyright (C) 2002, 2004, 2006-2021 Free Software Foundation, Inc.
 
@@ -33,7 +33,6 @@
 
 (defcustom erc-ezb-regexp "^ezbounce!srv$"
   "Regexp used by the EZBouncer to identify itself to the user."
-  :group 'erc-ezbounce
   :type 'regexp)
 
 (defcustom erc-ezb-login-alist '()
@@ -44,7 +43,6 @@ The alist's format is as follows:
  (((server . port) . (username . password))
   ((server . port) . (username . password))
   ...)"
-  :group 'erc-ezbounce
   :type '(repeat
          (cons (cons :tag "Server"
                     string
@@ -68,7 +66,7 @@ The alist's format is as follows:
   "Indicate whether current notices are expected to be EZB session listings.")
 
 ;;;###autoload
-(defun erc-cmd-ezb (line &optional force)
+(defun erc-cmd-ezb (line &optional _force)
   "Send EZB commands to the EZBouncer verbatim."
   (erc-server-send (concat "EZB " line)))
 (put 'erc-cmd-EZB 'do-not-parse-args t)
@@ -102,7 +100,7 @@ in the alist is nil, prompt for the appropriate values."
     found))
 
 ;;;###autoload
-(defun erc-ezb-notice-autodetect (proc parsed)
+(defun erc-ezb-notice-autodetect (_proc parsed)
   "React on an EZBounce NOTICE request."
   (let* ((sender (erc-response.sender parsed))
         (message (erc-response.contents parsed))
@@ -113,7 +111,7 @@ in the alist is nil, prompt for the appropriate values."
   nil)
 
 ;;;###autoload
-(defun erc-ezb-identify (message)
+(defun erc-ezb-identify (_message)
   "Identify to the EZBouncer server."
   (let ((login (erc-ezb-get-login erc-session-server (erc-port-to-string 
erc-session-port))))
     (unless (null login)
@@ -122,13 +120,13 @@ in the alist is nil, prompt for the appropriate values."
        (erc-server-send (concat "LOGIN " username " " pass))))))
 
 ;;;###autoload
-(defun erc-ezb-init-session-list (message)
+(defun erc-ezb-init-session-list (_message)
   "Reset the EZBounce session list to nil."
   (setq erc-ezb-session-list nil)
   (setq erc-ezb-inside-session-listing t))
 
 ;;;###autoload
-(defun erc-ezb-end-of-session-list (message)
+(defun erc-ezb-end-of-session-list (_message)
   "Indicate the end of the EZBounce session listing."
   (setq erc-ezb-inside-session-listing nil))
 
@@ -143,7 +141,7 @@ in the alist is nil, prompt for the appropriate values."
       (add-to-list 'erc-ezb-session-list (list id nick to)))))
 
 ;;;###autoload
-(defun erc-ezb-select (message)
+(defun erc-ezb-select (_message)
   "Select an IRC server to use by EZBounce, in ERC style."
   (unless (and erc-ezb-session-list
               (erc-ezb-select-session))
@@ -169,7 +167,7 @@ in the alist is nil, prompt for the appropriate values."
 ;;;###autoload
 (defun erc-ezb-initialize ()
   "Add EZBouncer convenience functions to ERC."
-  (add-hook 'erc-server-NOTICE-functions 'erc-ezb-notice-autodetect))
+  (add-hook 'erc-server-NOTICE-functions #'erc-ezb-notice-autodetect))
 
 (provide 'erc-ezbounce)
 
diff --git a/lisp/erc/erc-fill.el b/lisp/erc/erc-fill.el
index 83ef5f9..0312d22 100644
--- a/lisp/erc/erc-fill.el
+++ b/lisp/erc/erc-fill.el
@@ -1,4 +1,4 @@
-;;; erc-fill.el --- Filling IRC messages in various ways
+;;; erc-fill.el --- Filling IRC messages in various ways  -*- lexical-binding: 
t; -*-
 
 ;; Copyright (C) 2001-2004, 2006-2021 Free Software Foundation, Inc.
 
@@ -47,7 +47,7 @@ the mode if ARG is omitted or nil.
 ERC fill mode is a global minor mode.  When enabled, messages in
 the channel buffers are filled."
   nil nil nil
-  :global t :group 'erc-fill
+  :global t
   (if erc-fill-mode
       (erc-fill-enable)
     (erc-fill-disable)))
@@ -55,19 +55,18 @@ the channel buffers are filled."
 (defun erc-fill-enable ()
   "Setup hooks for `erc-fill-mode'."
   (interactive)
-  (add-hook 'erc-insert-modify-hook 'erc-fill)
-  (add-hook 'erc-send-modify-hook 'erc-fill))
+  (add-hook 'erc-insert-modify-hook #'erc-fill)
+  (add-hook 'erc-send-modify-hook #'erc-fill))
 
 (defun erc-fill-disable ()
   "Cleanup hooks, disable `erc-fill-mode'."
   (interactive)
-  (remove-hook 'erc-insert-modify-hook 'erc-fill)
-  (remove-hook 'erc-send-modify-hook 'erc-fill))
+  (remove-hook 'erc-insert-modify-hook #'erc-fill)
+  (remove-hook 'erc-send-modify-hook #'erc-fill))
 
 (defcustom erc-fill-prefix nil
   "Values used as `fill-prefix' for `erc-fill-variable'.
 nil means fill with space, a string means fill with this string."
-  :group 'erc-fill
   :type '(choice (const nil) string))
 
 (defcustom erc-fill-function 'erc-fill-variable
@@ -94,7 +93,6 @@ These two styles are implemented using `erc-fill-variable' and
 `erc-fill-static'.  You can, of course, define your own filling
 function.  Narrowing to the region in question is in effect while your
 function is called."
-  :group 'erc-fill
   :type '(choice (const :tag "Variable Filling" erc-fill-variable)
                  (const :tag "Static Filling" erc-fill-static)
                  function))
@@ -104,18 +102,15 @@ function is called."
 centered.  This column denotes the point where the ` ' character
 between <nickname> and the entered text will be put, thus aligning
 nick names right and text left."
-  :group 'erc-fill
   :type 'integer)
 
 (defcustom erc-fill-variable-maximum-indentation 17
   "If we indent a line after a long nick, don't indent more then this
 characters.  Set to nil to disable."
-  :group 'erc-fill
   :type 'integer)
 
 (defcustom erc-fill-column 78
   "The column at which a filled paragraph is broken."
-  :group 'erc-fill
   :type 'integer)
 
 ;;;###autoload
diff --git a/lisp/erc/erc-goodies.el b/lisp/erc/erc-goodies.el
index aef6881..1143faa 100644
--- a/lisp/erc/erc-goodies.el
+++ b/lisp/erc/erc-goodies.el
@@ -1,4 +1,4 @@
-;; erc-goodies.el --- Collection of ERC modules
+;; erc-goodies.el --- Collection of ERC modules  -*- lexical-binding: t; -*-
 
 ;; Copyright (C) 2001-2021 Free Software Foundation, Inc.
 
@@ -37,7 +37,7 @@
   "Setup Imenu support in an ERC buffer."
   (setq-local imenu-create-index-function #'erc-create-imenu-index))
 
-(add-hook 'erc-mode-hook 'erc-imenu-setup)
+(add-hook 'erc-mode-hook #'erc-imenu-setup)
 (autoload 'erc-create-imenu-index "erc-imenu" "Imenu index creation function")
 
 ;;; Automatically scroll to bottom
@@ -53,16 +53,16 @@ argument to `recenter'."
 
 (define-erc-module scrolltobottom nil
   "This mode causes the prompt to stay at the end of the window."
-  ((add-hook 'erc-mode-hook 'erc-add-scroll-to-bottom)
-   (add-hook 'erc-insert-done-hook 'erc-possibly-scroll-to-bottom)
+  ((add-hook 'erc-mode-hook #'erc-add-scroll-to-bottom)
+   (add-hook 'erc-insert-done-hook #'erc-possibly-scroll-to-bottom)
    (dolist (buffer (erc-buffer-list))
      (with-current-buffer buffer
        (erc-add-scroll-to-bottom))))
-  ((remove-hook 'erc-mode-hook 'erc-add-scroll-to-bottom)
-   (remove-hook 'erc-insert-done-hook 'erc-possibly-scroll-to-bottom)
+  ((remove-hook 'erc-mode-hook #'erc-add-scroll-to-bottom)
+   (remove-hook 'erc-insert-done-hook #'erc-possibly-scroll-to-bottom)
    (dolist (buffer (erc-buffer-list))
      (with-current-buffer buffer
-       (remove-hook 'post-command-hook 'erc-scroll-to-bottom t)))))
+       (remove-hook 'post-command-hook #'erc-scroll-to-bottom t)))))
 
 (defun erc-possibly-scroll-to-bottom ()
   "Like `erc-add-scroll-to-bottom', but only if window is selected."
@@ -77,7 +77,7 @@ the value of `erc-input-line-position'.
 
 This works whenever scrolling happens, so it's added to
 `window-scroll-functions' rather than `erc-insert-post-hook'."
-  (add-hook 'post-command-hook 'erc-scroll-to-bottom nil t))
+  (add-hook 'post-command-hook #'erc-scroll-to-bottom nil t))
 
 (defun erc-scroll-to-bottom ()
   "Recenter WINDOW so that `point' is on the last line.
@@ -104,10 +104,10 @@ variable `erc-input-line-position'."
 ;;; Make read only
 (define-erc-module readonly nil
   "This mode causes all inserted text to be read-only."
-  ((add-hook 'erc-insert-post-hook 'erc-make-read-only)
-   (add-hook 'erc-send-post-hook 'erc-make-read-only))
-  ((remove-hook 'erc-insert-post-hook 'erc-make-read-only)
-   (remove-hook 'erc-send-post-hook 'erc-make-read-only)))
+  ((add-hook 'erc-insert-post-hook #'erc-make-read-only)
+   (add-hook 'erc-send-post-hook #'erc-make-read-only))
+  ((remove-hook 'erc-insert-post-hook #'erc-make-read-only)
+   (remove-hook 'erc-send-post-hook #'erc-make-read-only)))
 
 (defun erc-make-read-only ()
   "Make all the text in the current buffer read-only.
@@ -119,14 +119,14 @@ Put this function on `erc-insert-post-hook' and/or 
`erc-send-post-hook'."
 ;;; Move to prompt when typing text
 (define-erc-module move-to-prompt nil
   "This mode causes the point to be moved to the prompt when typing text."
-  ((add-hook 'erc-mode-hook 'erc-move-to-prompt-setup)
+  ((add-hook 'erc-mode-hook #'erc-move-to-prompt-setup)
    (dolist (buffer (erc-buffer-list))
      (with-current-buffer buffer
        (erc-move-to-prompt-setup))))
-  ((remove-hook 'erc-mode-hook 'erc-move-to-prompt-setup)
+  ((remove-hook 'erc-mode-hook #'erc-move-to-prompt-setup)
    (dolist (buffer (erc-buffer-list))
      (with-current-buffer buffer
-       (remove-hook 'pre-command-hook 'erc-move-to-prompt t)))))
+       (remove-hook 'pre-command-hook #'erc-move-to-prompt t)))))
 
 (defun erc-move-to-prompt ()
   "Move the point to the ERC prompt if this is a self-inserting command."
@@ -138,15 +138,15 @@ Put this function on `erc-insert-post-hook' and/or 
`erc-send-post-hook'."
 
 (defun erc-move-to-prompt-setup ()
   "Initialize the move-to-prompt module for XEmacs."
-  (add-hook 'pre-command-hook 'erc-move-to-prompt nil t))
+  (add-hook 'pre-command-hook #'erc-move-to-prompt nil t))
 
 ;;; Keep place in unvisited channels
 (define-erc-module keep-place nil
   "Leave point above un-viewed text in other channels."
-  ((add-hook 'erc-insert-pre-hook  'erc-keep-place))
-  ((remove-hook 'erc-insert-pre-hook  'erc-keep-place)))
+  ((add-hook 'erc-insert-pre-hook  #'erc-keep-place))
+  ((remove-hook 'erc-insert-pre-hook  #'erc-keep-place)))
 
-(defun erc-keep-place (ignored)
+(defun erc-keep-place (_ignored)
   "Move point away from the last line in a non-selected ERC buffer."
   (when (and (not (eq (window-buffer (selected-window))
                       (current-buffer)))
@@ -183,8 +183,8 @@ does not appear in the ERC buffer after the user presses 
ENTER.")
   "This mode distinguishes non-commands.
 Commands listed in `erc-insert-this' know how to display
 themselves."
-  ((add-hook 'erc-pre-send-functions 'erc-send-distinguish-noncommands))
-  ((remove-hook 'erc-pre-send-functions 'erc-send-distinguish-noncommands)))
+  ((add-hook 'erc-pre-send-functions #'erc-send-distinguish-noncommands))
+  ((remove-hook 'erc-pre-send-functions #'erc-send-distinguish-noncommands)))
 
 (defun erc-send-distinguish-noncommands (state)
   "If STR is an ERC non-command, set `insertp' in STATE to nil."
@@ -211,20 +211,17 @@ highlighting effects.  When this variable is non-nil, it 
can cause Emacs to run
 slowly on systems lacking sufficient CPU speed.  In chatty channels, or in an
 emergency (message flood) it can be turned off to save processing time.  See
 `erc-toggle-interpret-controls'."
-  :group 'erc-control-characters
   :type '(choice (const :tag "Highlight control characters" t)
                  (const :tag "Remove control characters" remove)
                  (const :tag "Display raw control characters" nil)))
 
 (defcustom erc-interpret-mirc-color nil
   "If non-nil, ERC will interpret mIRC color codes."
-  :group 'erc-control-characters
   :type 'boolean)
 
 (defcustom erc-beep-p nil
   "Beep if C-g is in the server message.
 The value `erc-interpret-controls-p' must also be t for this to work."
-  :group 'erc-control-characters
   :type 'boolean)
 
 (defface erc-bold-face '((t :weight bold))
@@ -372,10 +369,10 @@ The value `erc-interpret-controls-p' must also be t for 
this to work."
 
 (define-erc-module irccontrols nil
   "This mode enables the interpretation of IRC control chars."
-  ((add-hook 'erc-insert-modify-hook 'erc-controls-highlight)
-   (add-hook 'erc-send-modify-hook 'erc-controls-highlight))
-  ((remove-hook 'erc-insert-modify-hook 'erc-controls-highlight)
-   (remove-hook 'erc-send-modify-hook 'erc-controls-highlight)))
+  ((add-hook 'erc-insert-modify-hook #'erc-controls-highlight)
+   (add-hook 'erc-send-modify-hook #'erc-controls-highlight))
+  ((remove-hook 'erc-insert-modify-hook #'erc-controls-highlight)
+   (remove-hook 'erc-send-modify-hook #'erc-controls-highlight)))
 
 (defun erc-controls-interpret (str)
    "Return a copy of STR after dealing with IRC control characters.
@@ -546,10 +543,10 @@ Else interpretation is turned off."
   "This mode translates text-smileys such as :-) into pictures.
 This requires the function `smiley-region', which is defined in
 smiley.el, which is part of Gnus."
-  ((add-hook 'erc-insert-modify-hook 'erc-smiley)
-   (add-hook 'erc-send-modify-hook 'erc-smiley))
-  ((remove-hook 'erc-insert-modify-hook 'erc-smiley)
-   (remove-hook 'erc-send-modify-hook 'erc-smiley)))
+  ((add-hook 'erc-insert-modify-hook #'erc-smiley)
+   (add-hook 'erc-send-modify-hook #'erc-smiley))
+  ((remove-hook 'erc-insert-modify-hook #'erc-smiley)
+   (remove-hook 'erc-send-modify-hook #'erc-smiley)))
 
 (defun erc-smiley ()
   "Smilify a region.
@@ -560,8 +557,8 @@ This function should be used with `erc-insert-modify-hook'."
 ;; Unmorse
 (define-erc-module unmorse nil
   "This mode causes morse code in the current channel to be unmorsed."
-  ((add-hook 'erc-insert-modify-hook 'erc-unmorse))
-  ((remove-hook 'erc-insert-modify-hook 'erc-unmorse)))
+  ((add-hook 'erc-insert-modify-hook #'erc-unmorse))
+  ((remove-hook 'erc-insert-modify-hook #'erc-unmorse)))
 
 (defun erc-unmorse ()
   "Unmorse some text.
diff --git a/lisp/erc/erc-ibuffer.el b/lisp/erc/erc-ibuffer.el
index 5a002cc..22336ed 100644
--- a/lisp/erc/erc-ibuffer.el
+++ b/lisp/erc/erc-ibuffer.el
@@ -1,4 +1,4 @@
-;;; erc-ibuffer.el --- ibuffer integration with ERC
+;;; erc-ibuffer.el --- ibuffer integration with ERC  -*- lexical-binding: t; 
-*-
 
 ;; Copyright (C) 2002, 2004, 2006-2021 Free Software Foundation, Inc.
 
@@ -39,20 +39,16 @@
 
 (defcustom erc-ibuffer-keyword-char ?k
   "Char used to indicate a channel which had keyword traffic lately (hidden)."
-  :group 'erc-ibuffer
   :type 'character)
 (defcustom erc-ibuffer-pal-char ?p
   "Char used to indicate a channel which had pal traffic lately (hidden)."
-  :group 'erc-ibuffer
   :type 'character)
 (defcustom erc-ibuffer-fool-char ?f
   "Char used to indicate a channel which had fool traffic lately (hidden)."
-  :group 'erc-ibuffer
   :type 'character)
 (defcustom erc-ibuffer-dangerous-host-char ?d
   "Char used to indicate a channel which had dangerous-host traffic lately
 \(hidden)."
-  :group 'erc-ibuffer
   :type 'character)
 
 (define-ibuffer-filter erc-server
@@ -153,7 +149,7 @@
   (if (and (eq major-mode 'erc-mode)
           (or (> (length erc-channel-modes) 0)
               erc-channel-user-limit))
-      (concat (apply 'concat
+      (concat (apply #'concat
                     "(+" erc-channel-modes)
              (if erc-channel-user-limit
                  (format "l %d" erc-channel-user-limit)
@@ -181,6 +177,7 @@
 (defvar erc-ibuffer-limit-map nil
   "Prefix keymap to use for ERC related limiting.")
 (define-prefix-command 'erc-ibuffer-limit-map)
+;; FIXME: Where is `ibuffer-limit-by-erc-server' defined?
 (define-key 'erc-ibuffer-limit-map (kbd "s") 'ibuffer-limit-by-erc-server)
 (define-key ibuffer-mode-map (kbd "/ \C-e") 'erc-ibuffer-limit-map)
 
diff --git a/lisp/erc/erc-identd.el b/lisp/erc/erc-identd.el
index 1f68272..3821e29 100644
--- a/lisp/erc/erc-identd.el
+++ b/lisp/erc/erc-identd.el
@@ -1,4 +1,4 @@
-;;; erc-identd.el --- RFC1413 (identd authentication protocol) server
+;;; erc-identd.el --- RFC1413 (identd authentication protocol) server  -*- 
lexical-binding: t; -*-
 
 ;; Copyright (C) 2003, 2006-2021 Free Software Foundation, Inc.
 
@@ -50,7 +50,6 @@
 `erc-identd-start'.
 
 This can be either a string or a number."
-  :group 'erc-identd
   :type '(choice (const :tag "None" nil)
                 (integer :tag "Port number")
                 (string :tag "Port string")))
@@ -58,10 +57,10 @@ This can be either a string or a number."
 ;;;###autoload(autoload 'erc-identd-mode "erc-identd")
 (define-erc-module identd nil
   "This mode launches an identd server on port 8113."
-  ((add-hook 'erc-connect-pre-hook 'erc-identd-quickstart)
-   (add-hook 'erc-disconnected-hook 'erc-identd-stop))
-  ((remove-hook 'erc-connect-pre-hook 'erc-identd-quickstart)
-   (remove-hook 'erc-disconnected-hook 'erc-identd-stop)))
+  ((add-hook 'erc-connect-pre-hook #'erc-identd-quickstart)
+   (add-hook 'erc-disconnected-hook #'erc-identd-stop))
+  ((remove-hook 'erc-connect-pre-hook #'erc-identd-quickstart)
+   (remove-hook 'erc-disconnected-hook #'erc-identd-stop)))
 
 (defun erc-identd-filter (proc string)
   "This filter implements RFC1413 (identd authentication protocol)."
@@ -95,16 +94,16 @@ system."
                              :buffer nil
                              :host 'local :service port
                              :server t :noquery t :nowait t
-                             :filter 'erc-identd-filter))
+                             :filter #'erc-identd-filter))
   (set-process-query-on-exit-flag erc-identd-process nil))
 
-(defun erc-identd-quickstart (&rest ignored)
+(defun erc-identd-quickstart (&rest _ignored)
   "Start the identd server with the default port.
 The default port is specified by `erc-identd-port'."
   (erc-identd-start))
 
 ;;;###autoload
-(defun erc-identd-stop (&rest ignore)
+(defun erc-identd-stop (&rest _ignore)
   (interactive)
   (when erc-identd-process
     (delete-process erc-identd-process)
diff --git a/lisp/erc/erc-imenu.el b/lisp/erc/erc-imenu.el
index ecdfc2a..b2a2dc5 100644
--- a/lisp/erc/erc-imenu.el
+++ b/lisp/erc/erc-imenu.el
@@ -1,4 +1,4 @@
-;;; erc-imenu.el -- Imenu support for ERC
+;;; erc-imenu.el -- Imenu support for ERC  -*- lexical-binding: t; -*-
 
 ;; Copyright (C) 2001-2002, 2004, 2006-2021 Free Software Foundation,
 ;; Inc.
@@ -71,7 +71,7 @@ Don't rely on this function, read it first!"
        (message-alist '())
        (mode-change-alist '())
        (topic-change-alist '())
-       prev-pos)
+       ) ;; prev-pos
     (goto-char (point-max))
     (while (if (bolp)
               (> (forward-line -1)
@@ -106,7 +106,8 @@ Don't rely on this function, read it first!"
                    "^\\(\\S-+\\) (.+) has set the topic for \\S-+: \\(.*\\)$"
                    notice-text)
               (push (cons (concat (match-string 1 notice-text) ": "
-                                  (match-string 2 notice-text)) pos)
+                                  (match-string 2 notice-text))
+                          pos)
                     topic-change-alist)))))
        (when (looking-at "<\\(\\S-+\\)> \\(.+\\)$")
          (let ((from (match-string 1))
diff --git a/lisp/erc/erc-join.el b/lisp/erc/erc-join.el
index 1707e71..2ad9c8b 100644
--- a/lisp/erc/erc-join.el
+++ b/lisp/erc/erc-join.el
@@ -1,4 +1,4 @@
-;;; erc-join.el --- autojoin channels on connect and reconnects
+;;; erc-join.el --- autojoin channels on connect and reconnects  -*- 
lexical-binding: t; -*-
 
 ;; Copyright (C) 2002-2004, 2006-2021 Free Software Foundation, Inc.
 
@@ -42,14 +42,14 @@
 ;;;###autoload(autoload 'erc-autojoin-mode "erc-join" nil t)
 (define-erc-module autojoin nil
   "Makes ERC autojoin on connects and reconnects."
-  ((add-hook 'erc-after-connect 'erc-autojoin-channels)
-   (add-hook 'erc-nickserv-identified-hook 'erc-autojoin-after-ident)
-   (add-hook 'erc-server-JOIN-functions 'erc-autojoin-add)
-   (add-hook 'erc-server-PART-functions 'erc-autojoin-remove))
-  ((remove-hook 'erc-after-connect 'erc-autojoin-channels)
-   (remove-hook 'erc-nickserv-identified-hook 'erc-autojoin-after-ident)
-   (remove-hook 'erc-server-JOIN-functions 'erc-autojoin-add)
-   (remove-hook 'erc-server-PART-functions 'erc-autojoin-remove)))
+  ((add-hook 'erc-after-connect #'erc-autojoin-channels)
+   (add-hook 'erc-nickserv-identified-hook #'erc-autojoin-after-ident)
+   (add-hook 'erc-server-JOIN-functions #'erc-autojoin-add)
+   (add-hook 'erc-server-PART-functions #'erc-autojoin-remove))
+  ((remove-hook 'erc-after-connect #'erc-autojoin-channels)
+   (remove-hook 'erc-nickserv-identified-hook #'erc-autojoin-after-ident)
+   (remove-hook 'erc-server-JOIN-functions #'erc-autojoin-add)
+   (remove-hook 'erc-server-PART-functions #'erc-autojoin-remove)))
 
 (defcustom erc-autojoin-channels-alist nil
   "Alist of channels to autojoin on IRC networks.
@@ -70,7 +70,6 @@ keeps track of what channels you are on, and will join them
 again when you get disconnected.  When you restart Emacs, however,
 those changes are lost, and the customization you saved the last
 time is used again."
-  :group 'erc-autojoin
   :type '(repeat (cons :tag "Server"
                       (regexp :tag "Name")
                       (repeat :tag "Channels"
@@ -82,7 +81,6 @@ If the value is `connect', autojoin immediately on connecting.
 If the value is `ident', autojoin after successful NickServ
 identification, or after `erc-autojoin-delay' seconds.
 Any other value means the same as `connect'."
-  :group 'erc-autojoin
   :version "24.1"
   :type  '(choice (const :tag "On Connection" connect)
                  (const :tag "When Identified" ident)))
@@ -92,7 +90,6 @@ Any other value means the same as `connect'."
 This only takes effect if `erc-autojoin-timing' is `ident'.
 If NickServ identification occurs before this delay expires, ERC
 autojoins immediately at that time."
-  :group 'erc-autojoin
   :version "24.1"
   :type  'integer)
 
@@ -102,7 +99,6 @@ If non-nil, and a channel on the server a.b.c is joined, then
 only b.c is used as the server for `erc-autojoin-channels-alist'.
 This is important for networks that redirect you to other
 servers, presumably in the same domain."
-  :group 'erc-autojoin
   :type 'boolean)
 
 (defvar-local erc--autojoin-timer nil)
@@ -121,7 +117,7 @@ This is called from a timer set up by 
`erc-autojoin-channels'."
       (erc-log "Delayed autojoin started (no ident success detected yet)")
       (erc-autojoin-channels server nick))))
 
-(defun erc-autojoin-after-ident (network nick)
+(defun erc-autojoin-after-ident (_network _nick)
   "Autojoin channels in `erc-autojoin-channels-alist'.
 This function is run from `erc-nickserv-identified-hook'."
   (if erc--autojoin-timer
@@ -149,7 +145,7 @@ This function is run from `erc-nickserv-identified-hook'."
       (when (> erc-autojoin-delay 0)
        (setq erc--autojoin-timer
              (run-with-timer erc-autojoin-delay nil
-                             'erc-autojoin-channels-delayed
+                             #'erc-autojoin-channels-delayed
                              server nick (current-buffer))))
     ;; `erc-autojoin-timing' is `connect':
     (let ((server (or erc-session-server erc-server-announced-name)))
diff --git a/lisp/erc/erc-lang.el b/lisp/erc/erc-lang.el
index 4163e5a..136131c 100644
--- a/lisp/erc/erc-lang.el
+++ b/lisp/erc/erc-lang.el
@@ -1,4 +1,4 @@
-;;; erc-lang.el --- provide the LANG command to ERC
+;;; erc-lang.el --- provide the LANG command to ERC  -*- lexical-binding: t; 
-*-
 
 ;; Copyright (C) 2002, 2004, 2006-2021 Free Software Foundation, Inc.
 
diff --git a/lisp/erc/erc-list.el b/lisp/erc/erc-list.el
index cf150e7..31693a7 100644
--- a/lisp/erc/erc-list.el
+++ b/lisp/erc/erc-list.el
@@ -59,13 +59,13 @@
 ;;;###autoload(autoload 'erc-list-mode "erc-list")
 (define-erc-module list nil
   "List channels nicely in a separate buffer."
-  ((remove-hook 'erc-server-321-functions 'erc-server-321-message)
-   (remove-hook 'erc-server-322-functions 'erc-server-322-message))
+  ((remove-hook 'erc-server-321-functions #'erc-server-321-message)
+   (remove-hook 'erc-server-322-functions #'erc-server-322-message))
   ((erc-with-all-buffers-of-server nil
      #'erc-open-server-buffer-p
-     (remove-hook 'erc-server-322-functions 'erc-list-handle-322 t))
-   (add-hook 'erc-server-321-functions 'erc-server-321-message t)
-   (add-hook 'erc-server-322-functions 'erc-server-322-message t)))
+     (remove-hook 'erc-server-322-functions #'erc-list-handle-322 t))
+   (add-hook 'erc-server-321-functions #'erc-server-321-message t)
+   (add-hook 'erc-server-322-functions #'erc-server-322-message t)))
 
 ;; Format a record for display.
 (defun erc-list-make-string (channel users topic)
@@ -126,17 +126,17 @@
 (defvar erc-list-menu-mode-map
   (let ((map (make-keymap)))
     (set-keymap-parent map special-mode-map)
-    (define-key map "k" 'erc-list-kill)
-    (define-key map "j" 'erc-list-join)
-    (define-key map "g" 'erc-list-revert)
-    (define-key map "n" 'next-line)
-    (define-key map "p" 'previous-line)
+    (define-key map "k" #'erc-list-kill)
+    (define-key map "j" #'erc-list-join)
+    (define-key map "g" #'erc-list-revert)
+    (define-key map "n" #'next-line)
+    (define-key map "p" #'previous-line)
     map)
   "Local keymap for `erc-list-mode' buffers.")
 
 (defvar erc-list-menu-sort-button-map
   (let ((map (make-sparse-keymap)))
-    (define-key map [header-line mouse-1] 'erc-list-menu-sort-by-column)
+    (define-key map [header-line mouse-1] #'erc-list-menu-sort-by-column)
     (define-key map [follow-link] 'mouse-face)
     map)
   "Local keymap for ERC list menu mode sorting buttons.")
@@ -181,12 +181,12 @@
 (defun erc-list-install-322-handler (server-buffer)
   (with-current-buffer server-buffer
     ;; Arrange for 322 responses to insert into our buffer.
-    (add-hook 'erc-server-322-functions 'erc-list-handle-322 t t)
+    (add-hook 'erc-server-322-functions #'erc-list-handle-322 t t)
     ;; Arrange for 323 (end of list) to end this.
     (erc-once-with-server-event
      323
      (lambda (_proc _parsed)
-       (remove-hook 'erc-server-322-functions 'erc-list-handle-322 t)))
+       (remove-hook 'erc-server-322-functions #'erc-list-handle-322 t)))
     ;; Find the list buffer, empty it, and display it.
     (setq-local erc-list-buffer
                 (get-buffer-create (concat "*Channels of "
diff --git a/lisp/erc/erc-log.el b/lisp/erc/erc-log.el
index 22fd3d2..ddd00af 100644
--- a/lisp/erc/erc-log.el
+++ b/lisp/erc/erc-log.el
@@ -1,4 +1,4 @@
-;;; erc-log.el --- Logging facilities for ERC.
+;;; erc-log.el --- Logging facilities for ERC.  -*- lexical-binding: t; -*-
 
 ;; Copyright (C) 2003-2021 Free Software Foundation, Inc.
 
@@ -112,7 +112,6 @@ SERVER and PORT are the parameters that were used to 
connect to BUFFERs
 If you want to write logs into different directories, make a
 custom function which returns the directory part and set
 `erc-log-channels-directory' to its name."
-  :group 'erc-log
   :type '(choice (const :tag "#channel!nick@server:port.txt"
                        erc-generate-log-file-name-long)
                 (const :tag "#channel!nick@network.txt"
@@ -124,7 +123,6 @@ custom function which returns the directory part and set
 
 (defcustom erc-truncate-buffer-on-save nil
   "Erase the contents of any ERC (channel, query, server) buffer when it is 
saved."
-  :group 'erc-log
   :type 'boolean)
 
 (defcustom erc-enable-logging t
@@ -138,7 +136,6 @@ This variable is buffer local.  Setting it via 
\\[customize] sets the
 default value.
 
 Log files are stored in `erc-log-channels-directory'."
-  :group 'erc-log
   :type '(choice boolean
                 function))
 (make-variable-buffer-local 'erc-enable-logging)
@@ -153,14 +150,12 @@ If this is the name of a function, the function will be 
called
 with the buffer, target, nick, server, and port arguments.  See
 `erc-generate-log-file-name-function' for a description of these
 arguments."
-  :group 'erc-log
   :type '(choice directory
                 (function "Function")
                 (const :tag "Disable logging" nil)))
 
 (defcustom erc-log-insert-log-on-open nil
   "Insert log file contents into the buffer if a log file exists."
-  :group 'erc-log
   :type 'boolean)
 
 (defcustom erc-save-buffer-on-part t
@@ -168,7 +163,6 @@ arguments."
 
 If you set this to nil, you may want to enable both
 `erc-log-write-after-send' and `erc-log-write-after-insert'."
-  :group 'erc-log
   :type 'boolean)
 
 (defcustom erc-save-queries-on-quit t
@@ -176,7 +170,6 @@ If you set this to nil, you may want to enable both
 
 If you set this to nil, you may want to enable both
 `erc-log-write-after-send' and `erc-log-write-after-insert'."
-  :group 'erc-log
   :type 'boolean)
 
 (defcustom erc-log-write-after-send nil
@@ -184,7 +177,6 @@ If you set this to nil, you may want to enable both
 
 If you set this to nil, you may want to enable both
 `erc-save-buffer-on-part' and `erc-save-queries-on-quit'."
-  :group 'erc-log
   :type 'boolean)
 
 (defcustom erc-log-write-after-insert nil
@@ -193,7 +185,6 @@ logged ERC buffer.
 
 If you set this to nil, you may want to enable both
 `erc-save-buffer-on-part' and `erc-save-queries-on-quit'."
-  :group 'erc-log
   :type 'boolean)
 
 (defcustom erc-log-file-coding-system 'emacs-mule
@@ -201,15 +192,13 @@ If you set this to nil, you may want to enable both
 
 This should ideally, be a \"catch-all\" coding system, like
 `emacs-mule', or `iso-2022-7bit'."
-  :type 'coding-system
-  :group 'erc-log)
+  :type 'coding-system)
 
 (defcustom erc-log-filter-function nil
   "If non-nil, pass text through the given function before writing it to
 a log file.
 
 The function should take one argument, which is the text to filter."
-  :group 'erc-log
   :type '(choice (function "Function")
                 (const :tag "No filtering" nil)))
 
@@ -232,31 +221,31 @@ also be a predicate function.  To only log when you are 
not set away, use:
          (null (erc-away-time)))))"
   ;; enable
   ((when erc-log-write-after-insert
-     (add-hook 'erc-insert-post-hook 'erc-save-buffer-in-logs))
+     (add-hook 'erc-insert-post-hook #'erc-save-buffer-in-logs))
    (when erc-log-write-after-send
-     (add-hook 'erc-send-post-hook 'erc-save-buffer-in-logs))
-   (add-hook 'erc-kill-buffer-hook 'erc-save-buffer-in-logs)
-   (add-hook 'erc-kill-channel-hook 'erc-save-buffer-in-logs)
-   (add-hook 'kill-emacs-hook 'erc-log-save-all-buffers)
-   (add-hook 'erc-quit-hook 'erc-conditional-save-queries)
-   (add-hook 'erc-part-hook 'erc-conditional-save-buffer)
+     (add-hook 'erc-send-post-hook #'erc-save-buffer-in-logs))
+   (add-hook 'erc-kill-buffer-hook #'erc-save-buffer-in-logs)
+   (add-hook 'erc-kill-channel-hook #'erc-save-buffer-in-logs)
+   (add-hook 'kill-emacs-hook #'erc-log-save-all-buffers)
+   (add-hook 'erc-quit-hook #'erc-conditional-save-queries)
+   (add-hook 'erc-part-hook #'erc-conditional-save-buffer)
    ;; append, so that 'erc-initialize-log-marker runs first
-   (add-hook 'erc-connect-pre-hook 'erc-log-setup-logging 'append)
+   (add-hook 'erc-connect-pre-hook #'erc-log-setup-logging 'append)
    (dolist (buffer (erc-buffer-list))
      (erc-log-setup-logging buffer)))
   ;; disable
-  ((remove-hook 'erc-insert-post-hook 'erc-save-buffer-in-logs)
-   (remove-hook 'erc-send-post-hook 'erc-save-buffer-in-logs)
-   (remove-hook 'erc-kill-buffer-hook 'erc-save-buffer-in-logs)
-   (remove-hook 'erc-kill-channel-hook 'erc-save-buffer-in-logs)
-   (remove-hook 'kill-emacs-hook 'erc-log-save-all-buffers)
-   (remove-hook 'erc-quit-hook 'erc-conditional-save-queries)
-   (remove-hook 'erc-part-hook 'erc-conditional-save-buffer)
-   (remove-hook 'erc-connect-pre-hook 'erc-log-setup-logging)
+  ((remove-hook 'erc-insert-post-hook #'erc-save-buffer-in-logs)
+   (remove-hook 'erc-send-post-hook #'erc-save-buffer-in-logs)
+   (remove-hook 'erc-kill-buffer-hook #'erc-save-buffer-in-logs)
+   (remove-hook 'erc-kill-channel-hook #'erc-save-buffer-in-logs)
+   (remove-hook 'kill-emacs-hook #'erc-log-save-all-buffers)
+   (remove-hook 'erc-quit-hook #'erc-conditional-save-queries)
+   (remove-hook 'erc-part-hook #'erc-conditional-save-buffer)
+   (remove-hook 'erc-connect-pre-hook #'erc-log-setup-logging)
    (dolist (buffer (erc-buffer-list))
      (erc-log-disable-logging buffer))))
 
-(define-key erc-mode-map "\C-c\C-l" 'erc-save-buffer-in-logs)
+(define-key erc-mode-map "\C-c\C-l" #'erc-save-buffer-in-logs)
 
 ;;; functionality referenced from erc.el
 (defun erc-log-setup-logging (buffer)
@@ -357,13 +346,13 @@ The result is converted to lowercase, as IRC is 
case-insensitive."
                    buffer target nick server port)
         erc-log-channels-directory)))))
 
-(defun erc-generate-log-file-name-with-date (buffer &rest ignore)
+(defun erc-generate-log-file-name-with-date (buffer &rest _ignore)
   "This function computes a short log file name.
 The name of the log file is composed of BUFFER and the current date.
 This function is a possible value for `erc-generate-log-file-name-function'."
   (concat (buffer-name buffer) "-" (format-time-string "%Y-%m-%d") ".txt"))
 
-(defun erc-generate-log-file-name-short (buffer &rest ignore)
+(defun erc-generate-log-file-name-short (buffer &rest _ignore)
   "This function computes a short log file name.
 In fact, it only uses the buffer name of the BUFFER argument, so
 you can affect that using `rename-buffer' and the-like.  This
@@ -371,7 +360,7 @@ function is a possible value for
 `erc-generate-log-file-name-function'."
   (concat (buffer-name buffer) ".txt"))
 
-(defun erc-generate-log-file-name-long (buffer target nick server port)
+(defun erc-generate-log-file-name-long (_buffer target nick server port)
   "Generates a log-file name in the way ERC always did it.
 This results in a file name of the form #channel!nick@server:port.txt.
 This function is a possible value for `erc-generate-log-file-name-function'."
@@ -385,7 +374,7 @@ This function is a possible value for 
`erc-generate-log-file-name-function'."
 
 (declare-function erc-network-name "erc-networks" ())
 
-(defun erc-generate-log-file-name-network (buffer target nick server port)
+(defun erc-generate-log-file-name-network (buffer target nick server _port)
   "Generates a log-file name using the network name rather than server name.
 This results in a file name of the form #channel!nick@network.txt.
 This function is a possible value for `erc-generate-log-file-name-function'."
diff --git a/lisp/erc/erc-match.el b/lisp/erc/erc-match.el
index eede15c..43fbca3 100644
--- a/lisp/erc/erc-match.el
+++ b/lisp/erc/erc-match.el
@@ -1,4 +1,4 @@
-;;; erc-match.el --- Highlight messages matching certain regexps
+;;; erc-match.el --- Highlight messages matching certain regexps  -*- 
lexical-binding: t; -*-
 
 ;; Copyright (C) 2002-2021 Free Software Foundation, Inc.
 
@@ -52,19 +52,17 @@ they are hidden or highlighted.  This is controlled via the 
variables
 `erc-current-nick-highlight-type'.  For all these highlighting types,
 you can decide whether the entire message or only the sending nick is
 highlighted."
-  ((add-hook 'erc-insert-modify-hook 'erc-match-message 'append))
-  ((remove-hook 'erc-insert-modify-hook 'erc-match-message)))
+  ((add-hook 'erc-insert-modify-hook #'erc-match-message 'append))
+  ((remove-hook 'erc-insert-modify-hook #'erc-match-message)))
 
 ;; Remaining customizations
 
 (defcustom erc-pals nil
   "List of pals on IRC."
-  :group 'erc-match
   :type '(repeat regexp))
 
 (defcustom erc-fools nil
   "List of fools on IRC."
-  :group 'erc-match
   :type '(repeat regexp))
 
 (defcustom erc-keywords nil
@@ -72,14 +70,12 @@ highlighted."
 Each entry in the list is either a regexp, or a cons cell with the
 regexp in the car and the face to use in the cdr.  If no face is
 specified, `erc-keyword-face' is used."
-  :group 'erc-match
   :type '(repeat (choice regexp
                         (list regexp face))))
 
 (defcustom erc-dangerous-hosts nil
   "List of regexps for hosts to highlight.
 Useful to mark nicks from dangerous hosts."
-  :group 'erc-match
   :type '(repeat regexp))
 
 (defcustom erc-current-nick-highlight-type 'keyword
@@ -99,7 +95,6 @@ The following values are allowed:
                      current nickname occurs
 
 Any other value disables highlighting of current nickname altogether."
-  :group 'erc-match
   :type '(choice (const nil)
                 (const nick)
                 (const keyword)
@@ -120,7 +115,6 @@ The following values are allowed:
                 from pal
 
 Any other value disables pal highlighting altogether."
-  :group 'erc-match
   :type '(choice (const nil)
                 (const nick)
                  (const message)
@@ -139,7 +133,6 @@ The following values are allowed:
                 from fool
 
 Any other value disables fool highlighting altogether."
-  :group 'erc-match
   :type '(choice (const nil)
                 (const nick)
                  (const message)
@@ -157,7 +150,6 @@ The following values are allowed:
                 containing keyword
 
 Any other value disables keyword highlighting altogether."
-  :group 'erc-match
   :type '(choice (const nil)
                 (const keyword)
                  (const message)
@@ -175,7 +167,6 @@ The following values are allowed:
                 from dangerous-host
 
 Any other value disables dangerous-host highlighting altogether."
-  :group 'erc-match
   :type '(choice (const nil)
                 (const nick)
                  (const message)
@@ -193,7 +184,6 @@ Valid match type keys are:
 
 The other element of each cons pair in this list is the buffer name to
 use for the logged message."
-  :group 'erc-match
   :type '(repeat (cons (choice :tag "Key"
                               (const keyword)
                               (const pal)
@@ -207,7 +197,6 @@ use for the logged message."
 When nil, don't log any matched messages.
 When t, log messages.
 When `away', log messages only when away."
-  :group 'erc-match
   :type '(choice (const nil)
                 (const away)
                 (const t)))
@@ -222,14 +211,12 @@ will be formatted.  The various format specs are:
 %u Nickname!user@host of sender
 %c Channel in which this was received
 %m Message"
-  :group 'erc-match
   :type 'string)
 
 (defcustom erc-beep-match-types '(current-nick)
   "Types of matches to beep for when a match occurs.
 The function `erc-beep-on-match' needs to be added to `erc-text-matched-hook'
 for beeping to work."
-  :group 'erc-match
   :type '(choice (repeat :tag "Beep on match" (choice
                                               (const current-nick)
                                               (const keyword)
@@ -244,14 +231,12 @@ Functions in this hook are passed as arguments:
 \(match-type nick!user@host message) where MATCH-TYPE is a symbol of:
 current-nick, keyword, pal, dangerous-host, fool."
   :options '(erc-log-matches erc-hide-fools erc-beep-on-match)
-  :group 'erc-match
   :type 'hook)
 
 (defcustom erc-match-exclude-server-buffer nil
   "If true, don't perform match on the server buffer; this is
 useful for excluding all the things like MOTDs from the server
 and other miscellaneous functions."
-  :group 'erc-match
   :version "24.3"
   :type 'boolean)
 
@@ -390,7 +375,7 @@ car is the string."
   (interactive)
   (erc-remove-entry-from-list 'erc-dangerous-hosts "Delete dangerous-host: "))
 
-(defun erc-match-current-nick-p (nickuserhost msg)
+(defun erc-match-current-nick-p (_nickuserhost msg)
   "Check whether the current nickname is in MSG.
 NICKUSERHOST will be ignored."
   (with-syntax-table erc-match-syntax-table
@@ -400,7 +385,7 @@ NICKUSERHOST will be ignored."
                               "\\b")
                       msg))))
 
-(defun erc-match-pal-p (nickuserhost msg)
+(defun erc-match-pal-p (nickuserhost _msg)
   "Check whether NICKUSERHOST is in `erc-pals'.
 MSG will be ignored."
   (and nickuserhost
@@ -412,7 +397,7 @@ MSG will be ignored."
        (or (erc-list-match erc-fools nickuserhost)
           (erc-match-directed-at-fool-p msg))))
 
-(defun erc-match-keyword-p (nickuserhost msg)
+(defun erc-match-keyword-p (_nickuserhost msg)
   "Check whether any keyword of `erc-keywords' matches for MSG.
 NICKUSERHOST will be ignored."
   (and msg
@@ -424,7 +409,7 @@ NICKUSERHOST will be ignored."
                erc-keywords)
        msg)))
 
-(defun erc-match-dangerous-host-p (nickuserhost msg)
+(defun erc-match-dangerous-host-p (nickuserhost _msg)
   "Check whether NICKUSERHOST is in `erc-dangerous-hosts'.
 MSG will be ignored."
   (and nickuserhost
@@ -457,7 +442,7 @@ Use this defun with `erc-insert-modify-hook'."
         (nickuserhost (erc-get-parsed-vector-nick vector))
         (nickname (and nickuserhost
                        (nth 0 (erc-parse-user nickuserhost))))
-        (old-pt (point))
+        ;; (old-pt (point))
         (nick-beg (and nickname
                        (re-search-forward (regexp-quote nickname)
                                           (point-max) t)
@@ -484,11 +469,12 @@ Use this defun with `erc-insert-modify-hook'."
         (goto-char (point-min))
         (let* ((match-prefix (concat "erc-" match-type))
                (match-pred (intern (concat "erc-match-" match-type "-p")))
-               (match-htype (eval (intern (concat match-prefix
-                                                  "-highlight-type"))))
+               (match-htype (symbol-value (intern (concat match-prefix
+                                                          "-highlight-type"))))
                (match-regex (if (string= match-type "current-nick")
                                 (regexp-quote (erc-current-nick))
-                              (eval (intern (concat match-prefix "s")))))
+                              (symbol-value
+                               (intern (concat match-prefix "s")))))
                (match-face (intern (concat match-prefix "-face"))))
           (when (funcall match-pred nickuserhost message)
             (cond
@@ -601,7 +587,7 @@ See `erc-log-match-format'."
                                 (kill-buffer buffer)))))
       buffer)))
 
-(defun erc-log-matches-come-back (proc parsed)
+(defun erc-log-matches-come-back (_proc _parsed)
   "Display a notice that messages were logged while away."
   (when (and (erc-away-time)
             (eq erc-log-matches-flag 'away))
@@ -629,7 +615,7 @@ See `erc-log-match-format'."
   nil)
 
 ; This handler must be run _before_ erc-process-away is.
-(add-hook 'erc-server-305-functions 'erc-log-matches-come-back nil)
+(add-hook 'erc-server-305-functions #'erc-log-matches-come-back nil)
 
 (defun erc-go-to-log-matches-buffer ()
   "Interactively open an erc-log-matches buffer."
@@ -642,9 +628,9 @@ See `erc-log-match-format'."
                                        (get-buffer (car buffer-cons))))))
     (switch-to-buffer buffer-name)))
 
-(define-key erc-mode-map "\C-c\C-k" 'erc-go-to-log-matches-buffer)
+(define-key erc-mode-map "\C-c\C-k" #'erc-go-to-log-matches-buffer)
 
-(defun erc-hide-fools (match-type nickuserhost message)
+(defun erc-hide-fools (match-type _nickuserhost _message)
  "Hide foolish comments.
 This function should be called from `erc-text-matched-hook'."
  (when (eq match-type 'fool)
@@ -652,7 +638,7 @@ This function should be called from 
`erc-text-matched-hook'."
                            '(invisible intangible)
                            (current-buffer))))
 
-(defun erc-beep-on-match (match-type nickuserhost message)
+(defun erc-beep-on-match (match-type _nickuserhost _message)
   "Beep when text matches.
 This function is meant to be called from `erc-text-matched-hook'."
   (when (member match-type erc-beep-match-types)
diff --git a/lisp/erc/erc-menu.el b/lisp/erc/erc-menu.el
index d76e0a3..0dc819f 100644
--- a/lisp/erc/erc-menu.el
+++ b/lisp/erc/erc-menu.el
@@ -1,4 +1,4 @@
-;; erc-menu.el -- Menu-bar definitions for ERC
+;; erc-menu.el -- Menu-bar definitions for ERC  -*- lexical-binding: t; -*-
 
 ;; Copyright (C) 2001-2002, 2004-2021 Free Software Foundation, Inc.
 
diff --git a/lisp/erc/erc-netsplit.el b/lisp/erc/erc-netsplit.el
index 37fc4cf..9cfb947 100644
--- a/lisp/erc/erc-netsplit.el
+++ b/lisp/erc/erc-netsplit.el
@@ -1,4 +1,4 @@
-;;; erc-netsplit.el --- Reduce JOIN/QUIT messages on netsplits
+;;; erc-netsplit.el --- Reduce JOIN/QUIT messages on netsplits  -*- 
lexical-binding: t; -*-
 
 ;; Copyright (C) 2002-2004, 2006-2021 Free Software Foundation, Inc.
 
@@ -42,30 +42,27 @@ netsplits, so that it can filter the JOIN messages on a 
netjoin too."
 (define-erc-module netsplit nil
   "This mode hides quit/join messages if a netsplit occurs."
   ((erc-netsplit-install-message-catalogs)
-   (add-hook 'erc-server-JOIN-functions 'erc-netsplit-JOIN)
-   (add-hook 'erc-server-MODE-functions 'erc-netsplit-MODE)
-   (add-hook 'erc-server-QUIT-functions 'erc-netsplit-QUIT)
-   (add-hook 'erc-timer-hook 'erc-netsplit-timer))
-  ((remove-hook 'erc-server-JOIN-functions 'erc-netsplit-JOIN)
-   (remove-hook 'erc-server-MODE-functions 'erc-netsplit-MODE)
-   (remove-hook 'erc-server-QUIT-functions 'erc-netsplit-QUIT)
-   (remove-hook 'erc-timer-hook 'erc-netsplit-timer)))
+   (add-hook 'erc-server-JOIN-functions #'erc-netsplit-JOIN)
+   (add-hook 'erc-server-MODE-functions #'erc-netsplit-MODE)
+   (add-hook 'erc-server-QUIT-functions #'erc-netsplit-QUIT)
+   (add-hook 'erc-timer-hook #'erc-netsplit-timer))
+  ((remove-hook 'erc-server-JOIN-functions #'erc-netsplit-JOIN)
+   (remove-hook 'erc-server-MODE-functions #'erc-netsplit-MODE)
+   (remove-hook 'erc-server-QUIT-functions #'erc-netsplit-QUIT)
+   (remove-hook 'erc-timer-hook #'erc-netsplit-timer)))
 
 (defcustom erc-netsplit-show-server-mode-changes-flag nil
   "Set to t to enable display of server mode changes."
-  :group 'erc-netsplit
   :type 'boolean)
 
 (defcustom erc-netsplit-debug nil
   "If non-nil, debug messages will be shown in the sever buffer."
-  :group 'erc-netsplit
   :type 'boolean)
 
 (defcustom erc-netsplit-regexp
   "^[^ @!\"\n]+\\.[^ @!\n]+ [^ @!\n]+\\.[^ @!\"\n]+$"
   "This regular expression should match quit reasons produced
 by netsplits."
-  :group 'erc-netsplit
   :type 'regexp)
 
 (defcustom erc-netsplit-hook nil
@@ -190,13 +187,13 @@ join from that split has been detected or not.")
        (erc-display-message
         nil 'notice 'active
         'netsplit-wholeft ?s (car elt)
-        ?n (mapconcat 'erc-extract-nick (nthcdr 3 elt) " ")
+        ?n (mapconcat #'erc-extract-nick (nthcdr 3 elt) " ")
         ?t (if (nth 2 elt)
                "(joining)"
              "")))))
   t)
 
-(defalias 'erc-cmd-WL 'erc-cmd-WHOLEFT)
+(defalias 'erc-cmd-WL #'erc-cmd-WHOLEFT)
 
 (provide 'erc-netsplit)
 
diff --git a/lisp/erc/erc-networks.el b/lisp/erc/erc-networks.el
index 9926255..aed02a9 100644
--- a/lisp/erc/erc-networks.el
+++ b/lisp/erc/erc-networks.el
@@ -1,4 +1,4 @@
-;;; erc-networks.el --- IRC networks
+;;; erc-networks.el --- IRC networks  -*- lexical-binding: t; -*-
 
 ;; Copyright (C) 2002, 2004-2021 Free Software Foundation, Inc.
 
@@ -443,7 +443,6 @@ NET is a symbol indicating to which network from 
`erc-networks-alist'
   this server corresponds,
 HOST is the servers hostname and
 PORTS is either a number, a list of numbers, or a list of port ranges."
-  :group 'erc-networks
   :type '(alist :key-type (string :tag "Name")
                :value-type
                (group symbol (string :tag "Hostname")
@@ -714,7 +713,6 @@ MATCHER is used to find a corresponding network to a server 
while
   connected to it.  If it is regexp, it's used to match against
   `erc-server-announced-name'.  It can also be a function (predicate).
   Then it is executed with the server buffer as current-buffer."
-  :group 'erc-networks
   :type '(repeat
          (list :tag "Network"
                (symbol :tag "Network name")
@@ -762,25 +760,25 @@ Return the name of this server's network as a symbol."
   "Return the name of the current network as a string."
   (erc-with-server-buffer (symbol-name erc-network)))
 
-(defun erc-set-network-name (proc parsed)
+(defun erc-set-network-name (_proc _parsed)
   "Set `erc-network' to the value returned by `erc-determine-network'."
   (unless erc-server-connected
     (setq erc-network (erc-determine-network)))
   nil)
 
-(defun erc-unset-network-name (nick ip reason)
+(defun erc-unset-network-name (_nick _ip _reason)
   "Set `erc-network' to nil."
   (setq erc-network nil)
   nil)
 
 (define-erc-module networks nil
   "Provide data about IRC networks."
-  ((add-hook 'erc-server-375-functions 'erc-set-network-name)
-   (add-hook 'erc-server-422-functions 'erc-set-network-name)
-   (add-hook 'erc-disconnected-hook 'erc-unset-network-name))
-  ((remove-hook 'erc-server-375-functions 'erc-set-network-name)
-   (remove-hook 'erc-server-422-functions 'erc-set-network-name)
-   (remove-hook 'erc-disconnected-hook 'erc-unset-network-name)))
+  ((add-hook 'erc-server-375-functions #'erc-set-network-name)
+   (add-hook 'erc-server-422-functions #'erc-set-network-name)
+   (add-hook 'erc-disconnected-hook #'erc-unset-network-name))
+  ((remove-hook 'erc-server-375-functions #'erc-set-network-name)
+   (remove-hook 'erc-server-422-functions #'erc-set-network-name)
+   (remove-hook 'erc-disconnected-hook #'erc-unset-network-name)))
 
 (defun erc-ports-list (ports)
   "Return a list of PORTS.
diff --git a/lisp/erc/erc-notify.el b/lisp/erc/erc-notify.el
index e133e05..1ed056c 100644
--- a/lisp/erc/erc-notify.el
+++ b/lisp/erc/erc-notify.el
@@ -42,20 +42,17 @@
 (defcustom erc-notify-list nil
   "List of nicknames you want to be notified about online/offline
 status change."
-  :group 'erc-notify
   :type '(repeat string))
 
 (defcustom erc-notify-interval 60
   "Time interval (in seconds) for checking online status of notified
 people."
-  :group 'erc-notify
   :type 'integer)
 
 (defcustom erc-notify-signon-hook nil
   "Hook run after someone on `erc-notify-list' has signed on.
 Two arguments are passed to the function, SERVER and NICK, both
 strings."
-  :group 'erc-notify
   :type 'hook
   :options '(erc-notify-signon))
 
@@ -63,7 +60,6 @@ strings."
   "Hook run after someone on `erc-notify-list' has signed off.
 Two arguments are passed to the function, SERVER and NICK, both
 strings."
-  :group 'erc-notify
   :type 'hook
   :options '(erc-notify-signoff))
 
@@ -95,14 +91,14 @@ strings."
 (define-erc-module notify nil
   "Periodically check for the online status of certain users and report
 changes."
-  ((add-hook 'erc-timer-hook 'erc-notify-timer)
-   (add-hook 'erc-server-JOIN-functions 'erc-notify-JOIN)
-   (add-hook 'erc-server-NICK-functions 'erc-notify-NICK)
-   (add-hook 'erc-server-QUIT-functions 'erc-notify-QUIT))
-  ((remove-hook 'erc-timer-hook 'erc-notify-timer)
-   (remove-hook 'erc-server-JOIN-functions 'erc-notify-JOIN)
-   (remove-hook 'erc-server-NICK-functions 'erc-notify-NICK)
-   (remove-hook 'erc-server-QUIT-functions 'erc-notify-QUIT)))
+  ((add-hook 'erc-timer-hook #'erc-notify-timer)
+   (add-hook 'erc-server-JOIN-functions #'erc-notify-JOIN)
+   (add-hook 'erc-server-NICK-functions #'erc-notify-NICK)
+   (add-hook 'erc-server-QUIT-functions #'erc-notify-QUIT))
+  ((remove-hook 'erc-timer-hook #'erc-notify-timer)
+   (remove-hook 'erc-server-JOIN-functions #'erc-notify-JOIN)
+   (remove-hook 'erc-server-NICK-functions #'erc-notify-NICK)
+   (remove-hook 'erc-server-QUIT-functions #'erc-notify-QUIT)))
 
 ;;;; Timer handler
 
@@ -137,7 +133,7 @@ changes."
         (setq erc-last-ison ison-list)
         t)))
     (erc-server-send
-     (concat "ISON " (mapconcat 'identity erc-notify-list " ")))
+     (concat "ISON " (mapconcat #'identity erc-notify-list " ")))
     (setq erc-last-ison-time now)))
 
 (defun erc-notify-JOIN (proc parsed)
@@ -211,7 +207,7 @@ with args, toggle notify status of people."
         'notify_current ?l ison))))
    ((string= (car args) "-l")
     (erc-display-message nil 'notice 'active
-                        'notify_list ?l (mapconcat 'identity erc-notify-list
+                        'notify_list ?l (mapconcat #'identity erc-notify-list
                                                    " ")))
    (t
     (while args
@@ -231,7 +227,7 @@ with args, toggle notify status of people."
       (setq args (cdr args)))
     (erc-display-message
      nil 'notice 'active
-     'notify_list ?l (mapconcat 'identity erc-notify-list " "))))
+     'notify_list ?l (mapconcat #'identity erc-notify-list " "))))
   t)
 
 (autoload 'pcomplete-erc-all-nicks "erc-pcomplete")
diff --git a/lisp/erc/erc-page.el b/lisp/erc/erc-page.el
index 0cb60f5..4c244b7 100644
--- a/lisp/erc/erc-page.el
+++ b/lisp/erc/erc-page.el
@@ -1,4 +1,4 @@
-;; erc-page.el - CTCP PAGE support for ERC
+;; erc-page.el - CTCP PAGE support for ERC  -*- lexical-binding: t; -*-
 
 ;; Copyright (C) 2002, 2004, 2006-2021 Free Software Foundation, Inc.
 
@@ -30,6 +30,10 @@
 
 (require 'erc)
 
+(defgroup erc-page nil
+  "React to CTCP PAGE messages."
+  :group 'erc)
+
 ;;;###autoload(autoload 'erc-page-mode "erc-page")
 (define-erc-module page ctcp-page
   "Process CTCP PAGE requests from IRC."
@@ -37,10 +41,6 @@
 
 (erc-define-catalog-entry 'english 'CTCP-PAGE "Page from %n (%u@%h): %m")
 
-(defgroup erc-page nil
-  "React to CTCP PAGE messages."
-  :group 'erc)
-
 (defcustom erc-page-function nil
   "A function to process a \"page\" request.
 If nil, this prints the page message in the minibuffer and calls
@@ -53,20 +53,18 @@ Example for your init file:
       (lambda (sender msg)
        (play-sound-file \"/home/alex/elisp/erc/sounds/ni.wav\")
        (message \"IRC Page from %s: %s\" sender msg)))"
-  :group 'erc-page
   :type '(choice (const nil)
                 (function)))
 
-(defcustom erc-ctcp-query-PAGE-hook '(erc-ctcp-query-PAGE)
+(defcustom erc-ctcp-query-PAGE-hook (list #'erc-ctcp-query-PAGE)
   "List of functions to be called when a CTCP PAGE is received.
 This is called from `erc-process-ctcp-query'.  The functions are called
 with six arguments: PROC NICK LOGIN HOST TO MSG.  Note that you can
 also set `erc-page-function' to a function, which only gets two arguments,
 SENDER and MSG, so that might be easier to use."
-  :group 'erc-page
   :type '(repeat function))
 
-(defun erc-ctcp-query-PAGE (proc nick login host to msg)
+(defun erc-ctcp-query-PAGE (_proc nick login host _to msg)
   "Deal with an CTCP PAGE query, if `erc-page-mode' is non-nil.
 This will call `erc-page-function', if defined, or it will just print
 a message and `beep'.  In addition to that, the page message is also
@@ -91,7 +89,7 @@ inserted into the server buffer."
        nil 'notice nil text)))
   nil)
 
-(defun erc-cmd-PAGE (line &optional force)
+(defun erc-cmd-PAGE (line &optional _force)
   "Send a CTCP page to the user given as the first word in LINE.
 The rest of LINE is the message to send.  Note that you will only
 receive pages if `erc-page-mode' is on."
diff --git a/lisp/erc/erc-pcomplete.el b/lisp/erc/erc-pcomplete.el
index e9ebf0a..8ea37c7 100644
--- a/lisp/erc/erc-pcomplete.el
+++ b/lisp/erc/erc-pcomplete.el
@@ -1,4 +1,4 @@
-;;; erc-pcomplete.el --- Provides programmable completion for ERC
+;;; erc-pcomplete.el --- Provides programmable completion for ERC  -*- 
lexical-binding: t; -*-
 
 ;; Copyright (C) 2002-2004, 2006-2021 Free Software Foundation, Inc.
 
@@ -50,23 +50,21 @@
 (defcustom erc-pcomplete-nick-postfix ":"
   "When `pcomplete' is used in the first word after the prompt,
 add this string to nicks completed."
-  :group 'erc-pcomplete
   :type 'string)
 
 (defcustom erc-pcomplete-order-nickname-completions t
   "If t, channel nickname completions will be ordered such that
 the most recent speakers are listed first."
-  :group 'erc-pcomplete
   :type 'boolean)
 
 ;;;###autoload(autoload 'erc-completion-mode "erc-pcomplete" nil t)
 (define-erc-module pcomplete Completion
   "In ERC Completion mode, the TAB key does completion whenever possible."
-  ((add-hook 'erc-mode-hook 'pcomplete-erc-setup)
-   (add-hook 'erc-complete-functions 'erc-pcompletions-at-point)
+  ((add-hook 'erc-mode-hook #'pcomplete-erc-setup)
+   (add-hook 'erc-complete-functions #'erc-pcompletions-at-point)
    (erc-buffer-list #'pcomplete-erc-setup))
-  ((remove-hook 'erc-mode-hook 'pcomplete-erc-setup)
-   (remove-hook 'erc-complete-functions 'erc-pcompletions-at-point)))
+  ((remove-hook 'erc-mode-hook #'pcomplete-erc-setup)
+   (remove-hook 'erc-complete-functions #'erc-pcompletions-at-point)))
 
 (defun erc-pcompletions-at-point ()
   "ERC completion data from pcomplete.
@@ -154,7 +152,7 @@ for use on `completion-at-point-function'."
 (defun pcomplete/erc-mode/NAMES ()
   (while (pcomplete-here (pcomplete-erc-channels))))
 
-(defalias 'pcomplete/erc-mode/NOTICE 'pcomplete/erc-mode/MSG)
+(defalias 'pcomplete/erc-mode/NOTICE #'pcomplete/erc-mode/MSG)
 
 (defun pcomplete/erc-mode/OP ()
   (while (pcomplete-here (pcomplete-erc-not-ops))))
@@ -162,7 +160,7 @@ for use on `completion-at-point-function'."
 (defun pcomplete/erc-mode/PART ()
   (pcomplete-here (pcomplete-erc-channels)))
 
-(defalias 'pcomplete/erc-mode/LEAVE 'pcomplete/erc-mode/PART)
+(defalias 'pcomplete/erc-mode/LEAVE #'pcomplete/erc-mode/PART)
 
 (defun pcomplete/erc-mode/QUERY ()
   (pcomplete-here (append (pcomplete-erc-all-nicks)
diff --git a/lisp/erc/erc-replace.el b/lisp/erc/erc-replace.el
index c67d751..d08d985 100644
--- a/lisp/erc/erc-replace.el
+++ b/lisp/erc/erc-replace.el
@@ -1,4 +1,4 @@
-;; erc-replace.el -- wash and massage messages inserted into the buffer
+;; erc-replace.el -- wash and massage messages inserted into the buffer  -*- 
lexical-binding: t; -*-
 
 ;; Copyright (C) 2001-2002, 2004, 2006-2021 Free Software Foundation,
 ;; Inc.
@@ -49,7 +49,6 @@ expression or a variable, or any sexp, TO can be a string or a
 function to call, or any sexp.  If a function, it will be called with
 one argument, the string to be replaced, and it should return a
 replacement string."
-  :group 'erc-replace
   :type '(repeat (cons :tag "Search & Replace"
                       (choice :tag "From"
                               regexp
@@ -68,23 +67,23 @@ It replaces text according to `erc-replace-alist'."
            (let ((from (car elt))
                  (to (cdr elt)))
              (unless (stringp from)
-               (setq from (eval from)))
+               (setq from (eval from t)))
              (while (re-search-forward from nil t)
                (cond ((stringp to)
                       (replace-match to))
-                     ((and (symbolp to) (fboundp to))
+                     ((functionp to)
                       (replace-match (funcall to (match-string 0))))
                      (t
-                      (eval to))))))
+                      (eval to t))))))
          erc-replace-alist))
 
 ;;;###autoload(autoload 'erc-replace-mode "erc-replace")
 (define-erc-module replace nil
   "This mode replaces incoming text according to `erc-replace-alist'."
   ((add-hook 'erc-insert-modify-hook
-            'erc-replace-insert))
+            #'erc-replace-insert))
   ((remove-hook 'erc-insert-modify-hook
-               'erc-replace-insert)))
+               #'erc-replace-insert)))
 
 (provide 'erc-replace)
 
diff --git a/lisp/erc/erc-ring.el b/lisp/erc/erc-ring.el
index 028ab1e..28299ae 100644
--- a/lisp/erc/erc-ring.el
+++ b/lisp/erc/erc-ring.el
@@ -1,4 +1,4 @@
-;; erc-ring.el -- Command history handling for erc using ring.el
+;; erc-ring.el -- Command history handling for erc using ring.el  -*- 
lexical-binding: t; -*-
 
 ;; Copyright (C) 2001-2004, 2006-2021 Free Software Foundation, Inc.
 
@@ -46,12 +46,12 @@
 (define-erc-module ring nil
   "Stores input in a ring so that previous commands and messages can
 be recalled using M-p and M-n."
-  ((add-hook 'erc-pre-send-functions 'erc-add-to-input-ring)
-   (define-key erc-mode-map "\M-p" 'erc-previous-command)
-   (define-key erc-mode-map "\M-n" 'erc-next-command))
-  ((remove-hook 'erc-pre-send-functions 'erc-add-to-input-ring)
-   (define-key erc-mode-map "\M-p" 'undefined)
-   (define-key erc-mode-map "\M-n" 'undefined)))
+  ((add-hook 'erc-pre-send-functions #'erc-add-to-input-ring)
+   (define-key erc-mode-map "\M-p" #'erc-previous-command)
+   (define-key erc-mode-map "\M-n" #'erc-next-command))
+  ((remove-hook 'erc-pre-send-functions #'erc-add-to-input-ring)
+   (define-key erc-mode-map "\M-p" #'undefined)
+   (define-key erc-mode-map "\M-n" #'undefined)))
 
 (defvar-local erc-input-ring nil "Input ring for erc.")
 
diff --git a/lisp/erc/erc-services.el b/lisp/erc/erc-services.el
index 9ef8b7f..09d1f7a 100644
--- a/lisp/erc/erc-services.el
+++ b/lisp/erc/erc-services.el
@@ -91,7 +91,6 @@ Possible settings are:.
 nil           - Disables automatic Nickserv identification.
 
 You can also use \\[erc-nickserv-identify-mode] to change modes."
-  :group 'erc-services
   :type '(choice (const autodetect)
                 (const nick-change)
                 (const both)
@@ -107,13 +106,13 @@ You can also use \\[erc-nickserv-identify-mode] to change 
modes."
   "This mode automates communication with services."
   ((erc-nickserv-identify-mode erc-nickserv-identify-mode))
   ((remove-hook 'erc-server-NOTICE-functions
-               'erc-nickserv-identify-autodetect)
+               #'erc-nickserv-identify-autodetect)
    (remove-hook 'erc-after-connect
-               'erc-nickserv-identify-on-connect)
+               #'erc-nickserv-identify-on-connect)
    (remove-hook 'erc-nick-changed-functions
-               'erc-nickserv-identify-on-nick-change)
+               #'erc-nickserv-identify-on-nick-change)
    (remove-hook 'erc-server-NOTICE-functions
-               'erc-nickserv-identification-autodetect)))
+               #'erc-nickserv-identification-autodetect)))
 
 ;;;###autoload
 (defun erc-nickserv-identify-mode (mode)
@@ -123,7 +122,7 @@ You can also use \\[erc-nickserv-identify-mode] to change 
modes."
                  "Choose Nickserv identify mode (RET to disable): "
                  '(("autodetect") ("nick-change") ("both")) nil t))))
   (add-hook 'erc-server-NOTICE-functions
-           'erc-nickserv-identification-autodetect)
+           #'erc-nickserv-identification-autodetect)
   (unless erc-networks-mode
     ;; Force-enable networks module, because we need it to set
     ;; erc-network for us.
@@ -131,41 +130,40 @@ You can also use \\[erc-nickserv-identify-mode] to change 
modes."
   (cond ((eq mode 'autodetect)
         (setq erc-nickserv-identify-mode 'autodetect)
         (add-hook 'erc-server-NOTICE-functions
-                  'erc-nickserv-identify-autodetect)
+                  #'erc-nickserv-identify-autodetect)
         (remove-hook 'erc-nick-changed-functions
-                     'erc-nickserv-identify-on-nick-change)
+                     #'erc-nickserv-identify-on-nick-change)
         (remove-hook 'erc-after-connect
-                     'erc-nickserv-identify-on-connect))
+                     #'erc-nickserv-identify-on-connect))
        ((eq mode 'nick-change)
         (setq erc-nickserv-identify-mode 'nick-change)
         (add-hook 'erc-after-connect
-                  'erc-nickserv-identify-on-connect)
+                  #'erc-nickserv-identify-on-connect)
         (add-hook 'erc-nick-changed-functions
-                  'erc-nickserv-identify-on-nick-change)
+                  #'erc-nickserv-identify-on-nick-change)
         (remove-hook 'erc-server-NOTICE-functions
-                     'erc-nickserv-identify-autodetect))
+                     #'erc-nickserv-identify-autodetect))
        ((eq mode 'both)
         (setq erc-nickserv-identify-mode 'both)
         (add-hook 'erc-server-NOTICE-functions
-                  'erc-nickserv-identify-autodetect)
+                  #'erc-nickserv-identify-autodetect)
         (add-hook 'erc-after-connect
-                  'erc-nickserv-identify-on-connect)
+                  #'erc-nickserv-identify-on-connect)
         (add-hook 'erc-nick-changed-functions
-                  'erc-nickserv-identify-on-nick-change))
+                  #'erc-nickserv-identify-on-nick-change))
        (t
         (setq erc-nickserv-identify-mode nil)
         (remove-hook 'erc-server-NOTICE-functions
-                     'erc-nickserv-identify-autodetect)
+                     #'erc-nickserv-identify-autodetect)
         (remove-hook 'erc-after-connect
-                     'erc-nickserv-identify-on-connect)
+                     #'erc-nickserv-identify-on-connect)
         (remove-hook 'erc-nick-changed-functions
-                     'erc-nickserv-identify-on-nick-change)
+                     #'erc-nickserv-identify-on-nick-change)
         (remove-hook 'erc-server-NOTICE-functions
-                     'erc-nickserv-identification-autodetect))))
+                     #'erc-nickserv-identification-autodetect))))
 
 (defcustom erc-prompt-for-nickserv-password t
   "Ask for the password when identifying to NickServ."
-  :group 'erc-services
   :type 'boolean)
 
 (defcustom erc-use-auth-source-for-nickserv-password nil
@@ -174,7 +172,6 @@ This option has an no effect if 
`erc-prompt-for-nickserv-password'
 is non-nil, and passwords from `erc-nickserv-passwords' take
 precedence."
   :version "28.1"
-  :group 'erc-services
   :type 'boolean)
 
 (defcustom erc-nickserv-passwords nil
@@ -187,7 +184,6 @@ Example of use:
         \\='((freenode ((\"nick-one\" . \"password\")
                      (\"nick-two\" . \"password\")))
           (DALnet ((\"nick\" . \"password\")))))"
-  :group 'erc-services
   :type '(repeat
          (list :tag "Network"
                (choice :tag "Network name"
@@ -305,7 +301,6 @@ ANSWER is the command to use for the answer.  The default 
is `privmsg'.
 SUCCESS-REGEXP is a regular expression matching the message nickserv
   sends when you've successfully identified.
 The last two elements are optional."
-   :group 'erc-services
    :type '(repeat
           (list :tag "Nickserv data"
                 (symbol :tag "Network name")
@@ -357,7 +352,6 @@ The last two elements are optional."
 (defcustom erc-nickserv-identified-hook nil
   "Run this hook when NickServ acknowledged successful identification.
 Hooks are called with arguments (NETWORK NICK)."
-  :group 'erc-services
   :type 'hook)
 
 (defun erc-nickserv-identification-autodetect (_proc parsed)
diff --git a/lisp/erc/erc-sound.el b/lisp/erc/erc-sound.el
index fff1639..92759d2 100644
--- a/lisp/erc/erc-sound.el
+++ b/lisp/erc/erc-sound.el
@@ -52,11 +52,11 @@
   "In ERC sound mode, the client will respond to CTCP SOUND requests
 and play sound files as requested."
   ;; Enable:
-  ((add-hook 'erc-ctcp-query-SOUND-hook 'erc-ctcp-query-SOUND)
-   (define-key erc-mode-map "\C-c\C-s" 'erc-toggle-sound))
+  ((add-hook 'erc-ctcp-query-SOUND-hook #'erc-ctcp-query-SOUND)
+   (define-key erc-mode-map "\C-c\C-s" #'erc-toggle-sound))
   ;; Disable:
-  ((remove-hook 'erc-ctcp-query-SOUND-hook 'erc-ctcp-query-SOUND)
-   (define-key erc-mode-map "\C-c\C-s" 'undefined)))
+  ((remove-hook 'erc-ctcp-query-SOUND-hook #'erc-ctcp-query-SOUND)
+   (define-key erc-mode-map "\C-c\C-s" #'undefined)))
 
 (erc-define-catalog-entry 'english 'CTCP-SOUND "%n (%u@%h) plays %s:%m")
 
diff --git a/lisp/erc/erc-speedbar.el b/lisp/erc/erc-speedbar.el
index c2be239..bb85844 100644
--- a/lisp/erc/erc-speedbar.el
+++ b/lisp/erc/erc-speedbar.el
@@ -1,4 +1,4 @@
-;;; erc-speedbar.el --- Speedbar support for ERC
+;;; erc-speedbar.el --- Speedbar support for ERC  -*- lexical-binding: t; -*-
 
 ;; Copyright (C) 2001-2004, 2006-2021 Free Software Foundation, Inc.
 
@@ -52,7 +52,6 @@
 `activity'     - Sort users by channel activity
 `alphabetical' - Sort users alphabetically
 nil            - Do not sort users"
-  :group 'erc-speedbar
   :type '(choice (const :tag "Sort users by channel activity" activity)
                 (const :tag "Sort users alphabetically" alphabetical)
                 (const :tag "Do not sort users" nil)))
@@ -67,11 +66,11 @@ nil            - Do not sort users"
     (setq erc-speedbar-key-map (speedbar-make-specialized-keymap))
 
     ;; Basic tree features
-    (define-key erc-speedbar-key-map "e" 'speedbar-edit-line)
-    (define-key erc-speedbar-key-map "\C-m" 'speedbar-edit-line)
-    (define-key erc-speedbar-key-map "+" 'speedbar-expand-line)
-    (define-key erc-speedbar-key-map "=" 'speedbar-expand-line)
-    (define-key erc-speedbar-key-map "-" 'speedbar-contract-line))
+    (define-key erc-speedbar-key-map "e" #'speedbar-edit-line)
+    (define-key erc-speedbar-key-map "\C-m" #'speedbar-edit-line)
+    (define-key erc-speedbar-key-map "+" #'speedbar-expand-line)
+    (define-key erc-speedbar-key-map "=" #'speedbar-expand-line)
+    (define-key erc-speedbar-key-map "-" #'speedbar-contract-line))
 
   (speedbar-add-expansion-list '("ERC" erc-speedbar-menu-items
                                 erc-speedbar-key-map
@@ -124,7 +123,7 @@ This will add a speedbar major display mode."
           (erc-speedbar-insert-target buffer 0))
          (t (ignore)))))
 
-(defun erc-speedbar-server-buttons (directory depth)
+(defun erc-speedbar-server-buttons (_directory depth)
   "Insert the initial list of servers you are connected to."
   (let ((servers (erc-buffer-list
                  (lambda ()
@@ -154,7 +153,7 @@ This will add a speedbar major display mode."
        (t (error "Ooops... not sure what to do")))
   (speedbar-center-buffer-smartly))
 
-(defun erc-speedbar-channel-buttons (directory depth server-buffer)
+(defun erc-speedbar-channel-buttons (_directory depth server-buffer)
   (when (get-buffer server-buffer)
     (let* ((proc (with-current-buffer server-buffer erc-server-process))
           (targets (erc-buffer-list
@@ -191,7 +190,7 @@ INDENT is the current indentation level."
      (save-excursion
        (end-of-line) (forward-char 1)
        (let ((modes (with-current-buffer channel
-                     (concat (apply 'concat
+                     (concat (apply #'concat
                                     erc-channel-modes)
                              (cond
                               ((and erc-channel-user-limit
@@ -314,7 +313,7 @@ The update is only done when the channel is actually 
expanded already."
        (t (error "Ooops... not sure what to do")))
   (speedbar-center-buffer-smartly))
 
-(defun erc-speedbar-goto-buffer (text buffer indent)
+(defun erc-speedbar-goto-buffer (_text buffer _indent)
   "When user clicks on TEXT, goto an ERC buffer.
 The INDENT level is ignored."
   (if (featurep 'dframe)
diff --git a/lisp/erc/erc-spelling.el b/lisp/erc/erc-spelling.el
index c18ac5b..950a821 100644
--- a/lisp/erc/erc-spelling.el
+++ b/lisp/erc/erc-spelling.el
@@ -1,4 +1,4 @@
-;;; erc-spelling.el --- use flyspell in ERC
+;;; erc-spelling.el --- use flyspell in ERC  -*- lexical-binding: t; -*-
 
 ;; Copyright (C) 2005-2021 Free Software Foundation, Inc.
 
@@ -38,10 +38,10 @@
   "Enable flyspell mode in ERC buffers."
   ;; Use erc-connect-pre-hook instead of erc-mode-hook as pre-hook is
   ;; called AFTER the server buffer is initialized.
-  ((add-hook 'erc-connect-pre-hook 'erc-spelling-init)
+  ((add-hook 'erc-connect-pre-hook #'erc-spelling-init)
    (dolist (buffer (erc-buffer-list))
      (erc-spelling-init buffer)))
-  ((remove-hook 'erc-connect-pre-hook 'erc-spelling-init)
+  ((remove-hook 'erc-connect-pre-hook #'erc-spelling-init)
    (dolist (buffer (erc-buffer-list))
      (with-current-buffer buffer (flyspell-mode 0)))))
 
@@ -104,7 +104,7 @@ The cadr is the beginning and the caddr is the end."
 
 (put 'erc-mode
      'flyspell-mode-predicate
-     'erc-spelling-flyspell-verify)
+     #'erc-spelling-flyspell-verify)
 
 (provide 'erc-spelling)
 
diff --git a/lisp/erc/erc-stamp.el b/lisp/erc/erc-stamp.el
index da91364..31de9e8 100644
--- a/lisp/erc/erc-stamp.el
+++ b/lisp/erc/erc-stamp.el
@@ -52,7 +52,6 @@ This string is processed using `format-time-string'.
 Good examples are \"%T\" and \"%H:%M\".
 
 If nil, timestamping is turned off."
-  :group 'erc-stamp
   :type '(choice (const nil)
                 (string)))
 
@@ -66,7 +65,6 @@ screen when `erc-insert-timestamp-function' is set to
 `erc-insert-timestamp-left-and-right'.
 
 If nil, timestamping is turned off."
-  :group 'erc-stamp
   :type '(choice (const nil)
                 (string)))
 
@@ -80,7 +78,6 @@ screen when `erc-insert-timestamp-function' is set to
 `erc-insert-timestamp-left-and-right'.
 
 If nil, timestamping is turned off."
-  :group 'erc-stamp
   :type '(choice (const nil)
                 (string)))
 
@@ -95,7 +92,6 @@ operate on.
 
 You will probably want to set
 `erc-insert-away-timestamp-function' to the same value."
-  :group 'erc-stamp
   :type '(choice (const :tag "Both sides" erc-insert-timestamp-left-and-right)
                 (const :tag "Right" erc-insert-timestamp-right)
                 (const :tag "Left" erc-insert-timestamp-left)
@@ -108,7 +104,6 @@ If nil, timestamping is turned off when away unless 
`erc-timestamp-format'
 is set.
 
 If `erc-timestamp-format' is set, this will not be used."
-  :group 'erc-stamp
   :type '(choice (const nil)
                 (string)))
 
@@ -117,7 +112,6 @@ If `erc-timestamp-format' is set, this will not be used."
   "Function to use to insert the away timestamp.
 
 See `erc-insert-timestamp-function' for details."
-  :group 'erc-stamp
   :type '(choice (const :tag "Both sides" erc-insert-timestamp-left-and-right)
                 (const :tag "Right" erc-insert-timestamp-right)
                 (const :tag "Left" erc-insert-timestamp-left)
@@ -128,7 +122,6 @@ See `erc-insert-timestamp-function' for details."
 
 This is useful for logging, because, although timestamps will be
 hidden, they will still be present in the logs."
-  :group 'erc-stamp
   :type 'boolean)
 
 (defcustom erc-echo-timestamps nil
@@ -136,20 +129,17 @@ hidden, they will still be present in the logs."
 Using this variable, you can turn off normal timestamping,
 and simply move point to an irc message to see its timestamp
 printed in the minibuffer."
-  :group 'erc-stamp
   :type 'boolean)
 
 (defcustom erc-echo-timestamp-format "Timestamped %A, %H:%M:%S"
   "Format string to be used when `erc-echo-timestamps' is non-nil.
 This string specifies the format of the timestamp being echoed in
 the minibuffer."
-  :group 'erc-stamp
   :type 'string)
 
 (defcustom erc-timestamp-intangible nil
   "Whether the timestamps should be intangible, i.e. prevent the point
 from entering them and instead jump over them."
-  :group 'erc-stamp
   :version "24.5"
   :type 'boolean)
 
@@ -211,7 +201,6 @@ string of spaces which is the same size as the timestamp is 
added to
 the beginning of the line in its place.  If you use
 `erc-insert-timestamp-right', nothing gets inserted in place of the
 timestamp."
-  :group 'erc-stamp
   :type 'boolean)
 
 (defcustom erc-timestamp-right-column nil
@@ -219,7 +208,6 @@ timestamp."
 if the timestamp is to be printed to the right.  If nil,
 `erc-insert-timestamp-right' will use other means to determine
 the correct column."
-  :group 'erc-stamp
   :type '(choice
          (integer :tag "Column number")
          (const :tag "Unspecified" nil)))
@@ -231,7 +219,6 @@ Asian language characters and math symbols) precede a 
timestamp.
 
 A side effect of enabling this is that there will only be one
 space before a right timestamp in any saved logs."
-  :group 'erc-stamp
   :type 'boolean)
 
 (defun erc-insert-timestamp-left (string)
diff --git a/lisp/erc/erc-status-sidebar.el b/lisp/erc/erc-status-sidebar.el
index ff51026..a75a74b 100644
--- a/lisp/erc/erc-status-sidebar.el
+++ b/lisp/erc/erc-status-sidebar.el
@@ -1,4 +1,4 @@
-;;; erc-status-sidebar.el --- HexChat-like activity overview for ERC
+;;; erc-status-sidebar.el --- HexChat-like activity overview for ERC  -*- 
lexical-binding: t; -*-
 
 ;; Copyright (C) 2017, 2020-2021 Free Software Foundation, Inc.
 
@@ -58,36 +58,30 @@
 
 (defcustom erc-status-sidebar-buffer-name "*ERC Status*"
   "Name of the sidebar buffer."
-  :type 'string
-  :group 'erc-status-sidebar)
+  :type 'string)
 
 (defcustom erc-status-sidebar-mode-line-format "ERC Status"
   "Mode line format for the status sidebar."
-  :type 'string
-  :group 'erc-status-sidebar)
+  :type 'string)
 
 (defcustom erc-status-sidebar-header-line-format nil
   "Header line format for the status sidebar."
   :type '(choice (const :tag "No header line" nil)
-                 string)
-  :group 'erc-status-sidebar)
+                 string))
 
 (defcustom erc-status-sidebar-width 15
   "Default width of the sidebar (in columns)."
-  :type 'number
-  :group 'erc-status-sidebar)
+  :type 'number)
 
 (defcustom erc-status-sidebar-channel-sort
   'erc-status-sidebar-default-chansort
   "Sorting function used to determine order of channels in the sidebar."
-  :type 'function
-  :group 'erc-status-sidebar)
+  :type 'function)
 
 (defcustom erc-status-sidebar-channel-format
   'erc-status-sidebar-default-chan-format
   "Function used to format channel names for display in the sidebar."
-  :type 'function
-  :group 'erc-status-sidebar)
+  :type 'function)
 
 (defun erc-status-sidebar-display-window ()
   "Display the status buffer in a side window.  Return the new window."
@@ -152,7 +146,8 @@ containing it on the current frame is closed.  See
   (save-excursion
     (let ((sidebar-exists (erc-status-sidebar-buffer-exists-p))
           (sidebar-buffer (erc-status-sidebar-get-buffer))
-          (sidebar-window (erc-status-sidebar-get-window)))
+          ;; (sidebar-window (erc-status-sidebar-get-window))
+          )
       (unless sidebar-exists
         (with-current-buffer sidebar-buffer
           (erc-status-sidebar-mode)
@@ -253,7 +248,7 @@ name stand out."
     erc-disconnected-hook
     erc-quit-hook))
 
-(defun erc-status-sidebar--post-refresh (&rest ignore)
+(defun erc-status-sidebar--post-refresh (&rest _ignore)
   "Schedule sidebar refresh for execution after command stack is cleared.
 
 Ignore arguments in IGNORE, allowing this function to be added to
@@ -276,7 +271,7 @@ to the `window-configuration-change-hook'."
   (when (and (eq (selected-window) (erc-status-sidebar-get-window))
              (fboundp 'window-preserve-size))
     (unless (eq (window-total-width) (window-min-size nil t))
-      (apply 'window-preserve-size (selected-window) t t nil))))
+      (apply #'window-preserve-size (selected-window) t t nil))))
 
 (define-derived-mode erc-status-sidebar-mode special-mode "ERC Sidebar"
   "Major mode for ERC status sidebar"
@@ -298,8 +293,7 @@ to the `window-configuration-change-hook'."
   ;; erc-status-sidebar-mode initialization code, so it won't undo the
   ;; add-hook's we did in the previous expressions.
   (add-hook 'change-major-mode-hook #'erc-status-sidebar-mode--unhook nil t)
-  (add-hook 'kill-buffer-hook #'erc-status-sidebar-mode--unhook nil t)
-  :group 'erc-status-sidebar)
+  (add-hook 'kill-buffer-hook #'erc-status-sidebar-mode--unhook nil t))
 
 (provide 'erc-status-sidebar)
 ;;; erc-status-sidebar.el ends here
diff --git a/lisp/erc/erc-track.el b/lisp/erc/erc-track.el
index a853a36..8be5555 100644
--- a/lisp/erc/erc-track.el
+++ b/lisp/erc/erc-track.el
@@ -60,7 +60,6 @@ The reason for using this default value is to both (1) adhere 
to
 the Emacs development guidelines which say not to touch keys of
 the form C-c C-<something> and also (2) to meet the expectations
 of long-time ERC users, many of whom rely on these keybindings."
-  :group 'erc-track
   :type '(choice (const :tag "Ask, if used already" ask)
                 (const :tag "Enable" t)
                 (const :tag "Disable" nil)))
@@ -80,7 +79,6 @@ nil              - only the selected frame
 selected-visible - only the selected frame if it is visible
 
 Activity means that there was no user input in the last 10 seconds."
-  :group 'erc-track
   :type  '(choice (const :tag "All frames" t)
                  (const :tag "All visible frames" visible)
                  (const :tag "Only the selected frame" nil)
@@ -89,13 +87,11 @@ Activity means that there was no user input in the last 10 
seconds."
 
 (defcustom erc-track-exclude nil
   "A list targets (channel names or query targets) which should not be 
tracked."
-  :group 'erc-track
   :type '(repeat string))
 
 (defcustom erc-track-remove-disconnected-buffers nil
   "If true, remove buffers associated with a server that is
 disconnected from `erc-modified-channels-alist'."
-  :group 'erc-track
   :type 'boolean)
 
 (defcustom erc-track-exclude-types '("NICK" "333" "353")
@@ -105,25 +101,21 @@ This list could look like (\"JOIN\" \"PART\").
 By default, exclude changes of nicknames (NICK), display of who
 set the channel topic (333), and listing of users on the current
 channel (353)."
-  :group 'erc-track
   :type 'erc-message-type)
 
 (defcustom erc-track-exclude-server-buffer nil
   "If true, don't perform tracking on the server buffer; this is
 useful for excluding all the things like MOTDs from the server and
 other miscellaneous functions."
-  :group 'erc-track
   :type 'boolean)
 
 (defcustom erc-track-shorten-start 1
   "This number specifies the minimum number of characters a channel name in
 the mode-line should be reduced to."
-  :group 'erc-track
   :type 'number)
 
 (defcustom erc-track-shorten-cutoff 4
   "All channel names longer than this value will be shortened."
-  :group 'erc-track
   :type 'number)
 
 (defcustom erc-track-shorten-aggressively nil
@@ -144,7 +136,6 @@ not compared to #electronica -- only to #vi, therefore it 
can be shortened
 even more and the result is #e and #v.
 
 This setting is used by `erc-track-shorten-names'."
-  :group 'erc-track
   :type '(choice (const :tag "No" nil)
                 (const :tag "Yes" t)
                 (const :tag "Max" max)))
@@ -154,7 +145,6 @@ This setting is used by `erc-track-shorten-names'."
 It takes one argument, CHANNEL-NAMES which is a list of strings.
 It should return a list of strings of the same number of elements.
 If nil instead of a function, shortening is disabled."
-  :group 'erc-track
   :type '(choice (const :tag "Disabled")
                 function))
 
@@ -165,14 +155,12 @@ If nil instead of a function, shortening is disabled."
 This is useful for people that don't use the default mode-line
 notification but instead use a separate mechanism to provide
 notification of channel activity."
-  :group 'erc-track
   :type 'hook)
 
 (defcustom erc-track-use-faces t
   "Use faces in the mode-line.
 The faces used are the same as used for text in the buffers.
 \(e.g. `erc-pal-face' is used if a pal sent a message to that channel.)"
-  :group 'erc-track
   :type 'boolean)
 
 (defcustom erc-track-faces-priority-list
@@ -199,7 +187,6 @@ The faces used are the same as used for text in the buffers.
   "A list of faces used to highlight active buffer names in the mode line.
 If a message contains one of the faces in this list, the buffer name will
 be highlighted using that face.  The first matching face is used."
-  :group 'erc-track
   :type '(repeat (choice face
                         (repeat :tag "Combination" face))))
 
@@ -214,7 +201,6 @@ this feature.
 
 Note: If you have a lot of faces listed in `erc-track-faces-priority-list',
 setting this variable might not be very useful."
-  :group 'erc-track
   :type '(choice (const nil)
                 (repeat string)
                 (const all)))
@@ -237,7 +223,6 @@ message.  This gives a rough indication that active 
conversations
 are occurring in these channels.
 
 The effect may be disabled by setting this variable to nil."
-  :group 'erc-track
   :type '(repeat (choice face
                         (repeat :tag "Combination" face))))
 
@@ -249,7 +234,6 @@ Choices are:
 `after-modes'  - add to the end of `mode-line-modes',
 t              - add to the end of `global-mode-string',
 nil            - don't add to mode line."
-  :group 'erc-track
   :type '(choice (const :tag "Just before mode information" before-modes)
                 (const :tag "Just after mode information" after-modes)
                 (const :tag "After all other information" t)
@@ -266,7 +250,7 @@ nil            - don't add to mode line."
   (if strings
       (concat (if (eq erc-track-position-in-mode-line 'after-modes)
                  "[" " [")
-             (mapconcat 'identity (nreverse strings) ",")
+             (mapconcat #'identity (nreverse strings) ",")
              (if (eq erc-track-position-in-mode-line 'before-modes)
                  "] " "]"))
     ""))
@@ -289,20 +273,17 @@ while the buffer was not visible.")
 
 (defcustom erc-track-showcount nil
   "If non-nil, count of unseen messages will be shown for each channel."
-  :type 'boolean
-  :group 'erc-track)
+  :type 'boolean)
 
 (defcustom erc-track-showcount-string ":"
   "The string to display between buffer name and the count in the mode line.
 The default is a colon, resulting in \"#emacs:9\"."
-  :type 'string
-  :group 'erc-track)
+  :type 'string)
 
 (defcustom erc-track-switch-from-erc t
   "If non-nil, `erc-track-switch-buffer' will return to the last non-erc buffer
 when there are no more active channels."
-  :type 'boolean
-  :group 'erc-track)
+  :type 'boolean)
 
 (defcustom erc-track-switch-direction 'oldest
   "Direction `erc-track-switch-buffer' should switch.
@@ -316,7 +297,6 @@ when there are no more active channels."
 If set to `importance', the importance is determined by position
 in `erc-track-faces-priority-list', where first is most
 important."
-  :group 'erc-track
   :type '(choice (const importance)
                 (const oldest)
                 (const newest)
@@ -472,9 +452,9 @@ START is the minimum length of the name used."
 (defvar erc-track-minor-mode-map (make-sparse-keymap)
   "Keymap for rcirc track minor mode.")
 
-(define-key erc-track-minor-mode-map (kbd "C-c C-@") 'erc-track-switch-buffer)
+(define-key erc-track-minor-mode-map (kbd "C-c C-@") #'erc-track-switch-buffer)
 (define-key erc-track-minor-mode-map (kbd "C-c C-SPC")
-  'erc-track-switch-buffer)
+  #'erc-track-switch-buffer)
 
 ;;;###autoload
 (define-minor-mode erc-track-minor-mode
@@ -487,8 +467,7 @@ keybindings will not do anything useful."
   :init-value nil
   :lighter ""
   :keymap erc-track-minor-mode-map
-  :global t
-  :group 'erc-track)
+  :global t)
 
 (defun erc-track-minor-mode-maybe (&optional buffer)
   "Enable `erc-track-minor-mode', depending on `erc-track-enable-keybindings'."
@@ -530,17 +509,17 @@ keybindings will not do anything useful."
   ((when (boundp 'erc-track-when-inactive)
      (if erc-track-when-inactive
         (progn
-          (add-hook 'window-configuration-change-hook 'erc-user-is-active)
-          (add-hook 'erc-send-completed-hook 'erc-user-is-active)
-          (add-hook 'erc-server-001-functions 'erc-user-is-active))
+          (add-hook 'window-configuration-change-hook #'erc-user-is-active)
+          (add-hook 'erc-send-completed-hook #'erc-user-is-active)
+          (add-hook 'erc-server-001-functions #'erc-user-is-active))
        (erc-track-add-to-mode-line erc-track-position-in-mode-line)
        (erc-update-mode-line)
        (add-hook 'window-configuration-change-hook
-                'erc-window-configuration-change)
-       (add-hook 'erc-insert-post-hook 'erc-track-modified-channels)
-       (add-hook 'erc-disconnected-hook 'erc-modified-channels-update))
+                #'erc-window-configuration-change)
+       (add-hook 'erc-insert-post-hook #'erc-track-modified-channels)
+       (add-hook 'erc-disconnected-hook #'erc-modified-channels-update))
      ;; enable the tracking keybindings
-     (add-hook 'erc-connect-pre-hook 'erc-track-minor-mode-maybe)
+     (add-hook 'erc-connect-pre-hook #'erc-track-minor-mode-maybe)
      (erc-track-minor-mode-maybe)))
   ;; Disable:
   ((when (boundp 'erc-track-when-inactive)
@@ -548,23 +527,22 @@ keybindings will not do anything useful."
      (if erc-track-when-inactive
         (progn
           (remove-hook 'window-configuration-change-hook
-                       'erc-user-is-active)
-          (remove-hook 'erc-send-completed-hook 'erc-user-is-active)
-          (remove-hook 'erc-server-001-functions 'erc-user-is-active)
-          (remove-hook 'erc-timer-hook 'erc-user-is-active))
+                       #'erc-user-is-active)
+          (remove-hook 'erc-send-completed-hook #'erc-user-is-active)
+          (remove-hook 'erc-server-001-functions #'erc-user-is-active)
+          (remove-hook 'erc-timer-hook #'erc-user-is-active))
        (remove-hook 'window-configuration-change-hook
-                   'erc-window-configuration-change)
-       (remove-hook 'erc-disconnected-hook 'erc-modified-channels-update)
-       (remove-hook 'erc-insert-post-hook 'erc-track-modified-channels))
+                   #'erc-window-configuration-change)
+       (remove-hook 'erc-disconnected-hook #'erc-modified-channels-update)
+       (remove-hook 'erc-insert-post-hook #'erc-track-modified-channels))
      ;; disable the tracking keybindings
-     (remove-hook 'erc-connect-pre-hook 'erc-track-minor-mode-maybe)
+     (remove-hook 'erc-connect-pre-hook #'erc-track-minor-mode-maybe)
      (when erc-track-minor-mode
        (erc-track-minor-mode -1)))))
 
 (defcustom erc-track-when-inactive nil
   "Enable channel tracking even for visible buffers, if you are
 inactive."
-  :group 'erc-track
   :type 'boolean
   :set (lambda (sym val)
         (if erc-track-mode
@@ -705,9 +683,9 @@ Use `erc-make-mode-line-buffer-name' to create buttons."
              ;; four lists we use to create a new
              ;; `erc-modified-channels-object' using
              ;; `erc-make-mode-line-buffer-name'.
-             (let* ((buffers (mapcar 'car erc-modified-channels-alist))
-                    (counts (mapcar 'cadr erc-modified-channels-alist))
-                    (faces (mapcar 'cddr erc-modified-channels-alist))
+             (let* ((buffers (mapcar #'car erc-modified-channels-alist))
+                    (counts (mapcar #'cadr erc-modified-channels-alist))
+                    (faces (mapcar #'cddr erc-modified-channels-alist))
                     (long-names (mapcar #'(lambda (buf)
                                             (or (buffer-name buf)
                                                 ""))
diff --git a/lisp/erc/erc-truncate.el b/lisp/erc/erc-truncate.el
index f4514ca..ff33fbc 100644
--- a/lisp/erc/erc-truncate.el
+++ b/lisp/erc/erc-truncate.el
@@ -1,4 +1,4 @@
-;;; erc-truncate.el --- Functions for truncating ERC buffers
+;;; erc-truncate.el --- Functions for truncating ERC buffers  -*- 
lexical-binding: t; -*-
 
 ;; Copyright (C) 2003-2004, 2006-2021 Free Software Foundation, Inc.
 
@@ -41,7 +41,6 @@
   "Maximum size in chars of each ERC buffer.
 Used only when auto-truncation is enabled.
 \(see `erc-truncate-buffer' and `erc-insert-post-hook')."
-  :group 'erc-truncate
   :type 'integer)
 
 ;;;###autoload(autoload 'erc-truncate-mode "erc-truncate" nil t)
@@ -51,9 +50,9 @@ This prevents the query buffer from getting too large, which 
can
 bring any grown Emacs to its knees after a few days worth of
 tracking heavy-traffic channels."
   ;;enable
-  ((add-hook 'erc-insert-post-hook 'erc-truncate-buffer))
+  ((add-hook 'erc-insert-post-hook #'erc-truncate-buffer))
   ;; disable
-  ((remove-hook 'erc-insert-post-hook 'erc-truncate-buffer)))
+  ((remove-hook 'erc-insert-post-hook #'erc-truncate-buffer)))
 
 ;;;###autoload
 (defun erc-truncate-buffer-to-size (size &optional buffer)
diff --git a/lisp/erc/erc-xdcc.el b/lisp/erc/erc-xdcc.el
index db8383b..e1b9f0d 100644
--- a/lisp/erc/erc-xdcc.el
+++ b/lisp/erc/erc-xdcc.el
@@ -1,4 +1,4 @@
-;;; erc-xdcc.el --- XDCC file-server support for ERC
+;;; erc-xdcc.el --- XDCC file-server support for ERC  -*- lexical-binding: t; 
-*-
 
 ;; Copyright (C) 2003-2004, 2006-2021 Free Software Foundation, Inc.
 
@@ -51,7 +51,7 @@ Your friends should issue \"/ctcp yournick XDCC list\" to see 
this."
 (defcustom erc-xdcc-help-text
   '(("Hey " nick ", wondering how this works?  Pretty easy.")
     ("Available commands: XDCC ["
-     (mapconcat 'car erc-xdcc-handler-alist "|") "]")
+     (mapconcat #'car erc-xdcc-handler-alist "|") "]")
     ("Type \"/ctcp " (erc-current-nick)
      " XDCC list\" to see the list of offered files, then type \"/ctcp "
      (erc-current-nick) " XDCC send #\" to get a particular file number."))
@@ -82,7 +82,7 @@ being evaluated and should return strings."
 (defvar erc-ctcp-query-XDCC-hook '(erc-xdcc)
   "Hook called whenever a CTCP XDCC message is received.")
 
-(defun erc-xdcc (proc nick login host to query)
+(defun erc-xdcc (proc nick login host _to query)
   "Handle incoming CTCP XDCC queries."
   (when erc-xdcc-verbose-flag
     (erc-display-message nil 'notice proc
@@ -96,15 +96,15 @@ being evaluated and should return strings."
        (format "Unknown XDCC sub-command, try \"/ctcp %s XDCC help\""
               (erc-current-nick))))))
 
-(defun erc-xdcc-help (proc nick login host args)
+(defun erc-xdcc-help (proc nick _login _host _args)
   "Send basic help information to NICK."
   (mapc
    (lambda (msg)
      (erc-xdcc-reply proc nick
-      (mapconcat (lambda (elt) (if (stringp elt) elt (eval elt))) msg "")))
+      (mapconcat (lambda (elt) (if (stringp elt) elt (eval elt t))) msg "")))
    erc-xdcc-help-text))
 
-(defun erc-xdcc-list (proc nick login host args)
+(defun erc-xdcc-list (proc nick _login _host _args)
   "Show the contents of `erc-xdcc-files' via privmsg to NICK."
   (if (null erc-xdcc-files)
       (erc-xdcc-reply proc nick "No files offered, sorry")
@@ -117,7 +117,7 @@ being evaluated and should return strings."
                 (setq n (1+ n))
                 (erc-dcc-file-to-name file)))))))
 
-(defun erc-xdcc-send (proc nick login host args)
+(defun erc-xdcc-send (proc nick _login _host args)
   "Send a file to NICK."
   (let ((n (string-to-number (car args)))
        (len (length erc-xdcc-files)))
diff --git a/lisp/erc/erc.el b/lisp/erc/erc.el
index 939113a..bdb1914 100644
--- a/lisp/erc/erc.el
+++ b/lisp/erc/erc.el
@@ -1,4 +1,4 @@
-;; erc.el --- An Emacs Internet Relay Chat client  -*- lexical-binding:t -*-
+;;; erc.el --- An Emacs Internet Relay Chat client  -*- lexical-binding:t -*-
 
 ;; Copyright (C) 1997-2021 Free Software Foundation, Inc.
 
@@ -1133,31 +1133,31 @@ which the local user typed."
 
 (defvar erc-mode-map
   (let ((map (make-sparse-keymap)))
-    (define-key map "\C-m" 'erc-send-current-line)
-    (define-key map "\C-a" 'erc-bol)
-    (define-key map [home] 'erc-bol)
-    (define-key map "\C-c\C-a" 'erc-bol)
-    (define-key map "\C-c\C-b" 'erc-switch-to-buffer)
-    (define-key map "\C-c\C-c" 'erc-toggle-interpret-controls)
-    (define-key map "\C-c\C-d" 'erc-input-action)
-    (define-key map "\C-c\C-e" 'erc-toggle-ctcp-autoresponse)
-    (define-key map "\C-c\C-f" 'erc-toggle-flood-control)
-    (define-key map "\C-c\C-i" 'erc-invite-only-mode)
-    (define-key map "\C-c\C-j" 'erc-join-channel)
-    (define-key map "\C-c\C-n" 'erc-channel-names)
-    (define-key map "\C-c\C-o" 'erc-get-channel-mode-from-keypress)
-    (define-key map "\C-c\C-p" 'erc-part-from-channel)
-    (define-key map "\C-c\C-q" 'erc-quit-server)
-    (define-key map "\C-c\C-r" 'erc-remove-text-properties-region)
-    (define-key map "\C-c\C-t" 'erc-set-topic)
-    (define-key map "\C-c\C-u" 'erc-kill-input)
-    (define-key map "\C-c\C-x" 'erc-quit-server)
-    (define-key map "\M-\t" 'ispell-complete-word)
-    (define-key map "\t" 'completion-at-point)
+    (define-key map "\C-m" #'erc-send-current-line)
+    (define-key map "\C-a" #'erc-bol)
+    (define-key map [home] #'erc-bol)
+    (define-key map "\C-c\C-a" #'erc-bol)
+    (define-key map "\C-c\C-b" #'erc-switch-to-buffer)
+    (define-key map "\C-c\C-c" #'erc-toggle-interpret-controls)
+    (define-key map "\C-c\C-d" #'erc-input-action)
+    (define-key map "\C-c\C-e" #'erc-toggle-ctcp-autoresponse)
+    (define-key map "\C-c\C-f" #'erc-toggle-flood-control)
+    (define-key map "\C-c\C-i" #'erc-invite-only-mode)
+    (define-key map "\C-c\C-j" #'erc-join-channel)
+    (define-key map "\C-c\C-n" #'erc-channel-names)
+    (define-key map "\C-c\C-o" #'erc-get-channel-mode-from-keypress)
+    (define-key map "\C-c\C-p" #'erc-part-from-channel)
+    (define-key map "\C-c\C-q" #'erc-quit-server)
+    (define-key map "\C-c\C-r" #'erc-remove-text-properties-region)
+    (define-key map "\C-c\C-t" #'erc-set-topic)
+    (define-key map "\C-c\C-u" #'erc-kill-input)
+    (define-key map "\C-c\C-x" #'erc-quit-server)
+    (define-key map "\M-\t" #'ispell-complete-word)
+    (define-key map "\t" #'completion-at-point)
 
     ;; Suppress `font-lock-fontify-block' key binding since it
     ;; destroys face properties.
-    (define-key map [remap font-lock-fontify-block] 'undefined)
+    (define-key map [remap font-lock-fontify-block] #'undefined)
 
     map)
   "ERC keymap.")
@@ -1293,6 +1293,9 @@ and disable it otherwise.  If called from Lisp, enable 
the mode
 if ARG is omitted or nil.
 %s" name name doc)
         nil nil nil
+        ;; FIXME: We don't know if this group exists, so this `:group' may
+        ;; actually just silence a valid warning about the fact that the var
+        ;; is not associated with any group.
         :global ,(not local-p) :group (quote ,group)
         (if ,mode
             (,enable)
@@ -1313,12 +1316,10 @@ if ARG is omitted or nil.
          ,@disable-body)
        ,(when (and alias (not (eq name alias)))
           `(defalias
-             (quote
-              ,(intern
+             ',(intern
                 (format "erc-%s-mode"
-                        (downcase (symbol-name alias)))))
-             (quote
-              ,mode)))
+                        (downcase (symbol-name alias))))
+             #',mode))
        ;; For find-function and find-variable.
        (put ',mode    'definition-name ',name)
        (put ',enable  'definition-name ',name)
@@ -1745,7 +1746,7 @@ nil."
        (ignore res)
        res)))
 
-(define-obsolete-function-alias 'erc-iswitchb 'erc-switch-to-buffer "25.1")
+(define-obsolete-function-alias 'erc-iswitchb #'erc-switch-to-buffer "25.1")
 (defun erc--switch-to-buffer (&optional arg)
   (read-buffer "Switch to ERC buffer: "
               (when (boundp 'erc-modified-channels-alist)
@@ -1854,7 +1855,7 @@ removed from the list will be disabled."
   :get (lambda (sym)
          ;; replace outdated names with their newer equivalents
          (erc-migrate-modules (symbol-value sym)))
-  :initialize 'custom-initialize-default
+  :initialize #'custom-initialize-default
   :set (lambda (sym val)
          ;; disable modules which have just been removed
          (when (and (boundp 'erc-modules) erc-modules val)
@@ -2219,8 +2220,8 @@ be invoked for the values of the other parameters."
   (erc-open server port nick full-name t password))
 
 ;;;###autoload
-(defalias 'erc-select 'erc)
-(defalias 'erc-ssl 'erc-tls)
+(defalias 'erc-select #'erc)
+(defalias 'erc-ssl #'erc-tls)
 
 ;;;###autoload
 (defun erc-tls (&rest r)
@@ -2841,14 +2842,14 @@ VALUE is computed by evaluating the rest of LINE in 
Lisp."
           (val (read (match-string 2 line))))
       (if (boundp var)
           (progn
-            (set var (eval val))
+            (set var (eval val t))
             (erc-display-message
              nil nil 'active (format "Set %S to %S" var val))
             t)
         (setq var (read (match-string 1 line)))
         (if (boundp var)
             (progn
-              (set var (eval val))
+              (set var (eval val t))
               (erc-display-message
                nil nil 'active (format "Set %S to %S" var val))
               t)
@@ -2870,8 +2871,8 @@ VALUE is computed by evaluating the rest of LINE in Lisp."
      (current-buffer))
     t)
    (t nil)))
-(defalias 'erc-cmd-VAR 'erc-cmd-SET)
-(defalias 'erc-cmd-VARIABLE 'erc-cmd-SET)
+(defalias 'erc-cmd-VAR #'erc-cmd-SET)
+(defalias 'erc-cmd-VARIABLE #'erc-cmd-SET)
 (put 'erc-cmd-SET 'do-not-parse-args t)
 (put 'erc-cmd-SET 'process-not-needed t)
 
@@ -2999,7 +3000,7 @@ If no USER argument is specified, list the contents of 
`erc-ignore-list'."
                                           (car user-data))
                                          ops)))))
                  erc-channel-users))
-    (setq ops (sort ops 'string-lessp))
+    (setq ops (sort ops #'string-lessp))
     (if ops
         (erc-display-message
          nil 'notice (current-buffer) 'ops
@@ -3098,7 +3099,7 @@ For a list of user commands (/join /part, ...):
     (message "Type C-h m to get additional information about keybindings.")
     t))
 
-(defalias 'erc-cmd-H 'erc-cmd-HELP)
+(defalias 'erc-cmd-H #'erc-cmd-HELP)
 (put 'erc-cmd-HELP 'process-not-needed t)
 
 (defun erc-server-join-channel (server channel &optional secret)
@@ -3144,8 +3145,8 @@ were most recently invited.  See also `invitation'."
          (erc-server-join-channel server chnl key)))))
   t)
 
-(defalias 'erc-cmd-CHANNEL 'erc-cmd-JOIN)
-(defalias 'erc-cmd-J 'erc-cmd-JOIN)
+(defalias 'erc-cmd-CHANNEL #'erc-cmd-JOIN)
+(defalias 'erc-cmd-J #'erc-cmd-JOIN)
 
 (defvar-local erc-channel-new-member-names nil
   "If non-nil, a names list is currently being received.
@@ -3169,7 +3170,7 @@ command."
           (erc-server-send (concat "NAMES " tgt)))
       (erc-display-message nil 'error (current-buffer) 'no-default-channel)))
   t)
-(defalias 'erc-cmd-N 'erc-cmd-NAMES)
+(defalias 'erc-cmd-N #'erc-cmd-NAMES)
 
 (defun erc-cmd-KICK (target &optional reason-or-nick &rest reasonwords)
   "Kick the user indicated in LINE from the current channel.
@@ -3239,7 +3240,7 @@ If SERVER is non-nil, use that, rather than the current 
server."
     (erc-log (format "cmd: %s" send))
     (erc-server-send send)
     t))
-(defalias 'erc-cmd-WI 'erc-cmd-WHOIS)
+(defalias 'erc-cmd-WI #'erc-cmd-WHOIS)
 
 (defun erc-cmd-WHOAMI ()
   "Display whois information about yourself."
@@ -3410,7 +3411,7 @@ The rest is the message to send."
 The rest of LINE is the message to send."
   (erc-message "PRIVMSG" line))
 
-(defalias 'erc-cmd-M 'erc-cmd-MSG)
+(defalias 'erc-cmd-M #'erc-cmd-MSG)
 (put 'erc-cmd-MSG 'do-not-parse-args t)
 
 (defun erc-cmd-SQUERY (line)
@@ -3465,7 +3466,7 @@ Otherwise leave the channel indicated by LINE."
    (t nil)))
 (put 'erc-cmd-PART 'do-not-parse-args t)
 
-(defalias 'erc-cmd-LEAVE 'erc-cmd-PART)
+(defalias 'erc-cmd-LEAVE #'erc-cmd-PART)
 
 (defun erc-cmd-PING (recipient)
   "Ping RECIPIENT."
@@ -3517,7 +3518,7 @@ If USER is omitted, close the current query buffer if one 
exists
       ;; currently broken, evil hack to display help anyway
                                         ;(erc-delete-query))))
       (signal 'wrong-number-of-arguments ""))))
-(defalias 'erc-cmd-Q 'erc-cmd-QUERY)
+(defalias 'erc-cmd-Q #'erc-cmd-QUERY)
 
 (defun erc-quit/part-reason-default ()
   "Default quit/part message."
@@ -3612,9 +3613,9 @@ the message given by REASON."
     t)
    (t nil)))
 
-(defalias 'erc-cmd-BYE 'erc-cmd-QUIT)
-(defalias 'erc-cmd-EXIT 'erc-cmd-QUIT)
-(defalias 'erc-cmd-SIGNOFF 'erc-cmd-QUIT)
+(defalias 'erc-cmd-BYE #'erc-cmd-QUIT)
+(defalias 'erc-cmd-EXIT #'erc-cmd-QUIT)
+(defalias 'erc-cmd-SIGNOFF #'erc-cmd-QUIT)
 (put 'erc-cmd-QUIT 'do-not-parse-args t)
 (put 'erc-cmd-QUIT 'process-not-needed t)
 
@@ -3633,7 +3634,7 @@ the message given by REASON."
          (kill-buffer buffer)))))
   t)
 
-(defalias 'erc-cmd-GQ 'erc-cmd-GQUIT)
+(defalias 'erc-cmd-GQ #'erc-cmd-GQUIT)
 (put 'erc-cmd-GQUIT 'do-not-parse-args t)
 (put 'erc-cmd-GQUIT 'process-not-needed t)
 
@@ -3731,7 +3732,7 @@ the message given by REASON."
       (erc-server-send (concat "TIME " args)))
     t)
    (t (erc-server-send "TIME"))))
-(defalias 'erc-cmd-DATE 'erc-cmd-TIME)
+(defalias 'erc-cmd-DATE #'erc-cmd-TIME)
 
 (defun erc-cmd-TOPIC (topic)
   "Set or request the topic for a channel.
@@ -3772,7 +3773,7 @@ be displayed."
         (erc-display-message nil 'error (current-buffer) 'no-target)))
     t)
    (t nil)))
-(defalias 'erc-cmd-T 'erc-cmd-TOPIC)
+(defalias 'erc-cmd-T #'erc-cmd-TOPIC)
 (put 'erc-cmd-TOPIC 'do-not-parse-args t)
 
 (defun erc-cmd-APPENDTOPIC (topic)
@@ -3784,7 +3785,7 @@ be displayed."
     ;; strip trailing ^O
     (when (string-match "\\(.*\\)\C-o" oldtopic)
       (erc-cmd-TOPIC (concat (match-string 1 oldtopic) topic)))))
-(defalias 'erc-cmd-AT 'erc-cmd-APPENDTOPIC)
+(defalias 'erc-cmd-AT #'erc-cmd-APPENDTOPIC)
 (put 'erc-cmd-APPENDTOPIC 'do-not-parse-args t)
 
 (defun erc-cmd-CLEARTOPIC (&optional channel)
@@ -3808,6 +3809,8 @@ The property `received-from-server' indicates whether
 or not the ban list has been requested from the server.")
 (put 'erc-channel-banlist 'received-from-server nil)
 
+(defvar erc-fill-column)
+
 (defun erc-cmd-BANLIST ()
   "Pretty-print the contents of `erc-channel-banlist'.
 
@@ -3878,7 +3881,7 @@ The ban list is fetched from the server if necessary."
         (put 'erc-channel-banlist 'received-from-server nil)))))
   t)
 
-(defalias 'erc-cmd-BL 'erc-cmd-BANLIST)
+(defalias 'erc-cmd-BL #'erc-cmd-BANLIST)
 
 (defun erc-cmd-MASSUNBAN ()
   "Mass Unban.
@@ -3920,7 +3923,7 @@ Unban all currently banned users in the current channel."
              (erc-group-list bans 3))))
         t))))
 
-(defalias 'erc-cmd-MUB 'erc-cmd-MASSUNBAN)
+(defalias 'erc-cmd-MUB #'erc-cmd-MASSUNBAN)
 
 ;;;; End of IRC commands
 
@@ -4121,7 +4124,7 @@ This places `point' just after the prompt, or at the 
beginning of the line."
 (defun erc-complete-word-at-point ()
   (run-hook-with-args-until-success 'erc-complete-functions))
 
-(define-obsolete-function-alias 'erc-complete-word 'completion-at-point "24.1")
+(define-obsolete-function-alias 'erc-complete-word #'completion-at-point 
"24.1")
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;
@@ -5169,7 +5172,7 @@ TOPIC string to the current topic."
   "Sort LIST-OF-STRINGS in lexicographic order.
 
 Side-effect free."
-  (sort (copy-sequence list-of-strings) 'string<))
+  (sort (copy-sequence list-of-strings) #'string<))
 
 (defun erc-parse-modes (mode-string)
   "Parse MODE-STRING into a list.
@@ -6106,11 +6109,11 @@ non-nil value is found.
 
 ;; time routines
 
-(define-obsolete-function-alias 'erc-string-to-emacs-time 'string-to-number
+(define-obsolete-function-alias 'erc-string-to-emacs-time #'string-to-number
   "27.1")
 
-(defalias 'erc-emacs-time-to-erc-time 'float-time)
-(defalias 'erc-current-time 'float-time)
+(defalias 'erc-emacs-time-to-erc-time #'float-time)
+(defalias 'erc-current-time #'float-time)
 
 (defun erc-time-diff (t1 t2)
   "Return the absolute value of the difference in seconds between T1 and T2."
@@ -6892,7 +6895,3 @@ Otherwise, connect to HOST:PORT as USER and /join 
CHANNEL."
 (require 'erc-goodies)
 
 ;;; erc.el ends here
-;;
-;; Local Variables:
-;; outline-regexp: ";;+"
-;; End:



reply via email to

[Prev in Thread] Current Thread [Next in Thread]