;;; pcmpl-x.el --- completion for miscellaneous tools -*- lexical-binding: t; -*-
-;; Copyright (C) 2013 Free Software Foundation, Inc.
+;; Copyright (C) 2013-2016 Free Software Foundation, Inc.
;; Author: Leo Liu <sdl.web@gmail.com>
;; Keywords: processes, tools, convenience
(defcustom pcmpl-x-tlmgr-program "tlmgr"
"Name of the tlmgr program."
+ :version "24.4"
:type 'file
:group 'pcomplete)
(executable-find "ack")
"ack"))
"Name of the ack program."
+ :version "24.4"
:type 'file
:group 'pcomplete)
;;;###autoload
(defun pcomplete/ack ()
"Completion for the `ack' command.
-Start an argument with '-' to complete short options and '--' for
+Start an argument with `-' to complete short options and `--' for
long options."
;; No space after =
(while t
(setq pcmpl-x-ag-options
(with-temp-buffer
(when (zerop (call-process "ag" nil t nil "--help"))
- (let (so lo)
+ (let (short long)
(goto-char (point-min))
(while (re-search-forward "^ +\\(-[a-zA-Z]\\) " nil t)
- (push (match-string 1) so))
+ (push (match-string 1) short))
(goto-char (point-min))
(while (re-search-forward
- "^ +\\(?:-[a-zA-Z] \\)?\\(--[^ \t\n]+\\) " nil t)
- (push (match-string 1) lo))
- (list (cons 'short (nreverse so))
- (cons 'long (nreverse lo)))))))))
+ "^ +\\(?:-[a-zA-Z] \\)?\\(--\\(\\[no\\]\\)?[^ \t\n]+\\) "
+ nil t)
+ (if (match-string 2)
+ (progn
+ (replace-match "" nil nil nil 2)
+ (push (match-string 1) long)
+ (replace-match "no" nil nil nil 2)
+ (push (match-string 1) long))
+ (push (match-string 1) long)))
+ (list (cons 'short (nreverse short))
+ (cons 'long (nreverse long)))))))))
;;;###autoload
(defun pcomplete/ag ()