unofficial mirror of bug-guix@gnu.org 
 help / color / mirror / Atom feed
* bug#51869: [PATCH] Add emacs-vala-mode
@ 2021-11-15 14:05 Vivien Kraus via Bug reports for GNU Guix
  2021-11-15 19:42 ` Liliana Marie Prikler
  0 siblings, 1 reply; 8+ messages in thread
From: Vivien Kraus via Bug reports for GNU Guix @ 2021-11-15 14:05 UTC (permalink / raw)
  To: 51869


[-- Attachment #1.1: Type: text/plain, Size: 763 bytes --]


Dear guix,

There’s a vala mode for emacs. It is not very useful, but it registers a
major mode that is then used as a placeholder for the Emacs Language
Server Protocol client. In fact, it’s not possible to activate Vala
support for LSP on emacs without a vala mode, and this is the only
implementation I know.

This is the result of importing from MELPA. The project is not very well
maintained, so it fails to build on a recent emacs (see
https://github.com/rrthomas/vala-mode/issues/14). Since I don’t have a
solution to fix this issue, I went away and reverted the multiline
support. It builds and is useful enough for LSP to kick in, so I
consider it fixed.

What do you think? Do you have a better fix?

Best regards,

Vivien


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.2: Add emacs-vala-mode --]
[-- Type: text/x-patch, Size: 4422 bytes --]

From 7c382e721c74c319abadb65eb9f0942a7cfe24e1 Mon Sep 17 00:00:00 2001
From: Vivien Kraus <vivien@planete-kraus.eu>
Date: Mon, 15 Nov 2021 13:57:18 +0000
Subject: [PATCH] gnu: Add emacs-vala-mode.

* gnu/packages/emacs-xyz (emacs-vala-mode): New variable.
* gnu/packages/patches/vala-mode-fix.patch: Add a vala-mode patch to disable
multiline string support.
* gnu/local.mk (dist_patch_DATA): Register the patch to disable multiline
string support.
---
 gnu/local.mk                             |  1 +
 gnu/packages/emacs-xyz.scm               | 25 ++++++++++++
 gnu/packages/patches/vala-mode-fix.patch | 48 ++++++++++++++++++++++++
 3 files changed, 74 insertions(+)
 create mode 100644 gnu/packages/patches/vala-mode-fix.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 5b21a6ee1b..139325c10b 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1886,6 +1886,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/ustr-fix-build-with-gcc-5.patch		\
   %D%/packages/patches/util-linux-tests.patch			\
   %D%/packages/patches/upower-builddir.patch			\
+  %D%/packages/patches/vala-mode-fix.patch			\
   %D%/packages/patches/valgrind-enable-arm.patch		\
   %D%/packages/patches/vboot-utils-fix-format-load-address.patch	\
   %D%/packages/patches/vboot-utils-fix-tests-show-contents.patch	\
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index ec0376442b..ac15d412c5 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -29989,3 +29989,28 @@ (define-public emacs-global-tags
 wraps GNU Global calls and integration to editor using this API with
 project.el and xref.el.")
       (license license:gpl3+))))
+
+(define-public emacs-vala-mode
+  (package
+   (name "emacs-vala-mode")
+   (version "20201218.2109")
+   (source
+    (origin
+      (method git-fetch)
+      (uri (git-reference
+            (url "https://github.com/rrthomas/vala-mode.git")
+            (commit "d696a8177e94c81ea557ad364a3b3dcc3abbc50f")))
+      (sha256
+       (base32 "0g5pdq757z9d8rk489n5ilhqipdc4i4sfkjwwrxyvgjlapjc04c0"))
+      (patches
+       (search-patches "vala-mode-fix.patch"))))
+   (build-system emacs-build-system)
+   (home-page "https://github.com/rrthomas/vala-mode")
+   (synopsis "Vala mode for Emacs")
+   (description
+    "This package provides a major mode for editing .vala and .vapi files in
+Emacs. See @url{http://live.gnome.org/Vala} for details about Vala language.
+
+This mode was based on Dylan Moonfire's @samp{csharp-mode}.
+")
+   (license license:gpl2+)))
diff --git a/gnu/packages/patches/vala-mode-fix.patch b/gnu/packages/patches/vala-mode-fix.patch
new file mode 100644
index 0000000000..0a50b0e362
--- /dev/null
+++ b/gnu/packages/patches/vala-mode-fix.patch
@@ -0,0 +1,48 @@
+From 68db3ae7410a7d89e606e1916240193b96ab335e Mon Sep 17 00:00:00 2001
+From: Vivien <vivien@pruneau.lan>
+Date: Mon, 15 Nov 2021 13:55:58 +0000
+Subject: [PATCH] Revert "vala-mode: support multiline strings"
+
+This reverts commit 671c287ba9cb81dcf6e9485e6ccc60bc2b7aba14.
+---
+ vala-mode.el | 17 -----------------
+ 1 file changed, 17 deletions(-)
+
+diff --git a/vala-mode.el b/vala-mode.el
+index 8c4da4c..22c6e49 100644
+--- a/vala-mode.el
++++ b/vala-mode.el
+@@ -259,14 +259,6 @@ casts and declarations are fontified.  Used on level 2 and higher."
+ (c-lang-defconst c-opt-cpp-prefix
+   vala "\\s *#\\s *")
+ 
+-;; Support multiline strings
+-;;
+-;; FIXME: This allows any string to be multiline. Currently, c-mode only
+-;; supports a single-character prefix to denote a multiline string, so the
+-;; real fix will be harder.
+-(c-lang-defconst c-multiline-string-start-char
+-  vala vala-multiline-strings)
+-
+ ;; Vala uses the following assignment operators
+ (c-lang-defconst c-assignment-operators
+   vala '("=" "*=" "/=" "%=" "+=" "-=" ">>=" "<<="
+@@ -428,15 +420,6 @@ casts and declarations are fontified.  Used on level 2 and higher."
+   :type 'hook
+   :group 'c)
+ 
+-(defcustom vala-multiline-strings nil
+-  "Whether to enable support for multiline strings.
+-
+-It can conflict with some other Emacs functionality, such as the
+-automatic insertion of closing quotes `electric-pair-mode'."
+-  :type 'bool
+-  :group 'vala)
+-
+-
+ ;;; The entry point into the mode
+ ;;;###autoload
+ (defun vala-mode ()
+-- 
+2.33.1
+
-- 
2.33.1


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 658 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#51869: [PATCH] Add emacs-vala-mode
  2021-11-15 14:05 bug#51869: [PATCH] Add emacs-vala-mode Vivien Kraus via Bug reports for GNU Guix
@ 2021-11-15 19:42 ` Liliana Marie Prikler
  2021-11-15 20:48   ` Vivien Kraus via Bug reports for GNU Guix
  0 siblings, 1 reply; 8+ messages in thread
From: Liliana Marie Prikler @ 2021-11-15 19:42 UTC (permalink / raw)
  To: Vivien Kraus, 51869

Hi Vivien,

Am Montag, den 15.11.2021, 14:05 +0000 schrieb Vivien Kraus:
> Dear guix,
> 
> There’s a vala mode for emacs. It is not very useful
I'd beg to differ.  Not opening Vala files in fundamental-mode is very
useful.

> The project is not very well maintained
I've experienced the same.  I previously used the melpa importer, so as
to not pollute upstream with it, but given that a patch is needed, we
might as well add it properly.

> Since I don’t have a solution to fix this issue, I went away and
> reverted the multiline support. It builds and is useful enough for
> LSP to kick in, so I consider it fixed.
> 
> What do you think? Do you have a better fix?
Given my superior knowledge of Emacs Lisp (just kidding), I'd guess the
order of declarations is wrong.  Pull the defcustom before the other
thing and it ought to work.

> +   (version "20201218.2109")
> +   (source
> +    (origin
> +      (method git-fetch)
> +      (uri (git-reference
> +            (url "https://github.com/rrthomas/vala-mode.git")
> +            (commit "d696a8177e94c81ea557ad364a3b3dcc3abbc50f")))
Use the (let ((revision ...) (commit ...)) (package ...)) convention,
adding a note that upstream has no tagged release.  Base version
appears to be "0.1"

Cheers





^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#51869: [PATCH] Add emacs-vala-mode
  2021-11-15 19:42 ` Liliana Marie Prikler
@ 2021-11-15 20:48   ` Vivien Kraus via Bug reports for GNU Guix
  2021-11-16 17:49     ` Liliana Marie Prikler
  0 siblings, 1 reply; 8+ messages in thread
From: Vivien Kraus via Bug reports for GNU Guix @ 2021-11-15 20:48 UTC (permalink / raw)
  To: Liliana Marie Prikler; +Cc: 51869


[-- Attachment #1.1: Type: text/plain, Size: 1380 bytes --]

Hi!

Liliana Marie Prikler <liliana.prikler@gmail.com> writes:
>> Since I don’t have a solution to fix this issue, I went away and
>> reverted the multiline support. It builds and is useful enough for
>> LSP to kick in, so I consider it fixed.
>> 
>> What do you think? Do you have a better fix?
> Given my superior knowledge of Emacs Lisp (just kidding), I'd guess the
> order of declarations is wrong.  Pull the defcustom before the other
> thing and it ought to work.
Unfortunately, it does not. I tried it, but it gives the same error
message. I’m a bit surprised, but reading the help entry for
c-lang-defconst, I see there is a lot of information about when things
are evaluated, so maybe someone smart can parse it and understand why we
can’t use the custom variable value.

>> +   (version "20201218.2109")
>> +   (source
>> +    (origin
>> +      (method git-fetch)
>> +      (uri (git-reference
>> +            (url "https://github.com/rrthomas/vala-mode.git")
>> +            (commit "d696a8177e94c81ea557ad364a3b3dcc3abbc50f")))
> Use the (let ((revision ...) (commit ...)) (package ...)) convention,
> adding a note that upstream has no tagged release.  Base version
> appears to be "0.1"
I didn’t know that convention, so here is the updated patch, still
waiting for a convincing fix for the multiline strings issue.

Vivien


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.2: Emacs vala mode, with packaging convention --]
[-- Type: text/x-patch, Size: 4610 bytes --]

From 2912a84d86372cac6944f7661a028b108484c556 Mon Sep 17 00:00:00 2001
From: Vivien Kraus <vivien@planete-kraus.eu>
Date: Mon, 15 Nov 2021 13:57:18 +0000
Subject: [PATCH] gnu: Add emacs-vala-mode.

* gnu/packages/emacs-xyz (emacs-vala-mode): New variable.
* gnu/packages/patches/vala-mode-fix.patch: Add a vala-mode patch to disable
multiline string support.
* gnu/local.mk (dist_patch_DATA): Register the patch to disable multiline
string support.
---
 gnu/local.mk                                  |  1 +
 gnu/packages/emacs-xyz.scm                    | 29 +++++++++++
 .../patches/emacs-vala-mode-fix.patch         | 48 +++++++++++++++++++
 3 files changed, 78 insertions(+)
 create mode 100644 gnu/packages/patches/emacs-vala-mode-fix.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 5b21a6ee1b..4a73e7cee1 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1033,6 +1033,7 @@ dist_patch_DATA =						\
   %D%/packages/patches/emacs-source-date-epoch.patch		\
   %D%/packages/patches/emacs-telega-path-placeholder.patch	\
   %D%/packages/patches/emacs-telega-test-env.patch		\
+  %D%/packages/patches/emacs-vala-mode-fix.patch		\
   %D%/packages/patches/emacs-wordnut-require-adaptive-wrap.patch	\
   %D%/packages/patches/enjarify-setup-py.patch			\
   %D%/packages/patches/enlightenment-fix-setuid-path.patch	\
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index ec0376442b..ff42b4d4d6 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -29989,3 +29989,32 @@ (define-public emacs-global-tags
 wraps GNU Global calls and integration to editor using this API with
 project.el and xref.el.")
       (license license:gpl3+))))
+
+(define-public emacs-vala-mode
+  ;; Upstream has no tagged release.
+  (let ((commit "d696a8177e94c81ea557ad364a3b3dcc3abbc50f")
+        (revision "0"))
+    (package
+      (name "emacs-vala-mode")
+      (version (git-version "0.1" revision commit))
+      (home-page "https://github.com/rrthomas/vala-mode")
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url home-page)
+               (commit commit)))
+         (sha256
+          (base32 "0g5pdq757z9d8rk489n5ilhqipdc4i4sfkjwwrxyvgjlapjc04c0"))
+         (patches
+          (search-patches "emacs-vala-mode-fix.patch"))))
+      (build-system emacs-build-system)
+      (synopsis "Vala mode for Emacs")
+      (description
+       "This package provides a major mode for editing .vala and .vapi files
+in Emacs.  See @url{http://live.gnome.org/Vala} for details about Vala
+language.
+
+This mode was based on Dylan Moonfire's @samp{csharp-mode}.
+")
+      (license license:gpl2+))))
diff --git a/gnu/packages/patches/emacs-vala-mode-fix.patch b/gnu/packages/patches/emacs-vala-mode-fix.patch
new file mode 100644
index 0000000000..0a50b0e362
--- /dev/null
+++ b/gnu/packages/patches/emacs-vala-mode-fix.patch
@@ -0,0 +1,48 @@
+From 68db3ae7410a7d89e606e1916240193b96ab335e Mon Sep 17 00:00:00 2001
+From: Vivien <vivien@pruneau.lan>
+Date: Mon, 15 Nov 2021 13:55:58 +0000
+Subject: [PATCH] Revert "vala-mode: support multiline strings"
+
+This reverts commit 671c287ba9cb81dcf6e9485e6ccc60bc2b7aba14.
+---
+ vala-mode.el | 17 -----------------
+ 1 file changed, 17 deletions(-)
+
+diff --git a/vala-mode.el b/vala-mode.el
+index 8c4da4c..22c6e49 100644
+--- a/vala-mode.el
++++ b/vala-mode.el
+@@ -259,14 +259,6 @@ casts and declarations are fontified.  Used on level 2 and higher."
+ (c-lang-defconst c-opt-cpp-prefix
+   vala "\\s *#\\s *")
+ 
+-;; Support multiline strings
+-;;
+-;; FIXME: This allows any string to be multiline. Currently, c-mode only
+-;; supports a single-character prefix to denote a multiline string, so the
+-;; real fix will be harder.
+-(c-lang-defconst c-multiline-string-start-char
+-  vala vala-multiline-strings)
+-
+ ;; Vala uses the following assignment operators
+ (c-lang-defconst c-assignment-operators
+   vala '("=" "*=" "/=" "%=" "+=" "-=" ">>=" "<<="
+@@ -428,15 +420,6 @@ casts and declarations are fontified.  Used on level 2 and higher."
+   :type 'hook
+   :group 'c)
+ 
+-(defcustom vala-multiline-strings nil
+-  "Whether to enable support for multiline strings.
+-
+-It can conflict with some other Emacs functionality, such as the
+-automatic insertion of closing quotes `electric-pair-mode'."
+-  :type 'bool
+-  :group 'vala)
+-
+-
+ ;;; The entry point into the mode
+ ;;;###autoload
+ (defun vala-mode ()
+-- 
+2.33.1
+
-- 
2.33.1


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 658 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#51869: [PATCH] Add emacs-vala-mode
  2021-11-15 20:48   ` Vivien Kraus via Bug reports for GNU Guix
@ 2021-11-16 17:49     ` Liliana Marie Prikler
  2021-11-16 18:12       ` Vivien Kraus via Bug reports for GNU Guix
  0 siblings, 1 reply; 8+ messages in thread
From: Liliana Marie Prikler @ 2021-11-16 17:49 UTC (permalink / raw)
  To: Vivien Kraus; +Cc: 51869

Hi,

Am Montag, den 15.11.2021, 20:48 +0000 schrieb Vivien Kraus:
> Liliana Marie Prikler <liliana.prikler@gmail.com> writes:
> > > Since I don’t have a solution to fix this issue, I went away and
> > > reverted the multiline support. It builds and is useful enough
> > > for LSP to kick in, so I consider it fixed.
> > > 
> > > What do you think? Do you have a better fix?
> > Given my superior knowledge of Emacs Lisp (just kidding), I'd guess
> > the order of declarations is wrong.  Pull the defcustom before the
> > other thing and it ought to work.
> Unfortunately, it does not. I tried it, but it gives the same error
> message. I’m a bit surprised, but reading the help entry for
> c-lang-defconst, I see there is a lot of information about when
> things are evaluated, so maybe someone smart can parse it and
> understand why we can’t use the custom variable value.
I investigated further and the thing at hand (multiline string support)
is currently buggy in CC-Mode anyway.  There are plans to support all
kinds of multiline strings with a new API in an upcoming version,
however vala-mode is not yet written with that in mind.  Given this
knowledge, I'd second your decision to disable multiline strings for
now.

> > > +   (version "20201218.2109")
> > > +   (source
> > > +    (origin
> > > +      (method git-fetch)
> > > +      (uri (git-reference
> > > +            (url "https://github.com/rrthomas/vala-mode.git")
> > > +            (commit
> > > "d696a8177e94c81ea557ad364a3b3dcc3abbc50f")))
> > Use the (let ((revision ...) (commit ...)) (package ...))
> > convention,
> > adding a note that upstream has no tagged release.  Base version
> > appears to be "0.1"
> I didn’t know that convention, so here is the updated patch, still
> waiting for a convincing fix for the multiline strings issue.
I'd use our emacs sexp substitution tools to erase these defconsts and
defcustoms rather than a patch.  Other than that LGTM.

Cheers





^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#51869: [PATCH] Add emacs-vala-mode
  2021-11-16 17:49     ` Liliana Marie Prikler
@ 2021-11-16 18:12       ` Vivien Kraus via Bug reports for GNU Guix
  2021-11-16 19:41         ` Liliana Marie Prikler
  0 siblings, 1 reply; 8+ messages in thread
From: Vivien Kraus via Bug reports for GNU Guix @ 2021-11-16 18:12 UTC (permalink / raw)
  To: Liliana Marie Prikler; +Cc: 51869


[-- Attachment #1.1: Type: text/plain, Size: 276 bytes --]


Liliana Marie Prikler <liliana.prikler@gmail.com> writes:
> I'd use our emacs sexp substitution tools to erase these defconsts and
> defcustoms rather than a patch.  Other than that LGTM.

I didn’t know about this great macro! Here is an updated version.

Vivien


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.2: Use emacs sexp substitution instead of a patch --]
[-- Type: text/x-patch, Size: 2203 bytes --]

From 759b0437e5016e7c558a5a99e2831f419a3b0802 Mon Sep 17 00:00:00 2001
From: Vivien Kraus <vivien@planete-kraus.eu>
Date: Mon, 15 Nov 2021 13:57:18 +0000
Subject: [PATCH] gnu: Add emacs-vala-mode.

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

diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 113471ae14..dadfa67ccf 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -29993,3 +29993,40 @@ (define-public emacs-global-tags
 wraps GNU Global calls and integration to editor using this API with
 project.el and xref.el.")
       (license license:gpl3+))))
+
+(define-public emacs-vala-mode
+  ;; Upstream has no tagged release.
+  (let ((commit "d696a8177e94c81ea557ad364a3b3dcc3abbc50f")
+        (revision "0"))
+    (package
+      (name "emacs-vala-mode")
+      (version (git-version "0.1" revision commit))
+      (home-page "https://github.com/rrthomas/vala-mode")
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url home-page)
+               (commit commit)))
+         (sha256
+          (base32 "0g5pdq757z9d8rk489n5ilhqipdc4i4sfkjwwrxyvgjlapjc04c0"))))
+      (build-system emacs-build-system)
+      (arguments
+       '(#:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'disable-multiline-support
+             (lambda* (#:key inputs #:allow-other-keys)
+               (make-file-writable "vala-mode.el")
+               (emacs-substitute-sexps "vala-mode.el"
+                 (";; Support multiline strings" 'disabled.)
+                 ("(defcustom vala-multiline-strings nil"
+                  "This variable is ignored.")))))))
+      (synopsis "Vala mode for Emacs")
+      (description
+       "This package provides a major mode for editing .vala and .vapi files
+in Emacs.  See @url{http://live.gnome.org/Vala} for details about Vala
+language.
+
+This mode was based on Dylan Moonfire's @samp{csharp-mode}.
+")
+      (license license:gpl2+))))
-- 
2.33.1


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 658 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#51869: [PATCH] Add emacs-vala-mode
  2021-11-16 18:12       ` Vivien Kraus via Bug reports for GNU Guix
@ 2021-11-16 19:41         ` Liliana Marie Prikler
  2021-11-16 19:48           ` Vivien Kraus via Bug reports for GNU Guix
  0 siblings, 1 reply; 8+ messages in thread
From: Liliana Marie Prikler @ 2021-11-16 19:41 UTC (permalink / raw)
  To: Vivien Kraus; +Cc: 51869

Hi,

Am Dienstag, den 16.11.2021, 18:12 +0000 schrieb Vivien Kraus:
> +      (home-page "https://github.com/rrthomas/vala-mode")
> +      (source
> +       (origin
> +         (method git-fetch)
> +         (uri (git-reference
> +               (url home-page)
> +               (commit commit)))
Sorry, I didn't look close enough.  Please avoid pulling home-page up,
it's not meant to be used as git-reference url.

> +               (emacs-substitute-sexps "vala-mode.el"
> +                 (";; Support multiline strings" 'disabled.)
> +                 ("(defcustom vala-multiline-strings nil"
> +                  "This variable is ignored.")))))))
This inserts mostly bogus into the file rather than killing the sexps
as it should.  The payload for just killing the entire sexp which
starts with leading-regexp would be (if I constructed this correctly,
untested):
    
    (progn (goto-char (point-min))
           (re-search-forward ,leading-regexp)
           (goto-char (match-beginning 0))
           (kill-sexp))

Don't forget to basic-save-buffer :)

Cheers





^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#51869: [PATCH] Add emacs-vala-mode
  2021-11-16 19:41         ` Liliana Marie Prikler
