Function: rcirc-mode

rcirc-mode is a byte-compiled function defined in rcirc.el.gz.

Signature

(rcirc-mode PROCESS TARGET)

Documentation

Initialize an IRC buffer for writing with TARGET.

PROCESS is the process object used for communication.

C-c C-a rcirc-jump-to-first-unread-line
C-c C-b rcirc-browse-url
C-c C-c rcirc-edit-multiline
C-c C-d rcirc-cmd-mode
C-c C-f C-b rcirc-format-bold
C-c C-f C-d rcirc-unformat
C-c C-f C-f rcirc-format-fixed-width
C-c C-f C-s rcirc-format-strike-through
C-c C-f C-t rcirc-format-fixed-width
C-c C-f C-u rcirc-format-underline
C-c C-f TAB rcirc-format-italic
C-c C-j rcirc-cmd-join
C-c C-k rcirc-cmd-kick
C-c C-l rcirc-toggle-low-priority
C-c C-n rcirc-cmd-names
C-c C-o rcirc-omit-mode(var)/rcirc-omit-mode(fun)
C-c C-p rcirc-cmd-part
C-c C-q rcirc-cmd-query
C-c C-r rcirc-cmd-nick
C-c C-s rcirc-switch-to-server-buffer
C-c C-t rcirc-cmd-topic
C-c C-w rcirc-cmd-whois
C-c C-x rcirc-cmd-quit
C-c RET rcirc-cmd-msg
C-c TAB rcirc-toggle-ignore-buffer-activity
M-n rcirc-insert-next-input
M-p rcirc-insert-prev-input
RET rcirc-send-input
TAB completion-at-point

Source Code

;; Defined in /usr/src/emacs/lisp/net/rcirc.el.gz
(defun rcirc-mode (process target)
  "Initialize an IRC buffer for writing with TARGET.
PROCESS is the process object used for communication.

\\{rcirc-mode-map}"
  ;; FIXME: Use define-derived-mode.
  (kill-all-local-variables)
  (use-local-map rcirc-mode-map)
  (setq mode-name "rcirc")
  (setq major-mode 'rcirc-mode)
  (setq mode-line-process nil)

  (setq rcirc-input-ring
        ;; If rcirc-input-ring is already a ring with desired
        ;; size do not re-initialize.
        (if (and (ring-p rcirc-input-ring)
                 (= (ring-size rcirc-input-ring)
                    rcirc-input-ring-size))
            rcirc-input-ring
          (make-ring rcirc-input-ring-size)))
  (setq rcirc-server-buffer (process-buffer process))
  (setq rcirc-target target)
  (setq rcirc-last-post-time (current-time))
  (setq-local fill-paragraph-function 'rcirc-fill-paragraph)
  (setq rcirc-current-line 0)

  (use-hard-newlines t)

  ;; setup for omitting responses
  (setq buffer-invisibility-spec '())
  (setq buffer-display-table (make-display-table))
  (set-display-table-slot buffer-display-table 4
                          (let ((glyph (make-glyph-code
                                        ?. 'font-lock-keyword-face)))
                            (make-vector 3 glyph)))

  (dolist (i rcirc-coding-system-alist)
    (let ((chan (if (consp (car i)) (caar i) (car i)))
          (serv (if (consp (car i)) (cdar i) "")))
      (when (and (string-match chan (or target ""))
                 (string-match serv (rcirc-server-name process)))
        (setq-local rcirc-decode-coding-system
                    (if (consp (cdr i)) (cadr i) (cdr i)))
        (setq-local rcirc-encode-coding-system
                    (if (consp (cdr i)) (cddr i) (cdr i))))))

  ;; setup the prompt and markers
  (setq rcirc-prompt-start-marker (point-max-marker))
  (setq rcirc-prompt-end-marker (point-max-marker))
  (rcirc-update-prompt)
  (goto-char rcirc-prompt-end-marker)

  (setq-local overlay-arrow-position (make-marker))

  ;; if the user changes the major mode or kills the buffer, there is
  ;; cleanup work to do
  (add-hook 'change-major-mode-hook 'rcirc-change-major-mode-hook nil t)
  (add-hook 'kill-buffer-hook 'rcirc-kill-buffer-hook nil t)

  ;; add to buffer list, and update buffer abbrevs
  (when target                          ; skip server buffer
    (let ((buffer (current-buffer)))
      (with-rcirc-process-buffer process
        (push (cons target buffer) rcirc-buffer-alist)))
    (rcirc-update-short-buffer-names))

  (add-hook 'completion-at-point-functions
            'rcirc-completion-at-point nil 'local)
  (when rcirc-cycle-completion-flag
    (setq-local completion-cycle-threshold t))

  (setq-local electric-pair-inhibit-predicate
              #'rcirc--electric-pair-inhibit)

  (run-mode-hooks 'rcirc-mode-hook))