X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/8678d9e413593b0abab296551a20589745c459da..24958590a00900371b6b3b154fc1df5c980d056c:/lisp/erc/erc-pcomplete.el diff --git a/lisp/erc/erc-pcomplete.el b/lisp/erc/erc-pcomplete.el index 355770c5dc..212ad50a63 100644 --- a/lisp/erc/erc-pcomplete.el +++ b/lisp/erc/erc-pcomplete.el @@ -1,8 +1,9 @@ ;;; erc-pcomplete.el --- Provides programmable completion for ERC -;; Copyright (C) 2002-2004, 2006-2011 Free Software Foundation, Inc. +;; Copyright (C) 2002-2004, 2006-2013 Free Software Foundation, Inc. ;; Author: Sacha Chua +;; Maintainer: FSF ;; Keywords: comm, convenience ;; URL: http://www.emacswiki.org/cgi-bin/wiki.pl?ErcCompletion @@ -48,8 +49,8 @@ "Programmable completion for ERC" :group 'erc) -(defcustom erc-pcomplete-nick-postfix ": " - "*When `pcomplete' is used in the first word after the prompt, +(defcustom erc-pcomplete-nick-postfix ":" + "When `pcomplete' is used in the first word after the prompt, add this string to nicks completed." :group 'erc-pcomplete :type 'string) @@ -64,10 +65,19 @@ the most recent speakers are listed first." (define-erc-module pcomplete Completion "In ERC Completion mode, the TAB key does completion whenever possible." ((add-hook 'erc-mode-hook 'pcomplete-erc-setup) - (add-hook 'erc-complete-functions 'erc-pcomplete) + (add-hook 'erc-complete-functions 'erc-pcompletions-at-point) (erc-buffer-list #'pcomplete-erc-setup)) ((remove-hook 'erc-mode-hook 'pcomplete-erc-setup) - (remove-hook 'erc-complete-functions 'erc-pcomplete))) + (remove-hook 'erc-complete-functions 'erc-pcompletions-at-point))) + +(defun erc-pcompletions-at-point () + "ERC completion data from pcomplete. +for use on `completion-at-point-function'." + (when (> (point) (erc-beg-of-input-line)) + (or (let ((pcomplete-default-completion-function #'ignore)) + (pcomplete-completions-at-point)) + (let ((c (pcomplete-completions-at-point))) + (if c (nconc c '(:exclusive no))))))) (defun erc-pcomplete () "Complete the nick before point." @@ -87,10 +97,8 @@ the most recent speakers are listed first." t) (set (make-local-variable 'pcomplete-use-paring) nil) - (set (make-local-variable 'pcomplete-suffix-list) - '(? ?:)) (set (make-local-variable 'pcomplete-parse-arguments-function) - 'pcomplete-parse-erc-arguments) + 'pcomplete-erc-parse-arguments) (set (make-local-variable 'pcomplete-command-completion-function) 'pcomplete/erc-mode/complete-command) (set (make-local-variable 'pcomplete-command-name-function) @@ -250,7 +258,7 @@ If optional argument IGNORE-SELF is non-nil, don't return the current nick." (upcase (substring (pcomplete-arg 'first) 1)) "SAY")) -(defun pcomplete-parse-erc-arguments () +(defun pcomplete-erc-parse-arguments () "Returns a list of parsed whitespace-separated arguments. These are the words from the beginning of the line after the prompt up to where point is right now."