Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package emacs-jinx for openSUSE:Factory checked in at 2026-10-05 12:55:04 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/emacs-jinx (Old) and /work/SRC/openSUSE:Factory/.emacs-jinx.new.3698736 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "emacs-jinx" Mon Oct 5 12:55:04 2026 rev:14 rq:1382274 version:2.11 Changes: -------- --- /work/SRC/openSUSE:Factory/emacs-jinx/emacs-jinx.changes 2026-08-19 18:00:41.882112799 +0200 +++ /work/SRC/openSUSE:Factory/.emacs-jinx.new.3698736/emacs-jinx.changes 2026-10-05 12:56:44.032525475 +0200 @@ -1,0 +2,6 @@ +Sat Oct 03 20:34:22 UTC 2026 - Björn Kettunen <[email protected]> + +- Update to version 2.11: + * New command jinx-occur which lists all misspelled words in a separate buffer + +------------------------------------------------------------------- Old: ---- jinx-2.10.obscpio New: ---- jinx-2.11.obscpio ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ emacs-jinx.spec ++++++ --- /var/tmp/diff_new_pack.Rjq8nD/_old 2026-10-05 12:56:45.304577158 +0200 +++ /var/tmp/diff_new_pack.Rjq8nD/_new 2026-10-05 12:56:45.309577361 +0200 @@ -20,7 +20,7 @@ %global _name jinx Name: emacs-%{_name} -Version: 2.10 +Version: 2.11 Release: 0 Summary: Enchanted Spell Checker for Emacs License: GPL-3.0-or-later ++++++ jinx-2.10.obscpio -> jinx-2.11.obscpio ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jinx-2.10/NEWS.org new/jinx-2.11/NEWS.org --- old/jinx-2.10/NEWS.org 2026-08-13 11:54:27.000000000 +0200 +++ new/jinx-2.11/NEWS.org 2026-09-26 11:12:01.000000000 +0200 @@ -2,11 +2,15 @@ #+author: Daniel Mendler #+language: en +* Version 2.11 (2026-09-26) + +- New command =jinx-occur= which lists all misspelled words in a separate buffer. + * Version 2.10 (2026-08-13) - Let-bind =parse-sexp-lookup-properties= to nil during Jinx tokenization. This - avoids inference with the =syntax-table= property attached by some major modes - like =haskell-mode=. + avoids interference with the =syntax-table= property attached by some major + modes like =haskell-mode=. * Version 2.9 (2026-08-01) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jinx-2.10/README.org new/jinx-2.11/README.org --- old/jinx-2.10/README.org 2026-08-13 11:54:27.000000000 +0200 +++ new/jinx-2.11/README.org 2026-09-26 11:12:01.000000000 +0200 @@ -92,6 +92,7 @@ - =C-u M-$= or =M-x jinx-correct-all= spell-checks the entire buffer. - =C-u C-u M-$= or =M-x jinx-correct-word= forces correction of the word at point, even if it is not misspelled. +- =M-x jinx-occur= displays all misspelled words in a separate buffer. A sample configuration with the popular =use-package= macro is shown here: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/jinx-2.10/jinx.el new/jinx-2.11/jinx.el --- old/jinx-2.10/jinx.el 2026-08-13 11:54:27.000000000 +0200 +++ new/jinx-2.11/jinx.el 2026-09-26 11:12:01.000000000 +0200 @@ -5,7 +5,7 @@ ;; Author: Daniel Mendler <[email protected]> ;; Maintainer: Daniel Mendler <[email protected]> ;; Created: 2023 -;; Version: 2.10 +;; Version: 2.11 ;; Package-Requires: ((emacs "29.1") (compat "31")) ;; URL: https://github.com/minad/jinx ;; Keywords: convenience, text @@ -27,25 +27,24 @@ ;;; Commentary: -;; 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. - -;; Installing Jinx is straight-forward and configuring should not need -;; much intervention. Jinx can be used completely on its own, but can -;; also safely co-exist with Emacs's built-in spell-checker Ispell. +;; 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 misspelled words 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. + +;; Installing Jinx is straight-forward and configuring should not need much +;; intervention. Jinx can be used completely on its own, but can also +;; safely co-exist with Emacs's built-in spell-checker Ispell. ;; Jinx's high performance and low resource usage comes from directly ;; calling the API of the Enchant library, see ;; https://rrthomas.github.io/enchant/. Jinx automatically compiles -;; jinx-mod.c and loads the dynamic module at startup. By binding -;; directly to the native Enchant API, Jinx avoids slower -;; inter-process communication. +;; jinx-mod.c and loads the dynamic module at startup. By binding directly +;; to the native Enchant API, Jinx avoids slower inter-process +;; communication. ;; See the manual for further information. @@ -110,10 +109,10 @@ :type '(alist :key-type symbol :value-type (choice symbol (repeat face)))) (defcustom jinx-camel-modes - '(java-mode java-ts-mode js-mode js-ts-mode ruby-mode ruby-ts-mode rust-mode - rust-ts-mode haskell-mode kotlin-mode swift-mode csharp-mode csharp-ts-mode - objc-mode typescript-ts-mode typescript-mode tsx-ts-mode python-mode - python-ts-mode dart-mode go-mode go-ts-mode scala-mode groovy-mode) + '( java-mode java-ts-mode js-mode js-ts-mode ruby-mode ruby-ts-mode rust-mode + rust-ts-mode haskell-mode kotlin-mode swift-mode csharp-mode csharp-ts-mode + objc-mode typescript-ts-mode typescript-mode tsx-ts-mode python-mode + python-ts-mode dart-mode go-mode go-ts-mode scala-mode groovy-mode) "Modes where camelCase or PascalCase words should be accepted. Set to t to enable camelCase everywhere." :type '(choice (const t) (repeat symbol))) @@ -282,6 +281,7 @@ :keys "\\[universal-argument] \\[jinx-correct]"] ["Correct word" jinx-correct-word :keys "\\[universal-argument] \\[universal-argument] \\[jinx-correct]"] + ["Occur" jinx-occur] ["Change languages" jinx-languages] ["Remove word" jinx-remove-word] "----" @@ -296,8 +296,8 @@ "List of compile flags passed to the C compiler.") (defvar jinx--reschedule-hooks - '(window-selection-change-functions window-scroll-functions - window-state-change-hook post-command-hook) + '( window-selection-change-functions window-scroll-functions + window-state-change-hook post-command-hook) "Hooks which reschedule the spell checking timer, see `jinx--reschedule'.") (defvar jinx--predicates @@ -543,19 +543,17 @@ (push (pop overlays) before)) (nconc overlays (nreverse before)))) -(cl-defun jinx--force-overlays (start end &key visible check) +(defun jinx--force-overlays (start end &optional visible) "Return misspelled word overlays between START and END, enforce checking. -If VISIBLE is non-nil, only include visible overlays. -If CHECK is non-nil, always check first." - (or (and (not check) (jinx--get-overlays start end visible)) - (progn - (with-delayed-message (1 "Fontifying...") - (jinx--in-base-buffer #'jit-lock-fontify-now start end)) - (with-delayed-message (1 "Checking...") - (jinx--check-region start end)) - (jinx--get-overlays start end visible)) +If VISIBLE is non-nil, only include visible overlays." + (with-delayed-message (1 "Fontifying...") + (jinx--in-base-buffer #'jit-lock-fontify-now start end)) + (with-delayed-message (1 "Checking...") + (jinx--check-region start end)) + (or (jinx--get-overlays start end visible) (user-error "No misspelled word in %s" - (if visible "visible text" (format "buffer `%s'" (buffer-name)))))) + (if visible "visible text" + (format "buffer `%s'" (buffer-name)))))) (defun jinx--cleanup () "Cleanup all overlays and trigger fontification." @@ -845,7 +843,7 @@ (when-let* ((suggestions (jinx--session-suggestions word))) (push ["── Session ──" :active nil] menu) (cl-loop for w in suggestions repeat jinx-menu-suggestions do - (push `[,w (jinx--correct-replace ,ov ,w)] menu))) + (push `[,w (jinx--correct-replace ,ov ,w)] menu))) (let ((submenu (list "Accept and save"))) (cl-loop for (key . fun) in jinx--save-keys do (cl-loop for (k w a) in (funcall fun 'format key word) do @@ -885,15 +883,15 @@ (let ((langs (delete-dups (cl-loop for (l . p) in (jinx--mod-langs) collect (propertize l 'jinx--group (format "Provider %s" p)))))) - (string-join - (or (completing-read-multiple - (format "Change languages (%s): " - (string-join (split-string jinx-languages) ", ")) - (completion-table-with-metadata - langs `((group-function . ,#'jinx--group))) - nil t) - (user-error "No languages selected")) - " "))) + (string-join + (or (completing-read-multiple + (format "Change languages (%s): " + (string-join (split-string jinx-languages) ", ")) + (completion-table-with-metadata + langs `((group-function . ,#'jinx--group))) + nil t) + (user-error "No languages selected")) + " "))) (defun jinx--save-local-word (action var word) "Add/remove WORD to/from local word list VAR. @@ -1003,6 +1001,57 @@ (jinx--cleanup)) ;;;###autoload +(defun jinx-occur () + "Display all lines containing misspelled words in a separate `occur-mode' buffer." + (interactive) + (let ((buf (get-buffer-create "*jinx-occur*")) + (where (buffer-name)) + overlays lines) + (save-excursion + (jinx--correct-guard + (goto-char (point-min)) + (setq overlays (jinx--force-overlays (point-min) (point-max))) + (dolist (ov overlays) + (goto-char (overlay-start ov)) + (let ((bol (pos-bol)) + (line (line-number-at-pos)) + (ov (cons (copy-overlay ov) (copy-marker (overlay-start ov))))) + (if (equal (caar lines) line) + (push ov (nth 3 (car lines))) + (push `( ,line ,(buffer-substring bol (pos-eol)) ,bol (,ov)) lines)))))) + (with-current-buffer buf + (with-silent-modifications + (erase-buffer) + (insert (format (propertize "%d misspelled words in %d lines in %s" 'face 'underline) + (length overlays) (length lines) where) + ?\n) + (pcase-dolist (`(,line ,str ,bol ,ovs) (nreverse lines)) + (let ((start (point))) + (insert + (format (propertize "%7d:" + 'occur-prefix t + 'front-sticky t + 'rear-nonsticky t + 'read-only t + 'font-lock-face list-matching-lines-prefix-face) + line) + str ?\n) + (put-text-property start (1- (point)) 'mouse-face 'highlight) + (add-text-properties start (point) + `( follow-link t + occur-target ,(cdar (last ovs)) + occur-match t)) + (dolist (ov ovs) + (let ((beg (+ start 8 (- (overlay-start (car ov)) bol))) + (end (+ start 8 (- (overlay-end (car ov)) bol)))) + (add-text-properties beg end `(occur-match t occur-target ,(cdr ov))) + (move-overlay (car ov) beg end buf))))) + (goto-char (point-min)) + (occur-mode) + (setq next-error-last-buffer buf) + (pop-to-buffer buf))))) + +;;;###autoload (defun jinx-correct-all (&optional only-check) "Correct all misspelled words in the buffer. With prefix argument ONLY-CHECK, only check the buffer and highlight all @@ -1010,8 +1059,7 @@ (interactive "*P") (jinx--correct-guard (let* ((overlays (jinx--force-overlays (or (use-region-beginning) (point-min)) - (or (use-region-end) (point-max)) - :check t)) + (or (use-region-end) (point-max)))) (count (length overlays)) (idx 0)) (if only-check @@ -1031,7 +1079,7 @@ (interactive "*") (save-excursion (jinx--correct-guard - (let* ((overlays (jinx--force-overlays (window-start) (window-end) :visible t)) + (let* ((overlays (jinx--force-overlays (window-start) (window-end) t)) (count (length overlays)) (idx 0)) ;; Not using `while-let' is intentional here. @@ -1055,7 +1103,7 @@ (while-let ((skip (let ((ov (make-overlay start end))) (unwind-protect (jinx--correct-overlay ov :initial initial) - (delete-overlay ov))))) + (delete-overlay ov))))) (forward-to-word skip) (when-let* ((bounds (jinx--bounds-of-word))) (setf (cons start end) bounds @@ -1133,7 +1181,8 @@ (unless (= n 0) (if (minibufferp) (throw 'jinx--goto n) - (let ((ov (jinx--force-overlays (point-min) (point-max)))) + (let ((ov (or (jinx--get-overlays (point-min) (point-max)) + (jinx--force-overlays (point-min) (point-max))))) (unless (or (> n 0) (<= (overlay-start (car ov)) (point) (overlay-end (car ov)))) (incf n)) (goto-char (overlay-end (nth (mod n (length ov)) ov))) @@ -1178,10 +1227,10 @@ (add-hook hook #'jinx--reschedule nil t)) (jit-lock-register #'jinx--mark-pending)) (t - (mapc #'kill-local-variable '(jinx--exclude-regexp jinx--include-faces - jinx--exclude-faces jinx--camel - jinx--dicts jinx--syntax-table - jinx--session-words)) + (mapc #'kill-local-variable '( jinx--exclude-regexp jinx--include-faces + jinx--exclude-faces jinx--camel + jinx--dicts jinx--syntax-table + jinx--session-words)) (dolist (hook jinx--reschedule-hooks) (remove-hook hook #'jinx--reschedule t)) (jit-lock-unregister #'jinx--mark-pending) ++++++ jinx.obsinfo ++++++ --- /var/tmp/diff_new_pack.Rjq8nD/_old 2026-10-05 12:56:45.731594952 +0200 +++ /var/tmp/diff_new_pack.Rjq8nD/_new 2026-10-05 12:56:45.749595707 +0200 @@ -1,5 +1,5 @@ name: jinx -version: 2.10 -mtime: 1786614867 -commit: f776ca306801f3b4d26a458d5109ea586d52e716 +version: 2.11 +mtime: 1790413921 +commit: bccb08062a3372629015bcd2c197490b7d005f37
