help-guix
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Should the emacs-ess Guix package be fixed?


From: Rodrigo Morales
Subject: Should the emacs-ess Guix package be fixed?
Date: Sun, 2 Apr 2023 23:00:38 +0000

Table of Contents
_________________

1. TL; DR
2. The context
3. The questions
4. Additional information


1 TL; DR
========

  I have installed the `emacs-ess' package in my system. The way it has
  created files in `~/.guix-profile/share/emacs/site-lisp/' makes me
  thnk that the package needs to be fixed in order for it to be
  consistent with how other Guix packages for Emacs organize files in
  `~/.guix-profile/share/emacs/site-lisp/'.

  I'm not familiar with build systems yet, so I can't determine if the
  package is correctly written. I'm reporting what I found with the hope
  that someone else could confirm whether the package needs to be fixed
  or not.


2 The context
=============

  Let's suppose that I'm interested in using the Emacs packages
  `ace-window' (name of the Guix package is `emacs-ace-window') and
  `helpful' (name of the Guix package is `emacs-helpful'). I'd install
  them as follows.

  ,----
  | guix package -i emacs-ace-window -i emacs-helpful
  | guix package -l
  `----

  ,----
  | Generation 1    Apr 01 2023 22:53:12
  |   rsync 3.2.7   out
/gnu/store/4b1y4j6brjnm96qb6wjqi7sib53q26fq-rsync-3.2.7
  |   tree  2.1.0   out
/gnu/store/ra7fzgrq62x576qba61h78im9ib2dv6z-tree-2.1.0
  |
  | Generation 2    Apr 01 2023 22:53:41    (current)
  |  + emacs-ace-window     0.10.0  out
/gnu/store/vprb4gigq365j6ilz4swqsz38xbs1crb-emacs-ace-window-0.10.0
  |  + emacs-helpful        0.19    out
/gnu/store/0b4l2pvwid2anfx7bjhhbyybdk136c78-emacs-helpful-0.19
  |
  `----

  Upon completion, the directory
  `~/.guix-profile/share/emacs/site-lisp', where Emacs package are
  installed, looks as shown in the code block below. As you can see,
  each Emacs package is stored in a separated directory.

  ,----
  | tree ~/.guix-profile/share/emacs/site-lisp/
  `----

  ,----
  | /home/rdrg-test-3/.guix-profile/share/emacs/site-lisp/
  | ├── ace-window-0.10.0 ->
/gnu/store/vprb4gigq365j6ilz4swqsz38xbs1crb-emacs-ace-window-0.10.0/share/emacs/site-lisp/ace-window-0.10.0
  | ├── avy-0.5.0 ->
/gnu/store/c3jp5dpw092aw1l8d8i2jwnp83iclqpi-emacs-avy-0.5.0/share/emacs/site-lisp/avy-0.5.0
  | ├── dash-2.19.1 ->
/gnu/store/ncwjqjf9q1388zg8lmmzfkaqmab1fnyf-emacs-dash-2.19.1/share/emacs/site-lisp/dash-2.19.1
  | ├── elisp-refs-1.4 ->
/gnu/store/wr06162nwwq9wnlz98rrys6fxdfxm7j9-emacs-elisp-refs-1.4/share/emacs/site-lisp/elisp-refs-1.4
  | ├── f-0.20.0 ->
/gnu/store/7q27rdnpgm4dlmxbjdvqhwa3faf5jgpj-emacs-f-0.20.0/share/emacs/site-lisp/f-0.20.0
  | ├── helpful-0.19 ->
/gnu/store/0b4l2pvwid2anfx7bjhhbyybdk136c78-emacs-helpful-0.19/share/emacs/site-lisp/helpful-0.19
  | ├── list-utils-0.4.6-1.0dec8c0 ->
/gnu/store/6pk08kk43v6l18x0xcv0sfza5v4arz79-emacs-list-utils-0.4.6-1.0dec8c0/share/emacs/site-lisp/list-utils-0.4.6-1.0dec8c0
  | ├── loop-1.3 ->
/gnu/store/byy9n6v4p1jlnc8i7spddlazh92wk2iz-emacs-loop-1.3/share/emacs/site-lisp/loop-1.3
  | ├── s-1.13.0 ->
/gnu/store/k28wmfdxipddlj75v0y45v5qj5zpxziw-emacs-s-1.13.0/share/emacs/site-lisp/s-1.13.0
  | ├── shut-up-0.3.3 ->
