2010-10-18 15 views
10

क्या किसी के पास hunspell और Emacs के लिए कोई कार्य सेटअप है? सीधे शब्दों में स्थापित करने hunspell करने के लिए ispell-program-name काम नहीं करता है, निर्गम (जब flyspell का उपयोग कर, उदाहरण के लिए) नीचे दिखाई देता है:Emacs में Hunspell के लिए कार्य सेटअप

-> UTF-8 encoding error. Missing continuation byte in 0. character position: - 9631: word not found 

मैंने देखा है (मेरी फ़ाइलें आमतौर पर में UTF-8 एन्कोडेड कर रहे हैं) कुछ अलग सेटअप, लेकिन वे सभी एक तरह से या किसी अन्य में विफल रहे हैं। यदि एन्कोडिंग इस तरह काम करता है तो इसे आमतौर पर सही शब्दकोश खोजने में समस्याएं होनी चाहिए।

कोई भी समाधान समाधान वाला कोई भी व्यक्ति? दो शब्दकोशों के बीच स्विच करने में सक्षम होना अच्छा होगा (डिफ़ॉल्ट स्वीडिश शब्दकोश होना चाहिए, और द्वितीयक अंग्रेजी होना चाहिए), लेकिन कुछ भी चलाना बेहतर होगा।

उत्तर

13

आपको लगता है कि UTF-8 एन्कोडिंग त्रुटि हो रही है, तो यह है कि hunspell प्रक्रिया एक तर्क कुछ अन्य एन्कोडिंग को निर्दिष्ट के साथ चलाने जा रहा है इसका मतलब है। जब मैं अपने प्रक्रिया सूची की जांच, उदाहरण के लिए, मैं Emacs करने के लिए इस बच्चे की प्रक्रिया को देखने के लिए एक बार इसे शुरू कर दिया है:

/usr/bin/hunspell -a -B -i iso-8859-1 

ispell-get-coding-system समारोह क्या जो एन्कोडिंग का उपयोग करना, बड़े ispell-dictionary-alist चर का परीक्षण करके जो यह करता है फैसला करता है ऐसा लगता है कि Emacs को ज्ञात हर भाषा की सूची है। फ़ंक्शन आमतौर पर उस प्रविष्टि के अंतिम प्रतीक को पकड़ता है जो उस भाषा से मेल खाता है जिसे आप देखना चाहते हैं। कुछ कारणों से मुझे पता लगाने के लिए परेशान नहीं था, इस सूची में iso-8859-1 अंग्रेजी के लिए है - इसके बजाय, आप जानते हैं, अपने वास्तविक बफर में एन्कोडिंग पर ध्यान देना। मुझे पता है, ऐसा कोई मतलब नहीं है। लेकिन हम आगे बढ़ते हैं। ,

;; I could never get Emacs to pay attention to this 
(setq ispell-dictionary-alist 
    '((nil "[A-Za-z]" "[^A-Za-z]" "[']" t ("-d" "en_US") nil utf-8))) 

लेकिन मैं इस सेटिंग के लिए वास्तव में काम कभी नहीं मिल सकता है:

आपको लगता है कि तुम आठ मानकों के अंतिम रूप में चर ispell-dictionary-alist के लिए अपने स्वयं के मूल्य निर्धारित करके इसे ओवरराइड और इस्तेमाल कर सकते हैं कि utf-8 चाहे या नहीं मैं अपने .emacs में किया था एक (load-library "ispell") पहले, या क्या मैं इसे उन में से एक के अंदर किया:

;; Did not work for me either. 
(eval-after-load "ispell" '(progn ...)) 

किसी भी तरह से, अगर मैं एक ताजा Emacs शुरू औरमें प्रवेश कियाऔर टाइप ispell-dictionary-alist और दबाए गए नियंत्रण-जे, फिर विशाल मूल सूची ispell बनाता है। हर बार।

इसलिए मैंने इस विशाल सूची की पूरी समस्या के आसपास एक अंतराल करने का फैसला किया और को हमेशा वापस करने के लिए ispell-get-coding-system फ़ंक्शन को फिर से लिखने का निर्णय लिया। निश्चित रूप से, यह अगली बार मुझे काट देगा कि मैं एक फ़ाइल खोलता हूं जो वास्तव में iso-8859-1 में है, लेकिन मैं वैसे भी ऐसा नहीं करता, है ना?

मेरी .emacs फ़ाइल में सफलतापूर्वक इसे लागू करने के (अच्छी तरह से, ~/.emacs.d/init.el लेकिन वह इतना टाइपिंग एक स्टैक ओवरफ़्लो जवाब के लिए लेता है) इस कोड की आवश्यकता:

;; It works! It works! After two hours of slogging, it works! 
(if (file-exists-p "/usr/bin/hunspell") 
    (progn 
     (setq ispell-program-name "hunspell") 
     (eval-after-load "ispell" 
     '(progn (defun ispell-get-coding-system() 'utf-8))))) 

