]> code.delx.au - gnu-emacs/blobdiff - lisp/erc/erc-pcomplete.el
Add "add-log-time-zone-rule: t" to Local Variables section.
[gnu-emacs] / lisp / erc / erc-pcomplete.el
index 110704304e2e6144e0750e6dc7b797233eb868aa..33231ee25901711ac2792d1c05dc0684059519ce 100644 (file)
@@ -1,6 +1,6 @@
 ;;; erc-pcomplete.el --- Provides programmable completion for ERC
 
-;; Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
+;; Copyright (C) 2002, 2003, 2004, 2006 Free Software Foundation, Inc.
 
 ;; Author: Sacha Chua <sacha@free.net.ph>
 ;; Keywords: comm, convenience
@@ -106,7 +106,7 @@ the most recent speakers are listed first."
   (pcomplete-here
    (append
     (pcomplete-erc-commands)
-    (pcomplete-erc-nicks erc-pcomplete-nick-postfix))))
+    (pcomplete-erc-nicks erc-pcomplete-nick-postfix t))))
 
 (defvar erc-pcomplete-ctcp-commands
   '("ACTION" "CLIENTINFO" "ECHO" "FINGER" "PING" "TIME" "USERINFO" "VERSION"))
@@ -212,14 +212,23 @@ the most recent speakers are listed first."
     not-ops))
 
 
-(defun pcomplete-erc-nicks (&optional postfix)
-  "Returns a list of nicks in the current channel."
-  (let ((users (erc-get-channel-user-list)))
-    (if erc-pcomplete-order-nickname-completions
-        (setq users (erc-sort-channel-users-by-activity users)))
-  (mapcar (lambda (x)
-              (concat (erc-server-user-nickname (car x)) postfix))
-            users)))
+(defun pcomplete-erc-nicks (&optional postfix ignore-self)
+  "Returns a list of nicks in the current channel.
+Optional argument POSTFIX is something to append to the nickname.
+If optional argument IGNORE-SELF is non-nil, don't return the current nick."
+  (let ((users (if erc-pcomplete-order-nickname-completions
+                   (erc-sort-channel-users-by-activity
+                    (erc-get-channel-user-list))
+                 (erc-get-channel-user-list)))
+        (nicks nil))
+    (dolist (user users)
+      (unless (and ignore-self
+                   (string= (erc-server-user-nickname (car user))
+                            (erc-current-nick)))
+        (setq nicks (cons (concat (erc-server-user-nickname (car user))
+                                  postfix)
+                          nicks))))
+    (nreverse nicks)))
 
 (defun pcomplete-erc-all-nicks (&optional postfix)
   "Returns a list of all nicks on the current server."