guix-patches
[Top][All Lists]
Advanced

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

[bug#63987] [PATCH] gnu: Add emacs-jinx.


From: mekeor
Subject: [bug#63987] [PATCH] gnu: Add emacs-jinx.
Date: Fri, 09 Jun 2023 23:00:37 +0000

* gnu/packages/emacs-xyz.scm (emacs-jinx): New variable.
---
Hello Guix! I have some questions about this patch that I'm submitting:

- emacs-jinx needs gcc at build time. Should I use gcc-toolchain (or
  rather the internal gcc) package?

- When using the module (gnu packages commencement), I first got the
  following warning. That's why I decided to use it with a prefix
  instead. What do you think about that?

  WARNING: (gnu packages emacs-xyz): `canonical-package' imported from
  both (gnu packages base) and (gnu packages commencement)

- I did not introduce any (revision "0") variable or so. I hope that's
  okay. I'm not sure when to use it.

- I placed the package declaration right after other spelling related
  Emacs packages. Unfortunately, the declaration of emacs-jit-spell is
  not close. I could send another additional patch that moves all
  spelling-related Emacs packages into an own section, if you'd like.
  Like this:

  ;;;
  ;;; Spelling
  ;;;

Anyways. Cheers!

 gnu/packages/emacs-xyz.scm | 73 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 73 insertions(+)

diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index 0ea9732bfa..7e4f1a1fea 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -148,6 +148,7 @@
 
 (define-module (gnu packages emacs-xyz)
   #:use-module ((guix licenses) #:prefix license:)
+  #:use-module ((gnu packages commencement) #:prefix commencement:)
   #:use-module (guix packages)
   #:use-module (guix cvs-download)
   #:use-module (guix download)
@@ -265,6 +266,7 @@ (define-module (gnu packages emacs-xyz)
   #:use-module (gnu packages virtualization)
   #:use-module (gnu packages web-browsers)
   #:use-module (gnu packages wget)
+  #:use-module (gnu packages enchant)
   #:use-module (guix utils)
   #:use-module (srfi srfi-1)
   #:use-module (ice-9 match))
@@ -31922,6 +31924,77 @@ (define-public emacs-spell-fu
 that runs from the syntax highlighter without starting external processes.")
       (license license:gpl3+))))
 
+(define-public emacs-jinx
+  (package
+    (name "emacs-jinx")
+    (version "0.8")
+    (source
+      (origin
+        (method git-fetch)
+        (uri
+          (git-reference
+            (url "https://github.com/minad/jinx";)
+            (commit "7fced90fdaca5a482cd08b80967e0eac5ee8d885")))
+        (file-name (git-file-name name version))
+        (sha256
+          (base32
+            "1y097rnf9zg26jf4vh74a0laddfp4x6pp1fjqs3xqgwc0cmdq59w"))))
+    (build-system emacs-build-system)
+    (propagated-inputs (list emacs-compat))
+    (native-inputs
+      (list
+        emacs-compat
+        enchant
+        commencement:gcc-toolchain
+        pkg-config
+        texinfo))
+    (inputs (list enchant))
+    (arguments
+      (list
+        #:phases
+        #~(modify-phases %standard-phases
+            ;; Compile the accompanying jinx-mod.c file with Emacs and
+            ;; jinx.el. This needs to happen after expand-load-path phase so
+            ;; that jinx.el is able to load emacs-compat.
+            (add-after 'expand-load-path 'compile-jinx-mod-c
+              (lambda _
+                (invoke
+                  "emacs" "--batch" "-L" "."
+                  "-l" "jinx.el"
+                  "-f" "jinx--load-module")
+                (install-file "jinx-mod.so"
+                  (string-append #$output "/lib"))))
+            ;; Patch Jinx.el to load the previously compiled jinx-mod.so from
+            ;; correct output path instead of attempting to compile it.
+            (add-after 'compile-jinx-mod-c 'use-compiled-jinx-mod-so
+              (lambda _
+                (let ((file "jinx.el"))
+                  (make-file-writable file)
+                  (emacs-substitute-sexps file
+                    ("\"Compile and load dynamic module.\""
+                      `(module-load
+                         ,(string-append #$output "/lib/jinx-mod.so")))))))
+            (add-after 'install 'makeinfo
+              (lambda _
+                (invoke "emacs" "--batch"
+                  "--eval=(require 'ox-texinfo)"
+                  "--eval=(find-file \"README.org\")"
+                  "--eval=(org-texinfo-export-to-info)")
+                (install-file "jinx.info"
+                  (string-append #$output "/share/info")))))))
+    (home-page "https://github.com/minad/jinx";)
+    (synopsis "Emacs Enchanted Spell Checker")
+    (description
+      "Jinx is a fast just-in-time spell-checker for Emacs.  Jinx highlights
+misspelled words in the text of the visible portion of the buffer.  For
+efficiency, Jinx highlights misspellings lazily, recognizes window boundaries
+and text folding, if any.  For example, when unfolding or scrolling, only the
+newly visible part of the text is checked if it has not been checked before.
+Each misspelling can be corrected from a list of dictionary words presented as
+a completion menu.  Jinx's high performance and low resource usage comes from
+directly calling the widely-used API of the Enchant library.")
+    (license license:gpl3+)))
+
 (define-public emacs-org-emms
   (let ((commit "07a8917f3d628c32e5de1dbd118ac08203772533")
         (revision "1"))

base-commit: 297ba5c15a32845ab8514aeb6f405ebd4290142d
-- 
2.39.2







reply via email to

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