Ludovic Courtès (2014-11-26 19:23 +0300) wrote: > Alex Kost <alez...@gmail.com> skribis: > >> As I wrote at >> <http://lists.gnu.org/archive/html/guix-devel/2014-08/msg00165.html>, I >> see the only way to achieve that: >> >> - to modify emacs package recipes so that they will provide some files >> with all required initial configuration (and to name such file >> "…-autoloads.el", for example); > > ‘FOO-autoloads.el’ is the most common convention, right?
I think there is no any convention on this, but emacs package system generates “foo-autoloads.el” indeed. >> - to modify “guix-init.el” so that (require 'guix-init) will load those >> autoloads files; >> >> - to write some elisp code for auto-loading "…-autoloads.el" on the fly >> — i.e., to make it possible to install an Emacs package using >> "guix.el" and to use "M-x <package-command>" immediately. > > Yep, that sounds good. > >> So if it's acceptable, what about modifying the current recipes >> step-by-step. With geiser it's easy: as "geiser-install.el" provides >> all required setup (including autoloads for "M-x …" commands), >> "geiser-autoloads.el" may just be a symlink to "geiser-install.el". I'm >> attaching the patch for that. > > Yes. > >> + (arguments >> + '(#:phases (alist-cons-after >> + 'install 'post-install >> + (lambda* (#:key outputs #:allow-other-keys) >> + (symlink "geiser-install.el" >> + (string-append (assoc-ref outputs "out") >> + "/share/emacs/site-lisp/" >> + "geiser-autoloads.el"))) >> + %standard-phases))) > > This particular instance won’t work because it’s called from > $top_builddir. Sorry I didn't understand why it wouldn't work. I tried it and it worked as I expected: a proper "geiser-autoloads.el" symlink was created. > Actually, since it’s going to be used in most packages, what about > adding an ‘install-autoloads’ procedure in (guix build emacs-utils)? > So the above would become > > (alist-cons-after > 'install 'post-install > (lambda* (#:key outputs #:allow-other-keys) > (install-autoloads (assoc-ref outputs "out"))) > %standard-phases) OK. > Or better yet, (guix build emacs-utils) could provide > %standard-emacs-phases. > > WDYT? The problem is that I don't understand what these %standard-emacs-phases should be, that's why I wanted to do it step-by-step. I don't see general patterns right now. Some packages would require just making a link as with geiser, other packages require generating autoloads and maybe some others require additional steps. What about making "wip-emacs-packages" branch and to put the appropriate changes there for now? -- Alex