代码之家  ›  专栏  ›  技术社区  ›  monotux

Emacs中Hunstall的工作设置

  •  10
  • monotux  · 技术社区  · 14 年前

    hunspell Emacs ? 简单设置 ispell-program-name 浑浊

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

    (我的文件通常用UTF-8编码)

    有人有解决办法吗?能够在两个字典之间切换是很好的(默认的应该是瑞典语字典,第二英语),但是运行任何东西都会更好。

    3 回复  |  直到 14 年前
        1
  •  15
  •   Flow Matt McDonald    11 年前

    如果您得到的是UTF-8编码错误,那么它意味着 hunspell 进程正在使用指定其他编码的参数运行。例如,当我检查我的进程列表时,我会看到这个子进程在启动后发送给Emacs:

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

    这个 ispell-get-coding-system ispell-dictionary-alist 变量,该变量似乎列出了Emacs已知的所有语言。该函数通常从与要检查的语言匹配的条目中获取最后一个符号。出于某种原因,我没有费心去弄清楚,这个列表 iso-8859-1 对于英语而不是,你知道,注意你实际缓冲区中的编码。我知道,这似乎毫无意义。但我们继续。

    您可能会认为可以通过为变量设置自己的值来覆盖它 ispell词典编纂者 使用 utf-8 作为八个参数中的最后一个:

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

    (load-library "ispell") 我的第一个 .emacs 或者我是不是在其中一个里面做的:

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

    *scratch* 并键入 ispell词典编纂者 然后按Control-J,然后按 ispell 创造就会出现。每一次。

    所以我决定对这个庞大的列表的整个问题做一个最后的检查,然后简单地重写 函数总是返回 utf-8型 iso-8859-1标准 但我从来没这么做过,对吧?

    在我的 文件(嗯, ~/.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)))))
    

    我现在有了 浑浊 像冠军一样努力工作!不幸的是,我花了这么多时间让它工作的原因是希望它的字典比aspell的大得多,但我看到它突出了一些相同的单词。哦,好吧,我会尝试另一种方法。我基本上想要一个拼写检查器,可以加载 /usr/share/dict/american-english-huge Ubuntu上提供的字典,但是 aspell 当我试图扩展它的视野时,在很多方面都死了。也许我会更幸运 我们拭目以待。

        3
  •  0
  •   Raniere Silva    7 年前

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

    ;; 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")
    

    进入你的 ~/.emacs

    我的字典文件在 /usr/share/hunspell