-;;; erc-list.el --- /list support for ERC
+;;; erc-list.el --- /list support for ERC -*- lexical-binding:t -*-
-;; Copyright (C) 2008-2011 Free Software Foundation, Inc.
+;; Copyright (C) 2008-2015 Free Software Foundation, Inc.
;; Author: Tom Tromey <tromey@redhat.com>
-;; Version: 0.1
+;; Maintainer: emacs-devel@gnu.org
+;; Old-Version: 0.1
;; Keywords: comm
;; This file is part of GNU Emacs.
(require 'erc)
+(defgroup erc-list nil
+ "Support for the /list command."
+ :group 'erc)
+
;; This is implicitly the width of the channel name column. Pick
;; something small enough that the topic has a chance of being
;; readable, but long enough that most channel names won't make for
(sort-fields col (point-min) (point-max))
(sort-numeric-fields col (point-min) (point-max))))))
+(defvar erc-list-menu-mode-map
+ (let ((map (make-keymap)))
+ (set-keymap-parent map special-mode-map)
+ (define-key map "k" 'erc-list-kill)
+ (define-key map "j" 'erc-list-join)
+ (define-key map "g" 'erc-list-revert)
+ (define-key map "n" 'next-line)
+ (define-key map "p" 'previous-line)
+ map)
+ "Local keymap for `erc-list-mode' buffers.")
+
(defvar erc-list-menu-sort-button-map
(let ((map (make-sparse-keymap)))
(define-key map [header-line mouse-1] 'erc-list-menu-sort-by-column)
(put 'erc-list-menu-mode 'mode-class 'special)
-(define-key erc-list-menu-mode-map "k" 'erc-list-kill)
-(define-key erc-list-menu-mode-map "j" 'erc-list-join)
-(define-key erc-list-menu-mode-map "g" 'erc-list-revert)
-(define-key erc-list-menu-mode-map "n" 'next-line)
-(define-key erc-list-menu-mode-map "p" 'previous-line)
-
;; Handle a "322" response. This response tells us about a single
;; channel.
-(defun erc-list-handle-322 (proc parsed)
+;; Called via erc-once-with-server-event with two arguments.
+(defun erc-list-handle-322 (_proc parsed)
(let* ((args (cdr (erc-response.command-args parsed)))
(channel (car args))
(nusers (car (cdr args)))
;; Arrange for 323 (end of list) to end this.
(erc-once-with-server-event
323
- '(progn
+ (lambda (_proc _parsed)
(remove-hook 'erc-server-322-functions 'erc-list-handle-322 t)))
;; Find the list buffer, empty it, and display it.
(set (make-local-variable 'erc-list-buffer)
Please note that this function only works with IRC servers which conform
to RFC and send the LIST header (#321) at start of list transmission."
(erc-with-server-buffer
- (set (make-local-variable 'erc-list-last-argument) line)
- (erc-once-with-server-event
- 321
- (list 'progn
- (list 'erc-list-install-322-handler (current-buffer)))))
+ (set (make-local-variable 'erc-list-last-argument) line)
+ (erc-once-with-server-event
+ 321
+ (let ((buf (current-buffer)))
+ (lambda (_proc _parsed)
+ (erc-list-install-322-handler buf)))))
(erc-server-send (concat "LIST :" (or (and line (substring line 1))
""))))
(put 'erc-cmd-LIST 'do-not-parse-args t)
+(provide 'erc-list)
+
;;; erc-list.el ends here
;;
;; Local Variables: