¿La sintaxis de Word tiene en cuenta el script?

9

Llamo a count-words-region( M-x =) en la cadena US / RU / IPA:

HelloПривheləʊ

Se imprime el siguiente mensaje:

Region has 1 line, 4 words, and 14 characters.

Todos los símbolos tienen wsintaxis, pero difieren en la secuencia de comandos:

(char-syntax ?H) ; ?w
(char-syntax ?П) ; ?w
(char-syntax ?ʊ) ; ?w
(aref char-script-table ?H)  ; script: latin
(aref char-script-table ?П)  ; script: cyrillic
(aref char-script-table ?ʊ)  ; script: phonetic

¿Eso significa que el límite de la palabra se define no solo por la sintaxis char sino también por el script char ?

Me gustaría deshabilitar este comportamiento para los modos seleccionados para poder navegar por las palabras pero no por los scripts. ¿Cómo se puede lograr esto?

ACTUALIZACIÓN Discusión útil adicional sobre debbugs .

gavenkoa
fuente

Respuestas:

7

Este comportamiento específico de forward-wordpuede ser controlado por las variables word-combining-categoriesy word-separating-categories. Si desea ignorar por completo el script, es suficiente agregar el par (nil. Nil) a la primera lista, p. Ej.

(let ((word-combining-categories (cons '(nil . nil)
                                       word-combining-categories)))
  (forward-word))

También puede cambiar esa variable con setq-localsi desea el efecto en un búfer específico.

YoungFrog
fuente
¿Cómo te enteraste de estas variables? No veo ninguna mención de ellos en el manual de elisp ...
JeanPierre
@JeanPierre Miré la fuente (¡y estoy 100% de acuerdo en que debería documentarse!)
YoungFrog el
3
Por favor M-x report-emacs-bugpara tener la documentación actualizada.
phils
2

De hecho, forward-wordy backward-wordtambién muestran que hay varias palabras aquí. Para mí tiene sentido que los caracteres de diferentes guiones no puedan estar en la misma palabra, pero la documentación debe hacerse explícita al respecto ( aquí ). Sugiero al M-x report-emacs-bugrespecto.

Si solo quiere moverse a través de "palabras" ignorando el script, puede usar skip-syntax-forwardy skip-syntax-backward(descrito aquí )

Jean Pierre
fuente