проверка орфографии в emacs
Enchant-2 + https://github.com/minad/jinx позволяет использовать более одного языка для проверки одного буфера. Это очень приятно.
Aspell, ispell, hunspell и к ним enchant, чтоб унифицировать интерфейс. У меня сейчас hunspell.
- https://habr.com/ru/companies/flant/articles/806629/ – интересных подробностей про hunspell.
- https://t.me/docsascode/29755
- https://www.npmjs.com/package/cspell-dict-ru_ru – словарь
- https://github.com/AlexJameson/dcmn – утилита создания парадигм
- https://github.com/AlexJameson/software-development-dictionary-ru – пример словаря с парадигмами
- Flyspell - https://www.emacswiki.org/emacs/FlySpell
- https://www.emacswiki.org/emacs/InteractiveSpell
- https://ipcalc.co/blog/proverka-orfografii-na-letu-v-emacs-hunspell-emacs/
- https://ipcalc.co/blog/emacs-flyspell-mode-perenaznachenie-knopki-myshi-dlya-zameny-slova/
- https://codeberg.org/ideasman42/emacs-spell-fu - занятная штука на когда руки дойдут, в принципе, jinx ссылается как на один из источников вдохновения.
- https://github.com/tmalsburg/guess-language.el - как облегчить проверку flyspell-ом мультиязычных текстов. Проверяет каждый абзац на предмет, не надо ли поменять язык для проверки. К сожалению, у меня нередки более мелкие вкрапления иностранных слов. Enchant и jinx рулит :)
- Чтобы добавить слово в словарь flyspell - flyspell-correct-word-before-point (C-c $), при курсоре на слове. Предложит меню с вариантами замены, а также с «сохранить слово», «принять сессию», «принять буфер». Ну, вот, сохранить.
Ну и немного больше, чем орфография: https://www.reddit.com/r/emacs/comments/13wh55q/whats_everyone_using_for_grammar_checks/
Забавно, конечно. Как будто с vale и languagetool иду с разных сторон к одной цели. Для Vale надо писать проверки, для LanguageTool отключать лишние в первую очередь.
flycheck
Flycheck + vale и/или LanguageTool (https://github.com/emacs-languagetool/flycheck-languagetool) - тоже проверяют орфографию. LanguageTool с одной стороны, вроде, серьёзная штука. С другой — раздражает, что непонятно, как можно выбрать только актуальные проверки. И кажется, там тоже сложности с многоязыковым текстом. Jinx может существенно меньше, но не делает лишнего. Возможно, конечно, лучше другие способы общения с languagetool, типа https://github.com/mhayashi1120/Emacs-langtool, https://github.com/PillFall/Emacs-LanguageTool.el?
Впрочем, к flycheck что только не подключается. https://www.flycheck.org/en/latest/developer/developing.html
Пример для cspell, преимущественно тыренный с https://ztlevi.github.io/posts/Spell-checking-with-Cspell-in-Emacs/.
(with-eval-after-load 'flycheck (flycheck-define-checker cspell "Cspell checker supports camel case checking" :command ("npx" "cspell" "--config" (eval (substitute-in-file-name "$HOME/path/to/.cspell.json")) source-inplace) :error-patterns ((warning line-start (file-name) ":" line ":" column " - " (message) line-end)) :modes (org-mode text-mode)) (add-to-list 'flycheck-checkers 'cspell))
Cspell
- http://cspell.org/ – проверяет орфографию в коде, поэтому можно объяснять, что игнорировать.
- https://github.com/streetsidesoftware/cspell-cli – кажется, проверялка из командной строки для неё.
- https://www.npmjs.com/package/cspell-cli/v/5.9.1, тут ещё некоторые инструкции, в которых не разбиралась.
- https://classic.yarnpkg.com/en/package/cspell – для него ж.
javascript-ное node.js-ное, так что если хочется эту штуку, надо npm уже установленным.
Если ставить в каталог проекта, то:
npm install cspell@latest npm install @cspell/dict-ru_ru npx cspell link add @cspell/dict-ru_ru
Глобально, говорят, проблемки с каталогами могут быть, но я не пробовала.
- https://cspell.org/docs/Configuration – про настройки.
LanguageTool
- https://github.com/languagetool-org/languagetool/
- https://languagetool.org/download/ – всякое для скачивания там.
- https://dev.languagetool.org/http-server
- https://fasttext.cc/docs/en/support.html
- https://dev.languagetool.org/development-overview
Подключила к проверке заметок через pre-commit, но там потребовалось заморочиться с xargs, потому что languagetool-commandline.jar не умеет принимать на вход несколько файлов. Только один.
Проверка в emacs через flycheck без проблем, https://github.com/emacs-languagetool/flycheck-languagetool