osx – Ispell no puede encontrar mi diccionario

Pregunta:

Estoy ejecutando Emacs en MacOS e instalé aspell y sus diccionarios de inglés a través de nix. Cuando abro un archivo, flyspell arroja el siguiente error.

Error enabling Flyspell mode:
(Error: No word lists can be found for the language "en_US".)

Cuando configuro ispell-change-dictionary en inglés y luego trato de volver a habilitar el modo flyspell, flyspell arroja este mensaje de error en su lugar:

Error enabling Flyspell mode:
(Error: The file "/nix/store/my1hch4x12i5n1ffhlwpb6bpsiajbv3j-aspell-0.60.6.1/lib/aspell/english" can not be opened for reading.)

No sé si este es realmente el problema, pero lo anterior me sugiere que en ambos casos flyspell no busca diccionarios en el directorio correcto, que para nix debería ser /nix/store/<hash>-aspell-dict-en-<version>/lib/aspell . ¿Alguien podría saber cómo consigo que ispell busque en el directorio correcto?

Si es relevante, ejecutar aspell dump dicts desde mi shell enumera todos los diccionarios que he instalado, pero la salida de aspell config no menciona el directorio aspell-dict-en mi tienda nix.

editar: aquí están los valores de las variables solicitadas:

ispell-program-name == "aspell"
ispell-aspell-data-dir == nil
ispell-dictionary == nil
ispell-local-dictionary == nil
ispell-dictionary-alist == ((nil "[[:alpha:]]" "[^[:alpha:]]" "[']" nil
      ("-B")
      nil utf-8)
 ("american" "[[:alpha:]]" "[^[:alpha:]]" "[']" nil
  ("-B")
  nil utf-8)
 ("brasileiro" "[[:alpha:]]" "[^[:alpha:]]" "[']" nil nil nil utf-8)
 ("british" "[[:alpha:]]" "[^[:alpha:]]" "[']" nil
  ("-B")
  nil utf-8)
 ("castellano" "[[:alpha:]]" "[^[:alpha:]]" "[-]" nil
  ("-B")
  "~tex" utf-8)
 ("castellano8" "[[:alpha:]]" "[^[:alpha:]]" "[-]" nil
  ("-B" "-d" "castellano")
  "~latin1" utf-8)
 ("czech" "[[:alpha:]]" "[^[:alpha:]]" "" nil
  ("-B")
  nil utf-8)
 ("dansk" "[[:alpha:]]" "[^[:alpha:]]" "[']" nil
  ("-C")
  nil utf-8)
 ("deutsch" "[[:alpha:]]" "[^[:alpha:]]" "[']" t
  ("-C")
  "~tex" utf-8)
 ("deutsch8" "[[:alpha:]]" "[^[:alpha:]]" "[']" t
  ("-C" "-d" "deutsch")
  "~latin1" utf-8)
 ("english" "[[:alpha:]]" "[^[:alpha:]]" "[']" nil
  ("-B")
  nil utf-8)
 ("esperanto" "[[:alpha:]]" "[^[:alpha:]]" "[-']" t
  ("-C")
  "~latin3" utf-8)
 ("esperanto-tex" "[[:alpha:]]" "[^[:alpha:]]" "[-'`\"]" t
  ("-C" "-d" "esperanto")
  "~tex" utf-8)
 ("finnish" "[[:alpha:]]" "[^[:alpha:]]" "[:]" nil
  ("-C")
  "~list" utf-8)
 ("francais7" "[[:alpha:]]" "[^[:alpha:]]" "[`'^-]" t nil nil utf-8)
 ("francais" "[[:alpha:]]" "[^[:alpha:]]" "[-'.@]" t nil "~list" utf-8)
 ("francais-tex" "[[:alpha:]]" "[^[:alpha:]]" "[-'^`\".@]" t nil "~tex" utf-8)
 ("german" "[[:alpha:]]" "[^[:alpha:]]" "[']" t
  ("-C")
  "~tex" utf-8)
 ("german8" "[[:alpha:]]" "[^[:alpha:]]" "[']" t
  ("-C" "-d" "german")
  "~latin1" utf-8)
 ("italiano" "[[:alpha:]]" "[^[:alpha:]]" "[-.]" nil
  ("-B" "-d" "italian")
  "~tex" utf-8)
 ("nederlands" "[[:alpha:]]" "[^[:alpha:]]" "[']" t
  ("-C")
  nil utf-8)
 ("nederlands8" "[[:alpha:]]" "[^[:alpha:]]" "[']" t
  ("-C")
  nil utf-8)
 ("norsk" "[[:alpha:]]" "[^[:alpha:]]" "[\"]" nil nil "~list" utf-8)
 ("norsk7-tex" "[[:alpha:]]" "[^[:alpha:]]" "[\"]" nil
  ("-d" "norsk")
  "~plaintex" utf-8)
 ("polish" "[[:alpha:]]" "[^[:alpha:]]" "[.]" nil nil nil utf-8)
 ("portugues" "[[:alpha:]]" "[^[:alpha:]]" "[']" t
  ("-C")
  "~latin1" utf-8)
 ("russian" "[[:alpha:]]" "[^[:alpha:]]" "" nil nil nil utf-8)
 ("russianw" "[[:alpha:]]" "[^[:alpha:]]" "" nil nil nil utf-8)
 ("slovak" "[[:alpha:]]" "[^[:alpha:]]" "" nil
  ("-B")
  nil utf-8)
 ("slovenian" "[[:alpha:]]" "[^[:alpha:]]" "" nil
  ("-B" "-d" "slovenian")
  nil utf-8)
 ("svenska" "[[:alpha:]]" "[^[:alpha:]]" "[']" nil
  ("-C")
  "~list" utf-8)
 ("hebrew" "[[:alpha:]]" "[^[:alpha:]]" "" nil
  ("-B")
  nil utf-8))

