Jakie są opcje sprawdzania pisowni w emacsie

19

Ponieważ obecnie wykonuję wiele zadań niezwiązanych z programowaniem w Emacsie, sprawdzanie pisowni stało się ponownie jednym z moich głównych problemów.

Zauważyłem, że nie ma jeszcze pytania dotyczącego opcji sprawdzania pisowni w Emacsie, więc zaczynamy:

Jakie są moje opcje sprawdzania pisowni w Emacsie?

Konkretnie,

  • do sprawdzania pisowni ogólnego przeznaczenia, tj. rozsądne sugestie dotyczące literówek, korekta pisowni słów
  • do selektywnego sprawdzania pisowni, np. sprawdzanie pisowni ogólnego przeznaczenia, ale tylko w komentarzach
  • za wszystko, o czym zapomniałem lub o czym nie wiem, ale możecie pomyśleć (związane z sprawdzaniem pisowni, duh ...)

Edit: Rozwidlona off „inne” rzeczy w osobnym pytaniu Jakie są tam lepsze opcje do pisania tekstów w emacs

elemakil
źródło
1
Polecam tę stronę: Pisownia w Emacsie
Łukasz
1
W obecnej formie pytanie to jest zbyt szerokie . Sugeruję ograniczenie go do drugiego punktu (wybranie sprawdzania pisowni) i może osobno zapytać o gramatykę.
Gilles „SO- przestań być zły”
Tylko pierwsze dwa elementy dotyczą sprawdzania pisowni. Gramatyka i język nie sprawdzają pisowni, a twoje trzy ostatnie pytania byłyby zupełnie innym pytaniem.
Malabarba
1
Chociaż tak naprawdę nie zgadzam się, że pierwotne pytanie było zbyt ogólne lub składało się z dwóch bardzo różnych pytań, rozwidliłem drugą część. To pytanie dotyczy teraz tylko sprawdzania pisowni, drugie dotyczy sprawdzania gramatyki i pisania lepszych tekstów.
elemakil

Odpowiedzi:

10
  • Do sprawdzania pisowni ogólnego przeznaczenia istnieje wiele popularnych alternatyw
    1. ispelli przyjaciele: Wbudowany w emacs i zwykle wywoływany za pomocą ispell-buffer. Sprawdza pisownię tylko na żądanie.
    2. flyspell-mode: Również wbudowany i zapewnia sprawdzanie pisowni w locie i wyróżnia błędy.
    3. speck-mode: Dostępny w MELPA, sprawdza pisownię słowa po pauzie po wpisaniu. Ma także kilka cech odróżniających od trybu Flyspell, takich jak możliwość korzystania z wielu słowników w tym samym buforze. (Oświadczenie: Użyłem tego trybu krótko tylko dawno temu)

Należy pamiętać, że wszystkie powyższe wymagają dedykowanych programów do sprawdzania pisowni, takich jak aspelllub hunspellodpowiednie słowniki. Tryby zapewniają jedynie wygodny interfejs emacs do programów wiersza poleceń.

  • W celu selektywnego sprawdzania pisowni można dostosować flyspell-modezmienną flyspell-generic-check-word-predicate, łącząc funkcję, która wybiera, które słowa należy sprawdzić. Wymieniony przykład jest prosty - wystarczy użyć, flyspell-prog-modektóry sprawdza tylko komentarze w buforach kodu.
Vamsi
źródło
1
Po pierwsze, dziękuję za odpowiedź. Po komentarzach Gillesa i Malabarby podzieliłem pytanie na dwie części. Dlatego sugeruję, abyś zamieścił drugą część swojej odpowiedzi (tę dotyczącą weasel-word) jako odpowiedź na nowe pytanie. Link można znaleźć w moim pierwotnym pytaniu.
elemakil
Dodaj wcheckdo swojej listy. Jest bardzo dobry, choć flyspellostatnio stał się tak dobry, że już go nie używam wcheck.
rasmus
W przypadku OSX wysoce spersonalizowana wersja Emacsa o nazwie Aquamacs ma wbudowaną obsługę natywnego sprawdzania pisowni OSX (w tym dołączony słownik użytkownika OSX słów dodanych przez użytkownika). Jest to przedmiot specjalny, którego nie może zaoferować żadna inna wersja Emacsa.
prawnik
6

Odpowiedź @ Vamsi obejmuje już ogólne i selektywne sprawdzanie pisowni. Ale co ze spersonalizowaną autokorekcją ? @Malabarba ma fajny post na ten temat na swoim blogu . Podstawową ideą jest przechowywanie par błędnie napisanych słów i odpowiednich poprawek jako skrótów . Oto (nieco zmodyfikowana wersja) kod, który pozwala to łatwo zrobić:

(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)

Dzięki temu możesz po prostu

  1. uderzył C-x C-ipo błędnie napisanym słowie
  2. wybierz poprawkę i
  3. nigdy więcej się o to nie martw

ponieważ odtąd Emacs automatycznie zastąpi błędnie napisaną wersję słowa poprawką. Trudno wyrazić słowami, jak to jest użyteczne!


Jeśli chcesz doładować nowo znalezione funkcje automatycznej korekty Emacsa, możesz dodać zdefiniowane tutaj skróty do swojego abbrev_defspliku.

itsjeyd
źródło