From f2638f0b379c69737ed3ff84a73d8eb16a5a6134 Mon Sep 17 00:00:00 2001 From: Alex Kost Date: Thu, 27 Aug 2015 17:50:01 +0300 Subject: emacs: Add completions for 'guix graph'. * emacs/guix-pcomplete.el (guix-pcomplete-parse-linter-regexp): Improve and rename to ... (guix-pcomplete-parse-list-regexp): ...this. New variable. (guix-pcomplete-lint-checkers): Use it. (guix-pcomplete-graph-types): New function. (guix-pcomplete-complete-command-arg): Complete package names for 'guix graph' command. (guix-pcomplete-complete-option-arg): Complete '-t/--type' option. --- emacs/guix-pcomplete.el | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/emacs/guix-pcomplete.el b/emacs/guix-pcomplete.el index cad19662dd..9ec563cf52 100644 --- a/emacs/guix-pcomplete.el +++ b/emacs/guix-pcomplete.el @@ -54,9 +54,10 @@ guix subcommand, system action, importer, etc.") "-" (group (not (any "- ")))) "Regexp used to find short options.") -(defvar guix-pcomplete-parse-linter-regexp - (rx bol "- " (group (one-or-more (or wordchar "-")))) - "Regexp used to find 'lint' checkers.") +(defvar guix-pcomplete-parse-list-regexp + (rx bol (zero-or-more blank) "- " + (group (one-or-more (or wordchar "-")))) + "Regexp used to find various lists (lint checkers, graph types).") (defvar guix-pcomplete-parse-regexp-group 1 "Parenthesized expression of regexps used to find commands and @@ -169,10 +170,17 @@ subcommands, actions, etc. for this guix COMMAND." (guix-memoized-defun guix-pcomplete-lint-checkers () "Return a list of all available lint checkers." (guix-pcomplete-run-guix-and-search - guix-pcomplete-parse-linter-regexp + guix-pcomplete-parse-list-regexp guix-pcomplete-parse-regexp-group "lint" "--list-checkers")) +(guix-memoized-defun guix-pcomplete-graph-types () + "Return a list of all available graph types." + (guix-pcomplete-run-guix-and-search + guix-pcomplete-parse-list-regexp + guix-pcomplete-parse-regexp-group + "graph" "--list-types")) + ;;; Completing @@ -254,8 +262,8 @@ group - the argument.") "Complete argument for guix COMMAND." (cond ((member command - '("archive" "build" "edit" "environment" "lint" "refresh" - "size")) + '("archive" "build" "graph" "edit" "environment" + "lint" "refresh" "size")) (while t (pcomplete-here (guix-pcomplete-all-packages)))) (t (pcomplete-here* (pcomplete-entries))))) @@ -311,6 +319,10 @@ INPUT is the current partially completed string." (option? "-r" "--root")) (complete* (pcomplete-entries))) + ((and (command? "graph") + (option? "-t" "--type")) + (complete* (guix-pcomplete-graph-types))) + ((and (command? "environment") (option? "-l" "--load")) (complete* (pcomplete-entries))) -- cgit v1.2.3