diff options
author | Alex Kost <alezost@gmail.com> | 2015-08-12 20:32:45 +0300 |
---|---|---|
committer | Alex Kost <alezost@gmail.com> | 2015-08-30 18:26:02 +0300 |
commit | 26476d5852f31097994113b88d9c51f1f4378c99 (patch) | |
tree | 89caa9b212fc4958a3abb1cc9c14ffbde8dc7384 /emacs | |
parent | 25a2839c9dfb72fc4eddf0621b80023f87fc2e2e (diff) |
emacs: Add help variables.
* emacs/guix-pcomplete.el (guix-pcomplete-parse-package-regexp,
guix-pcomplete-parse-command-regexp,
guix-pcomplete-parse-long-option-regexp,
guix-pcomplete-parse-short-option-regexp,
guix-pcomplete-parse-list-regexp, guix-pcomplete-parse-regexp-group,
guix-pcomplete-systems, guix-pcomplete-hash-formats,
guix-pcomplete-refresh-subsets, guix-pcomplete-key-policies): Move and
rename to ...
* emacs/guix-help-vars.el (guix-help-parse-package-regexp,
guix-help-parse-command-regexp, guix-help-parse-long-option-regexp,
guix-help-parse-short-option-regexp, guix-help-parse-list-regexp,
guix-help-parse-regexp-group, guix-help-system-types,
guix-help-hash-formats, guix-help-refresh-subsets,
guix-help-key-policies): ...here. New file.
(guix-help-parse-option-regexp, guix-help-source-types,
guix-help-verify-options, guix-help-elpa-archives): New variables.
* emacs.am (ELFILES): Add "guix-help-vars.el".
Diffstat (limited to 'emacs')
-rw-r--r-- | emacs/guix-help-vars.el | 108 | ||||
-rw-r--r-- | emacs/guix-pcomplete.el | 86 |
2 files changed, 125 insertions, 69 deletions
diff --git a/emacs/guix-help-vars.el b/emacs/guix-help-vars.el new file mode 100644 index 0000000000..8117d28f3e --- /dev/null +++ b/emacs/guix-help-vars.el @@ -0,0 +1,108 @@ +;;; guix-help-vars.el --- Variables related to --help output + +;; Copyright © 2015 Alex Kost <alezost@gmail.com> + +;; This file is part of GNU Guix. + +;; GNU Guix is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Guix is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with this program. If not, see <http://www.gnu.org/licenses/>. + +;;; Commentary: + +;; This file provides regular expressions to parse various "guix +;; ... --help" outputs and lists of non-receivable items (system types, +;; hash formats, etc.). + +;;; Code: + + +;;; Regexps for parsing "guix ..." outputs + +(defvar guix-help-parse-option-regexp + (rx bol " " + (zero-or-one (group "-" (not (any "- "))) + ",") + (one-or-more " ") + (group "--" (one-or-more (or wordchar "-"))) + (group (zero-or-one "[") + (zero-or-one "=")) + (zero-or-more (not space)) + (one-or-more space) + (group (one-or-more any))) + "Common regexp used to find command options.") + +(defvar guix-help-parse-command-regexp + (rx bol " " + (group wordchar (one-or-more (or wordchar "-")))) + "Regexp used to find guix commands. +'Command' means any option not prefixed with '-'. For example, +guix subcommand, system action, importer, etc.") + +(defvar guix-help-parse-long-option-regexp + (rx (or " " ", ") + (group "--" (one-or-more (or wordchar "-")) + (zero-or-one "="))) + "Regexp used to find long options.") + +(defvar guix-help-parse-short-option-regexp + (rx bol (one-or-more blank) + "-" (group (not (any "- ")))) + "Regexp used to find short options.") + +(defvar guix-help-parse-package-regexp + (rx bol (group (one-or-more (not blank)))) + "Regexp used to find names of the packages.") + +(defvar guix-help-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-help-parse-regexp-group 1 + "Parenthesized expression of regexps used to find commands and +options.") + + +;;; Non-receivable lists of system types, hash formats, etc. + +(defvar guix-help-system-types + '("x86_64-linux" "i686-linux" "armhf-linux" "mips64el-linux") + "List of supported systems.") + +(defvar guix-help-source-types + '("package" "all" "transitive") + "List of supported sources types.") + +(defvar guix-help-hash-formats + '("nix-base32" "base32" "base16" "hex" "hexadecimal") + "List of supported hash formats.") + +(defvar guix-help-refresh-subsets + '("core" "non-core") + "List of supported 'refresh' subsets.") + +(defvar guix-help-key-policies + '("interactive" "always" "never") + "List of supported key download policies.") + +(defvar guix-help-verify-options + '("repair" "contents") + "List of supported 'verify' options") + +(defvar guix-help-elpa-archives + '("gnu" "melpa" "melpa-stable") + "List of supported ELPA archives.") + +(provide 'guix-help-vars) + +;;; guix-help-vars.el ends here diff --git a/emacs/guix-pcomplete.el b/emacs/guix-pcomplete.el index 2b9249554b..4743be59bd 100644 --- a/emacs/guix-pcomplete.el +++ b/emacs/guix-pcomplete.el @@ -28,59 +28,7 @@ (require 'pcmpl-unix) (require 'cl-lib) (require 'guix-utils) - - -;;; Regexps for parsing various "guix ..." outputs - -(defvar guix-pcomplete-parse-package-regexp - (rx bol (group (one-or-more (not blank)))) - "Regexp used to find names of the packages.") - -(defvar guix-pcomplete-parse-command-regexp - (rx bol " " - (group wordchar (one-or-more (or wordchar "-")))) - "Regexp used to find guix commands. -'Command' means any option not prefixed with '-'. For example, -guix subcommand, system action, importer, etc.") - -(defvar guix-pcomplete-parse-long-option-regexp - (rx (or " " ", ") - (group "--" (one-or-more (or wordchar "-")) - (zero-or-one "="))) - "Regexp used to find long options.") - -(defvar guix-pcomplete-parse-short-option-regexp - (rx bol (one-or-more blank) - "-" (group (not (any "- ")))) - "Regexp used to find short options.") - -(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 -options.") - - -;;; Non-receivable completions - -(defvar guix-pcomplete-systems - '("x86_64-linux" "i686-linux" "armhf-linux" "mips64el-linux") - "List of supported systems.") - -(defvar guix-pcomplete-hash-formats - '("nix-base32" "base32" "base16" "hex" "hexadecimal") - "List of supported hash formats.") - -(defvar guix-pcomplete-refresh-subsets - '("core" "non-core") - "List of supported 'refresh' subsets.") - -(defvar guix-pcomplete-key-policies - '("interactive" "always" "never") - "List of supported key download policies.") +(require 'guix-help-vars) ;;; Interacting with guix @@ -128,7 +76,7 @@ function call is returned." (let* ((args '("--help")) (args (if command (cons command args) args)) (res (apply #'guix-pcomplete-run-guix-and-search - ,regexp guix-pcomplete-parse-regexp-group args))) + ,regexp guix-help-parse-regexp-group args))) ,(if filter `(funcall ,filter res) 'res)))) @@ -137,23 +85,23 @@ function call is returned." "If COMMAND is nil, return a list of available guix commands. If COMMAND is non-nil (it should be a string), return available subcommands, actions, etc. for this guix COMMAND." - guix-pcomplete-parse-command-regexp) + guix-help-parse-command-regexp) (guix-pcomplete-define-options-finder guix-pcomplete-long-options "Return a list of available long options for guix COMMAND." - guix-pcomplete-parse-long-option-regexp) + guix-help-parse-long-option-regexp) (guix-pcomplete-define-options-finder guix-pcomplete-short-options "Return a string with available short options for guix COMMAND." - guix-pcomplete-parse-short-option-regexp + guix-help-parse-short-option-regexp (lambda (list) (guix-concat-strings list ""))) (guix-memoized-defun guix-pcomplete-all-packages () "Return a list of all available Guix packages." (guix-pcomplete-run-guix-and-search - guix-pcomplete-parse-package-regexp - guix-pcomplete-parse-regexp-group + guix-help-parse-package-regexp + guix-help-parse-regexp-group "package" "--list-available")) (guix-memoized-defun guix-pcomplete-installed-packages (&optional profile) @@ -162,22 +110,22 @@ subcommands, actions, etc. for this guix COMMAND." (list (concat "--profile=" profile)))) (args (append '("package" "--list-installed") args))) (apply #'guix-pcomplete-run-guix-and-search - guix-pcomplete-parse-package-regexp - guix-pcomplete-parse-regexp-group + guix-help-parse-package-regexp + guix-help-parse-regexp-group args))) (guix-memoized-defun guix-pcomplete-lint-checkers () "Return a list of all available lint checkers." (guix-pcomplete-run-guix-and-search - guix-pcomplete-parse-list-regexp - guix-pcomplete-parse-regexp-group + guix-help-parse-list-regexp + guix-help-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 + guix-help-parse-list-regexp + guix-help-parse-regexp-group "graph" "--list-types")) @@ -283,7 +231,7 @@ INPUT is the current partially completed string." ((option? "-L" "--load-path") (complete* (pcomplete-dirs))) ((string= "--key-download" option) - (complete* guix-pcomplete-key-policies)) + (complete* guix-help-key-policies)) ((command? "package") (cond @@ -312,7 +260,7 @@ INPUT is the current partially completed string." ((and (command? "archive" "build" "size") (option? "-s" "--system")) - (complete* guix-pcomplete-systems)) + (complete* guix-help-system-types)) ((and (command? "build") (option? "-r" "--root")) @@ -328,7 +276,7 @@ INPUT is the current partially completed string." ((and (command? "hash" "download") (option? "-f" "--format")) - (complete* guix-pcomplete-hash-formats)) + (complete* guix-help-hash-formats)) ((and (command? "lint") (option? "-c" "--checkers")) @@ -341,7 +289,7 @@ INPUT is the current partially completed string." ((and (command? "refresh") (option? "-s" "--select")) - (complete* guix-pcomplete-refresh-subsets)) + (complete* guix-help-refresh-subsets)) ((and (command? "size") (option? "-m" "--map-file")) |