Function: erc-button-add-nickname-buttons

erc-button-add-nickname-buttons is a byte-compiled function defined in erc-button.el.gz.

Signature

(erc-button-add-nickname-buttons ENTRY)

Documentation

Search through the buffer for nicknames, and add buttons.

Source Code

;; Defined in /usr/src/emacs/lisp/erc/erc-button.el.gz
(defun erc-button-add-nickname-buttons (entry)
  "Search through the buffer for nicknames, and add buttons."
  (when-let* ((form (nth 2 entry))
              ;; Spoof `form' slot of default legacy `nicknames' entry
              ;; so `erc-button--extract-form' sees a function value.
              (form (let ((erc-button-buttonize-nicks
                           (and erc-button-buttonize-nicks
                                erc-button--modify-nick-function)))
                      (erc-button--extract-form form)))
              (oncep (if-let* ((erc-button-highlight-nick-once)
                               (c (erc--check-msg-prop 'erc--cmd))
                               ((memq c erc-button-highlight-nick-once)))
                         1 0))
              (seen 0))
    (goto-char (point-min))
    (while-let
        (((or (zerop seen) (zerop oncep)))
         ((erc-forward-word))
         (bounds (or (and (= 1 (cl-incf seen)) (erc--get-speaker-bounds))
                     (erc-bounds-of-word-at-point)))
         (word (buffer-substring-no-properties (car bounds) (cdr bounds)))
         (down (erc-downcase word)))
      (let* ((nick-obj t)
             (cmem (and erc-channel-members
                        (or (gethash down erc-channel-members)
                            (funcall erc-button--fallback-cmem-function
                                     down word bounds seen))))
             (user (or (and cmem (car cmem))
                       (and erc-server-users (gethash down erc-server-users))))
             (data (list word)))
        (when (or (not (functionp form))
                  (and user
                       (setq nick-obj (funcall form (make-erc-button--nick
                                                     :bounds bounds :data data
                                                     :downcased down :user user
                                                     :cusr (cdr cmem)))
                             data (erc-button--nick-data nick-obj)
                             bounds (erc-button--nick-bounds nick-obj))))
          (erc-button-add-button (car bounds) (cdr bounds) (nth 3 entry)
                                 nick-obj data))))))