Greetings all, I want to port https://github.com/justinbarclay/parinfer-rust-mode to Guix. This package is a more modern and actively maintained version of `parinfer-mode`, which is already in Guix, that loads a Rust-based library to handle all the heavy computation.
I've got a couple of patches for this package which I'll attach, one for parinfer-rust-mode itself and another for an ELPA package called track-changes, which parinfer-rust-mode depends on and (as far as I can see) isn't already in Guix. What I'm unsure about is this: parinfer-rust-mode is designed to offer you the option of automatically downloading the companion Rust library from the repo at https://github.com/justinbarclay/parinfer-rust-emacs. This worked fine for testing and resulted in a working parinfer-rust-mode for Emacs, though I'm suspecting having Guix handle the downloading and manipulation of this library would be more preferable (Guix-ier perhaps?). I'm hoping others have ideas and opinions about what to do here. Any help appreciated, and if this is the wrong place for this do let me know where better to inquire, thanks! >From 0f008e6c4bed9285f838ce7fd5d16c1fe2abf279 Mon Sep 17 00:00:00 2001 Message-ID: <0f008e6c4bed9285f838ce7fd5d16c1fe2abf279.1720884197.git.lee.p.th...@gmail.com> From: Lee Thompson <lee.p.th...@gmail.com> Date: Sat, 13 Jul 2024 16:21:07 +0100 Subject: [PATCH] First go at adding `parinfer-rust-mode` for Emacs. Change-Id: Iebb2105206884c9164556f7c40397dd484fdf317 --- gnu/packages/emacs-xyz.scm | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index c8b19bf1a5..8be31db415 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -26658,6 +26658,29 @@ (define-public emacs-track-changes to react to them.") (license license:gpl3+))) +(define-public emacs-parinfer-rust-mode + (package + (name "emacs-parinfer-rust-mode") + (version "0.9.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/justinbarclay/parinfer-rust-mode") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1kbn54v100rh6pxl3lc66pspd3nfy7pkv8iyqkg09xqcwyblbf86")))) + (propagated-inputs (list emacs-track-changes)) + (build-system emacs-build-system) + (home-page "https://github.com/justinbarclay/parinfer-rust-mode/") + (synopsis "Lisp structure editing mode leveraging parinfer-rust.") + (description + "@code{parinfer-rust-mode} aims to be a simple implementation +of Parinfer that leverages the parinfer-rust plugin to do most of the heavy +lifting.") + (license license:gpl3))) + (define-public emacs-helm-eww (package (name "emacs-helm-eww") base-commit: 3e7ce72d80878d5b3eb161c37ca97fd6ded33b2f prerequisite-patch-id: 0a832f8727798349281d9c107a3b850f4a910f1c -- 2.45.2 >From 47ca20da9ee09892171ea121f68248a9af6a37b8 Mon Sep 17 00:00:00 2001 Message-ID: <47ca20da9ee09892171ea121f68248a9af6a37b8.1720884142.git.lee.p.th...@gmail.com> From: Lee Thompson <lee.p.th...@gmail.com> Date: Sat, 13 Jul 2024 16:20:32 +0100 Subject: [PATCH] First go at adding `track-changes` for Emacs. Change-Id: Ife61e1dd390d54b21d28be13102977ee1a97b585 --- gnu/packages/emacs-xyz.scm | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 99e1d4c65c..c8b19bf1a5 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -26637,6 +26637,27 @@ (define-public emacs-parinfer-mode keep Parens and Indentation inline with one another.") (license license:gpl3+))) +(define-public emacs-track-changes + (package + (name "emacs-track-changes") + (version "1.2") + (source + (origin + (method url-fetch) + (uri (string-append "https://elpa.gnu.org/packages/track-changes-" + version ".tar")) + (sha256 + (base32 "0al6a1xjs6p2pn6z976pnmfqz2x5xcz99b5gkdzz90ywbn7018m4")))) + (build-system emacs-build-system) + (home-page "https://elpa.gnu.org/packages/track-changes.html") + (synopsis "An abstraction library which handles accumulating file changes") + (description + "This library is a layer of abstraction above +@code{before-change-functions} and @code{after-change-functions} which takes +care of accumulating changes until a time when its client finds it convenient +to react to them.") + (license license:gpl3+))) + (define-public emacs-helm-eww (package (name "emacs-helm-eww") base-commit: 3e7ce72d80878d5b3eb161c37ca97fd6ded33b2f -- 2.45.2