@ 2021-11-16 19:48           ` Vivien Kraus via Bug reports for GNU Guix
  2021-11-17 17:09             ` Liliana Marie Prikler
  0 siblings, 1 reply; 8+ messages in thread
From: Vivien Kraus via Bug reports for GNU Guix @ 2021-11-16 19:48 UTC (permalink / raw)
  To: Liliana Marie Prikler; +Cc: 51869


[-- Attachment #1.1: Type: text/plain, Size: 1035 bytes --]


Liliana Marie Prikler <liliana.prikler@gmail.com> writes:
> Please avoid pulling home-page up, it's not meant to be used as
> git-reference url.
OK.

>> +               (emacs-substitute-sexps "vala-mode.el"
>> +                 (";; Support multiline strings" 'disabled.)
>> +                 ("(defcustom vala-multiline-strings nil"
>> +                  "This variable is ignored.")))))))
> This inserts mostly bogus into the file rather than killing the sexps
> as it should.  

The first substitution fully kills the whole sexp (and inserts a comment
that reads "Support for multiline strings disabled." if you don’t read
too closely ^^). It’s true that the second does not kill the defcustom
expansion, but since it’s part of the intended public API, I’m not so
sure we should remove it altogether. I think it’s clearer for the user
that way, because the two modifications are kind of documented in the
source.