/gnu/store/5hy0ajj9am768ggzrdchp00kkdvfzqqk-emacs-shut-up-0.3.3/share/emacs/site-lisp/shut-up-0.3.3
  | └── subdirs.el ->
/gnu/store/1h57s5v4lqjlpk36hvpgcrz4ihb886zx-emacs-subdirs/share/emacs/site-lisp/subdirs.el
  |
  | 11 directories, 1 file
  `----

  Now, let me revert to my first generation and install those two
  packages again and also include `emacs-ess'.

  ,----
  | guix package -S 1
  | guix package -d 2
  | guix package -i emacs-ace-window -i emacs-helpful -i emacs-ess
  `----

  Upon completion, the directory
  `~/.guix-profile/share/emacs/site-lisp/' looks as shown below. As you
  can see, besides the directory for some of the packages, there are
  multiple files that start with `ess-' which seem to belong to the
  `emacs-ess' package. In contrast with other packages, files from the
  Guix package `emacs-ess' live in
  `~/.guix-profile/share/emacs/site-lisp/' instead of a separated
  directory.

  ,----
  | tree ~/.guix-profile/share/emacs/site-lisp/
  `----

  ,----
  | /home/rdrg-test-3/.guix-profile/share/emacs/site-lisp/
  | ├── ace-window-0.10.0 ->
/gnu/store/vprb4gigq365j6ilz4swqsz38xbs1crb-emacs-ace-window-0.10.0/share/emacs/site-lisp/ace-window-0.10.0
  | ├── avy-0.5.0 ->
/gnu/store/c3jp5dpw092aw1l8d8i2jwnp83iclqpi-emacs-avy-0.5.0/share/emacs/site-lisp/avy-0.5.0
  | ├── dash-2.19.1 ->
/gnu/store/ncwjqjf9q1388zg8lmmzfkaqmab1fnyf-emacs-dash-2.19.1/share/emacs/site-lisp/dash-2.19.1
  | ├── elisp-refs-1.4 ->
/gnu/store/wr06162nwwq9wnlz98rrys6fxdfxm7j9-emacs-elisp-refs-1.4/share/emacs/site-lisp/elisp-refs-1.4
  | ├── ess-autoloads.el ->
/gnu/store/1549yjkgky3x6snn8kigc5cplphdicms-emacs-ess-18.10.2-0.24da603/share/emacs/site-lisp/ess-autoloads.el
  | ├── ess-bugs-d.el ->
/gnu/store/1549yjkgky3x6snn8kigc5cplphdicms-emacs-ess-18.10.2-0.24da603/share/emacs/site-lisp/ess-bugs-d.el
  | ├── ess-bugs-d.elc ->
/gnu/store/1549yjkgky3x6snn8kigc5cplphdicms-emacs-ess-18.10.2-0.24da603/share/emacs/site-lisp/ess-bugs-d.elc
  | ├── ess-bugs-l.el ->
/gnu/store/1549yjkgky3x6snn8kigc5cplphdicms-emacs-ess-18.10.2-0.24da603/share/emacs/site-lisp/ess-bugs-l.el
  | ├── ess-bugs-l.elc ->
/gnu/store/1549yjkgky3x6snn8kigc5cplphdicms-emacs-ess-18.10.2-0.24da603/share/emacs/site-lisp/ess-bugs-l.elc
  | ├── ess-custom.el ->
/gnu/store/1549yjkgky3x6snn8kigc5cplphdicms-emacs-ess-18.10.2-0.24da603/share/emacs/site-lisp/ess-custom.el
  | ├── ess-custom.elc ->
/gnu/store/1549yjkgky3x6snn8kigc5cplphdicms-emacs-ess-18.10.2-0.24da603/share/emacs/site-lisp/ess-custom.elc
  | ├── essd-els.el ->
/gnu/store/1549yjkgky3x6snn8kigc5cplphdicms-emacs-ess-18.10.2-0.24da603/share/emacs/site-lisp/essd-els.el
  | ├── essd-els.elc ->
/gnu/store/1549yjkgky3x6snn8kigc5cplphdicms-emacs-ess-18.10.2-0.24da603/share/emacs/site-lisp/essd-els.elc
  | ├── ess.el ->
/gnu/store/1549yjkgky3x6snn8kigc5cplphdicms-emacs-ess-18.10.2-0.24da603/share/emacs/site-lisp/ess.el
  | ├── ess.elc ->
/gnu/store/1549yjkgky3x6snn8kigc5cplphdicms-emacs-ess-18.10.2-0.24da603/share/emacs/site-lisp/ess.elc
  | ├── ess-gretl.el ->
/gnu/store/1549yjkgky3x6snn8kigc5cplphdicms-emacs-ess-18.10.2-0.24da603/share/emacs/site-lisp/ess-gretl.el
  | ├── ess-gretl.elc ->
/gnu/store/1549yjkgky3x6snn8kigc5cplphdicms-emacs-ess-18.10.2-0.24da603/share/emacs/site-lisp/ess-gretl.elc
  | ├── ess-help.el ->
/gnu/store/1549yjkgky3x6snn8kigc5cplphdicms-emacs-ess-18.10.2-0.24da603/share/emacs/site-lisp/ess-help.el
  | ├── ess-help.elc ->
/gnu/store/1549yjkgky3x6snn8kigc5cplphdicms-emacs-ess-18.10.2-0.24da603/share/emacs/site-lisp/ess-help.elc
  | ├── ess-inf.el ->
/gnu/store/1549yjkgky3x6snn8kigc5cplphdicms-emacs-ess-18.10.2-0.24da603/share/emacs/site-lisp/ess-inf.el
  | ├── ess-inf.elc ->
/gnu/store/1549yjkgky3x6snn8kigc5cplphdicms-emacs-ess-18.10.2-0.24da603/share/emacs/site-lisp/ess-inf.elc
  | ├── ess-jags-d.el ->
/gnu/store/1549yjkgky3x6snn8kigc5cplphdicms-emacs-ess-18.10.2-0.24da603/share/emacs/site-lisp/ess-jags-d.el
  | ├── ess-jags-d.elc ->
/gnu/store/1549yjkgky3x6snn8kigc5cplphdicms-emacs-ess-18.10.2-0.24da603/share/emacs/site-lisp/ess-jags-d.elc
  | ├── ess-julia.el ->
/gnu/store/1549yjkgky3x6snn8kigc5cplphdicms-emacs-ess-18.10.2-0.24da603/share/emacs/site-lisp/ess-julia.el
  | ├── ess-julia.elc ->
/gnu/store/1549yjkgky3x6snn8kigc5cplphdicms-emacs-ess-18.10.2-0.24da603/share/emacs/site-lisp/ess-julia.elc
  | ├── ess-mode.el ->
/gnu/store/1549yjkgky3x6snn8kigc5cplphdicms-emacs-ess-18.10.2-0.24da603/share/emacs/site-lisp/ess-mode.el
  | ├── ess-mode.elc ->
/gnu/store/1549yjkgky3x6snn8kigc5cplphdicms-emacs-ess-18.10.2-0.24da603/share/emacs/site-lisp/ess-mode.elc
  | ├── ess-r-completion.el ->
/gnu/store/1549yjkgky3x6snn8kigc5cplphdicms-emacs-ess-18.10.2-0.24da603/share/emacs/site-lisp/ess-r-completion.el
  | ├── ess-r-completion.elc ->
/gnu/store/1549yjkgky3x6snn8kigc5cplphdicms-emacs-ess-18.10.2-0.24da603/share/emacs/site-lisp/ess-r-completion.elc
  | ├── ess-rd.el ->
/gnu/store/1549yjkgky3x6snn8kigc5cplphdicms-emacs-ess-18.10.2-0.24da603/share/emacs/site-lisp/ess-rd.el
  | ├── ess-rd.elc ->
/gnu/store/1549yjkgky3x6snn8kigc5cplphdicms-emacs-ess-18.10.2-0.24da603/share/emacs/site-lisp/ess-rd.elc
  | ├── ess-rdired.el ->
/gnu/store/1549yjkgky3x6snn8kigc5cplphdicms-emacs-ess-18.10.2-0.24da603/share/emacs/site-lisp/ess-rdired.el
  | ├── ess-rdired.elc ->
/gnu/store/1549yjkgky3x6snn8kigc5cplphdicms-emacs-ess-18.10.2-0.24da603/share/emacs/site-lisp/ess-rdired.elc
  | ├── ess-r-flymake.el ->
/gnu/store/1549yjkgky3x6snn8kigc5cplphdicms-emacs-ess-18.10.2-0.24da603/share/emacs/site-lisp/ess-r-flymake.el
  | ├── ess-r-flymake.elc ->
/gnu/store/1549yjkgky3x6snn8kigc5cplphdicms-emacs-ess-18.10.2-0.24da603/share/emacs/site-lisp/ess-r-flymake.elc
  | ├── ess-r-mode.el ->
/gnu/store/1549yjkgky3x6snn8kigc5cplphdicms-emacs-ess-18.10.2-0.24da603/share/emacs/site-lisp/ess-r-mode.el
  | ├── ess-r-mode.elc ->
/gnu/store/1549yjkgky3x6snn8kigc5cplphdicms-emacs-ess-18.10.2-0.24da603/share/emacs/site-lisp/ess-r-mode.elc
  | ├── ess-roxy.el ->
/gnu/store/1549yjkgky3x6snn8kigc5cplphdicms-emacs-ess-18.10.2-0.24da603/share/emacs/site-lisp/ess-roxy.el
  | ├── ess-roxy.elc ->
/gnu/store/1549yjkgky3x6snn8kigc5cplphdicms-emacs-ess-18.10.2-0.24da603/share/emacs/site-lisp/ess-roxy.elc
  | ├── ess-r-package.el ->
/gnu/store/1549yjkgky3x6snn8kigc5cplphdicms-emacs-ess-18.10.2-0.24da603/share/emacs/site-lisp/ess-r-package.el
  | ├── ess-r-package.elc ->
/gnu/store/1549yjkgky3x6snn8kigc5cplphdicms-emacs-ess-18.10.2-0.24da603/share/emacs/site-lisp/ess-r-package.elc
  | ├── ess-r-syntax.el ->
/gnu/store/1549yjkgky3x6snn8kigc5cplphdicms-emacs-ess-18.10.2-0.24da603/share/emacs/site-lisp/ess-r-syntax.el
  | ├── ess-r-syntax.elc ->
/gnu/store/1549yjkgky3x6snn8kigc5cplphdicms-emacs-ess-18.10.2-0.24da603/share/emacs/site-lisp/ess-r-syntax.elc
  | ├── ess-r-xref.el ->
/gnu/store/1549yjkgky3x6snn8kigc5cplphdicms-emacs-ess-18.10.2-0.24da603/share/emacs/site-lisp/ess-r-xref.el
  | ├── ess-r-xref.elc ->
/gnu/store/1549yjkgky3x6snn8kigc5cplphdicms-emacs-ess-18.10.2-0.24da603/share/emacs/site-lisp/ess-r-xref.elc
  | ├── ess-sas-a.el ->
/gnu/store/1549yjkgky3x6snn8kigc5cplphdicms-emacs-ess-18.10.2-0.24da603/share/emacs/site-lisp/ess-sas-a.el
  | ├── ess-sas-a.elc ->
/gnu/store/1549yjkgky3x6snn8kigc5cplphdicms-emacs-ess-18.10.2-0.24da603/share/emacs/site-lisp/ess-sas-a.elc
  | ├── ess-sas-d.el ->
/gnu/store/1549yjkgky3x6snn8kigc5cplphdicms-emacs-ess-18.10.2-0.24da603/share/emacs/site-lisp/ess-sas-d.el
  | ├── ess-sas-d.elc ->
/gnu/store/1549yjkgky3x6snn8kigc5cplphdicms-emacs-ess-18.10.2-0.24da603/share/emacs/site-lisp/ess-sas-d.elc
  | ├── ess-sas-l.el ->
/gnu/store/1549yjkgky3x6snn8kigc5cplphdicms-emacs-ess-18.10.2-0.24da603/share/emacs/site-lisp/ess-sas-l.el
  | ├── ess-sas-l.elc ->
/gnu/store/1549yjkgky3x6snn8kigc5cplphdicms-emacs-ess-18.10.2-0.24da603/share/emacs/site-lisp/ess-sas-l.elc
  | ├── ess-site.el ->
/gnu/store/1549yjkgky3x6snn8kigc5cplphdicms-emacs-ess-18.10.2-0.24da603/share/emacs/site-lisp/ess-site.el
  | ├── ess-site.elc ->
/gnu/store/1549yjkgky3x6snn8kigc5cplphdicms-emacs-ess-18.10.2-0.24da603/share/emacs/site-lisp/ess-site.elc
  | ├── ess-s-lang.el ->
/gnu/store/1549yjkgky3x6snn8kigc5cplphdicms-emacs-ess-18.10.2-0.24da603/share/emacs/site-lisp/ess-s-lang.el
  | ├── ess-s-lang.elc ->
/gnu/store/1549yjkgky3x6snn8kigc5cplphdicms-emacs-ess-18.10.2-0.24da603/share/emacs/site-lisp/ess-s-lang.elc
  | ├── ess-sp6-d.el ->
/gnu/store/1549yjkgky3x6snn8kigc5cplphdicms-emacs-ess-18.10.2-0.24da603/share/emacs/site-lisp/ess-sp6-d.el
  | ├── ess-sp6-d.elc ->
/gnu/store/1549yjkgky3x6snn8kigc5cplphdicms-emacs-ess-18.10.2-0.24da603/share/emacs/site-lisp/ess-sp6-d.elc
  | ├── ess-toolbar.el ->
/gnu/store/1549yjkgky3x6snn8kigc5cplphdicms-emacs-ess-18.10.2-0.24da603/share/emacs/site-lisp/ess-toolbar.el
  | ├── ess-toolbar.elc ->
/gnu/store/1549yjkgky3x6snn8kigc5cplphdicms-emacs-ess-18.10.2-0.24da603/share/emacs/site-lisp/ess-toolbar.elc
  | ├── ess-tracebug.el ->
/gnu/store/1549yjkgky3x6snn8kigc5cplphdicms-emacs-ess-18.10.2-0.24da603/share/emacs/site-lisp/ess-tracebug.el
  | ├── ess-tracebug.elc ->
/gnu/store/1549yjkgky3x6snn8kigc5cplphdicms-emacs-ess-18.10.2-0.24da603/share/emacs/site-lisp/ess-tracebug.elc
  | ├── ess-trns.el ->
/gnu/store/1549yjkgky3x6snn8kigc5cplphdicms-emacs-ess-18.10.2-0.24da603/share/emacs/site-lisp/ess-trns.el
  | ├── ess-trns.elc ->
/gnu/store/1549yjkgky3x6snn8kigc5cplphdicms-emacs-ess-18.10.2-0.24da603/share/emacs/site-lisp/ess-trns.elc
  | ├── ess-utils.el ->
/gnu/store/1549yjkgky3x6snn8kigc5cplphdicms-emacs-ess-18.10.2-0.24da603/share/emacs/site-lisp/ess-utils.el
  | ├── ess-utils.elc ->
/gnu/store/1549yjkgky3x6snn8kigc5cplphdicms-emacs-ess-18.10.2-0.24da603/share/emacs/site-lisp/ess-utils.elc
  | ├── etc ->
/gnu/store/1549yjkgky3x6snn8kigc5cplphdicms-emacs-ess-18.10.2-0.24da603/share/emacs/site-lisp/etc
  | ├── f-0.20.0 ->
/gnu/store/7q27rdnpgm4dlmxbjdvqhwa3faf5jgpj-emacs-f-0.20.0/share/emacs/site-lisp/f-0.20.0
  | ├── helpful-0.19 ->
/gnu/store/0b4l2pvwid2anfx7bjhhbyybdk136c78-emacs-helpful-0.19/share/emacs/site-lisp/helpful-0.19
  | ├── julia-mode-0.4 ->
/gnu/store/p1vqy06h1il2x30c7zands5qyk6zjkrj-emacs-julia-mode-0.4/share/emacs/site-lisp/julia-mode-0.4
  | ├── list-utils-0.4.6-1.0dec8c0 ->
/gnu/store/6pk08kk43v6l18x0xcv0sfza5v4arz79-emacs-list-utils-0.4.6-1.0dec8c0/share/emacs/site-lisp/list-utils-0.4.6-1.0dec8c0
  | ├── loop-1.3 ->
/gnu/store/byy9n6v4p1jlnc8i7spddlazh92wk2iz-emacs-loop-1.3/share/emacs/site-lisp/loop-1.3
  | ├── s-1.13.0 ->
/gnu/store/k28wmfdxipddlj75v0y45v5qj5zpxziw-emacs-s-1.13.0/share/emacs/site-lisp/s-1.13.0
  | ├── shut-up-0.3.3 ->
/gnu/store/5hy0ajj9am768ggzrdchp00kkdvfzqqk-emacs-shut-up-0.3.3/share/emacs/site-lisp/shut-up-0.3.3
  | └── subdirs.el ->
/gnu/store/bxp09zqmhj6ml56b9mjq5bw9c64x34yc-emacs-subdirs/share/emacs/site-lisp/subdirs.el
  |
  | 13 directories, 62 files
  `----

  It is worth mentioning that the functions are still visible to Emacs
  because `~/.guix-profile/share/emacs/site-lisp/' is added to
  `load-path', by default. I confirmed this by creating a new user,
  installing Emacs, and printing the `load-path' (see two code blocks
  below).

  ,----
  | guix package -l
  `----

  ,----
  | Generation 1 Apr 02 2023 16:54:12 (current)
  |   emacs 28.2 out /gnu/store/ld5vp57gwxxmlm6kyk0y69i44g9shgag-emacs-28.2
  |
  `----

  ,----
  | emacs --batch --eval='(dolist (i load-path) (princ (concat i "\n")))' |
grep 'guix-profile'
  `----

  ,----
  | /home/rdrg-test-4/.guix-profile/share/emacs/site-lisp
  `----

  Because the functions are still loaded, I can still use them, so
  that's not a big problem. However, it doesn't seem clean to me because
  `ess-*' files are spilled over instead of existing in a separate
  directory under `~/.guix-profile/share/emacs/site-lisp/' as other
  packages do.


3 The questions
===============

  + Is there a reason why `ess' packages are spilled over instead of
    existing in a separated directory?
  + Does the `emacs-ess' Guix package need to be fixed?


4 Additional information
========================

  I looked up the Guix package definitions so as to try to find the root
  cause. I noticed that the two Emacs packages that I mentioned
  `emacs-ace-window' (see 1st code block below) and `emacs-helpful' (see
  2nd code block below) use `emacs-build-system', while `emacs-ess' (see
  3rd code block below) use `gnu-build-system'.

  ,----
  | (define-public emacs-ace-window
  |   (package
  |     (name "emacs-ace-window")
  |     (version "0.10.0")
  |     (source
  |      (origin
  |        (method git-fetch)
  |        (uri (git-reference
  |              (url "https://github.com/abo-abo/ace-window";)
  |              (commit version)))
  |        (file-name (git-file-name name version))
  |        (sha256
  |         (base32
  |          "0f3r40d5yxp2pm2j0nn86s29nqj8py0jxjbj50v4ci3hsd92d8jl"))))
  |     (build-system emacs-build-system)
  |     (propagated-inputs
  |      (list emacs-avy))
  |     (home-page "https://github.com/abo-abo/ace-window";)
  |     (synopsis "Quickly switch windows in Emacs")
  |     (description
  |      "@code{ace-window} is meant to replace @code{other-window}.
  | In fact, when there are only two windows present, @code{other-window} is
  | called.  If there are more, each window will have its first character
  | highlighted.  Pressing that character will switch to that window.")
  |     (license license:gpl3+)))
  `----

  ,----
  | (define-public emacs-helpful
  |   (let ((commit "1c98f6f06a85def5d34c735f8cd407f20cebddf9")
  |         (revision "1"))
  |     (package
  |       (name "emacs-helpful")
  |       (version (git-version "0.19" revision commit))
  |       (source
  |        (origin
  |          (method git-fetch)
  |          (uri (git-reference
  |                (url "https://github.com/Wilfred/helpful";)
  |                (commit commit)))
  |          (file-name (git-file-name name version))
  |          (sha256
  |           (base32
"18b5hjfji51zxjrxhkklxx3j9svk295awmxv8n95mp8ilas2kd3l"))))
  |       (build-system emacs-build-system)
  |       (propagated-inputs
  |        (list emacs-dash emacs-elisp-refs emacs-f emacs-s))
  |       (native-inputs
  |        (list emacs-ert-runner emacs-undercover))
  |       (arguments
  |        `(#:tests? #t
  |          #:test-command '("ert-runner")))
  |       (home-page "https://github.com/Wilfred/helpful";)
  |       (synopsis "More contextual information in Emacs help")
  |       (description "@code{helpful} is an alternative to the built-in
Emacs help
  | that provides much more contextual information.
  |
  | @itemize
  | @item Show the source code for interactively defined functions (unlike
the
  | built-in Help).
  | @item Fall back to the raw sexp if no source is available.
  | @item Show where a function is being called.
  | @item Docstrings will Highlight the summary (the first sentence),
include
  | cross-references, hide superfluous puncuation.
  | @item Show you the properties that have been applied to the current
  | symbol.  This provides visibility of features like edebug or byte-code
  | optimisation.
  | @item Provide a separate @code{helpful-command} function to view
interactive
  | functions.
  | @item Display any keybindings that apply to interactive functions.
  | @item Trace, disassemble functions from inside Helpful.  This is
discoverable
  | and doesn't require memorisation of commands.
  | @end itemize\n")
  |       (license license:gpl3+))))
  `----

  ,----
  | (define-public emacs-ess
  |   ;; Latest release is old.  This is not the latest commit either due
to bug
  |   ;; reported here: <https://github.com/emacs-ess/ESS/issues/987>.
  |   (let ((commit "24da603184ce39246611dd5b8602e769d7ebd5bf")
  |         (version "18.10.2")
  |         (revision "0"))
  |     (package
  |       (name "emacs-ess")
  |       (version (git-version version revision commit))
  |       (source
  |        (origin
  |          (method git-fetch)
  |          (uri (git-reference
  |                (url "https://github.com/emacs-ess/ESS";)
  |                (commit commit)))
  |          (sha256
  |           (base32
"0j98lv07nzwzd54d4dgcfz01wy5gj48m0mnirxzh5r45ik2myh1r"))
  |          (file-name (git-file-name name version))
  |          (modules '((guix build utils)))
  |          (snippet
  |           '(begin
  |              ;; Stop ESS from trying to bundle an external
julia-mode.el.
  |              (substitute* "lisp/Makefile"
  |                ((" \\$\\(JULIAS)") "")
  |                (("\ttest.*julia-mode.*\\.el") ""))
  |              ;; Only build docs in info format.
  |              (substitute* "doc/Makefile"
  |                (("all  : info text")
  |                 "all  : info")
  |                (("install: install-info install-other-docs")
  |                 "install: install-info"))
  |              ;; Stop install-info from trying to update the info
directory.
  |              (substitute* "doc/Makefile"
  |                ((".*/dir.*") ""))
  |              ;; Fix r-help-mode test.
  |              (substitute* "test/ess-test-r.el"
  |                (("\\(equal ess-help-object \"plot.default\")") "t"))
  |              ;; Avoid generating ess-autoloads.el twice.
  |              (substitute* "Makefile"
  |                (("all: lisp doc etc autoloads")
  |                 "all: lisp doc etc"))
  |              ;; Install to correct directories.
  |              (substitute* "Makefile"
  |                (("mkdir -p \\$\\(ESSDESTDIR)")
  |                 "$(MAKE) -C lisp install; $(MAKE) -C doc install")
  |                (("\\$\\(INSTALL) -R \\./\\* \\$\\(ESSDESTDIR)/")
  |                 "$(MAKE) -C etc install"))
  |              #t))
  |          (patches
  |           (search-patches
"emacs-ess-fix-obsolete-function-alias.patch"))))
  |       (build-system gnu-build-system)
  |       (arguments
  |        (let ((base-directory "/share/emacs/site-lisp"))
  |          `(#:make-flags (list (string-append "PREFIX=" %output)
  |                               (string-append "ETCDIR=" %output
  |                                              ,base-directory "/etc")
  |                               (string-append "LISPDIR=" %output
  |                                              ,base-directory)
  |                               (string-append "INFODIR=" %output
  |                                              "/share/info"))
  |            #:phases
  |            (modify-phases %standard-phases
  |              (delete 'configure)
  |              (replace 'check
  |                (lambda _ (invoke "make" "test")))))))
  |       (native-inputs
  |        (list perl r-roxygen2 texinfo))
  |       (inputs
  |        `(("emacs" ,emacs-minimal)
  |          ("r-minimal" ,r-minimal)))
  |       (propagated-inputs
  |        (list emacs-julia-mode))
  |       (home-page "https://ess.r-project.org/";)
  |       (synopsis "Emacs mode for statistical analysis programs")
  |       (description
  |        "Emacs Speaks Statistics (ESS) is an add-on package for GNU
Emacs.  It
  | is designed to support editing of scripts and interaction with various
  | statistical analysis programs such as R, Julia, and JAGS.")
  |       (license license:gpl3+))))
  `----


reply via email to

[Prev in Thread] Current Thread [Next in Thread]