Які існують варіанти для перевірки орфографії в emacs


19

Оскільки я зараз виконую безліч завдань непрограмування в Emacs, перевірка орфографії знову стала однією з моїх головних проблем.

Я помітив, що питання щодо перевірки орфографії в Emacs ще не виникає, тому ми переходимо:

Які мої варіанти зробити перевірку орфографії в Emacs?

Зокрема,

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

Edit: Роздвоєний від «інших» речей в окремому питанні, Які варіанти існує для написання більш текстів в Emacs


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який перевіряє лише коментарі в буферах коду.

1
По-перше, дозвольте подякувати за вашу відповідь. Після коментарів Жилла та Малабарби я поставив це питання на дві частини. Тому я пропоную опублікувати другу частину своєї відповіді (ту, що стосується weasel-word) як відповідь на нове запитання. Ви можете знайти посилання в моєму оригінальному запитанні.
elemakil

Будь ласка, додайте wcheckдо свого списку. Це дуже добре, хоча flyspellостаннім часом стало таким хорошим, що я більше не використовую wcheck.
rasmus

Для OSX високомодифікована версія Emacs під назвою Aquamacs має вбудовану підтримку вбудованої програми перевірки орфографії OSX (включаючи доданий користувачем словник користувача для OSX). Це спеціальний предмет, який не може запропонувати жодна інша версія Emacs.
законник

6

@ Відповідь Вамсі вже охоплює загальне та вибіркове перевірку орфографії. А як щодо персоналізованої автоматичної корекції ? @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файл.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.