Also, it’s shorter.

Anyway, Here are the two versions, you decide.

Vivien


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.2: With sexp substitution --]
[-- Type: text/x-patch, Size: 2233 bytes --]

From c0726be413991eab7b16ca0bebf42cc8eab616e1 Mon Sep 17 00:00:00 2001
From: Vivien Kraus <vivien@planete-kraus.eu>
Date: Mon, 15 Nov 2021 13:57:18 +0000
Subject: [PATCH] gnu: Add emacs-vala-mode.

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

diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 113471ae14..61d780c72b 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -29993,3 +29993,40 @@ (define-public emacs-global-tags
 wraps GNU Global calls and integration to editor using this API with
 project.el and xref.el.")
       (license license:gpl3+))))
+
+(define-public emacs-vala-mode
+  ;; Upstream has no tagged release.
+  (let ((commit "d696a8177e94c81ea557ad364a3b3dcc3abbc50f")
+        (revision "0"))
+    (package
+      (name "emacs-vala-mode")
+      (version (git-version "0.1" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/rrthomas/vala-mode")
+               (commit commit)))
+         (sha256
+          (base32 "0g5pdq757z9d8rk489n5ilhqipdc4i4sfkjwwrxyvgjlapjc04c0"))))
+      (build-system emacs-build-system)
+      (arguments
+       '(#:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'disable-multiline-support
+             (lambda* (#:key inputs #:allow-other-keys)
+               (make-file-writable "vala-mode.el")
+               (emacs-substitute-sexps "vala-mode.el"
+                 (";; Support multiline strings" 'disabled.)
+                 ("(defcustom vala-multiline-strings nil"
+                  "This variable is ignored.")))))))
+      (home-page "https://github.com/rrthomas/vala-mode")
+      (synopsis "Vala mode for Emacs")
+      (description
+       "This package provides a major mode for editing .vala and .vapi files
+in Emacs.  See @url{http://live.gnome.org/Vala} for details about Vala
+language.
+
+This mode was based on Dylan Moonfire's @samp{csharp-mode}.
+")
+      (license license:gpl2+))))
-- 
2.33.1


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.3: With a batch edit program --]
[-- Type: text/x-patch, Size: 2467 bytes --]

