bug#51869: [PATCH] Add emacs-vala-mode
Hi, Am Dienstag, den 16.11.2021, 19:48 + 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
bug#51869: [PATCH] Add emacs-vala-mode
Liliana Marie Prikler 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 From c0726be413991eab7b16ca0bebf42cc8eab616e1 Mon Sep 17 00:00:00 2001 From: Vivien Kraus Date: Mon, 15 Nov 2021 13:57:18 + 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 From f1d594081881e42a273dfd0d857f0af41615270d Mon Sep 17 00:00:00 2001 From: Vivien Kraus Date: Mon, 15 Nov 2021 13:57:18 + 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") +
bug#51869: [PATCH] Add emacs-vala-mode
Hi, Am Dienstag, den 16.11.2021, 18:12 + 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
bug#51869: [PATCH] Add emacs-vala-mode
Liliana Marie Prikler 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 From 759b0437e5016e7c558a5a99e2831f419a3b0802 Mon Sep 17 00:00:00 2001 From: Vivien Kraus Date: Mon, 15 Nov 2021 13:57:18 + 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 signature.asc Description: PGP signature
bug#51869: [PATCH] Add emacs-vala-mode
Hi, Am Montag, den 15.11.2021, 20:48 + schrieb Vivien Kraus: > Liliana Marie Prikler 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
bug#51869: [PATCH] Add emacs-vala-mode
Hi! Liliana Marie Prikler 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 From 2912a84d86372cac6944f7661a028b108484c556 Mon Sep 17 00:00:00 2001 From: Vivien Kraus Date: Mon, 15 Nov 2021 13:57:18 + 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 00..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 +Date: Mon, 15 Nov 2021 13:55:58 + +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
bug#51869: [PATCH] Add emacs-vala-mode
Hi Vivien, Am Montag, den 15.11.2021, 14:05 + 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
bug#51869: [PATCH] Add emacs-vala-mode
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 From 7c382e721c74c319abadb65eb9f0942a7cfe24e1 Mon Sep 17 00:00:00 2001 From: Vivien Kraus Date: Mon, 15 Nov 2021 13:57:18 + 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 00..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 +Date: Mon, 15 Nov 2021 13:55:58 + +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