summaryrefslogtreecommitdiff
path: root/lisp/erc/erc-pcomplete.el
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/erc/erc-pcomplete.el')
-rw-r--r--lisp/erc/erc-pcomplete.el27
1 files changed, 18 insertions, 9 deletions
diff --git a/lisp/erc/erc-pcomplete.el b/lisp/erc/erc-pcomplete.el
index d6d4dfdd3b3..33231ee2590 100644
--- a/lisp/erc/erc-pcomplete.el
+++ b/lisp/erc/erc-pcomplete.el
@@ -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."