(x_get_resource_string): Remove unused.
[bpt/emacs.git] / lisp / erc / erc-pcomplete.el
index 1107043..177d0ce 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, 2007, 2008, 2009 Free Software Foundation, Inc.
 
 ;; Author: Sacha Chua <sacha@free.net.ph>
 ;; Keywords: comm, convenience
@@ -8,10 +8,10 @@
 
 ;; This file is part of GNU Emacs.
 
-;; GNU Emacs is free software; you can redistribute it and/or modify
+;; GNU Emacs is free software: you can redistribute it and/or modify
 ;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 2, or (at your option)
-;; any later version.
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
 
 ;; GNU Emacs is distributed in the hope that it will be useful,
 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -19,9 +19,7 @@
 ;; GNU General Public License for more details.
 
 ;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-;; Boston, MA 02110-1301, USA.
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
 
 ;;; Commentary:
 
@@ -106,7 +104,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"))
@@ -180,7 +178,7 @@ the most recent speakers are listed first."
   (while (pcomplete-here (pcomplete-erc-nicks))))
 
 (defun pcomplete/erc-mode/UNIGNORE ()
-  (pcomplete-here (with-current-buffer (erc-server-buffer) erc-ignore-list)))
+  (pcomplete-here (erc-with-server-buffer erc-ignore-list)))
 
 ;;; Functions that provide possible completions.
 
@@ -212,19 +210,28 @@ 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."
   (let (nicks)
-    (with-current-buffer (process-buffer erc-server-process)
+    (erc-with-server-buffer
       (maphash (lambda (nick user)
                  (setq nicks (cons (concat nick postfix) nicks)))
                erc-server-users))