Opsi apa yang ada untuk melakukan pemeriksaan ejaan di emacs

19

Karena saya sedang melakukan banyak tugas non-pemrograman di Emacs, memeriksa ejaan menjadi salah satu perhatian utama saya sekali lagi.

Saya perhatikan bahwa tidak ada pertanyaan terkait dengan opsi untuk pemeriksaan ejaan di Emacs, jadi di sini kita mulai:

Apa pilihan saya untuk melakukan pemeriksaan ejaan di Emacs?

Secara khusus,

  • untuk pemeriksaan ejaan tujuan umum, yaitu saran yang masuk akal untuk kesalahan ketik, koreksi ejaan kata-kata
  • untuk pemeriksaan ejaan selektif, mis. pemeriksaan ejaan tujuan umum tetapi hanya dalam komentar
  • untuk apa pun yang saya lupa atau tidak sadari tetapi Anda dapat memikirkan (terkait ejaan, ya ...)

Sunting: Memotong hal - hal "lain" dalam pertanyaan terpisah, Pilihan apa yang ada untuk menulis teks yang lebih baik di emacs

elemakil
sumber
1
Saya merekomendasikan halaman ini: Ejaan dalam Emacs
Luke
1
Sebenarnya, pertanyaan ini terlalu luas . Saya sarankan untuk membatasi ke poin kedua (memilih pemeriksaan ejaan), dan mungkin bertanya tentang tata bahasa secara terpisah.
Gilles 'SANGAT berhenti menjadi jahat'
Hanya dua item pertama Anda tentang pemeriksaan ejaan. Tata bahasa dan bahasa bukan pemeriksa ejaan, dan tiga item terakhir Anda akan membuat pertanyaan yang sama sekali berbeda.
Malabarba
1
Walaupun saya tidak terlalu setuju bahwa pertanyaan awal terlalu luas atau terdiri dari dua pertanyaan yang sangat berbeda, saya telah memotong bagian kedua. Pertanyaan ini sekarang hanya tentang pemeriksaan ejaan, yang lain tentang pemeriksaan tata bahasa dan menulis teks yang lebih baik.
elemakil

Jawaban:

10
  • Untuk pemeriksaan ejaan umum, ada beberapa alternatif populer
    1. ispelldan teman-teman: Dibangun dalam emacs & biasanya dipanggil dengan ispell-buffer. Memeriksa pengejaan hanya berdasarkan permintaan.
    2. flyspell-mode: Juga bawaan dan menyediakan pengecekan ejaan saat terbang dan menyoroti kesalahan.
    3. speck-mode: Tersedia dari MELPA, itu memeriksa ejaan kata setelah Anda berhenti setelah mengetik. Juga memiliki beberapa fitur yang membedakan dari mode flyspell seperti dapat menggunakan beberapa kamus dalam buffer yang sama. (Penafian: Saya hanya menggunakan mode ini sejak lama)

Perhatikan bahwa semua hal di atas memerlukan program pemeriksa ejaan khusus seperti aspellatau hunspelldan kamus yang sesuai. Mode hanya menyediakan antarmuka emacs yang mudah digunakan untuk program-program baris perintah.

  • Untuk pemeriksaan ejaan selektif, Anda dapat menyesuaikan flyspell-modedengan variabel flyspell-generic-check-word-predicatedengan menghubungkan fungsi yang memilih kata mana yang harus diperiksa. Contoh Anda terdaftar mudah - Cukup gunakan flyspell-prog-modeyang hanya memeriksa komentar di buffer kode.
Vamsi
sumber
1
Pertama, izinkan saya mengucapkan terima kasih atas jawaban Anda. Mengikuti komentar oleh Gilles dan Malabarba saya telah memotong pertanyaan itu menjadi dua bagian. Karena itu, saya sarankan Anda memposting bagian kedua dari jawaban Anda (yang tentang weasel-word) sebagai jawaban untuk pertanyaan baru. Anda dapat menemukan tautannya di pertanyaan awal saya.
elemakil
Silakan tambahkan wcheckke daftar Anda. Sangat bagus, meskipun flyspellakhir-akhir ini menjadi sangat baik, sehingga saya tidak menggunakannya wchecklagi.
rasmus
Untuk OSX, versi Emacs yang sangat disesuaikan yang disebut Aquamacs memiliki dukungan bawaan untuk pemeriksa ejaan OSX asli (termasuk, kamus kata-kata pengguna OSX yang menyertai kata-kata yang telah ditambahkan oleh pengguna). Itu adalah item khusus yang tidak dapat ditawarkan oleh versi Emacs lainnya.
hukum
6

@ Vamsi menjawab sudah mencakup tujuan umum dan pemeriksaan ejaan selektif. Tetapi bagaimana dengan koreksi otomatis yang dipersonalisasi ? @Malabarba memiliki pos yang bagus tentang topik ini di blog - nya . Ide dasarnya adalah untuk menyimpan pasangan kata yang salah eja dan koreksi yang tepat sebagai Abbrev . Ini adalah (versi yang sedikit dimodifikasi) kode yang memungkinkan Anda melakukan ini dengan mudah:

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

Dengan ini, Anda dapat melakukannya dengan mudah

  1. dipukul C-x C-isetelah kata yang salah eja
  2. pilih koreksi, dan
  3. tidak pernah khawatir lagi

karena mulai sekarang Emacs akan secara otomatis mengganti versi kata yang salah eja dengan koreksi. Sulit untuk mengatakan betapa berharganya ini!


Jika Anda ingin menambah kemampuan koreksi otomatis baru yang ditemukan Emacs, Anda dapat menambahkan singkatan yang didefinisikan di sini ke abbrev_defsfile Anda .

itu hanya
sumber