Function: erc--wrangle-query-buffers-on-nick-change

erc--wrangle-query-buffers-on-nick-change is a byte-compiled function defined in erc-backend.el.gz.

Signature

(erc--wrangle-query-buffers-on-nick-change OLD NEW)

Documentation

Create or reuse a query buffer for NEW nick after considering OLD nick.

Return a list of buffers in which to announce the change.

Source Code

;; Defined in /usr/src/emacs/lisp/erc/erc-backend.el.gz
(defun erc--wrangle-query-buffers-on-nick-change (old new)
  "Create or reuse a query buffer for NEW nick after considering OLD nick.
Return a list of buffers in which to announce the change."
  ;; Note that `new-buffer' may be older than `old-buffer', e.g., if
  ;; the query target is switching to a previously used nick.
  (let ((new-buffer (erc-get-buffer new erc-server-process))
        (old-buffer (erc-get-buffer old erc-server-process))
        (selfp (erc-current-nick-p old)) ; e.g., for note taking, etc.
        buffers)
    (when new-buffer
      (push new-buffer buffers))
    (when old-buffer
      (push old-buffer buffers)
      ;; Ensure the new nick is absent from the old query.
      (unless selfp
        (erc-remove-channel-member old-buffer old))
      (when (or selfp (null new-buffer))
        (let ((target (erc--target-from-string new))
              (id (erc-networks--id-given erc-networks--id)))
          (with-current-buffer old-buffer
            (setq erc-default-recipients (cons new
                                               (cdr erc-default-recipients))
                  erc--target target))
          (setq new-buffer (erc-get-buffer-create erc-session-server
                                                  erc-session-port
                                                  nil target id)))))
    (when new-buffer
      (with-current-buffer new-buffer
        (erc-update-mode-line)))
    buffers))