diff options
-rw-r--r-- | lisp/ChangeLog | 5 | ||||
-rw-r--r-- | 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 <sdl.web@gmail.com> 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 <monnier@iro.umontreal.ca> 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 () |