Function: erc-server-PART

erc-server-PART is a byte-compiled function defined in erc-backend.el.gz.

Signature

(erc-server-PART PROC PARSED)

Documentation

Handle part messages.

Handler for a PART server response. PROC is the server process which returned the response. PARSED is the actual response as an erc-response struct. If you want to add responses don't modify this function, but rather add things to erc-server-PART-functions instead.

Source Code

;; Defined in /usr/src/emacs/lisp/erc/erc-backend.el.gz
(define-erc-response-handler (PART)
  "Handle part messages." nil
  (let* ((chnl (car (erc-response.command-args parsed)))
         (reason (erc-trim-string (erc-response.contents parsed)))
         (buffer (erc-get-buffer chnl proc)))
    (pcase-let ((`(,nick ,login ,host)
                 (erc-parse-user (erc-response.sender parsed))))
      ;; When `buffer' is nil, `erc-remove-channel-member' and
      ;; `erc-remove-channel-users' do almost nothing, and the message
      ;; is displayed in the server buffer.
      (erc-display-message parsed 'notice buffer
                           'PART ?n nick ?u login
                           ?h host ?c chnl ?r (or reason ""))
      (cond
       ((string= nick (erc-current-nick))
        (run-hook-with-args 'erc-part-hook buffer)
        (erc-with-buffer
            (buffer)
          (erc--remove-channel-users-but nick))
        (with-suppressed-warnings ((obsolete erc-delete-default-channel))
          (erc-delete-default-channel chnl buffer))
        (erc-update-mode-line buffer)
        (defvar erc-kill-buffer-on-part)
        (when (and erc-kill-buffer-on-part buffer)
          (defvar erc-killing-buffer-on-part-p)
          (let ((erc-killing-buffer-on-part-p t))
            (kill-buffer buffer))))
       (t (erc-remove-channel-member buffer nick)))))
  nil)