From f1d594081881e42a273dfd0d857f0af41615270d Mon Sep 17 00:00:00 2001
From: Vivien Kraus <vivien@planete-kraus.eu>
Date: Mon, 15 Nov 2021 13:57:18 +0000
Subject: [PATCH] gnu: Add emacs-vala-mode.

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

diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 113471ae14..9be6a306e1 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -29993,3 +29993,46 @@ (define-public emacs-global-tags
 wraps GNU Global calls and integration to editor using this API with
 project.el and xref.el.")
       (license license:gpl3+))))
+
+(define-public emacs-vala-mode
+  ;; Upstream has no tagged release.
+  (let ((commit "d696a8177e94c81ea557ad364a3b3dcc3abbc50f")
+        (revision "0"))
+    (package
+      (name "emacs-vala-mode")
+      (version (git-version "0.1" revision commit))
+      (source
+       (origin
+         (method git-fetch)
+         (uri (git-reference
+               (url "https://github.com/rrthomas/vala-mode")
+               (commit commit)))
+         (sha256
+          (base32 "0g5pdq757z9d8rk489n5ilhqipdc4i4sfkjwwrxyvgjlapjc04c0"))))
+      (build-system emacs-build-system)
+      (arguments
+       '(#:phases
+         (modify-phases %standard-phases
+           (add-after 'unpack 'disable-multiline-support
+             (lambda* (#:key inputs #:allow-other-keys)
+               (make-file-writable "vala-mode.el")
+               (emacs-batch-edit-file "vala-mode.el"
+                 '(progn
+                   (goto-char (point-min))
+                   (re-search-forward ";; Support multiline strings")
+                   (move-beginning-of-line 1)
+                   (kill-sexp)
+                   (re-search-forward "vala-multiline-strings")
+                   (backward-up-list)
+                   (kill-sexp)
+                   (basic-save-buffer))))))))
+      (home-page "https://github.com/rrthomas/vala-mode")
+      (synopsis "Vala mode for Emacs")
+      (description
+       "This package provides a major mode for editing .vala and .vapi files
+in Emacs.  See @url{http://live.gnome.org/Vala} for details about Vala
+language.
+
+This mode was based on Dylan Moonfire's @samp{csharp-mode}.
+")
+      (license license:gpl2+))))
-- 
2.33.1


[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 658 bytes --]

^ permalink raw reply	[flat|nested] 8+ messages in thread

* bug#51869: [PATCH] Add emacs-vala-mode
  2021-11-16 19:48           ` Vivien Kraus via Bug reports for GNU Guix
@ 2021-11-17 17:09             ` Liliana Marie Prikler
  0 siblings, 0 replies; 8+ messages in thread
From: Liliana Marie Prikler @ 2021-11-17 17:09 UTC (permalink / raw)
  To: Vivien Kraus; +Cc: 51869-done

Hi,

Am Dienstag, den 16.11.2021, 19:48 +0000 schrieb Vivien Kraus:
> > > +               (emacs-substitute-sexps "vala-mode.el"
> > > +                 (";; Support multiline strings" 'disabled.)
> > > +                 ("(defcustom vala-multiline-strings nil"
> > > +                  "This variable is ignored.")))))))
> > This inserts mostly bogus into the file rather than killing the
> > sexps
> > as it should.  
> 
> The first substitution fully kills the whole sexp (and inserts a
> comment that reads "Support for multiline strings disabled." if you
> don’t read too closely ^^). 
That was too sneaky for me :P

