J'essaye de faire le mode principal simple pour la coloration syntaxique en utilisant define-generic-mode
. J'ai trouvé queemacs define-generic-mode pourquoi ne pas utiliser regexp-opt?
(define-generic-mode 'mytest-mode
'("//") nil
'(
((regexp-opt '("int" "string" "bool")) . 'font-lock-type-face)
)
nil nil "mytest mode"
)
ne fonctionne pas. Mais si je remplace regexp-opt
appel avec son résultat calculé manuellement, tous les travaux comme prévu:
(define-generic-mode 'mytest-mode
'("//") nil
'(
("\\(?:bool\\|int\\|string\\)" . 'font-lock-type-face)
)
nil nil "mytest mode"
)
Alors, pourquoi je ne peux pas mettre regexp-opt
appel dans la définition du mode?
EDIT
Conseil sur l'évaluation forcée des éléments de la liste citée de la réponse de Lindidancer:
(define-generic-mode 'mytest-mode
'("//") nil
'(
(,(regexp-opt '("int" "string" "bool")) 'font-lock-type-face)
)
nil nil "mytest mode"
)
ne contribue pas: aucune erreur sur l'activation du mode, mais pas mise en évidence aussi
deuxième indice à propos de l'utilisation list
fonction pour former des listes:
(define-generic-mode 'mytest-mode
'("//") nil
(list
((regexp-opt '("int" "string" "bool")) 'font-lock-type-face)
)
nil nil "mytest mode"
)
donne erreur sur le mode d'activation: (invalid-function (regexp-opt (quote ("int" "string" "bool"))))
même erreur lorsque vous essayez d'évaluer:
(list
((regexp-opt '("int" "string" "bool")) 'font-lock-type-face)
)
dans un tampon de zéro.
EDIT 1
(list (list (regexp-opt '("int" "string" "bool")) 'font-lock-type-face))
ne vous aide pas aussi - aucune erreur, aucune mise en évidence.
EDIT 2
étapes, ce que je fais exactement, sont:
- Execute
define-generic-mode
appel dans la mémoire tampon*Scratch*
- Passer au tampon avec certains mots-clés à l'essai
M-x mytest-mode
Après une année de tourments, tu as ouvert les yeux, alors j'ai accepté la tienne, merci) – shibormot