]> git.eshelyaron.com Git - emacs.git/commitdiff
Allow filtering how nicks are presented
authorPhilip Kaludercic <philipk@posteo.net>
Wed, 9 Jun 2021 22:22:36 +0000 (00:22 +0200)
committerPhilip Kaludercic <philipk@posteo.net>
Thu, 10 Jun 2021 15:22:58 +0000 (17:22 +0200)
* rcirc.el (rcirc-nick-filter): Add new option
(rcirc-completion-at-point): Use rcirc-nick-filter
(rcirc-format-response-string): Use rcirc-nick-filter
(rcirc-sort-nicknames-join): Use rcirc-nick-filter

lisp/net/rcirc.el

index b3b70a6816bbafeabe2fc19947a64721a1eb3dde..ad5a4d64178e000e10d31d849f476aa5ce5b4b8e 100644 (file)
@@ -391,6 +391,11 @@ will be killed."
   :version "24.3"
   :type 'boolean)
 
+(defcustom rcirc-nick-filter #'identity
+  "Function applied to nicknames before displaying."
+  :version "28.1"
+  :type 'function)
+
 (defvar rcirc-nick nil
   "The nickname used for the current connection.")
 
@@ -1118,11 +1123,13 @@ The list is updated automatically by `defun-rcirc-command'.")
                       rcirc-prompt-end-marker)))
              (table (cond
                       ;; No completion before the prompt
-                      ((<  beg rcirc-prompt-end-marker) nil)
+                      ((< beg rcirc-prompt-end-marker) nil)
                       ;; Only complete nicks mid-message
                       ((> beg rcirc-prompt-end-marker)
-                       (rcirc-channel-nicks (rcirc-buffer-process)
-                                           rcirc-target))
+                       (mapcar rcirc-nick-filter
+                               (rcirc-channel-nicks
+                                (rcirc-buffer-process)
+                               rcirc-target)))
                       ;; Complete commands at the beginning of the
                       ;; message, when the first character is a dash
                       ((eq (char-after beg) ?/)
@@ -1135,7 +1142,7 @@ The list is updated automatically by `defun-rcirc-command'.")
                       ;; Complete usernames right after the prompt by
                       ;; appending a colon after the name
                       ((mapcar
-                        (lambda (str) (concat str ": "))
+                        (lambda (str) (concat (funcall rcirc-nick-filter str) ": "))
                         (rcirc-channel-nicks (rcirc-buffer-process)
                                             rcirc-target))))))
         (list beg (point) table))))
@@ -1601,7 +1608,7 @@ communication."
          (sender (if (or (not sender)
                          (string= (rcirc-server-name process) sender))
                      ""
-                   sender))
+                   (funcall rcirc-nick-filter sender)))
          face)
       (while (re-search-forward "%\\(\\(f\\(.\\)\\)\\|\\(.\\)\\)" nil t)
        (rcirc-add-face start (match-beginning 0) face)
@@ -2044,7 +2051,7 @@ INPUT is a string containing nicknames separated by SEP.
 This function does not alter the INPUT string."
   (let* ((parts (split-string input sep t))
          (sorted (sort parts 'rcirc-nickname<)))
-    (mapconcat 'identity sorted sep)))
+    (mapconcat rcirc-nick-filter sorted sep)))
 \f
 ;;; activity tracking
 (defvar rcirc-track-minor-mode-map