कई शब्दकोशों के साथ जाँच करें


14

मैं Emacs वर्तनी परीक्षक के साथ कई शब्दकोशों का उपयोग कैसे कर सकता हूं? विशेष रूप से मैं एक ही समय में एक ब्रिटिश अंग्रेजी शब्दकोश और एक चिकित्सा अंग्रेजी शब्दकोश का उपयोग करना चाहता हूं।


क्या आप उपयोग कर रहे हैं flyspell?
PythonNut

हां, मैं उपयोग कर रहा हूं flyspell
दिव्येनेफ्रॉन

समाधान का उपयोग कर सकते हैं, flyspellलेकिन करने के लिए नहीं है। इस तरह से उत्तर अधिक लोगों के लिए प्रासंगिक हो सकते हैं।
दिव्येनेफ्रॉन

जवाबों:


16

हंप्सेल कई शब्दकोशों के साथ जांच कर सकता है, और आप इसे Emacs के साथ काम करने के लिए कॉन्फ़िगर कर सकते हैं। यह है कि मैं इसे कैसे करता हूँ OS X 10.11, Emacs 25.0 के साथ। यह पुराने Emacsen के साथ काम नहीं करेगा।

हंसेल स्थापित करें

brew install hunspell

LibreOffice और OpenMedSpel से Hunspell शब्दकोशों को डाउनलोड करें ।

cd ~/Downloads/

curl http://extensions.libreoffice.org/extension-center/english-dictionaries/releases/2016.04.01/dict-en.oxt > dict-en.oxt
unzip dict-en.oxt en_GB.aff en_GB.dic

curl -L https://addons.mozilla.org/en-US/firefox/downloads/latest/6526/addon-6526-latest.xpi > openmedspel.xpi
unzip openmedspel.xpi dictionaries/OpenMedSpel.{aff,dic}
mv dictionaries/OpenMedSpel.dic en_US-med.dic
mv dictionaries/OpenMedSpel.aff en_US-med.aff

शब्दकोश में डाल दिया ~/Library/Spelling/

mv *.aff *.dic ~/Library/Spelling/

इसे इसमें जोड़ें ~/.emacs/init.el:

(with-eval-after-load "ispell"
  (setq ispell-program-name "hunspell")
  (setq ispell-dictionary "en_GB,en_US-med")
  ;; ispell-set-spellchecker-params has to be called
  ;; before ispell-hunspell-add-multi-dic will work
  (ispell-set-spellchecker-params)
  (ispell-hunspell-add-multi-dic "en_GB,en_US-med"))

ध्यान दें कि फ़ंक्शन ispell-hunspell-add-multi-dicपुराने संस्करणों में मौजूद नहीं है ispell.el, यहां तक ​​कि Emacs 24.5 में भी। मुझे github.com/emacs-mirror/emacs/blob/master/lisp/textmodes/… पर नवीनतम फ़ाइल डाउनलोड करनी थी और इसे काम करने के लिए फिर से संकलित करना था।
xji

मैं 25.0 Emacs का उपयोग कर रहा हूँ। मैंने इसके बारे में एक नोट जोड़ा कि यह केवल Emacs> = 25.0 पर काम कर रहा है।
दिव्येनेफ्रोन

मैंने 25 Emacs स्थापित किए हैं। हालांकि, अजीब तरह से मैं निम्नलिखित त्रुटि से मिला: Symbol’s function definition is void: ispell-hunspell-add-multi-dicहालांकि, मुझे यकीन है कि /usr/share/emacs/25.1.50/lisp/textmodes/ispell.elc, फ़ंक्शन मौजूद है। किसी भी विचार यह कैसे हुआ हो सकता है? धन्यवाद।
xji

मुझे एहसास हुआ कि यह मेरे था ispell.elमें /usr/share/emacs/site-lisp/नए पीछा ispell.elEmacs25 में ... देखें unix.stackexchange.com/questions/28483/... किसी को भी, जो एक ही समस्या का सामना कर रहा हो सकता है के लिए।
xji

2

मान लीजिए कि आपने पहले से ही en_US-med.dic और en_US-med.aff और इंस्टॉल किए गए hunspell डाउनलोड किए हैं

चरण 1, hunspell -Dशेल में चलाएं , जो उस निर्देशिका को बताएगा जहां हंसेल शब्दकोशों की खोज करता है, उस निर्देशिका में en_US-med.dic और en_US-med.aff कॉपी करें।

चरण 2, ~ / .emacs में नीचे कोड डालें,

(setq ispell-program-name "hunspell")
;; you could set `ispell-dictionary` instead but `ispell-local-dictionary' has higher priority
(setq ispell-local-dictionary "en_US")
(setq ispell-local-dictionary-alist '(("en_US" "[[:alpha:]]" "[^[:alpha:]]" "[']" nil ("-d" "en_US,en_US-med") nil utf-8)))

हम वास्तव में hunspell CLI के लिए "-d en_US, en_US-med" विकल्प पास करते हैं, इसलिए यह एक ही समय में TWO शब्दकोश "en_US" और "en_US-med" का उपयोग कर सकता है ।

"-D" विकल्प hunspell मैनुअल ( man hunspellशेल में) में प्रलेखित है

यहाँ हंसेल मैनुअल से उद्धृत पाठ दिया गया है:

-d en_US,en_geo,en_med,de_DE,de_med

       en_US  and  de_DE  are  base dictionaries, they consist of aff and dic
       file pairs: en_US.aff, en_US.dic and  de_DE.aff,  de_DE.dic.   En_geo,
       en_med,  de_med  are  special dictionaries: dictionaries without affix
       file. Special dictionaries are optional extension of the base  dictio‐
       naries  usually  with  special (medical, law etc.)  terms. There is no
       naming convention for special dictionaries, only the ".dic" extension:
       dictionaries  without affix file will be an extension of the preceding
       base dictionary (right order of the parameter list needs for good sug‐
       gestions). First item of -d parameter list must be a base dictionary.

Emacs पर परीक्षण किया गया 24.3, डेबियन 7 शब्द "फाइब्रोचोन्ड्राइटिस" के साथ।

किसी भी OS पर Emacs 23+ पर काम करना चाहिए ।

कृपया विंडोज़ पर ध्यान दें कि hunspell को निष्पादन योग्य बताने के लिए सबसे आसान तरीका है डिक्शनरी सर्च पथ को पर्यावरण वेरिएबल सेटअप करना है DICTPATH(यह hunspell मैन्युअल में प्रलेखित है)। यह बहुत संभव है साइगविन / एमएसवाईएस 2 से हंसेल निष्पादन योग्य केवल UNIX प्रारूप में पथ को पहचानता है


यह विधि मुझे कई शब्दकोशों का उपयोग करने की अनुमति नहीं देती है ।
दिव्येनेफ्रोन

जिस कोड को मैंने IS मल्टी-डिक्शनरी दिया है।
चिन बिन

मैं देख रहा हूँ, इस ओर इशारा करने के लिए धन्यवाद - मैंने -dविकल्प पर ध्यान नहीं दिया ।
दिव्येनेफ्रोन

वैसे यह किसी कारण से काम नहीं लगता है। जब मैं कमांड लाइन में -d विकल्प का उपयोग करता हूं, तो यह काम करता है, लेकिन Emacs में, helm-flyspellकिसी तरह केवल सिस्टम भाषा के साथ शब्दकोश का उपयोग करता है।
xji

हेल्म-फ्लाईस्पेल एस्पेल का उपयोग कर सकते हैं।
चिन बिन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.