मैं अब hunspell अप और एक विजेता की तरह काम है! दुर्भाग्य से, मैं इसे काम करने के माध्यम से पूरा कारण उम्मीद कर रहा था कि इसका शब्दकोश एस्पेल की तुलना में काफी बड़ा था, लेकिन मुझे लगता है कि यह कुछ शब्दों को हाइलाइट कर रहा है। ओह ठीक है, मैं एक और दृष्टिकोण की कोशिश करूंगा।मैं मूल रूप से एक वर्तनी परीक्षक चाहता हूं जिसे /usr/share/dict/american-english-huge शब्दकोश के साथ लोड किया जा सकता है जो उबंटू पर उपलब्ध है, लेकिन aspell कई तरीकों से मृत्यु हो गई जब मैंने अपने क्षितिज का विस्तार करने की कोशिश की। शायद मैं hunspell के साथ भाग्यशाली होगा - हम देखेंगे।

+3

धन्यवाद। यह बहुत ही बढ़िया है। स्वीडिश जैसी भाषा का उपयोग करने के लिए, Hunspell i/aspell से बेहतर तरीका है , और यहां तक ​​कि अगर मुझे utf8 में एन्कोड किए गए फ़ाइलों के लिए देखना नहीं है, तो यह अभी भी कमाल है। धन्यवाद! – monotux

+0

आपके द्वारा वर्णित दृष्टिकोण की कोशिश करने में मुझे एक त्रुटि मिलती है। सबसे पहले मैंने 'हुडो एपीटी-हुनस्प्ल इंस्टॉल' किया था, फिर मैंने डाला मेरे .emacs में कोड ब्लॉक ('if' निर्माण के साथ आखिरी वाला)। जब मैं चेक वर्तनी करने का प्रयास करता हूं तो मुझे निम्नलिखित में मिलता है \ * संदेश \ *: 'नई इस्पल प्रक्रिया शुरू करना [अंग्रेजी] ... त्रुटि सक्षम करना फ्लाईस्पेल मोड: ("अंग्रेजी" नामक शब्दकोश के लिए प्रत्यय या शब्दकोश फ़ाइलों को नहीं खोल सकता। @ (#) Internat आयनल इस्पेल संस्करण 3.2.06 (लेकिन वास्तव में हनस्पेल 1.2.14)) '। समस्या क्या है? –

+1

मुझे बहुत मदद की, धन्यवाद! हालांकि इस उत्तर को खोजने में 2 घंटे लग गए :) – daroczig

0
+1

इसे पहले से ही कोशिश की। यह फिर से किया, उम्मीद है कि मैं कुछ याद किया होगा। [यह मेरा सेटअप है] (http://paste.lisp.org/display/115686), मैं शब्दकोश ('rw-ispell-change-dictionary') बदल सकता हूं और ऐसा लगता है कि मेरे शब्दकोश, [लेकिन यह है जब मैं इसका उपयोग करने की कोशिश करता हूं तो मुझे क्या मिलता है] (http://paste.lisp.org/display/115687) :-( – monotux

0

https://passingcuriosity.com/2017/emacs-hunspell-and-dictionaries/

से अपने ~/.emacs में जोड़े

;; Set $DICPATH to "$HOME/Library/Spelling" for hunspell. 
(setenv 
    "DICPATH" 
    "/path/to/hunspell/dictionary") 
;; Tell ispell-mode to use hunspell. 
(setq 
    ispell-program-name 
    "hunspell") 

मेरी शब्दकोश फ़ाइलें /usr/share/hunspell पर थीं।

संबंधित मुद्दे