hunspell: agrega palabra al diccionario desde la línea de comando

hunspell: agrega palabra al diccionario desde la línea de comando

Depágina de manual de hunspell:

...
    When in the -a mode, hunspell will also accept lines  of  single
    words  prefixed  with  any of '*', '&', '@', '+', '-', '~', '#',
    '!', '%', '`', or '^'.  A line starting with '*' tells  hunspell
    to  insert the word into the user's dictionary (similar to the I
    command).
...

Intenté algo como: echo "* my_word" | hunspell -apero la palabra no está en mi diccionario, ya que al analizar el archivo de muestra nuevamente se muestra como una palabra mal escrita.

¿Cómo funciona esto? ¿Cómo puedo agregar una palabra personalizada?
¿O con Aspell, o cualquier programa "común" que escriba en diccionarios compatibles leídos por Hunspell/Aspell?

Respuesta1

Creo que en lugar de (similar to the I command)eso debería ser (similar to the A command):

A

Accept the word for the rest of this hunspell session. 

Revisemos la manpágina nuevamente:

The -a option is intended to be used from other programs through a pipe.
In this mode, hunspell prints a one-line version identification message,
and then begins reading lines of input.

Entonces, cuando está en -a mode, hunspellla sesión finaliza después de leer y procesar la última línea de entrada. Además,

When in the -a mode, hunspell will also accept lines of single words prefixed
with any of '*', '&', '@', '+', '-', '~', '#', '!', '%', ''', or '^'. A line
starting with '*' tells hunspell to insert the word into the user's dictionary
(similar to the I command)[........] A line prefixed with '#' will cause the
personal dictionary to be saved.

Al prefijar una línea de una sola palabra con *(tenga en cuenta que no debe haber espacio entre la palabra y el prefijo) se agregará esa palabra al diccionario del usuario, pero solo para la hunspellsesión actual, ya que, según la manpágina, solo una línea con el prefijo #generará el diccionario personal. que se guardará (es decir, el archivo en el disco). por lo tanto corriendo

echo "*goosfraba" | hunspell -a

no hace absolutamente nada. hunspellagregagoosfrabaal diccionario para esta sesión y luego sale (no hay otras líneas para procesar). Debe agregar una segunda línea con el prefijo #para guardar las palabras agregadas recientemente:

echo -e "*goosfraba\n#" | hunspell -a

Vamos a ver:

::corrección ortográficagoosfraba:

echo -e "goosfraba" | hunspell -a
@(#) International Ispell Version 3.2.06 (but really Hunspell 1.3.2)
& goosfraba 1 0: goofball

& = Wordno está en el diccionario, hay uno que casi se pierde:tonto.

::agregar goosfraba al diccionario y luego revisar la ortografía durante la misma hunspellsesión (dos líneas):

echo -e "*goosfraba\ngoosfraba" | hunspell -a
@(#) International Ispell Version 3.2.06 (but really Hunspell 1.3.2)
*

* = Wordestá en el diccionario.

::corrección ortográficagoosfrabanuevamente (nueva hunspellsesión):

echo -e "goosfraba" | hunspell -a
@(#) International Ispell Version 3.2.06 (but really Hunspell 1.3.2)
& goosfraba 1 0: goofball

& = Nuevamente, wordno está en el diccionario (no se guardó nada durante la sesión anterior)

::agregando goosfraba al diccionario y guardando durante la misma hunspellsesión (dos líneas):

echo -e "*goosfraba\n#" | hunspell -a
@(#) International Ispell Version 3.2.06 (but really Hunspell 1.3.2)

::corrección ortográficagoosfrabanuevamente (nueva hunspellsesión):

echo "goosfraba" | hunspell -a
@(#) International Ispell Version 3.2.06 (but really Hunspell 1.3.2)
*

* = Wordestá en el diccionario.

Respuesta2

Descubrí que la solución más sencilla es usar Aspell y crear un archivo personalizado en la carpeta de inicio, llamado.aspell.lang.pws, con contenidos como:

personal_ws-1.1 en 0
my_word

para el idioma "en", que parece una excelente manera de compartir un "diccionario portátil", por cierto

información relacionada