Re: [PATCH 1/4] emacs: Factorize searching for Emacs packages.

2016-02-07 Thread Alex Kost
Ludovic Courtès (2016-02-06 15:45 +0300) wrote:

> Alex Kost  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 ( 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



Re: [PATCH 1/4] emacs: Factorize searching for Emacs packages.

2016-02-06 Thread Ludovic Courtès
Alex Kost  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 ( 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’.



[PATCH 1/4] emacs: Factorize searching for Emacs packages.

2016-02-05 Thread Alex Kost
* 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 ( profile)
-  "Return list of autoloads of Emacs packages installed in PROFILE.
+(defun guix-emacs-directories ( 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 ( profile)
-  "Load autoloads for Emacs packages installed in PROFILE.
+(defun guix-emacs-autoload-packages ( 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