> It’s true that the second does not kill the defcustom expansion, but
> since it’s part of the intended public API, I’m not so sure we should
> remove it altogether. I think it’s clearer for the user that way,
> because the two modifications are kind of documented in the source.
> 
> Also, it’s shorter.
I'm pretty sure you can still use vala-multiline-strings inside a
custom-set-variables form, it will just do nothing as it ought to.  

> Anyway, Here are the two versions, you decide.
I rewrote your batch-edit version to be a little clearer and to leave
documented FIXMEs in the code.  I pushed the rewrite, so you should now
be able to use emacs-vala-mode, with or without lsp.

Cheers





^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2021-11-17 17:11 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-11-15 14:05 bug#51869: [PATCH] Add emacs-vala-mode Vivien Kraus via Bug reports for GNU Guix
2021-11-15 19:42 ` Liliana Marie Prikler
2021-11-15 20:48   ` Vivien Kraus via Bug reports for GNU Guix
2021-11-16 17:49     ` Liliana Marie Prikler
2021-11-16 18:12       ` Vivien Kraus via Bug reports for GNU Guix
2021-11-16 19:41         ` Liliana Marie Prikler
2021-11-16 19:48           ` Vivien Kraus via Bug reports for GNU Guix
2021-11-17 17:09             ` Liliana Marie Prikler

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).