summary refs log tree commit diff
path: root/gnu/packages
diff options
context:
space:
mode:
authorOleg Pykhalov <go.wigust@gmail.com>2018-05-02 19:01:08 +0300
committerOleg Pykhalov <go.wigust@gmail.com>2018-05-02 20:17:11 +0300
commit9968e444c5f86667e14c405550316e971d575742 (patch)
treea8b2c0503c260f0eb4dfd4c031d1e86136e775c1 /gnu/packages
parente33dba1564f9ef32cc202fb19bbe0b90f0ef4a4b (diff)
downloadguix-9968e444c5f86667e14c405550316e971d575742.tar.gz
gnu: Add emacs-macrostep.
* gnu/packages/emacs.scm (emacs-macrostep): New public variable.
Diffstat (limited to 'gnu/packages')
-rw-r--r--gnu/packages/emacs.scm50
1 files changed, 50 insertions, 0 deletions
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index 01e2e95509..ffa12c0c9b 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -8804,3 +8804,53 @@ your Emacs.")
     (synopsis "Sourcemap parser")
     (description "Sourcemap parser")
     (license license:gpl3+)))
+
+(define-public emacs-macrostep
+  (let ((commit "424e3734a1ee526a1bd7b5c3cd1d3ef19d184267"))
+    (package
+      (name "emacs-macrostep")
+      (version (git-version "0.9" "1" commit))
+      (source (origin
+                (method git-fetch)
+                (uri (git-reference
+                      (url "https://github.com/joddie/macrostep.git")
+                      (commit commit)))
+                (file-name (string-append name "-" version "-checkout"))
+                (sha256
+                 (base32
+                  "1fm40mxdn289cyzgw992223dgrjmwxn4q8svyyxfaxjrpb38jhjz"))))
+      (build-system emacs-build-system)
+      (arguments
+       '(#:phases
+         (modify-phases %standard-phases
+           (add-before 'check 'remove-test
+             ;; Fails because of requirement ‘/bin/sh’.
+             (lambda _
+               (let ((file "macrostep-test.el"))
+                 (chmod file #o644)
+                 (emacs-batch-edit-file file
+                   `(progn (progn (goto-char (point-min))
+                                  (re-search-forward
+                                   "(ert-deftest macrostep-expand-c-macros")
+                                  (beginning-of-line)
+                                  (kill-sexp))
+                           (basic-save-buffer))))))
+           (add-before 'install 'check
+             (lambda _
+               (invoke "emacs" "--batch" "-L" "."
+                       "-l" "macrostep-test.el"
+                       "-f" "ert-run-tests-batch-and-exit"))))))
+      (home-page "https://github.com/joddie/macrostep")
+      (synopsis "Interactive macro-expander for Emacs")
+      (description "@code{macrostep} is an Emacs minor mode for interactively
+stepping through the expansion of macros in Emacs Lisp source code.  It lets
+you see exactly what happens at each step of the expansion process by
+pretty-printing the expanded forms inline in the source buffer, which is
+temporarily read-only while macro expansions are visible.  You can expand and
+collapse macro forms one step at a time, and evaluate or instrument the
+expansions for debugging with Edebug as normal (but see “Bugs and known
+limitations”, below).  Single-stepping through the expansion is particularly
+useful for debugging macros that expand into another macro form.  These can be
+difficult to debug with Emacs’ built-in macroexpand, which continues expansion
+until the top-level form is no longer a macro call.")
+      (license license:gpl3+))))