From 2021a20053592053dfe78ff5190afa1104010344 Mon Sep 17 00:00:00 2001 From: Leo Liu Date: Fri, 22 Nov 2013 00:30:14 +0800 Subject: [PATCH] * pcmpl-x.el (pcmpl-x-ag-options): Handle `[no]' in long options. --- lisp/ChangeLog | 5 +++-- lisp/pcmpl-x.el | 19 +++++++++++++------ 2 files changed, 16 insertions(+), 8 deletions(-) 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 () -- 2.39.2