Какие есть варианты проверки орфографии в emacs?

19

Поскольку в настоящее время я выполняю множество непрограммных задач в Emacs, проверка орфографии снова стала одной из моих главных задач.

Я заметил, что пока нет вопросов, связанных с опциями проверки орфографии в Emacs, так что мы здесь:

Какие есть варианты проверки орфографии в Emacs?

В частности,

  • для проверки орфографии общего назначения, т. е. разумные предложения для опечаток, исправление орфографии слов
  • для выборочной проверки правописания, например, проверка правописания общего назначения, но только в комментариях
  • для всего, что я забыл или не знаю, но вы можете подумать (проверка орфографии, да ...)

Редактировать: Отрезал "другие" вещи в отдельном вопросе, какие есть варианты для написания лучших текстов в Emacs

elemakil
источник
1
Я рекомендую эту страницу: Правописание в Emacs
Люк
1
Этот вопрос слишком широк . Я предлагаю ограничить это вторым пунктом (выбрав проверку орфографии) и, возможно, спросить о грамматике отдельно.
Жиль "ТАК - перестань быть злым"
Только первые два пункта посвящены проверке правописания. Грамматика и язык не проверяют орфографию, и ваши последние три пункта поставят совершенно другой вопрос.
Малабарба
1
Хотя я не совсем согласен с тем, что исходный вопрос был слишком широким или состоял из двух совершенно разных вопросов, я раздвоил вторую часть. Этот вопрос теперь только о проверке орфографии, другой о проверке грамматики и написании лучших текстов.
elemakil

Ответы:

10
  • Для проверки орфографии общего назначения существует довольно много популярных альтернатив
    1. ispellи друзья: встроен в emacs и обычно вызывается с ispell-buffer. Проверяет орфографию только по запросу.
    2. flyspell-mode: Также встроен и обеспечивает проверку орфографии на лету и выявляет ошибки.
    3. speck-mode: Доступный из MELPA, он проверяет орфографию слова после паузы после ввода. Также имеет несколько отличительных особенностей от режима flyspell, таких как возможность использования нескольких словарей в одном буфере. (Отказ от ответственности: я использовал этот режим только кратко давным-давно)

Обратите внимание, что все вышеперечисленное требует специальных программ для проверки орфографии, таких как aspellили hunspellсоответствующие словари. Режимы обеспечивают только удобный интерфейс emacs для программ командной строки.

  • Для выборочной проверки правописания вы можете настроить flyspell-modeпеременную flyspell-generic-check-word-predicate, подключив функцию, которая выбирает, какие слова необходимо проверять. Ваш приведенный пример очень прост - просто используйте, flyspell-prog-modeкоторый проверяет только комментарии в буферах кода.
Vamsi
источник
1
Во-первых, позвольте мне поблагодарить вас за ваш ответ. После комментариев Жиля и Малабарбы я раздвоил вопрос на две части. Поэтому я бы посоветовал вам опубликовать вторую часть вашего ответа (ту, что касается weasel-word) в качестве ответа на новый вопрос. Вы можете найти ссылку в моем оригинальном вопросе.
elemakil
Пожалуйста, добавьте wcheckв свой список. Это очень хорошо, хотя в flyspellпоследнее время стало так хорошо, что я больше не пользуюсь wcheck.
Расм
Для OSX, сильно настроенная версия Emacs под названием Aquamacs имеет встроенную поддержку нативной проверки орфографии OSX (включая сопровождающий пользовательский словарь OSX слов, которые были добавлены пользователем). Это особый предмет, который не может предложить ни одна другая версия Emacs.
юрист
6

Ответ @ Vamsi уже охватывает общую и выборочную проверку орфографии. Но как насчет персонализированной автокоррекции ? @Malabarba имеет хороший пост на эту тему в своем блоге . Основная идея заключается в том, чтобы хранить пары слов с ошибками и соответствующие исправления как сокращения . Вот (немного измененная версия) код, который позволяет вам сделать это легко:

(defun ispell-word-then-abbrev (p)
  "Call `ispell-word'. Then create an abbrev for the correction made.
With prefix P, create local abbrev. Otherwise it will be global."
  (interactive "P")
  (let ((before (downcase (or (thing-at-point 'word) "")))
        after)
    (call-interactively 'ispell-word)
    (setq after (downcase (or (thing-at-point 'word) "")))
    (unless (string= after before)
      (define-abbrev
        (if p local-abbrev-table global-abbrev-table) before after))
      (message "\"%s\" now expands to \"%s\" %sally."
               before after (if p "loc" "glob"))))

(define-key ctl-x-map (kbd "C-i") 'ispell-word-then-abbrev)
(setq save-abbrevs t)
(setq-default abbrev-mode t)

С этим на месте, вы можете просто

  1. ударить C-x C-iпосле слова с ошибкой
  2. выберите исправление и
  3. никогда не беспокойся об этом снова

потому что отныне Emacs автоматически заменит ошибочную версию слова с исправлением. Трудно выразить словами, насколько это полезно!


Если вы хотите использовать новые возможности автокоррекции Emacs, вы можете добавить сокращения, определенные здесь, в ваш abbrev_defsфайл.

itsjeyd
источник