[PATCH] gnu: Add emacs-nim-mode

OpenSubmitted by (unmatched-parenthesis.
Details
4 participants
  • Ludovic Courtès
  • Nicolas Goaziou
  • Maxime Devos
  • (unmatched-parenthesis
Owner
unassigned
Severity
normal
(
(
(unmatched-parenthesis wrote on 23 Jan 14:38 +0100
(address . guix-patches@gnu.org)(name . (unmatched-parenthesis)(address . paren@disroot.org)
20220123133837.1035-1-paren@disroot.org
* gnu/packages/emacs-xyz.scm(emacs-nim-mode): New variable.
---
gnu/packages/emacs-xyz.scm | 29 +++++++++++++++++++++++++++++
1 file changed, 29 insertions(+)

Toggle diff (46 lines)
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 8edbfc5a3d..d2508748a9 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -107,6 +107,7 @@
 ;;; Copyright © 2021 Brian Kubisiak <brian@kubisiak.com>
 ;;; Copyright © 2021, 2022 Taiju HIGASHI <higashi@taiju.info>
 ;;; Copyright © 2022 Brandon Lucas <br@ndon.dk>
+;;; Copyright © 2022 (unmatched parenthesis <paren@disroot.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -29837,3 +29838,31 @@ (define-public emacs-fennel-mode
      "Fennel mode provides font-lock, indentation, navigation, and REPL for
  Fennel code within Emacs.")
     (license license:gpl3+)))
+
+(define-public emacs-nim-mode
+  ;; The last tag was 0.4.1 in 2017. There have been many more commits since then.
+  (let ((commit "744e076f0bea1c5ddc49f92397d9aa98ffa7eff8")
+        (revision "0"))
+    (package
+      (name "emacs-nim-mode")
+      (version (git-version "0.4.1" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/nim-lang/nim-mode")
+               (commit version)))
+         (sha256
+          (base32 "0dwas3ivhxdyw6njkcadc8c17cirq325cmby04qls8zkmrvlil1w"))))
+      (build-system emacs-build-system)
+      (home-page "https://github.com/nim-lang/nim-mode")
+      (synopsis "Major mode for editing Nim source code")
+      (description "This package provides major modes for Nim:
+@itemize
+@item Syntax highlighting for Nim code, Nimble configuration files, and nim.cfg
+@item `M-x nim-compile`, which can also be invoked with `C-c C-c` inside a Nim source file
+@item File outline by procedures
+@item Indentation and line breaking (alpha)
+@item Integration with nimsuggest, the Nim linting and completion server (alpha, both nimsuggest-mode and nimsuggest itself are currently VERY unstable and may make emacs much less responsive)
+@end itemize")
+      (license license:gpl3+))))
-- 
2.34.0
M
M
Maxime Devos wrote on 23 Jan 17:21 +0100
e6f821f04f1c61aed725233ac97cc9499ae91010.camel@telenet.be
(unmatched-parenthesis via Guix-patches via schreef op zo 23-01-2022 om
13:38 [+0000]:
Toggle quote (8 lines)
> +      (version (git-version "0.4.1" revision commit))
> +      (source
> +       (origin
> +         (method git-fetch)
> +         (uri (git-reference
> +               (url "https://github.com/nim-lang/nim-mode")
> +               (commit version)))

I don't think there's a tag by the name "0.4.1-23.744e076"
in the git repo. Try (git-reference ... (commit commit)) instead.

Greetings,
Maxime.
-----BEGIN PGP SIGNATURE-----

iI0EABYKADUWIQTB8z7iDFKP233XAR9J4+4iGRcl7gUCYe2AdxccbWF4aW1lZGV2
b3NAdGVsZW5ldC5iZQAKCRBJ4+4iGRcl7neKAQCxU5JqJ6NoYsGei/WtgMvRkosQ
w1nNQE+39ryBb6LoEQEAyY4u0hHor6gJ4iqmMyfjSxZRqT2f6qNVeJpz9UUBDQM=
=tc9N
-----END PGP SIGNATURE-----


P
(name . Maxime Devos)(address . maximedevos@telenet.be)(address . 53472@debbugs.gnu.org)
976be05a828735584d209ae9862d7532@disroot.org
Toggle quote (3 lines)
> I don't think there's a tag by the name "0.4.1-23.744e076"
> in the git repo. Try (git-reference ... (commit commit)) instead.

Oops! I automatically wrote (commit version) out of habit :)
One moment...
(
(
(unmatched-parenthesis wrote on 24 Jan 19:40 +0100
[PATCH v2] gnu: Add emacs-nim-mode
(address . 53472@debbugs.gnu.org)(name . (unmatched-parenthesis)(address . paren@disroot.org)
20220124184037.21204-1-paren@disroot.org
Sorry about that!

* gnu/packages/emacs-xyz.scm(emacs-nim-mode): New variable.
---
gnu/packages/emacs-xyz.scm | 28 ++++++++++++++++++++++++++++
1 file changed, 28 insertions(+)

Toggle diff (45 lines)
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 8edbfc5a3d..34ac0d4dae 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -107,6 +107,7 @@
 ;;; Copyright © 2021 Brian Kubisiak <brian@kubisiak.com>
 ;;; Copyright © 2021, 2022 Taiju HIGASHI <higashi@taiju.info>
 ;;; Copyright © 2022 Brandon Lucas <br@ndon.dk>
+;;; Copyright © 2022 (unmatched parenthesis <paren@disroot.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -29837,3 +29838,30 @@ (define-public emacs-fennel-mode
      "Fennel mode provides font-lock, indentation, navigation, and REPL for
  Fennel code within Emacs.")
     (license license:gpl3+)))
+
+(define-public emacs-nim-mode
+  (let ((commit "744e076f0bea1c5ddc49f92397d9aa98ffa7eff8")
+        (revision "0"))
+    (package
+      (name "emacs-nim-mode")
+      (version (git-version "0.4.1" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/nim-lang/nim-mode")
+               (commit commit)))
+         (sha256
+          (base32 "0dwas3ivhxdyw6njkcadc8c17cirq325cmby04qls8zkmrvlil1w"))))
+      (build-system emacs-build-system)
+      (home-pace "https://github.com/nim-lang/nim-mode")
+      (synosis "Major mode for editing Nim source code")
+      (description "This package provides major modes for Nim:
++@itemize
++@item Syntax highlighting for Nim code, Nimble configuration files, and nim.cfg
++@item `M-x nim-compile`, which can also be invoked with `C-c C-c` inside a Nim source file
++@item File outline by procedures
++@item Indentation and line breaking (alpha)
++@item Integration with nimsuggest, the Nim linting and completion server (alpha, both nimsuggest-mode and nimsuggest itself are currently VERY unstable and may make emacs much less responsive)
++@end itemize")
+      (license license:gpl3+))))
-- 
2.34.0
(
(
(unmatched-parenthesis wrote on 24 Jan 20:00 +0100
[PATCH v3] gnu: Add emacs-nim-mode
(address . 53472@debbugs.gnu.org)(name . (unmatched-parenthesis)(address . paren@disroot.org)
20220124190058.21503-1-paren@disroot.org
Aren't typos fun.

* gnu/packages/emacs-xyz.scm(emacs-nim-mode): New variable.
---
gnu/packages/emacs-xyz.scm | 28 ++++++++++++++++++++++++++++
1 file changed, 28 insertions(+)

Toggle diff (45 lines)
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 8edbfc5a3d..e7a7edbd14 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -107,6 +107,7 @@
 ;;; Copyright © 2021 Brian Kubisiak <brian@kubisiak.com>
 ;;; Copyright © 2021, 2022 Taiju HIGASHI <higashi@taiju.info>
 ;;; Copyright © 2022 Brandon Lucas <br@ndon.dk>
+;;; Copyright © 2022 (unmatched parenthesis <paren@disroot.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -29837,3 +29838,30 @@ (define-public emacs-fennel-mode
      "Fennel mode provides font-lock, indentation, navigation, and REPL for
  Fennel code within Emacs.")
     (license license:gpl3+)))
+
+(define-public emacs-nim-mode
+  (let ((commit "744e076f0bea1c5ddc49f92397d9aa98ffa7eff8")
+        (revision "0"))
+    (package
+      (name "emacs-nim-mode")
+      (version (git-version "0.4.1" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/nim-lang/nim-mode")
+               (commit commit)))
+         (sha256
+          (base32 "0dwas3ivhxdyw6njkcadc8c17cirq325cmby04qls8zkmrvlil1w"))))
+      (build-system emacs-build-system)
+      (home-page "https://github.com/nim-lang/nim-mode")
+      (synopsis "Major mode for editing Nim source code")
+      (description "This package provides major modes for Nim:
++@itemize
++@item Syntax highlighting for Nim code, Nimble configuration files, and nim.cfg
++@item `M-x nim-compile`, which can also be invoked with `C-c C-c` inside a Nim source file
++@item File outline by procedures
++@item Indentation and line breaking (alpha)
++@item Integration with nimsuggest, the Nim linting and completion server (alpha, both nimsuggest-mode and nimsuggest itself are currently VERY unstable and may make emacs much less responsive)
++@end itemize")
+      (license license:gpl3+))))
-- 
2.34.0
(
(
(unmatched-parenthesis wrote on 24 Jan 21:12 +0100
[PATCH v4] gnu: Add emacs-nim-mode
(address . 53472@debbugs.gnu.org)(name . (unmatched-parenthesis)(address . paren@disroot.org)
20220124201247.30159-1-paren@disroot.org
Well, that was embarrassing... the package was completely wrong and `guix package -i emacs-nim-mode` would have actually installed `emacs-fennel-mode`... Always test things, I guess.

* gnu/packages/emacs-xyz.scm(emacs-nim-mode): New variable.
---
gnu/packages/emacs-xyz.scm | 46 ++++++++++++++++++++++++++++++++++++++
1 file changed, 46 insertions(+)

Toggle diff (63 lines)
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 8edbfc5a3d..78650d0c52 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -107,6 +107,7 @@
 ;;; Copyright © 2021 Brian Kubisiak <brian@kubisiak.com>
 ;;; Copyright © 2021, 2022 Taiju HIGASHI <higashi@taiju.info>
 ;;; Copyright © 2022 Brandon Lucas <br@ndon.dk>
+;;; Copyright © 2022 (unmatched parenthesis <paren@disroot.org>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -29837,3 +29838,48 @@ (define-public emacs-fennel-mode
      "Fennel mode provides font-lock, indentation, navigation, and REPL for
  Fennel code within Emacs.")
     (license license:gpl3+)))
+
+(define-public emacs-commenter
+  (package
+    (name "emacs-commenter")
+    (version "0.5.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/yuutayamada/commenter/archive/refs/tags/v" version ".tar.gz"))
+       (sha256
+        (base32 "1n9m8f4gflb0c3nh98nkmsqzscyf5d1p1gcz8apskkmf7z0z0q2j"))))
+    (build-system emacs-build-system)
+    (home-page "https://github.com/yuutayamada/commenter")
+    (synopsis "Allows you to set both single and multi line comment variables like @code{comment-start} or @code{comment-end} etc.")
+    (description "This package allows you to set both single and multi line comment variables like @code{comment-start} or @code{comment-end} etc.")
+    (license license:gpl3+)))
+
+(define-public emacs-nim-mode
+  (let ((commit "744e076f0bea1c5ddc49f92397d9aa98ffa7eff8")
+        (revision "0"))
+    (package
+      (name "emacs-nim-mode")
+      (version (git-version "0.4.1" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/nim-lang/nim-mode")
+               (commit commit)))
+         (sha256
+          (base32 "0jjrjsks3q8qpipxcqdkm8pi3pjnkcxcydspbf0rkvy3x6i5mwkv"))))
+      (build-system emacs-build-system)
+      (propagated-inputs
+       (list emacs-commenter emacs-epc))
+      (home-page "https://github.com/nim-lang/nim-mode")
+      (synopsis "Major mode for editing Nim source code")
+      (description "This package provides major modes for Nim:
++@itemize
++@item Syntax highlighting for Nim code, Nimble configuration files, and nim.cfg
++@item `M-x nim-compile`, which can also be invoked with `C-c C-c` inside a Nim source file
++@item File outline by procedures
++@item Indentation and line breaking (alpha)
++@item Integration with nimsuggest, the Nim linting and completion server (alpha, both nimsuggest-mode and nimsuggest itself are currently VERY unstable and may make emacs much less responsive)
++@end itemize")
+      (license license:gpl3+))))
-- 
2.34.0
N
N
Nicolas Goaziou wrote on 28 Jan 08:55 +0100
(name . (unmatched-parenthesis via Guix-patches via)(address . guix-patches@gnu.org)
877dakxpjl.fsf@nicolasgoaziou.fr
Hello,

"(unmatched-parenthesis via Guix-patches" via <guix-patches@gnu.org>
writes:

Toggle quote (2 lines)
> * gnu/packages/emacs-xyz.scm(emacs-nim-mode): New variable.

Thank you.

You add both emacs-nim-mode and emacs-commenter. Could you split the
patch into two parts?
Toggle quote (2 lines)
> + (uri (string-append "https://github.com/yuutayamada/commenter/archive/refs/tags/v"version ".tar.gz"))

These URI are not stable. You should use git-fetch with commit
(string-append "v" version) instead.

Toggle quote (6 lines)
> + (sha256
> + (base32 "1n9m8f4gflb0c3nh98nkmsqzscyf5d1p1gcz8apskkmf7z0z0q2j"))))
> + (build-system emacs-build-system)
> + (home-page "https://github.com/yuutayamada/commenter")
> + (synopsis "Allows you to set both single and multi line comment variables like @code{comment-start} or @code{comment-end} etc.")

The synopsis is too long:

"Set both single- and multi-line comment variables in Emacs"

Toggle quote (2 lines)
> + (description "This package allows you to set both single and multi line comment variables like @code{comment-start} or @code{comment-end} etc.")

I suggest to drop the "etc." since there is "like" before.

"This Emacs package sets both single- and multi-line comment variables like @code{comment-start} or @code{comment-end}."

Toggle quote (4 lines)
> +(define-public emacs-nim-mode
> + (let ((commit "744e076f0bea1c5ddc49f92397d9aa98ffa7eff8")
> + (revision "0"))

Since you're not using a tagged commit, could you put a comment above
the let binding explaining why?

Toggle quote (2 lines)
> + (synopsis "Major mode for editing Nim source code")

I would add "Emacs": "Emacs major mode for editing Nim source code"

Toggle quote (9 lines)
> + (description "This package provides major modes for Nim:
> ++@itemize
> ++@item Syntax highlighting for Nim code, Nimble configuration files, and nim.cfg
> ++@item `M-x nim-compile`, which can also be invoked with `C-c C-c` inside a Nim source file
> ++@item File outline by procedures
> ++@item Indentation and line breaking (alpha)
> ++@item Integration with nimsuggest, the Nim linting and completion server (alpha, both nimsuggest-mode and nimsuggest itself are currently VERY unstable and may make emacs much less responsive)
> ++@end itemize")

I suggest:

This package includes major modes for Nim. In particular, it provides
syntax highlighting for Nim code, Nimble configuration files, and
@file{nim.cfg}, outlining features, a dedicated compilation command,
indentation and line breaking.

It also implements integration with @code{nimsuggest}, the Nim linting
and completion server, although this is currently unstable.
Toggle quote (2 lines)
> + (license license:gpl3+))))

Could you send an updated patch?

Regards,
--
Nicolas Goaziou
L
L
Ludovic Courtès wrote on 7 Mar 21:51 +0100
Re: bug#53472: [PATCH] gnu: Add emacs-nim-mode
(address . paren@disroot.org)
87zgm1a3lg.fsf_-_@gnu.org
Hi unmatched-parenthesis,

I know it’s been a while already, but did you have a chance to look into
making the changes Nicolas suggested?


TIA,
Ludo’.

Nicolas Goaziou <mail@nicolasgoaziou.fr> skribis:

Toggle quote (67 lines)
> Hello,
>
> "(unmatched-parenthesis via Guix-patches" via <guix-patches@gnu.org>
> writes:
>
>> * gnu/packages/emacs-xyz.scm(emacs-nim-mode): New variable.
>
> Thank you.
>
> You add both emacs-nim-mode and emacs-commenter. Could you split the
> patch into two parts?
>> + (uri (string-append "https://github.com/yuutayamada/commenter/archive/refs/tags/v" version ".tar.gz"))
>
> These URI are not stable. You should use git-fetch with commit
> (string-append "v" version) instead.
>
>> + (sha256
>> + (base32 "1n9m8f4gflb0c3nh98nkmsqzscyf5d1p1gcz8apskkmf7z0z0q2j"))))
>> + (build-system emacs-build-system)
>> + (home-page "https://github.com/yuutayamada/commenter")
>> + (synopsis "Allows you to set both single and multi line comment variables like @code{comment-start} or @code{comment-end} etc.")
>
> The synopsis is too long:
>
> "Set both single- and multi-line comment variables in Emacs"
>
>> + (description "This package allows you to set both single and multi line comment variables like @code{comment-start} or @code{comment-end} etc.")
>
> I suggest to drop the "etc." since there is "like" before.
>
> "This Emacs package sets both single- and multi-line comment variables like @code{comment-start} or @code{comment-end}."
>
>> +(define-public emacs-nim-mode
>> + (let ((commit "744e076f0bea1c5ddc49f92397d9aa98ffa7eff8")
>> + (revision "0"))
>
> Since you're not using a tagged commit, could you put a comment above
> the let binding explaining why?
>
>> + (synopsis "Major mode for editing Nim source code")
>
> I would add "Emacs": "Emacs major mode for editing Nim source code"
>
>> + (description "This package provides major modes for Nim:
>> ++@itemize
>> ++@item Syntax highlighting for Nim code, Nimble configuration files, and nim.cfg
>> ++@item `M-x nim-compile`, which can also be invoked with `C-c C-c` inside a Nim source file
>> ++@item File outline by procedures
>> ++@item Indentation and line breaking (alpha)
>> ++@item Integration with nimsuggest, the Nim linting and completion server (alpha, both nimsuggest-mode and nimsuggest itself are currently VERY unstable and may make emacs much less responsive)
>> ++@end itemize")
>
> I suggest:
>
> This package includes major modes for Nim. In particular, it provides
> syntax highlighting for Nim code, Nimble configuration files, and
> @file{nim.cfg}, outlining features, a dedicated compilation command,
> indentation and line breaking.
>
> It also implements integration with @code{nimsuggest}, the Nim linting
> and completion server, although this is currently unstable.
>
>> + (license license:gpl3+))))
>
> Could you send an updated patch?
>
> Regards,
?