summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPierre Neidhardt <mail@ambrevar.xyz>2022-07-03 18:07:07 +0200
committerPierre Neidhardt <mail@ambrevar.xyz>2022-07-03 18:55:16 +0200
commitff272ef6c8d9bc76af2c737aadae131a9be79c0c (patch)
tree73b2bee2ddfa5cb711ad26324e8ad3bde77a3e17
parentf8956ea03eda0600992020a7e1ca10fe3f094512 (diff)
nongnu: Add emacs-eli.
* nongnu/packages/emacs.scm (emacs-eli): New variable.
-rw-r--r--nongnu/packages/emacs.scm63
1 files changed, 62 insertions, 1 deletions
diff --git a/nongnu/packages/emacs.scm b/nongnu/packages/emacs.scm
index 4e070e2..3d3b3eb 100644
--- a/nongnu/packages/emacs.scm
+++ b/nongnu/packages/emacs.scm
@@ -20,8 +20,11 @@
(define-module (nongnu packages emacs)
#:use-module (guix packages)
#:use-module (guix build-system emacs)
+ #:use-module (guix build-system copy)
#:use-module (guix download)
- #:use-module (nonguix licenses))
+ #:use-module (guix git-download)
+ #:use-module (nonguix licenses)
+ #:use-module (nongnu packages lisp))
(define-public clhs
(package
@@ -70,3 +73,61 @@ browsing. An Emacs package is provided for easy access. Load it with:
@end lisp
")
(license (nonfree "http://quickdocs.org/clhs/"))))
+
+(define-public emacs-eli
+ ;; 10.1 HEAD has a fix for Emacs 28.1, as opposed to the latest "express" tag.
+ (let ((commit "8f9a8b9eb1aa518774c54d51e4f38ba534356415"))
+ (package
+ (name "emacs-eli")
+ (version (git-version "acl10.1express_Feb2022update2022-02-11" "1" commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/franzinc/eli/")
+ (commit commit)))
+ (file-name (git-file-name "emacs-eli" version))
+ (sha256
+ (base32
+ "0w1hdkr9x3byf1l6dbcbnd4x8110wvps3527ivyj1bmdk1hyqnzb"))))
+ ;; The `emacs-build-system' fails here, probably because ELI is meant to
+ ;; be load with (load "fi-site-init.el") and not with `require'. See
+ ;; https://franz.com/emacs/.
+ (build-system copy-build-system)
+ (inputs (list allegro-cl))
+ (arguments
+ `(#:install-plan
+ `(("." ,,(string-append "share/emacs/site-lisp/eli-" version)
+ ;; Remove useless Windows or build files.
+ #:exclude ("emacsdir.pl" "nsis" "Makefile" "local.mak")))
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'patch-paths
+ (lambda* (#:key inputs #:allow-other-keys)
+ (let ((allegro-cl (assoc-ref inputs "allegro-cl")))
+ ;; FIXME: Can't get `emacs-substitute-variables' to work here, why?
+ (substitute* "fi-vars.el"
+ (("defvar fi:common-lisp-image-name \"alisp\"")
+ (string-append "defvar fi:common-lisp-image-name \""
+ allegro-cl "/bin/alisp\""))
+ (("defvar fi:common-lisp-image-file nil")
+ (string-append "defvar fi:common-lisp-image-file \""
+ allegro-cl "/share/allegro-cl/alisp.dxl\""))
+ (("defvar fi:common-lisp-directory nil")
+ (string-append "defvar fi:common-lisp-directory \""
+ allegro-cl "/share/allegro-cl\"")))))))))
+ (home-page "https://franz.com/emacs/")
+ (synopsis "Allegro Common Lisp Emacs interface")
+ (description
+ "An integral part of the Allegro CL programming environment is the interface
+between Emacs and Allegro CL, hereafter referred to as the Emacs-Lisp
+interface. This interface allows the editing and running of Common Lisp
+programs, and contains enhancements that allow a tight coupling between Emacs
+and Lisp, very similar to those which used to be available only on Lisp
+machines.
+
+To load it, call @code{(load \"fi-site-init.el\")} from Emacs.
+Then you can start Allegro CL by entering @code{M-x fi:common-lisp}.")
+ ;; While this may be a free license, this Emacs package is only useful
+ ;; with the non-free Allegro CL.
+ (license (nonfree "https://raw.githubusercontent.com/franzinc/eli/acl10.1express_Feb2022update2022-02-11/LICENSE")))))