* [PATCH 0/4] emacs: Various fixes. @ 2016-02-05 12:13 Alex Kost 2016-02-05 12:13 ` [PATCH 1/4] emacs: Factorize searching for Emacs packages Alex Kost ` (4 more replies) 0 siblings, 5 replies; 17+ messages in thread From: Alex Kost @ 2016-02-05 12:13 UTC (permalink / raw) To: guix-devel This patchset fixes a couple of issues discovered in bug #22550 (see the bottom of <http://debbugs.gnu.org/cgi/bugreport.cgi?msg=14;bug=22550>). [PATCH 1/4] emacs: Factorize searching for Emacs packages. [PATCH 2/4] emacs: Find Emacs packages in a system profile. [PATCH 3/4] system: Fix EMACSLOADPATH. This is an easy fix, however I've just thought that we can get rid of EMACSLOADPATH completely. Since now our Emacs can load packages from guix directories ("~/.guix-profile" and "/run/current-system/profile") there is no need to use "/etc/emacs/site-start.el" anymore, because Emacs will load "guix-autoloads.el" and "geiser-autoloads.el" from a system profile. So I think this patch is OK as a current fix, but eventually we should remove "guix-init.el" and "/etc/emacs/site-start.el". I'll send a patch for it later. [PATCH 4/4] doc: Document 'guix-edit' Emacs command. ^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH 1/4] emacs: Factorize searching for Emacs packages. 2016-02-05 12:13 [PATCH 0/4] emacs: Various fixes Alex Kost @ 2016-02-05 12:13 ` Alex Kost 2016-02-06 12:45 ` Ludovic Courtès 2016-02-05 12:13 ` [PATCH 2/4] emacs: Find Emacs packages in a system profile Alex Kost ` (3 subsequent siblings) 4 siblings, 1 reply; 17+ messages in thread From: Alex Kost @ 2016-02-05 12:13 UTC (permalink / raw) To: guix-devel * emacs/guix-emacs.el: (guix-emacs-directories): New procedure. (guix-emacs-find-autoloads-in-directory): Rename to ... (guix-emacs-find-autoloads): ... this. (guix-emacs-load-autoloads): Replace with ... (guix-emacs-autoload-packages): this. New procedure. At first, find a list of directories with Emacs packages, then add them to 'load-path' and finally, load autoloads. (guix-emacs-load-autoloads-maybe): Rename to ... (guix-emacs-autoload-packages-maybe): ... this. * emacs/guix-backend.el (guix-after-repl-operation-hook): Adjust for the renaming. * doc/emacs.texi (Emacs Initial Setup): Likewise. --- doc/emacs.texi | 2 +- emacs/guix-backend.el | 2 +- emacs/guix-emacs.el | 70 +++++++++++++++++++++++++-------------------------- 3 files changed, 36 insertions(+), 38 deletions(-) diff --git a/doc/emacs.texi b/doc/emacs.texi index 92a9107..19dc87f 100644 --- a/doc/emacs.texi +++ b/doc/emacs.texi @@ -106,7 +106,7 @@ for the built-in Emacs package system (@pxref{Package Installation,,, emacs, The GNU Emacs Manual}). You can activate Emacs packages installed in your profile whenever you -want using @kbd{M-x@tie{}guix-emacs-load-autoloads}. +want using @kbd{M-x@tie{}guix-emacs-autoload-packages}. @node Emacs Package Management diff --git a/emacs/guix-backend.el b/emacs/guix-backend.el index 0736f85..04e5c1f 100644 --- a/emacs/guix-backend.el +++ b/emacs/guix-backend.el @@ -121,7 +121,7 @@ This REPL is used for receiving information only if "Hook run before executing an operation in Guix REPL.") (defvar guix-after-repl-operation-hook - '(guix-emacs-load-autoloads-maybe + '(guix-emacs-autoload-packages-maybe guix-repl-operation-success-message) "Hook run after executing successful operation in Guix REPL.") diff --git a/emacs/guix-emacs.el b/emacs/guix-emacs.el index 37a0bb2..5c32f2f 100644 --- a/emacs/guix-emacs.el +++ b/emacs/guix-emacs.el @@ -57,7 +57,7 @@ If PROFILE is nil, use `guix-user-profile'." (expand-file-name "share/emacs/site-lisp" (or profile guix-user-profile))) -(defun guix-emacs-find-autoloads-in-directory (directory) +(defun guix-emacs-find-autoloads (directory) "Return a list of Emacs 'autoloads' files in DIRECTORY. The files in the list do not have extensions (.el, .elc)." (cl-remove-duplicates @@ -76,45 +76,44 @@ The files in the list do not have extensions (.el, .elc)." (not (file-directory-p file)))) (directory-files directory 'full-name nil 'no-sort))) -(defun guix-emacs-find-autoloads (&optional profile) - "Return list of autoloads of Emacs packages installed in PROFILE. +(defun guix-emacs-directories (&optional profile) + "Return a list of directories with Emacs packages installed in PROFILE. If PROFILE is nil, use `guix-user-profile'. -Return nil if there are no emacs packages installed in PROFILE." - (let ((elisp-root-dir (guix-emacs-directory profile))) - (if (file-directory-p elisp-root-dir) - (let ((elisp-pkgs-dir (expand-file-name "guix.d" elisp-root-dir)) - (root-autoloads (guix-emacs-find-autoloads-in-directory - elisp-root-dir))) - (if (file-directory-p elisp-pkgs-dir) - (let ((pkgs-autoloads - (cl-mapcan #'guix-emacs-find-autoloads-in-directory - (guix-emacs-subdirs elisp-pkgs-dir)))) - (append root-autoloads pkgs-autoloads)) - root-autoloads)) - (message "Directory '%s' does not exist." elisp-root-dir) - nil))) +Return nil, if Emacs packages are not installed in PROFILE." + (let ((root-dir (guix-emacs-directory (or profile guix-user-profile)))) + (when (file-directory-p root-dir) + (let* ((pkgs-dir (expand-file-name "guix.d" root-dir)) + (pkgs-dirs (when (file-directory-p pkgs-dir) + (guix-emacs-subdirs pkgs-dir)))) + (cons root-dir pkgs-dirs))))) ;;;###autoload -(defun guix-emacs-load-autoloads (&optional profile) - "Load autoloads for Emacs packages installed in PROFILE. +(defun guix-emacs-autoload-packages (&optional profile) + "Autoload Emacs packages installed in PROFILE. If PROFILE is nil, use `guix-user-profile'. -Add autoloads directories to `load-path'." + +'Autoload' means add directories with Emacs packages to +`load-path' and load 'autoloads' files matching +`guix-emacs-autoloads-regexp'." (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 - :test #'string=))) - (dolist (file new-autoloads) - (cl-pushnew (directory-file-name (file-name-directory file)) - load-path - :test #'string=) - (load file 'noerror)) - (setq guix-emacs-autoloads - (append new-autoloads guix-emacs-autoloads)))) - -(defun guix-emacs-load-autoloads-maybe () + (let ((dirs (guix-emacs-directories (or profile guix-user-profile)))) + (when dirs + (let* ((autoloads (cl-mapcan #'guix-emacs-find-autoloads dirs)) + (new-autoloads (cl-nset-difference autoloads + guix-emacs-autoloads + :test #'string=))) + (dolist (dir dirs) + (cl-pushnew (directory-file-name dir) + load-path + :test #'string=)) + (dolist (file new-autoloads) + (load file 'noerror)) + (setq guix-emacs-autoloads + (append new-autoloads guix-emacs-autoloads)))))) + +(defun guix-emacs-autoload-packages-maybe () "Load autoloads for Emacs packages if needed. See `guix-emacs-activate-after-operation' for details." (and guix-emacs-activate-after-operation @@ -123,11 +122,10 @@ See `guix-emacs-activate-after-operation' for details." ;; 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-load-autoloads guix-current-profile))) + (guix-emacs-autoload-packages guix-current-profile))) (when guix-package-enable-at-startup - (add-to-list 'load-path (guix-emacs-directory)) - (guix-emacs-load-autoloads)) + (guix-emacs-autoload-packages guix-user-profile)) (provide 'guix-emacs) -- 2.6.3 ^ permalink raw reply related [flat|nested] 17+ messages in thread
* Re: [PATCH 1/4] emacs: Factorize searching for Emacs packages. 2016-02-05 12:13 ` [PATCH 1/4] emacs: Factorize searching for Emacs packages Alex Kost @ 2016-02-06 12:45 ` Ludovic Courtès 2016-02-07 8:35 ` Alex Kost 0 siblings, 1 reply; 17+ messages in thread From: Ludovic Courtès @ 2016-02-06 12:45 UTC (permalink / raw) To: Alex Kost; +Cc: guix-devel Alex Kost <alezost@gmail.com> skribis: > * emacs/guix-emacs.el: (guix-emacs-directories): New procedure. > (guix-emacs-find-autoloads-in-directory): Rename to ... > (guix-emacs-find-autoloads): ... this. > (guix-emacs-load-autoloads): Replace with ... > (guix-emacs-autoload-packages): this. New procedure. At first, find a > list of directories with Emacs packages, then add them to 'load-path' > and finally, load autoloads. > (guix-emacs-load-autoloads-maybe): Rename to ... > (guix-emacs-autoload-packages-maybe): ... this. > * emacs/guix-backend.el (guix-after-repl-operation-hook): Adjust for the > renaming. > * doc/emacs.texi (Emacs Initial Setup): Likewise. [...] > +(defun guix-emacs-directories (&optional profile) > + "Return a list of directories with Emacs packages installed in PROFILE. Maybe: “Return the list of directories under PROFILE that contain Emacs packages. This includes both `share/emacs/site-lisp/guix.d/PACKAGE' sub-directories and `share/emacs/site-lisp' itself.” Otherwise LGTM. Ludo’. ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 1/4] emacs: Factorize searching for Emacs packages. 2016-02-06 12:45 ` Ludovic Courtès @ 2016-02-07 8:35 ` Alex Kost 0 siblings, 0 replies; 17+ messages in thread From: Alex Kost @ 2016-02-07 8:35 UTC (permalink / raw) To: Ludovic Courtès; +Cc: guix-devel Ludovic Courtès (2016-02-06 15:45 +0300) wrote: > Alex Kost <alezost@gmail.com> skribis: > >> * emacs/guix-emacs.el: (guix-emacs-directories): New procedure. >> (guix-emacs-find-autoloads-in-directory): Rename to ... >> (guix-emacs-find-autoloads): ... this. >> (guix-emacs-load-autoloads): Replace with ... >> (guix-emacs-autoload-packages): this. New procedure. At first, find a >> list of directories with Emacs packages, then add them to 'load-path' >> and finally, load autoloads. >> (guix-emacs-load-autoloads-maybe): Rename to ... >> (guix-emacs-autoload-packages-maybe): ... this. >> * emacs/guix-backend.el (guix-after-repl-operation-hook): Adjust for the >> renaming. >> * doc/emacs.texi (Emacs Initial Setup): Likewise. > > [...] > >> +(defun guix-emacs-directories (&optional profile) >> + "Return a list of directories with Emacs packages installed in PROFILE. > > Maybe: “Return the list of directories under PROFILE that contain Emacs > packages. This includes both `share/emacs/site-lisp/guix.d/PACKAGE' > sub-directories and `share/emacs/site-lisp' itself.” > > Otherwise LGTM. Done, thanks! -- Alex ^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH 2/4] emacs: Find Emacs packages in a system profile. 2016-02-05 12:13 [PATCH 0/4] emacs: Various fixes Alex Kost 2016-02-05 12:13 ` [PATCH 1/4] emacs: Factorize searching for Emacs packages Alex Kost @ 2016-02-05 12:13 ` Alex Kost 2016-02-06 12:46 ` Ludovic Courtès 2016-02-05 12:13 ` [PATCH 3/4] system: Fix EMACSLOADPATH Alex Kost ` (2 subsequent siblings) 4 siblings, 1 reply; 17+ messages in thread From: Alex Kost @ 2016-02-05 12:13 UTC (permalink / raw) To: guix-devel Fixes <http://bugs.gnu.org/22550>. * emacs/guix-emacs.el: Autoload Emacs packages installed in a system profile. --- emacs/guix-emacs.el | 1 + 1 file changed, 1 insertion(+) diff --git a/emacs/guix-emacs.el b/emacs/guix-emacs.el index 5c32f2f..aa8e299 100644 --- a/emacs/guix-emacs.el +++ b/emacs/guix-emacs.el @@ -125,6 +125,7 @@ See `guix-emacs-activate-after-operation' for details." (guix-emacs-autoload-packages guix-current-profile))) (when guix-package-enable-at-startup + (guix-emacs-autoload-packages "/run/current-system/profile") (guix-emacs-autoload-packages guix-user-profile)) (provide 'guix-emacs) -- 2.6.3 ^ permalink raw reply related [flat|nested] 17+ messages in thread
* Re: [PATCH 2/4] emacs: Find Emacs packages in a system profile. 2016-02-05 12:13 ` [PATCH 2/4] emacs: Find Emacs packages in a system profile Alex Kost @ 2016-02-06 12:46 ` Ludovic Courtès 2016-02-07 8:34 ` Alex Kost 0 siblings, 1 reply; 17+ messages in thread From: Ludovic Courtès @ 2016-02-06 12:46 UTC (permalink / raw) To: Alex Kost; +Cc: guix-devel Alex Kost <alezost@gmail.com> skribis: > Fixes <http://bugs.gnu.org/22550>. Please add “Reported by …”. > * emacs/guix-emacs.el: Autoload Emacs packages installed in a system > profile. OK! ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 2/4] emacs: Find Emacs packages in a system profile. 2016-02-06 12:46 ` Ludovic Courtès @ 2016-02-07 8:34 ` Alex Kost 0 siblings, 0 replies; 17+ messages in thread From: Alex Kost @ 2016-02-07 8:34 UTC (permalink / raw) To: Ludovic Courtès; +Cc: guix-devel Ludovic Courtès (2016-02-06 15:46 +0300) wrote: > Alex Kost <alezost@gmail.com> skribis: > >> Fixes <http://bugs.gnu.org/22550>. > > Please add “Reported by …”. Added. >> * emacs/guix-emacs.el: Autoload Emacs packages installed in a system >> profile. > > OK! -- Alex ^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH 3/4] system: Fix EMACSLOADPATH. 2016-02-05 12:13 [PATCH 0/4] emacs: Various fixes Alex Kost 2016-02-05 12:13 ` [PATCH 1/4] emacs: Factorize searching for Emacs packages Alex Kost 2016-02-05 12:13 ` [PATCH 2/4] emacs: Find Emacs packages in a system profile Alex Kost @ 2016-02-05 12:13 ` Alex Kost 2016-02-06 12:48 ` Ludovic Courtès 2016-02-05 12:13 ` [PATCH 4/4] doc: Document 'guix-edit' Emacs command Alex Kost 2016-02-06 12:41 ` [PATCH 0/4] emacs: Various fixes Ludovic Courtès 4 siblings, 1 reply; 17+ messages in thread From: Alex Kost @ 2016-02-05 12:13 UTC (permalink / raw) To: guix-devel After commit 13fe4891fa247d306e203ee14c6886513bd86b52, Emacs package includes "site-start.el", and it has a priority over "/etc/emacs/site-start.el" on GuixSD because "/etc/emacs" is added to the end of 'load-path'. * gnu/system.scm (operating-system-environment-variables): Change EMACSLOADPATH to prepend "/etc/emacs" to 'load-path' instead of appending. --- gnu/system.scm | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gnu/system.scm b/gnu/system.scm index d4759a0..82dba7f 100644 --- a/gnu/system.scm +++ b/gnu/system.scm @@ -581,8 +581,8 @@ use 'plain-file' instead~%") ("SSL_CERT_DIR" . "/etc/ssl/certs") ("SSL_CERT_FILE" . "/etc/ssl/certs/ca-certificates.crt") ("GIT_SSL_CAINFO" . "/etc/ssl/certs/ca-certificates.crt") - ;; Append the directory of 'site-start.el' to the search path. - ("EMACSLOADPATH" . ":/etc/emacs") + ;; Prepend the directory of 'site-start.el' to the search path. + ("EMACSLOADPATH" . "/etc/emacs:") ;; By default, applications that use D-Bus, such as Emacs, abort at startup ;; when /etc/machine-id is missing. Make sure these warnings are non-fatal. ("DBUS_FATAL_WARNINGS" . "0"))) -- 2.6.3 ^ permalink raw reply related [flat|nested] 17+ messages in thread
* Re: [PATCH 3/4] system: Fix EMACSLOADPATH. 2016-02-05 12:13 ` [PATCH 3/4] system: Fix EMACSLOADPATH Alex Kost @ 2016-02-06 12:48 ` Ludovic Courtès 2016-02-07 8:34 ` Alex Kost 0 siblings, 1 reply; 17+ messages in thread From: Ludovic Courtès @ 2016-02-06 12:48 UTC (permalink / raw) To: Alex Kost; +Cc: guix-devel Alex Kost <alezost@gmail.com> skribis: > After commit 13fe4891fa247d306e203ee14c6886513bd86b52, Emacs package > includes "site-start.el", and it has a priority over > "/etc/emacs/site-start.el" on GuixSD because "/etc/emacs" is added to > the end of 'load-path'. > > * gnu/system.scm (operating-system-environment-variables): Change > EMACSLOADPATH to prepend "/etc/emacs" to 'load-path' instead of > appending. [...] > + ;; Prepend the directory of 'site-start.el' to the search path. + “so that it has higher precedence than the ‘site-start.el’ file our Emacs package provides.” OK! Ludo’. ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 3/4] system: Fix EMACSLOADPATH. 2016-02-06 12:48 ` Ludovic Courtès @ 2016-02-07 8:34 ` Alex Kost 0 siblings, 0 replies; 17+ messages in thread From: Alex Kost @ 2016-02-07 8:34 UTC (permalink / raw) To: Ludovic Courtès; +Cc: guix-devel Ludovic Courtès (2016-02-06 15:48 +0300) wrote: > Alex Kost <alezost@gmail.com> skribis: > >> After commit 13fe4891fa247d306e203ee14c6886513bd86b52, Emacs package >> includes "site-start.el", and it has a priority over >> "/etc/emacs/site-start.el" on GuixSD because "/etc/emacs" is added to >> the end of 'load-path'. >> >> * gnu/system.scm (operating-system-environment-variables): Change >> EMACSLOADPATH to prepend "/etc/emacs" to 'load-path' instead of >> appending. > > [...] > >> + ;; Prepend the directory of 'site-start.el' to the search path. > > + “so that it has higher precedence than the ‘site-start.el’ file our > Emacs package provides.” > > OK! Added, thanks! -- Alex ^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCH 4/4] doc: Document 'guix-edit' Emacs command. 2016-02-05 12:13 [PATCH 0/4] emacs: Various fixes Alex Kost ` (2 preceding siblings ...) 2016-02-05 12:13 ` [PATCH 3/4] system: Fix EMACSLOADPATH Alex Kost @ 2016-02-05 12:13 ` Alex Kost 2016-02-06 12:50 ` Ludovic Courtès 2016-02-06 12:41 ` [PATCH 0/4] emacs: Various fixes Ludovic Courtès 4 siblings, 1 reply; 17+ messages in thread From: Alex Kost @ 2016-02-05 12:13 UTC (permalink / raw) To: guix-devel * doc/emacs.texi (Emacs Commands): Document "M-x guix-edit". * doc/guix.texi (Invoking guix edit): Mention it. --- doc/emacs.texi | 22 ++++++++++++++++++++++ doc/guix.texi | 6 +++--- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/doc/emacs.texi b/doc/emacs.texi index 19dc87f..48107cb 100644 --- a/doc/emacs.texi +++ b/doc/emacs.texi @@ -219,6 +219,28 @@ With @kbd{C-u}, make it verbose. Once @command{guix pull} has succeeded, the Guix REPL is restared. This allows you to keep using the Emacs interface with the updated Guix. +Finally, there is an Emacs variant of @command{guix edit} command +(@pxref{Invoking guix edit}): + +@table @kbd +@item M-x guix-edit +As with @kbd{M-x guix-packages-by-name}, you can press @key{TAB} to +complete a package name. +@end table + +If you are contributing to Guix, you may find it useful for @kbd{M-x +guix-edit} to open package files from your git directory. This can be +done by setting @code{guix-directory} variable. For example, after +this: + +@example +(setq guix-directory "~/src/guix") +@end example + +@kbd{M-x guix-edit guix} will open +@file{~/src/guix/gnu/packages/package-management.scm} file. + + @node Emacs General info @subsection General information diff --git a/doc/guix.texi b/doc/guix.texi index 66ab384..80a1621 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -4201,9 +4201,9 @@ launches the program specified in the @code{VISUAL} or in the and that of Vim. If you are using Emacs, note that the Emacs user interface provides -similar functionality in the ``package info'' and ``package list'' -buffers created by @kbd{M-x guix-search-by-name} and similar commands -(@pxref{Emacs Commands}). +@kbd{M-x guix-edit} command and a similar functionality in the ``package +info'' and ``package list'' buffers created by @kbd{M-x +guix-search-by-name} and similar commands (@pxref{Emacs Commands}). @node Invoking guix download -- 2.6.3 ^ permalink raw reply related [flat|nested] 17+ messages in thread
* Re: [PATCH 4/4] doc: Document 'guix-edit' Emacs command. 2016-02-05 12:13 ` [PATCH 4/4] doc: Document 'guix-edit' Emacs command Alex Kost @ 2016-02-06 12:50 ` Ludovic Courtès 2016-02-07 8:34 ` Alex Kost 0 siblings, 1 reply; 17+ messages in thread From: Ludovic Courtès @ 2016-02-06 12:50 UTC (permalink / raw) To: Alex Kost; +Cc: guix-devel Alex Kost <alezost@gmail.com> skribis: > * doc/emacs.texi (Emacs Commands): Document "M-x guix-edit". > * doc/guix.texi (Invoking guix edit): Mention it. [...] > +@kbd{M-x guix-edit guix} will open s/will open/opens/ Otherwise OK. Thank you! Ludo’. ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 4/4] doc: Document 'guix-edit' Emacs command. 2016-02-06 12:50 ` Ludovic Courtès @ 2016-02-07 8:34 ` Alex Kost 0 siblings, 0 replies; 17+ messages in thread From: Alex Kost @ 2016-02-07 8:34 UTC (permalink / raw) To: Ludovic Courtès; +Cc: guix-devel Ludovic Courtès (2016-02-06 15:50 +0300) wrote: > Alex Kost <alezost@gmail.com> skribis: > >> * doc/emacs.texi (Emacs Commands): Document "M-x guix-edit". >> * doc/guix.texi (Invoking guix edit): Mention it. > > [...] > >> +@kbd{M-x guix-edit guix} will open > > s/will open/opens/ > > Otherwise OK. > > Thank you! Fixed and pushed, thanks! -- Alex ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 0/4] emacs: Various fixes. 2016-02-05 12:13 [PATCH 0/4] emacs: Various fixes Alex Kost ` (3 preceding siblings ...) 2016-02-05 12:13 ` [PATCH 4/4] doc: Document 'guix-edit' Emacs command Alex Kost @ 2016-02-06 12:41 ` Ludovic Courtès 2016-02-10 8:48 ` Alex Kost 4 siblings, 1 reply; 17+ messages in thread From: Ludovic Courtès @ 2016-02-06 12:41 UTC (permalink / raw) To: Alex Kost; +Cc: guix-devel Alex Kost <alezost@gmail.com> skribis: > [PATCH 3/4] system: Fix EMACSLOADPATH. > > This is an easy fix, however I've just thought that we can get rid of > EMACSLOADPATH completely. Since now our Emacs can load packages from > guix directories ("~/.guix-profile" and "/run/current-system/profile") > there is no need to use "/etc/emacs/site-start.el" anymore, because Emacs > will load "guix-autoloads.el" and "geiser-autoloads.el" from a system > profile. > > So I think this patch is OK as a current fix, but eventually we should > remove "guix-init.el" and "/etc/emacs/site-start.el". I'll send a > patch for it later. Good, this is better. Ludo’. ^ permalink raw reply [flat|nested] 17+ messages in thread
* Re: [PATCH 0/4] emacs: Various fixes. 2016-02-06 12:41 ` [PATCH 0/4] emacs: Various fixes Ludovic Courtès @ 2016-02-10 8:48 ` Alex Kost 2016-03-17 10:21 ` [PATCHES] Do not use special site-start.el on GuixSD Alex Kost 0 siblings, 1 reply; 17+ messages in thread From: Alex Kost @ 2016-02-10 8:48 UTC (permalink / raw) To: Ludovic Courtès; +Cc: guix-devel Ludovic Courtès (2016-02-06 15:41 +0300) wrote: > Alex Kost <alezost@gmail.com> skribis: > >> [PATCH 3/4] system: Fix EMACSLOADPATH. >> >> This is an easy fix, however I've just thought that we can get rid of >> EMACSLOADPATH completely. Since now our Emacs can load packages from >> guix directories ("~/.guix-profile" and "/run/current-system/profile") >> there is no need to use "/etc/emacs/site-start.el" anymore, because Emacs >> will load "guix-autoloads.el" and "geiser-autoloads.el" from a system >> profile. >> >> So I think this patch is OK as a current fix, but eventually we should >> remove "guix-init.el" and "/etc/emacs/site-start.el". I'll send a >> patch for it later. > > Good, this is better. OK, so I'm sending the following patches for this change: [PATCH 1/3] emacs: Autoload hooks instead of putting them in 'guix-init'. [PATCH 2/3] system: Do not create "site-start.el". [PATCH 3/3] emacs: Deprecate "guix-init.el". However, they should be commited after updating guix-devel snapshot, because with the current source, Emacs finds packages only in a user profile, but not in the system one (it was introduced in commit 004ea62). -- Alex ^ permalink raw reply [flat|nested] 17+ messages in thread
* [PATCHES] Do not use special site-start.el on GuixSD 2016-02-10 8:48 ` Alex Kost @ 2016-03-17 10:21 ` Alex Kost 2016-03-17 21:33 ` Ludovic Courtès 0 siblings, 1 reply; 17+ messages in thread From: Alex Kost @ 2016-03-17 10:21 UTC (permalink / raw) To: Ludovic Courtès; +Cc: guix-devel [-- Attachment #1: Type: text/plain, Size: 1713 bytes --] Alex Kost (2016-02-10 11:48 +0300) wrote: > Ludovic Courtès (2016-02-06 15:41 +0300) wrote: > >> Alex Kost <alezost@gmail.com> skribis: >> >>> [PATCH 3/4] system: Fix EMACSLOADPATH. >>> >>> This is an easy fix, however I've just thought that we can get rid of >>> EMACSLOADPATH completely. Since now our Emacs can load packages from >>> guix directories ("~/.guix-profile" and "/run/current-system/profile") >>> there is no need to use "/etc/emacs/site-start.el" anymore, because Emacs >>> will load "guix-autoloads.el" and "geiser-autoloads.el" from a system >>> profile. >>> >>> So I think this patch is OK as a current fix, but eventually we should >>> remove "guix-init.el" and "/etc/emacs/site-start.el". I'll send a >>> patch for it later. >> >> Good, this is better. > > OK, so I'm sending the following patches for this change: > > [PATCH 1/3] emacs: Autoload hooks instead of putting them in 'guix-init'. This was committed as 19a9c6f. > [PATCH 2/3] system: Do not create "site-start.el". > [PATCH 3/3] emacs: Deprecate "guix-init.el". > > However, they should be commited after updating guix-devel snapshot, > because with the current source, Emacs finds packages only in a user > profile, but not in the system one (it was introduced in commit > 004ea62). Since guix-devel was updated (commit 092dd65), I think it's the time for this change. The patches can be found at ¹ and ², but I reattach them to this message as well. Also I attach another patch to clarify how to set up "guix.el". ¹ http://lists.gnu.org/archive/html/guix-devel/2016-02/msg00362.html ² http://lists.gnu.org/archive/html/guix-devel/2016-02/msg00363.html [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: 0001-system-Do-not-create-site-start.el.patch --] [-- Type: text/x-patch, Size: 3298 bytes --] From c351f4e13e258b7b226c3bfed98fd84f1ecb7e6a Mon Sep 17 00:00:00 2001 From: Alex Kost <alezost@gmail.com> Date: Mon, 8 Feb 2016 20:24:23 +0300 Subject: [PATCH 1/3] system: Do not create "site-start.el". After commits 004ea62 and 092dd65, Emacs can find packages in a system profile, so it autoloads guix code without additional hacks, which can be removed now. * gnu/system.scm (emacs-site-file, emacs-site-directory): Remove. (operating-system-etc-service): Adjust accordingly. (operating-system-environment-variables): Remove EMACSLOADPATH. --- gnu/system.scm | 31 ------------------------------- 1 file changed, 31 deletions(-) diff --git a/gnu/system.scm b/gnu/system.scm index 5be24ba..c5edf4d 100644 --- a/gnu/system.scm +++ b/gnu/system.scm @@ -400,37 +400,11 @@ This is the GNU system. Welcome.\n") "Return the default /etc/hosts file." (plain-file "hosts" (local-host-aliases host-name))) -(define (emacs-site-file) - "Return the Emacs 'site-start.el' file. That file contains the necessary -settings for 'guix.el' to work out-of-the-box." - (scheme-file "site-start.el" - #~(progn - ;; Add the "normal" elisp directory to the search path; - ;; guix.el may be there. - (add-to-list - 'load-path - "/run/current-system/profile/share/emacs/site-lisp") - - ;; Attempt to load guix.el. - (require 'guix-init nil t) - - ;; Attempt to load geiser. - (require 'geiser-install nil t)))) - -(define (emacs-site-directory) - "Return the Emacs site directory, aka. /etc/emacs." - (computed-file "emacs" - #~(begin - (mkdir #$output) - (chdir #$output) - (symlink #$(emacs-site-file) "site-start.el")))) - (define* (operating-system-etc-service os) "Return a <service> that builds containing the static part of the /etc directory." (let ((login.defs (plain-file "login.defs" "# Empty for now.\n")) - (emacs (emacs-site-directory)) (issue (plain-file "issue" (operating-system-issue os))) (nsswitch (plain-file "nsswitch.conf" (name-service-switch->string @@ -507,7 +481,6 @@ fi\n"))) `(("services" ,#~(string-append #$net-base "/etc/services")) ("protocols" ,#~(string-append #$net-base "/etc/protocols")) ("rpc" ,#~(string-append #$net-base "/etc/rpc")) - ("emacs" ,#~#$emacs) ("login.defs" ,#~#$login.defs) ("issue" ,#~#$issue) ("nsswitch.conf" ,#~#$nsswitch) @@ -587,10 +560,6 @@ use 'plain-file' instead~%") ("SSL_CERT_DIR" . "/etc/ssl/certs") ("SSL_CERT_FILE" . "/etc/ssl/certs/ca-certificates.crt") ("GIT_SSL_CAINFO" . "/etc/ssl/certs/ca-certificates.crt") - ;; Prepend the directory of 'site-start.el' to the search path, so - ;; that it has higher precedence than the 'site-start.el' file our - ;; Emacs package provides. - ("EMACSLOADPATH" . "/etc/emacs:") ;; By default, applications that use D-Bus, such as Emacs, abort at startup ;; when /etc/machine-id is missing. Make sure these warnings are non-fatal. ("DBUS_FATAL_WARNINGS" . "0"))) -- 2.6.3 [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #3: 0002-emacs-Deprecate-guix-init.el.patch --] [-- Type: text/x-patch, Size: 3910 bytes --] From dd411c41c97514ec30d87d67a0998d665970c4e8 Mon Sep 17 00:00:00 2001 From: Alex Kost <alezost@gmail.com> Date: Mon, 8 Feb 2016 20:34:13 +0300 Subject: [PATCH 2/3] emacs: Deprecate "guix-init.el". 'guix-init' served 2 purposes: - to autoload guix commands (by requiring 'guix-autoloads'); - and to autoload Emacs packages installed with Guix (by requiring 'guix-emacs'). The second purpose is not actual anymore, as Emacs package handles this task now, so there is no need in 'guix-init' anymore. * emacs/guix-init.el: Do not require 'guix-emacs'. Add a deprecation message. * doc/emacs.texi (Emacs Initial Setup): Recommend to use 'guix-autoloads' instead of 'guix-init'. --- doc/emacs.texi | 33 +++++++++------------------------ emacs/guix-init.el | 3 +-- 2 files changed, 10 insertions(+), 26 deletions(-) diff --git a/doc/emacs.texi b/doc/emacs.texi index 27f5365..527afe7 100644 --- a/doc/emacs.texi +++ b/doc/emacs.texi @@ -48,13 +48,13 @@ command (@pxref{Emacs Popup Interface}). @end itemize -When it is done ``guix.el'' may be configured by requiring a special -@code{guix-init} file---i.e., by adding the following code into your -init file (@pxref{Init File,,, emacs, The GNU Emacs Manual}): +When it is done, ``guix.el'' may be configured by requiring +@code{guix-autoloads} file---i.e., by adding the following code into +your init file (@pxref{Init File,,, emacs, The GNU Emacs Manual}): @example (add-to-list 'load-path "/path/to/directory-with-guix.el") -(require 'guix-init nil t) +(require 'guix-autoloads nil t) @end example So the only thing you need to figure out is where the directory with @@ -74,9 +74,10 @@ then Guix is installed somewhere in the store, so the elisp files are placed in @file{/gnu/store/@dots{}-guix-0.8.2/share/emacs/site-lisp/} or alike. However it is not recommended to refer directly to a store directory. Instead you can install Guix using Guix itself with -@command{guix package -i guix} command (@pxref{Invoking guix package}) -and add @file{~/.guix-profile/share/emacs/site-lisp/} directory to -@code{load-path} variable. +@command{guix package -i guix} command (@pxref{Invoking guix package}). +No further actions are needed in this case, as @code{guix-autoloads} +file will automatically be loaded by Emacs (if it is installed with +Guix, of course) (@pxref{Application Setup}). @item If you did not install Guix at all and prefer a hacking way @@ -88,26 +89,10 @@ same directory, so your final configuration will look like this: (let ((dir "/path/to/your-guix-git-tree/emacs")) (add-to-list 'load-path dir) (setq guix-load-path dir)) -(require 'guix-init nil t) +(require 'guix-autoloads nil t) @end example @end itemize -By default, along with autoloading (@pxref{Autoload,,, elisp, The GNU -Emacs Lisp Reference Manual}) the main interactive commands for -``guix.el'' (@pxref{Emacs Commands}), requiring @code{guix-init} will -also autoload commands for the Emacs packages installed in your user -profile. - -To disable automatic loading of installed Emacs packages, set -@code{guix-package-enable-at-startup} variable to @code{nil} before -requiring @code{guix-init}. This variable has the same meaning for -Emacs packages installed with Guix, as @code{package-enable-at-startup} -for the built-in Emacs package system (@pxref{Package Installation,,, -emacs, The GNU Emacs Manual}). - -You can activate Emacs packages installed in your profile whenever you -want using @kbd{M-x@tie{}guix-emacs-autoload-packages}. - @node Emacs Package Management @section Package Management diff --git a/emacs/guix-init.el b/emacs/guix-init.el index 1d7d258..bd75e54 100644 --- a/emacs/guix-init.el +++ b/emacs/guix-init.el @@ -1,4 +1,3 @@ (require 'guix-autoloads) -(require 'guix-emacs) - +(message "(require 'guix-init) is obsolete, use (require 'guix-autoloads) instead.") (provide 'guix-init) -- 2.6.3 [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #4: 0003-doc-Clarify-installation-instructions-for-guix.el.patch --] [-- Type: text/x-patch, Size: 2697 bytes --] From 5332759fbd531226bdd54b723cdd789dcf21b42e Mon Sep 17 00:00:00 2001 From: Alex Kost <alezost@gmail.com> Date: Sat, 5 Mar 2016 11:39:35 +0300 Subject: [PATCH 3/3] doc: Clarify installation instructions for "guix.el". * doc/emacs.texi (Emacs Initial Setup): Mention that "guix package -i guix" is an easy way. Warn that "make install" may lead to an outdated code. --- doc/emacs.texi | 21 ++++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/doc/emacs.texi b/doc/emacs.texi index 527afe7..c4fdfff 100644 --- a/doc/emacs.texi +++ b/doc/emacs.texi @@ -49,7 +49,13 @@ command (@pxref{Emacs Popup Interface}). @end itemize When it is done, ``guix.el'' may be configured by requiring -@code{guix-autoloads} file---i.e., by adding the following code into +@code{guix-autoloads} file. If you install Guix in your user profile, +this auto-loading is done automatically by our Emacs package +(@pxref{Application Setup}), so a universal recipe for configuring +``guix.el'' is: @command{guix package -i guix}. If you do this, there +is no need to read further. + +For the manual installation, you need to add the following code into your init file (@pxref{Init File,,, emacs, The GNU Emacs Manual}): @example @@ -66,18 +72,19 @@ If it was installed by a package manager of your distribution or by a usual @code{./configure && make && make install} command sequence, then elisp files are placed in a standard directory with Emacs packages (usually it is @file{/usr/share/emacs/site-lisp/}), which is already in -@code{load-path}, so there is no need to add that directory there. +@code{load-path}, so there is no need to add that directory there. Note +that if you don't update this installation periodically, you may get an +outdated Emacs code which does not work with the current Guile code of +Guix. @item If you used a binary installation method (@pxref{Binary Installation}), then Guix is installed somewhere in the store, so the elisp files are placed in @file{/gnu/store/@dots{}-guix-0.8.2/share/emacs/site-lisp/} or alike. However it is not recommended to refer directly to a store -directory. Instead you can install Guix using Guix itself with -@command{guix package -i guix} command (@pxref{Invoking guix package}). -No further actions are needed in this case, as @code{guix-autoloads} -file will automatically be loaded by Emacs (if it is installed with -Guix, of course) (@pxref{Application Setup}). +directory, as it may be garbage-collected one day. So a better choice +would be to install Guix using Guix itself with @command{guix package -i +guix}. @item If you did not install Guix at all and prefer a hacking way -- 2.6.3 ^ permalink raw reply related [flat|nested] 17+ messages in thread
* Re: [PATCHES] Do not use special site-start.el on GuixSD 2016-03-17 10:21 ` [PATCHES] Do not use special site-start.el on GuixSD Alex Kost @ 2016-03-17 21:33 ` Ludovic Courtès 0 siblings, 0 replies; 17+ messages in thread From: Ludovic Courtès @ 2016-03-17 21:33 UTC (permalink / raw) To: Alex Kost; +Cc: guix-devel Alex Kost <alezost@gmail.com> skribis: > Alex Kost (2016-02-10 11:48 +0300) wrote: > >> Ludovic Courtès (2016-02-06 15:41 +0300) wrote: >> >>> Alex Kost <alezost@gmail.com> skribis: >>> >>>> [PATCH 3/4] system: Fix EMACSLOADPATH. >>>> >>>> This is an easy fix, however I've just thought that we can get rid of >>>> EMACSLOADPATH completely. Since now our Emacs can load packages from >>>> guix directories ("~/.guix-profile" and "/run/current-system/profile") >>>> there is no need to use "/etc/emacs/site-start.el" anymore, because Emacs >>>> will load "guix-autoloads.el" and "geiser-autoloads.el" from a system >>>> profile. >>>> >>>> So I think this patch is OK as a current fix, but eventually we should >>>> remove "guix-init.el" and "/etc/emacs/site-start.el". I'll send a >>>> patch for it later. >>> >>> Good, this is better. >> >> OK, so I'm sending the following patches for this change: >> >> [PATCH 1/3] emacs: Autoload hooks instead of putting them in 'guix-init'. > This was committed as 19a9c6f. > >> [PATCH 2/3] system: Do not create "site-start.el". >> [PATCH 3/3] emacs: Deprecate "guix-init.el". >> >> However, they should be commited after updating guix-devel snapshot, >> because with the current source, Emacs finds packages only in a user >> profile, but not in the system one (it was introduced in commit >> 004ea62). > > Since guix-devel was updated (commit 092dd65), I think it's the time for > this change. The patches can be found at ¹ and ², but I reattach them > to this message as well. Also I attach another patch to clarify how to > set up "guix.el". > > ¹ http://lists.gnu.org/archive/html/guix-devel/2016-02/msg00362.html > ² http://lists.gnu.org/archive/html/guix-devel/2016-02/msg00363.html Sure! Thanks for keeping it in mind. Ludo’. ^ permalink raw reply [flat|nested] 17+ messages in thread
end of thread, other threads:[~2016-03-17 21:33 UTC | newest] Thread overview: 17+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2016-02-05 12:13 [PATCH 0/4] emacs: Various fixes Alex Kost 2016-02-05 12:13 ` [PATCH 1/4] emacs: Factorize searching for Emacs packages Alex Kost 2016-02-06 12:45 ` Ludovic Courtès 2016-02-07 8:35 ` Alex Kost 2016-02-05 12:13 ` [PATCH 2/4] emacs: Find Emacs packages in a system profile Alex Kost 2016-02-06 12:46 ` Ludovic Courtès 2016-02-07 8:34 ` Alex Kost 2016-02-05 12:13 ` [PATCH 3/4] system: Fix EMACSLOADPATH Alex Kost 2016-02-06 12:48 ` Ludovic Courtès 2016-02-07 8:34 ` Alex Kost 2016-02-05 12:13 ` [PATCH 4/4] doc: Document 'guix-edit' Emacs command Alex Kost 2016-02-06 12:50 ` Ludovic Courtès 2016-02-07 8:34 ` Alex Kost 2016-02-06 12:41 ` [PATCH 0/4] emacs: Various fixes Ludovic Courtès 2016-02-10 8:48 ` Alex Kost 2016-03-17 10:21 ` [PATCHES] Do not use special site-start.el on GuixSD Alex Kost 2016-03-17 21:33 ` Ludovic Courtès
Code repositories for project(s) associated with this external index https://git.savannah.gnu.org/cgit/guix.git This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.