Function: erc-update-mode-line-buffer

erc-update-mode-line-buffer is a byte-compiled function defined in erc.el.gz.

Signature

(erc-update-mode-line-buffer BUFFER)

Documentation

Update the mode line in a single ERC buffer BUFFER.

Source Code

;; Defined in /usr/src/emacs/lisp/erc/erc.el.gz
(defun erc-update-mode-line-buffer (buffer)
  "Update the mode line in a single ERC buffer BUFFER."
  (with-current-buffer buffer
    (let ((spec `((?a . ,(erc-format-away-status))
                  (?l . ,(erc-format-lag-time))
                  (?m . ,(erc-format-channel-modes))
                  (?n . ,(or (erc-current-nick) ""))
                  (?N . ,(erc-format-network))
                  (?o . ,(or (erc-controls-strip erc-channel-topic) ""))
                  (?p . ,(erc-port-to-string erc-session-port))
                  (?s . ,(erc-format-target-and/or-server))
                  (?S . ,(erc-format-target-and/or-network))
                  (?t . ,(erc-format-target))))
          (process-status (cond ((and (erc-server-process-alive)
                                      (not erc-server-connected))
                                 ":connecting")
                                ((erc-server-process-alive)
                                 "")
                                (t
                                 ": CLOSED")))
          (face (cond ((eq erc-header-line-face-method nil)
                       nil)
                      ((functionp erc-header-line-face-method)
                       (funcall erc-header-line-face-method))
                      (t
                       'erc-header-line))))
      (setq mode-line-buffer-identification
            (list (format-spec erc-mode-line-format spec)))
      (setq mode-line-process (list process-status))
      (let ((header (if erc-header-line-format
                        (format-spec erc-header-line-format spec)
                      nil)))
        (cond (erc-header-line-uses-tabbar-p
               (setq-local tabbar--local-hlf header-line-format)
               (kill-local-variable 'header-line-format))
              ((null header)
               (setq header-line-format nil))
              (erc-header-line-uses-help-echo-p
               (let ((help-echo (with-temp-buffer
                                  (insert header)
                                  (fill-region (point-min) (point-max))
                                  (buffer-string))))
                 (setq header-line-format
                       (if (>= emacs-major-version 28)
                           (string-replace
                            "%"
                            "%%"
                            (if face
                                (propertize header 'help-echo help-echo
                                            'face face)
                              (propertize header 'help-echo help-echo)))
                         (replace-regexp-in-string
                          "%"
                          "%%"
                          (if face
                              (propertize header 'help-echo help-echo
                                          'face face)
                            (propertize header 'help-echo help-echo)))))))
              (t (setq header-line-format
                       (if face
                           (propertize header 'face face)
                         header))))))
    (force-mode-line-update)))