Y la salida de los aspell dump dicts | grep en_US de aspell dump dicts | grep en_US es:

en_US
en_US-variant_0
en_US-variant_1
en_US-w_accents
en_US-wo_accents

Respuesta:

(Error: no se pueden encontrar listas de palabras para el idioma "en_US").

Es probable que esto se deba a que ispell-aspell-data-dir y / o ispell-aspell-data-dir son nil , como se puede ver (parcialmente) dada su configuración.

Cuando configuro ispell-change-dictionary en inglés y luego trato de volver a habilitar> modo flyspell, flyspell arroja este mensaje de error en su lugar …

Llamar a (ispell-change-dictionary "english") configura un entorno de ispell, que supongo que termina encontrando y usando la ruta /nix/store/my1hch4x12i5n1ffhlwpb6bpsiajbv3j-aspell-0.60.6.1/lib/aspell/ .

Como ha configurado el diccionario en "english" , Emacs aspell buscará eso en ispell-dictionary-alist y aplicará las reglas / opciones dadas. En su caso, termina buscando un diccionario llamado "english" que no existe.

En mi ispell-dictionary-alist tengo la siguiente entrada (no agregada explícitamente, que es otro punto interesante pero …):

("english" "[[:alpha:]]" "[^[:alpha:]]" "'" t ("-d" "en") nil utf-8)

Observe la parte ("-d" "en") . Esto le indica a aspell que use el diccionario llamado en cuando use un diccionario llamado "english" . Agregar esto debería arreglar las cosas cuando el diccionario está configurado en "english" :

(add-to-list 'ispell-dictionary-alist
             '("english" "[[:alpha:]]" "[^[:alpha:]]" "'" t ("-d" "en") nil utf-8))

Tenga en cuenta que, de ispell emacs docs utf-8 será:

se utiliza para codificar el texto enviado al subproceso ispell cuando el idioma utiliza caracteres que no son ASCII.

Que puede no ser lo que quieres.

Dado que la configuración de lo anterior se basa en la configuración implícita realizada por (ispell-change-dictionary) , es posible que desee probarlo antes / después y con / sin configurar explícitamente el diccionario en "english" :

(setq ispell-aspell-data-dir "/nix/store/my1hch4x12i5n1ffhlwpb6bpsiajbv3j-aspell-0.60.6.1/lib/aspell/")
(setq ispell-aspell-dict-dir ispell-aspell-data-dir)

La desventaja de esto es que no es portátil entre máquinas.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top

web tasarım