guix-devel
[Top][All Lists]
Advanced

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

Re: Emacs minor-mode highlight code stages (gexp & sexp)


From: Oleg Pykhalov
Subject: Re: Emacs minor-mode highlight code stages (gexp & sexp)
Date: Wed, 22 Nov 2017 09:21:15 +0300
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/25.3 (gnu/linux)

Hello,

Still no reply on https://github.com/zk-phi/highlight-stages/issues/10

I prepared a patch and could merge it if you agree.

From aad1089320315f58147d84e7ff35b3f1f89032a9 Mon Sep 17 00:00:00 2001
From: Oleg Pykhalov <address@hidden>
Date: Wed, 22 Nov 2017 09:10:24 +0300
Subject: [PATCH] gnu: Add emacs-highlight-stages.

* gnu/packages/emacs.scm (emacs-highlight-stages): New variable.
---
 gnu/local.mk                                       |  1 +
 gnu/packages/emacs.scm                             | 25 +++++++++++++++++++++
 .../patches/emacs-highlight-stages-add-gexp.patch  | 26 ++++++++++++++++++++++
 3 files changed, 52 insertions(+)
 create mode 100644 gnu/packages/patches/emacs-highlight-stages-add-gexp.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 0993c4587..46095ca95 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -608,6 +608,7 @@ dist_patch_DATA =                                           
\
   %D%/packages/patches/einstein-build.patch                    \
   %D%/packages/patches/emacs-exec-path.patch                   \
   %D%/packages/patches/emacs-fix-scheme-indent-function.patch  \
+  %D%/packages/patches/emacs-highlight-stages-add-gexp.patch   \
   %D%/packages/patches/emacs-scheme-complete-scheme-r5rs-info.patch    \
   %D%/packages/patches/emacs-source-date-epoch.patch           \
   %D%/packages/patches/erlang-man-path.patch                   \
diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm
index e7e93f154..71a47978e 100644
--- a/gnu/packages/emacs.scm
+++ b/gnu/packages/emacs.scm
@@ -4851,6 +4851,31 @@ jQuery and Bootstrap resources included via osscdn.")
      "This Emacs package highlights the s-exp at the current position.")
     (license license:gpl3+)))
 
+(define-public emacs-highlight-stages
+  (let ((commit "29cbc5b78261916da042ddb107420083da49b271")
+        (revision "1"))
+    (package
+      (name "emacs-highlight-stages")
+      (version (string-append "1.1.0" "-" revision "." (string-take commit 7)))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/zk-phi/highlight-stages.git";)
+               (commit commit)))
+         (file-name (string-append name "-" version "-checkout"))
+         (sha256
+          (base32
+           "0r6nbcrr0dqpgm8dir8ahzjy7rw4nrac48byamzrq96r7ajlxlv0"))
+         (patches
+          (search-patches "emacs-highlight-stages-add-gexp.patch"))))
+      (build-system emacs-build-system)
+      (home-page "https://github.com/wigust/highlight-stages";)
+      (synopsis "Minor mode that highlights (quasi-quoted) expressions")
+      (description "@code{highlight-stages} provides an Emacs minor mode that
+highlights quasi-quoted expressions.")
+      (license license:gpl3+))))
+
 (define-public emacspeak
   (package
     (name "emacspeak")
diff --git a/gnu/packages/patches/emacs-highlight-stages-add-gexp.patch 
b/gnu/packages/patches/emacs-highlight-stages-add-gexp.patch
new file mode 100644
index 000000000..931355b4f
--- /dev/null
+++ b/gnu/packages/patches/emacs-highlight-stages-add-gexp.patch
@@ -0,0 +1,26 @@
+Copyright © 2017 Oleg Pykhalov <address@hidden>
+Copyright © 2017 Ludovic Courtès <address@hidden>
+
+This patch adds highlighting for (guix) G-Expressions.
+
+diff --git a/highlight-stages.el b/highlight-stages.el
+index 3094c3c..e11260e 100644
+--- a/highlight-stages.el
++++ b/highlight-stages.el
+@@ -237,14 +237,14 @@ non-nil, (match-string 0) must be the expression 
matched."
+ 
+ (defun highlight-stages-lisp-quote-matcher (&optional limit)
+   (when (highlight-stages--search-forward-regexp
+-         
"\\(?:`\\|\\(#?'\\)\\)\\|([\s\t\n]*\\(?:backquote\\|\\(quote\\)\\)[\s\t\n]+" 
limit)
++         
"\\(?:`\\|\\(#?'\\)\\)\\|([\s\t\n]*\\(?:backquote\\|\\(quote\\)\\)[\s\t\n]+\\|\\(?:#~\\)\\|([\s\t\n]*\\(?:gexp\\)[\s\t\n]+"
 limit)
+     (prog1 (if (or (match-beginning 1) (match-beginning 2)) 'real t)
+       (set-match-data
+        (list (point)
+              (progn (ignore-errors (forward-sexp 1)) (point)))))))
+ 
+ (defun highlight-stages-lisp-escape-matcher (&optional limit)
+-  (when (highlight-stages--search-forward-regexp 
",@?\\|([\s\t\n]*\\\\,@?+[\s\t\n]+" limit)
++  (when (highlight-stages--search-forward-regexp 
",@?\\|([\s\t\n]*\\\\,@?+[\s\t\n]+\\|\\(unquote\\)\\|\\(unquote-splicing\\)\\|\\(ungexp-native\\)\\|\\(ungexp-splicing\\)\\|\\(ungexp-native-splicing\\)\\|\\(ungexp\\)\\|#\\$"
 limit)
+     (set-match-data
+      (list (point)
+            (progn (ignore-errors (forward-sexp 1)) (point))))
-- 
2.15.0

Thanks,
Oleg.

Attachment: signature.asc
Description: PGP signature


reply via email to

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