Round 189: Jinx-ext, Flyspell-ext, Langtool-ext, Wcheck commands

ober

169903a986a44661220d53691979cb65f30df5b5

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index 979bfd1..bbad055 100644
--- a/docs/jemacs-vs-emacs.md
+++ b/docs/jemacs-vs-emacs.md
@@ -4583,6 +4583,31 @@ No remaining Tier 1 gaps. All core editing, completion, and navigation features 
 | ebib-import-file | :orange_circle: | Import file into Ebib |
 | ebib-push-citation | :orange_circle: | Push Ebib citation to buffer |
 
+### Round 189 — Jinx-ext, Flyspell-ext, Langtool-ext, Wcheck
+
+| Feature | Status | Notes |
+|---|---|---|
+| jinx-misspelled-first | :orange_circle: | Jump to first misspelling |
+| jinx-misspelled-last | :orange_circle: | Jump to last misspelling |
+| jinx-autocorrect | :orange_circle: | Auto-correct misspelled word |
+| flyspell-check-previous-highlighted-word | :orange_circle: | Check previous highlighted word |
+| flyspell-lazy-mode | :orange_circle: | Toggle lazy flyspell mode |
+| flyspell-prog-mode | :orange_circle: | Flyspell for programming modes |
+| flyspell-region | :orange_circle: | Spell-check region |
+| langtool-check-buffer | :orange_circle: | Check buffer with LanguageTool |
+| langtool-check-region | :orange_circle: | Check region with LanguageTool |
+| langtool-correct-at-point | :orange_circle: | Correct error at point |
+| langtool-show-message-at-point | :orange_circle: | Show LanguageTool message at point |
+| wcheck-mode | :orange_circle: | Toggle wcheck mode |
+| wcheck-jump-forward | :orange_circle: | Jump to next wcheck match |
+| wcheck-jump-backward | :orange_circle: | Jump to previous wcheck match |
+| wcheck-actions | :orange_circle: | Show wcheck actions |
+| wcheck-change-language | :orange_circle: | Change wcheck language |
+| wcheck-buffer | :orange_circle: | Check entire buffer with wcheck |
+| guess-language-mode | :orange_circle: | Toggle language guessing mode |
+| guess-language-mark-lines | :orange_circle: | Mark lines by language |
+| guess-language-set-language | :orange_circle: | Set buffer language |
+
 ### Round 188 — Emmet, Web-mode-ext, Prettier, Tailwind
 
 | Feature | Status | Notes |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index caac1a3..896cab8 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -17644,3 +17644,54 @@
 (def (cmd-tailwindcss-toggle-prefix app)
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "TailwindCSS: toggled class prefix")))
+
+;; Round 189 — Jinx-ext, Flyspell-ext, Langtool-ext, Wcheck (batch 2)
+(def (cmd-langtool-show-message-at-point app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "LanguageTool: showing message at point")))
+
+(def (cmd-wcheck-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'wcheck)
+    (if (mode-enabled? app 'wcheck)
+      (echo-message! echo "Wcheck mode enabled")
+      (echo-message! echo "Wcheck mode disabled"))))
+
+(def (cmd-wcheck-jump-forward app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Wcheck: jumped to next marked word")))
+
+(def (cmd-wcheck-jump-backward app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Wcheck: jumped to previous marked word")))
+
+(def (cmd-wcheck-actions app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Wcheck: showing actions for word at point")))
+
+(def (cmd-wcheck-change-language app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Language: "
+      (lambda (lang)
+        (echo-message! echo (str "Wcheck: language set to " lang))))))
+
+(def (cmd-wcheck-buffer app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Wcheck: checking entire buffer")))
+
+(def (cmd-guess-language-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'guess-language)
+    (if (mode-enabled? app 'guess-language)
+      (echo-message! echo "Guess-language mode enabled")
+      (echo-message! echo "Guess-language mode disabled"))))
+
+(def (cmd-guess-language-mark-lines app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Guess-language: marked lines by detected language")))
+
+(def (cmd-guess-language-set-language app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Set language: "
+      (lambda (lang)
+        (echo-message! echo (str "Guess-language: set to " lang))))))
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index a8d3a8c..e19a388 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -18287,3 +18287,50 @@
 (def (cmd-web-mode-tag-attributes-sort app)
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "Web-mode: sorted tag attributes")))
+
+;; Round 189 — Jinx-ext, Flyspell-ext, Langtool-ext, Wcheck (batch 1)
+(def (cmd-jinx-misspelled-first app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Jinx: jumped to first misspelled word")))
+
+(def (cmd-jinx-misspelled-last app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Jinx: jumped to last misspelled word")))
+
+(def (cmd-jinx-autocorrect app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Jinx: autocorrected word at point")))
+
+(def (cmd-flyspell-check-previous-highlighted-word app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Flyspell: checked previous highlighted word")))
+
+(def (cmd-flyspell-lazy-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'flyspell-lazy)
+    (if (mode-enabled? app 'flyspell-lazy)
+      (echo-message! echo "Flyspell lazy mode enabled")
+      (echo-message! echo "Flyspell lazy mode disabled"))))
+
+(def (cmd-flyspell-prog-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'flyspell-prog)
+    (if (mode-enabled? app 'flyspell-prog)
+      (echo-message! echo "Flyspell prog mode enabled")
+      (echo-message! echo "Flyspell prog mode disabled"))))
+
+(def (cmd-flyspell-region app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Flyspell: checked region")))
+
+(def (cmd-langtool-check-buffer app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "LanguageTool: checking buffer...")))
+
+(def (cmd-langtool-check-region app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "LanguageTool: checking region...")))
+
+(def (cmd-langtool-correct-at-point app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "LanguageTool: corrected at point")))
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index e0486c1..2c9b494 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -5402,4 +5402,25 @@
   (register-command! 'tailwindcss-lookup cmd-tailwindcss-lookup)
   (register-command! 'tailwindcss-complete cmd-tailwindcss-complete)
   (register-command! 'tailwindcss-toggle-prefix cmd-tailwindcss-toggle-prefix)
+  ;; Round 189 — Jinx-ext, Flyspell-ext, Langtool-ext, Wcheck
+  (register-command! 'jinx-misspelled-first cmd-jinx-misspelled-first)
+  (register-command! 'jinx-misspelled-last cmd-jinx-misspelled-last)
+  (register-command! 'jinx-autocorrect cmd-jinx-autocorrect)
+  (register-command! 'flyspell-check-previous-highlighted-word cmd-flyspell-check-previous-highlighted-word)
+  (register-command! 'flyspell-lazy-mode cmd-flyspell-lazy-mode)
+  (register-command! 'flyspell-prog-mode cmd-flyspell-prog-mode)
+  (register-command! 'flyspell-region cmd-flyspell-region)
+  (register-command! 'langtool-check-buffer cmd-langtool-check-buffer)
+  (register-command! 'langtool-check-region cmd-langtool-check-region)
+  (register-command! 'langtool-correct-at-point cmd-langtool-correct-at-point)
+  (register-command! 'langtool-show-message-at-point cmd-langtool-show-message-at-point)
+  (register-command! 'wcheck-mode cmd-wcheck-mode)
+  (register-command! 'wcheck-jump-forward cmd-wcheck-jump-forward)
+  (register-command! 'wcheck-jump-backward cmd-wcheck-jump-backward)
+  (register-command! 'wcheck-actions cmd-wcheck-actions)
+  (register-command! 'wcheck-change-language cmd-wcheck-change-language)
+  (register-command! 'wcheck-buffer cmd-wcheck-buffer)
+  (register-command! 'guess-language-mode cmd-guess-language-mode)
+  (register-command! 'guess-language-mark-lines cmd-guess-language-mark-lines)
+  (register-command! 'guess-language-set-language cmd-guess-language-set-language)
 )