diff options
Diffstat (limited to 'emacs')
-rw-r--r-- | emacs/guix-command.el | 1 | ||||
-rw-r--r-- | emacs/guix-emacs.el | 21 | ||||
-rw-r--r-- | emacs/guix-init.el | 13 | ||||
-rw-r--r-- | emacs/guix-main.scm | 1 | ||||
-rw-r--r-- | emacs/guix-pcomplete.el | 7 | ||||
-rw-r--r-- | emacs/guix-ui-package.el | 19 |
6 files changed, 43 insertions, 19 deletions
diff --git a/emacs/guix-command.el b/emacs/guix-command.el index 9cb7032abc..cf72b0ea15 100644 --- a/emacs/guix-command.el +++ b/emacs/guix-command.el @@ -192,6 +192,7 @@ to be modified." (guix-command-define-argument-improver guix-command-improve-build-argument '(("--no-grafts" :char ?g) + ("--file" :fun guix-read-file-name) ("--root" :fun guix-read-file-name) ("--sources" :char ?S :fun guix-read-source-type :switch? nil) ("--with-source" :fun guix-read-file-name))) diff --git a/emacs/guix-emacs.el b/emacs/guix-emacs.el index 2f809ed16e..37a0bb26d3 100644 --- a/emacs/guix-emacs.el +++ b/emacs/guix-emacs.el @@ -1,6 +1,6 @@ ;;; guix-emacs.el --- Emacs packages installed with Guix -;; Copyright © 2014 Alex Kost <alezost@gmail.com> +;; Copyright © 2014, 2015, 2016 Alex Kost <alezost@gmail.com> ;; This file is part of GNU Guix. @@ -24,8 +24,17 @@ ;;; Code: -(require 'guix-profiles) (require 'cl-lib) +(unless (require 'guix-profiles nil t) + (defvar guix-user-profile (expand-file-name "~/.guix-profile"))) + +(defcustom guix-package-enable-at-startup t + "If non-nil, activate Emacs packages installed in a user profile. +Set this variable to nil before requiring `guix-emacs' file to +avoid loading autoloads of Emacs packages installed in +`guix-user-profile'." + :type 'boolean + :group 'guix) (defcustom guix-emacs-activate-after-operation t "Activate Emacs packages after installing. @@ -90,7 +99,9 @@ Return nil if there are no emacs packages installed in PROFILE." "Load autoloads for Emacs packages installed in PROFILE. If PROFILE is nil, use `guix-user-profile'. Add autoloads directories to `load-path'." - (interactive (list (guix-profile-prompt))) + (interactive (list (if (fboundp 'guix-profile-prompt) + (funcall 'guix-profile-prompt) + guix-user-profile))) (let* ((autoloads (guix-emacs-find-autoloads profile)) (new-autoloads (cl-nset-difference autoloads guix-emacs-autoloads @@ -114,6 +125,10 @@ See `guix-emacs-activate-after-operation' for details." ;; profile will not be loaded). (guix-emacs-load-autoloads guix-current-profile))) +(when guix-package-enable-at-startup + (add-to-list 'load-path (guix-emacs-directory)) + (guix-emacs-load-autoloads)) + (provide 'guix-emacs) ;;; guix-emacs.el ends here diff --git a/emacs/guix-init.el b/emacs/guix-init.el index 1da607034f..47ced6abaa 100644 --- a/emacs/guix-init.el +++ b/emacs/guix-init.el @@ -1,19 +1,6 @@ (require 'guix-autoloads) (require 'guix-emacs) -(defcustom guix-package-enable-at-startup t - "If non-nil, activate Emacs packages installed in a user profile. -Set this variable to nil before requiring `guix-init' file to -avoid loading autoloads of Emacs packages installed in -`guix-user-profile'." - :type 'boolean - :group 'guix) - -(add-to-list 'load-path (guix-emacs-directory)) - -(when guix-package-enable-at-startup - (guix-emacs-load-autoloads)) - (add-hook 'scheme-mode-hook 'guix-devel-activate-mode-maybe) (add-hook 'shell-mode-hook 'guix-build-log-minor-mode-activate-maybe) diff --git a/emacs/guix-main.scm b/emacs/guix-main.scm index 6f9eb422e0..8c38e7cae3 100644 --- a/emacs/guix-main.scm +++ b/emacs/guix-main.scm @@ -307,6 +307,7 @@ Example: (description . ,package-description-string) (home-url . ,package-home-page) (outputs . ,package-outputs) + (systems . ,package-supported-systems) (non-unique . ,(negate package-unique?)) (inputs . ,(lambda (pkg) (package-inputs-names diff --git a/emacs/guix-pcomplete.el b/emacs/guix-pcomplete.el index 85b267a78d..785e54ef6d 100644 --- a/emacs/guix-pcomplete.el +++ b/emacs/guix-pcomplete.el @@ -262,7 +262,8 @@ INPUT is the current partially completed string." (complete (guix-pcomplete-all-packages))) ((option? "-p" "--profile") (complete* (pcomplete-dirs))) - ((option? "-m" "--manifest") + ((or (option? "-f" "--install-from-file") + (option? "-m" "--manifest")) (complete* (pcomplete-entries))))) ((and (command? "archive" "build" "size") @@ -270,7 +271,9 @@ INPUT is the current partially completed string." (complete* guix-help-system-types)) ((and (command? "build") - (option? "-r" "--root")) + (or (option? "-f" "--file") + (option? "-r" "--root") + (string= "--with-source" option))) (complete* (pcomplete-entries))) ((and (command? "graph") diff --git a/emacs/guix-ui-package.el b/emacs/guix-ui-package.el index e0c98eaed6..12bfaeef68 100644 --- a/emacs/guix-ui-package.el +++ b/emacs/guix-ui-package.el @@ -221,11 +221,13 @@ ENTRIES is a list of package entries to get info about packages." (location format (format guix-package-location)) (home-url format (format guix-url)) (license format (format guix-package-info-license)) + (systems format guix-package-info-insert-systems) (inputs format (format guix-package-input)) (native-inputs format (format guix-package-native-input)) (propagated-inputs format (format guix-package-propagated-input))) - :titles '((home-url . "Home page")) + :titles '((home-url . "Home page") + (systems . "Supported systems")) :required '(id name version installed non-unique)) (guix-info-define-interface installed-output @@ -363,6 +365,20 @@ formatted with this string, an action button is inserted.") 'guix-package-name 'face 'guix-package-info-heading)) +(defun guix-package-info-insert-systems (systems entry) + "Insert supported package SYSTEMS at point." + (guix-info-insert-value-format + systems 'guix-hydra-build-system + 'action (lambda (btn) + (let ((args (guix-hydra-build-latest-prompt-args + :job (button-get btn 'job-name) + :system (button-label btn)))) + (apply #'guix-hydra-build-get-display + 'latest args))) + 'job-name (guix-package-name-specification + (guix-entry-value entry 'name) + (guix-entry-value entry 'version)))) + (defmacro guix-package-info-define-insert-inputs (&optional type) "Define a face and a function for inserting package inputs. TYPE is a type of inputs. @@ -749,6 +765,7 @@ for all ARGS." (location format (format guix-package-location)) (home-url format (format guix-url)) (license format (format guix-package-info-license)) + (systems format guix-package-info-insert-systems) (inputs format (format guix-package-input)) (native-inputs format (format guix-package-native-input)) (propagated-inputs format |