(address . guix-patches@gnu.org)
* 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(+)
Toggle diff (102 lines)
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