lilyp pushed a commit to branch master
in repository guix.

commit 5c7b3070925905208848df7679f3b5d636132cba
Author: Lee Thompson <[email protected]>
AuthorDate: Wed Apr 9 16:32:53 2025 +0200

    gnu: Add emacs-bqn-mode.
    
    * gnu/packages/emacs-xyz.scm (emacs-bqn-mode): New variable.
    
    Change-Id: Ibe9a32c4f8414dbc5d3bb350aa684a8f3e15c567
    Signed-off-by: Liliana Marie Prikler <[email protected]>
---
 gnu/packages/emacs-xyz.scm | 45 +++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 45 insertions(+)

diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 258046ad38..e8eb36bb78 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -489,6 +489,51 @@ There are many more ways to organize and display your 
bookmarks.  I recommend
 reading the extensive documentation about BookmarkPlus on the Emacs Wiki.")
     (license license:gpl3+)))
 
+(define-public emacs-bqn-mode
+  (package
+    (name "emacs-bqn-mode")
+    ;; upstream releases are tagged by date
+    (version "2024-09-10")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/museoa/bqn-mode/";)
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0a4whlx8065c15nfyqy8176mwysnc13z4q7mmdfnf6skdnvi2pk6"))))
+    (build-system emacs-build-system)
+    (arguments
+     (list
+      #:tests? #f ;No tests found in source
+      #:phases
+      #~(modify-phases %standard-phases
+          ;; `bqn-comint-bring' in `bqn-mode.el' uses the macro
+          ;; `thread-last', defined in `subr-x.el' but not autoloaded.
+          ;; `emacs-build-system' will happily byte-compile `bqn-mode.el'
+          ;; but interactively calling `bqn-comint-bring' will cause an
+          ;; error.  An explicit call to `(require 'subr-x)' remedies the
+          ;; issue until it is fixed upstream.
+          (add-after 'unpack 'require-subr-x
+            (lambda _
+              (emacs-batch-edit-file "bqn-mode.el"
+                                     '(progn (goto-char (point-min))
+                                             (re-search-forward
+                                              "(require 'pulse)")
+                                             (forward-line)
+                                             (insert "(require 'subr-x)\n")
+                                             (basic-save-buffer))))))))
+    (propagated-inputs (list emacs-compat))
+    (synopsis "Emacs major mode for the BQN programming language")
+    (description
+     "This package provides a major mode for editing and executing BQN code.
+It can be used to interactively evaluate BQN code in buffer or can be used to
+launch BQN REPL sessions.  For evaluating BQN code or spawning interpreters an
+executable implementation is required such as @code{cbqn} or @code{dbqn}.")
+    (home-page "https://github.com/museoa/bqn-mode/";)
+    (license license:gpl3)))
+
 (define-public emacs-cfrs
   (package
     (name "emacs-cfrs")

Reply via email to