From: Leo Liu Date: Thu, 21 Nov 2013 16:30:14 +0000 (+0800) Subject: * pcmpl-x.el (pcmpl-x-ag-options): Handle `[no]' in long options. X-Git-Tag: emacs-24.3.90~173^2^2~42^2~45^2~387^2~760 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=2021a20053592053dfe78ff5190afa1104010344;p=emacs.git * pcmpl-x.el (pcmpl-x-ag-options): Handle `[no]' in long options. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index cc928f5c57f..0865d0c81cf 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,8 +1,9 @@ 2013-11-21 Leo Liu Add completion for command `ag'. - * pcmpl-x.el (pcomplete/ag, pcmpl-x-ag-options): New functions. - (pcmpl-x-ag-options): New variable. + * pcmpl-x.el (pcmpl-x-ag-options): New variable. + (pcomplete/ag): New function. + (pcmpl-x-ag-options): New function. Handle `[no]' in long options. 2013-11-21 Stefan Monnier diff --git a/lisp/pcmpl-x.el b/lisp/pcmpl-x.el index b52a692a291..8e09c660301 100644 --- a/lisp/pcmpl-x.el +++ b/lisp/pcmpl-x.el @@ -257,16 +257,23 @@ long options." (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 ()