Function: erc-display-line-1

erc-display-line-1 is a byte-compiled function defined in erc.el.gz.

Signature

(erc-display-line-1 STRING BUFFER)

Documentation

Display STRING in erc-mode BUFFER.

Auxiliary function used in erc-display-line. The line gets filtered to interpret the control characters. Then, erc-insert-pre-hook gets called. If erc-insert-this is still t, STRING gets inserted into the buffer. Afterwards, erc-insert-modify and erc-insert-post-hook get called. If STRING is nil, the function does nothing.

Source Code

;; Defined in /usr/src/emacs/lisp/erc/erc.el.gz
(defun erc-display-line-1 (string buffer)
  "Display STRING in `erc-mode' BUFFER.
Auxiliary function used in `erc-display-line'.  The line gets filtered to
interpret the control characters.  Then, `erc-insert-pre-hook' gets called.
If `erc-insert-this' is still t, STRING gets inserted into the buffer.
Afterwards, `erc-insert-modify' and `erc-insert-post-hook' get called.
If STRING is nil, the function does nothing."
  (when string
    (with-current-buffer (or buffer (process-buffer erc-server-process))
      (let ((insert-position (or (marker-position erc-insert-marker)
                                 (point-max))))
        (let ((string string) ;; FIXME! Can this be removed?
              (buffer-undo-list t)
              (inhibit-read-only t))
          (unless (string-match "\n$" string)
            (setq string (concat string "\n"))
            (when (erc-string-invisible-p string)
              (erc-put-text-properties 0 (length string)
                                       '(invisible intangible) string)))
          (erc-log (concat "erc-display-line: " string
                           (format "(%S)" string) " in buffer "
                           (format "%s" buffer)))
          (setq erc-insert-this t)
          (run-hook-with-args 'erc-insert-pre-hook string)
          (if (null erc-insert-this)
              ;; Leave erc-insert-this set to t as much as possible.  Fran
              ;; Litterio <franl> has seen erc-insert-this set to nil while
              ;; erc-send-pre-hook is running, which should never happen.  This
              ;; may cure it.
              (setq erc-insert-this t)
            (save-excursion ;; to restore point in the new buffer
              (save-restriction
                (widen)
                (goto-char insert-position)
                (insert-before-markers string)
                ;; run insertion hook, with point at restored location
                (save-restriction
                  (narrow-to-region insert-position (point))
                  (run-hooks 'erc-insert-modify-hook)
                  (run-hooks 'erc-insert-post-hook)
                  (when erc-remove-parsed-property
                    (remove-text-properties (point-min) (point-max)
                                            '(erc-parsed nil))))))))
        (run-hooks 'erc-insert-done-hook)
        (erc-update-undo-list (- (or (marker-position erc-insert-marker)
                                     (point-max))
                                 insert-position))))))