Function: erc-truncate-buffer-to-size

erc-truncate-buffer-to-size is an autoloaded and byte-compiled function defined in erc-truncate.el.gz.

Signature

(erc-truncate-buffer-to-size SIZE &optional BUFFER)

Documentation

Truncate BUFFER or the current buffer to SIZE.

Log the deleted region when the log module is active and erc-logging-enabled returns non-nil.

Note that prior to ERC 5.6, whenever erc-log.el happened to be loaded and the option erc-enable-logging was left at its default value, this function would cause logging to commence regardless of whether erc-log-mode(var)/erc-log-mode(fun) was enabled or log was present in erc-modules.

Source Code

;; Defined in /usr/src/emacs/lisp/erc/erc-truncate.el.gz
;;;###autoload
(defun erc-truncate-buffer-to-size (size &optional buffer)
  "Truncate BUFFER or the current buffer to SIZE.
Log the deleted region when the `log' module is active and
`erc-logging-enabled' returns non-nil.

Note that prior to ERC 5.6, whenever erc-log.el happened to be
loaded and the option `erc-enable-logging' was left at its
default value, this function would cause logging to commence
regardless of whether `erc-log-mode' was enabled or `log' was
present in `erc-modules'."
  ;; If buffer is non-nil, but get-buffer does not return anything,
  ;; then this is a bug.  If buffer is a buffer name, get the buffer
  ;; object.  If buffer is nil, use the current buffer.
  (if (not buffer)
      (setq buffer (current-buffer))
    (unless (get-buffer buffer)
      (error "erc-truncate-buffer-to-size: %S is not a buffer" buffer)))
  (when (and (> (buffer-size buffer) (+ size erc-truncate-padding-size))
             (not (buffer-local-value 'erc--inhibit-clear-p buffer)))
    (with-current-buffer buffer
      (let ((wc (and (get-buffer-window) (current-window-configuration))))
        (save-excursion
          ;; Widen to preserve pre-5.5 behavior.
          (save-restriction
            (widen)
            (let ((beg (point-min-marker))
                  (end (goto-char (- erc-insert-marker size))))
              ;; Truncate at message boundary (formerly line boundary
              ;; before 5.6).
              (goto-char (or (erc--get-inserted-msg-beg end) (pos-bol)))
              (setq end (point-marker))
              (with-silent-modifications
                (let ((erc--inhibit-clear-p t))
                  (funcall erc--clear-function beg end)))
              (set-marker beg nil)
              (set-marker end nil))))
        (when wc
          (set-window-configuration wc))))))