emacs: Move the code to load Emacs packages after installing.
This code should belong to "guix-backend" as it is run after a REPL operation to check if new Emacs packages have been installed and to autoload them if needed. * emacs/guix-emacs.el (guix-emacs-activate-after-operation) (guix-emacs-load-autoloads-maybe): Move and rename to... * emacs/guix-backend.el (guix-emacs-activate-after-operation) (guix-repl-autoload-emacs-packages-maybe): ... this. (guix-after-repl-operation-hook): Adjust for the renaming.master
parent
abea77e3f0
commit
09b634565d
|
@ -1,6 +1,6 @@
|
||||||
;;; guix-backend.el --- Making and using Guix REPL
|
;;; guix-backend.el --- Making and using Guix REPL
|
||||||
|
|
||||||
;; Copyright © 2014, 2015 Alex Kost <alezost@gmail.com>
|
;; Copyright © 2014, 2015, 2016 Alex Kost <alezost@gmail.com>
|
||||||
|
|
||||||
;; This file is part of GNU Guix.
|
;; This file is part of GNU Guix.
|
||||||
|
|
||||||
|
@ -53,6 +53,7 @@
|
||||||
(require 'guix-config)
|
(require 'guix-config)
|
||||||
(require 'guix-external)
|
(require 'guix-external)
|
||||||
(require 'guix-emacs)
|
(require 'guix-emacs)
|
||||||
|
(require 'guix-profiles)
|
||||||
|
|
||||||
(defvar guix-load-path guix-config-emacs-interface-directory
|
(defvar guix-load-path guix-config-emacs-interface-directory
|
||||||
"Directory with scheme files for \"guix.el\" package.")
|
"Directory with scheme files for \"guix.el\" package.")
|
||||||
|
@ -101,6 +102,13 @@ The function is called without arguments."
|
||||||
(function :tag "Other function"))
|
(function :tag "Other function"))
|
||||||
:group 'guix-repl)
|
:group 'guix-repl)
|
||||||
|
|
||||||
|
(defcustom guix-emacs-activate-after-operation t
|
||||||
|
"Activate Emacs packages after installing.
|
||||||
|
If nil, do not load autoloads of the Emacs packages after
|
||||||
|
they are successfully installed."
|
||||||
|
:type 'boolean
|
||||||
|
:group 'guix-repl)
|
||||||
|
|
||||||
(defvar guix-repl-current-socket nil
|
(defvar guix-repl-current-socket nil
|
||||||
"Name of a socket file used by the current Guix REPL.")
|
"Name of a socket file used by the current Guix REPL.")
|
||||||
|
|
||||||
|
@ -121,7 +129,7 @@ This REPL is used for receiving information only if
|
||||||
"Hook run before executing an operation in Guix REPL.")
|
"Hook run before executing an operation in Guix REPL.")
|
||||||
|
|
||||||
(defvar guix-after-repl-operation-hook
|
(defvar guix-after-repl-operation-hook
|
||||||
'(guix-emacs-load-autoloads-maybe
|
'(guix-repl-autoload-emacs-packages-maybe
|
||||||
guix-repl-operation-success-message)
|
guix-repl-operation-success-message)
|
||||||
"Hook run after executing successful operation in Guix REPL.")
|
"Hook run after executing successful operation in Guix REPL.")
|
||||||
|
|
||||||
|
@ -136,6 +144,17 @@ This internal variable is used to define what actions should be
|
||||||
executed after the current operation succeeds.
|
executed after the current operation succeeds.
|
||||||
See `guix-eval-in-repl' for details.")
|
See `guix-eval-in-repl' for details.")
|
||||||
|
|
||||||
|
(defun guix-repl-autoload-emacs-packages-maybe ()
|
||||||
|
"Load autoloads for Emacs packages if needed.
|
||||||
|
See `guix-emacs-activate-after-operation' for details."
|
||||||
|
(and guix-emacs-activate-after-operation
|
||||||
|
;; FIXME Since a user can work with a non-current profile (using
|
||||||
|
;; C-u before `guix-search-by-name' and other commands), emacs
|
||||||
|
;; packages can be installed to another profile, and the
|
||||||
|
;; following code will not work (i.e., the autoloads for this
|
||||||
|
;; profile will not be loaded).
|
||||||
|
(guix-emacs-autoload-packages guix-current-profile)))
|
||||||
|
|
||||||
(defun guix-repl-operation-success-message ()
|
(defun guix-repl-operation-success-message ()
|
||||||
"Message telling about successful Guix operation."
|
"Message telling about successful Guix operation."
|
||||||
(message "Guix operation has been performed."))
|
(message "Guix operation has been performed."))
|
||||||
|
|
|
@ -36,13 +36,6 @@ avoid loading autoloads of Emacs packages installed in
|
||||||
:type 'boolean
|
:type 'boolean
|
||||||
:group 'guix)
|
:group 'guix)
|
||||||
|
|
||||||
(defcustom guix-emacs-activate-after-operation t
|
|
||||||
"Activate Emacs packages after installing.
|
|
||||||
If nil, do not load autoloads of the Emacs packages after
|
|
||||||
they are successfully installed."
|
|
||||||
:type 'boolean
|
|
||||||
:group 'guix)
|
|
||||||
|
|
||||||
(defvar guix-emacs-autoloads nil
|
(defvar guix-emacs-autoloads nil
|
||||||
"List of the last loaded Emacs autoloads.")
|
"List of the last loaded Emacs autoloads.")
|
||||||
|
|
||||||
|
@ -120,17 +113,6 @@ If PROFILES are not specified, use `guix-user-profile'.
|
||||||
(setq guix-emacs-autoloads
|
(setq guix-emacs-autoloads
|
||||||
(append new-autoloads guix-emacs-autoloads))))))))
|
(append new-autoloads guix-emacs-autoloads))))))))
|
||||||
|
|
||||||
(defun guix-emacs-load-autoloads-maybe ()
|
|
||||||
"Load autoloads for Emacs packages if needed.
|
|
||||||
See `guix-emacs-activate-after-operation' for details."
|
|
||||||
(and guix-emacs-activate-after-operation
|
|
||||||
;; FIXME Since a user can work with a non-current profile (using
|
|
||||||
;; C-u before `guix-search-by-name' and other commands), emacs
|
|
||||||
;; packages can be installed to another profile, and the
|
|
||||||
;; following code will not work (i.e., the autoloads for this
|
|
||||||
;; profile will not be loaded).
|
|
||||||
(guix-emacs-autoload-packages guix-current-profile)))
|
|
||||||
|
|
||||||
(when guix-package-enable-at-startup
|
(when guix-package-enable-at-startup
|
||||||
(guix-emacs-autoload-packages))
|
(guix-emacs-autoload-packages))
|
||||||
|
|
||||||
|
|
Reference in New Issue