summary refs log tree commit diff
diff options
context:
space:
mode:
authorJoeke <joeke@posteo.net>2022-12-16 14:05:43 +0100
committerNicolas Goaziou <mail@nicolasgoaziou.fr>2022-12-16 18:34:17 +0100
commitb770ecb57e06b3db5c05773b9125afd61f291a40 (patch)
tree0f953595923c15881ac8dfdd6a5c58d8335690b5
parent48a2f54dc20d4cabfede18fda4fa5267ea618725 (diff)
downloadguix-b770ecb57e06b3db5c05773b9125afd61f291a40.tar.gz
gnu: Add emacs-islisp-mode.
* gnu/packages/emacs-xyz.scm (emacs-islisp-mode): New variable.

Signed-off-by: Nicolas Goaziou <mail@nicolasgoaziou.fr>
-rw-r--r--gnu/packages/emacs-xyz.scm50
1 files changed, 50 insertions, 0 deletions
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 455317b15d..9069b452ea 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -118,6 +118,7 @@
 ;;; Copyright © 2022 Hilton Chain <hako@ultrarare.space>
 ;;; Copyright © 2022 Nicolas Graves <ngraves@ngraves.fr>
 ;;; Copyright © 2022 Thiago Jung Bauermann <bauermann@kolabnow.com>
+;;; Copyright © 2022 Joeke de Graaf <joeke@posteo.net>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -195,6 +196,7 @@
   #:use-module (gnu packages image)
   #:use-module (gnu packages linux)
   #:use-module (gnu packages libevent)
+  #:use-module (gnu packages lisp)
   #:use-module (gnu packages lisp-xyz)
   #:use-module (gnu packages lsof)
   #:use-module (gnu packages lua)
@@ -13253,6 +13255,54 @@ you a @code{helm} selection of directory Makefile's targets.  Selecting a
 target will call @code{compile} on it.")
       (license license:gpl3+))))
 
+(define-public emacs-islisp-mode
+  (package
+    (name "emacs-islisp-mode")
+    (version "0.3.1")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://gitlab.com/sasanidas/islisp-mode")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1s6alrv1hfi1plj5lh826j0h71xvm2v092kglj3yvy34g73dgrna"))))
+    (build-system emacs-build-system)
+    (arguments
+     (list
+      #:include #~(cons "\\.lsp$" %default-include)
+      #:phases
+      #~(modify-phases %standard-phases
+          ;; Move the extensions source files to the top level, which is
+          ;; included in the EMACSLOADPATH.
+          (add-after 'unpack 'move-source-files
+            (lambda _
+              (for-each (lambda (dir)
+                          (let ((files (find-files dir "\\.(lsp|el)$")))
+                            (for-each (lambda (f)
+                                        (rename-file f (basename f)))
+                                      files)))
+                        '("advance" "implementations/easy-islisp"))))
+          (add-after 'move-source-files 'patch-eisl-variables
+            (lambda* (#:key inputs #:allow-other-keys)
+              (emacs-substitute-variables "easy-islisp.el"
+                ("easy-islisp-executable"
+                 (search-input-file inputs "/bin/eisl"))
+                ("easy-islisp-library-directory"
+                 `(or (getenv "EASY_ISLISP")
+                      ,(search-input-directory inputs "share/eisl/library")))))))))
+    (inputs (list eisl))
+    (home-page "https://gitlab.com/sasanidas/islisp-mode")
+    (synopsis "ISLisp support for Emacs")
+    (description
+     "This package provides support for programming with ISLisp in Emacs.  It
+features a major mode with syntax highlighting, symbol autocompletion and
+documentation search, among other features.  It also includes an inferior mode
+with REPL integration.  Currently it only supports the Easy ISLisp (eisl)
+implementation.")
+    (license license:gpl3+)))
+
 (define-public emacs-cider
   (package
     (name "emacs-cider")