elisp – Cómo determinar si el carácter actual es una letra

Pregunta:

Cómo puedo determinar si el carácter actual es una letra (un carácter alfabético) (es decir, pertenece a la clase de sintaxis [:alpha:] en nociones de expresiones regulares). Me gustaría escribir una función simple como la siguiente:

(defun test-letter () (interactive)
(if char-after-is-a-letter
    (message "This is a letter")
    (message "This is not a letter")
    )
)

Actualización Desafortunadamente, mi suposición sobre la equivalencia de la clase de las letras y la clase de sintaxis [:alpha:] parece ser falsa.

Respuesta:

Usar propiedades de caracteres Unicode

Esto definitivamente debería funcionar:

(memq (get-char-code-property (char-after) 'general-category)
      '(Ll Lu Lo Lt Lm Mn Mc Me Nl))

Como beneficio adicional, también debería ser más rápido que looking-at .


Emacs almacena todas las propiedades de los caracteres especificadas por el estándar Unicode. Se puede acceder a ellos con get-char-code-property . Específicamente, la propiedad de general-category especifica qué caracteres son letras ( Ll son minúsculas, Lu son mayúsculas y no me preguntes cuáles son los demás).

Leave a Comment

Your email address will not be published.

Scroll to Top

istanbul avukat

-

web tasarım