J'essaye d'écrire un mode majeur emacs très basique pour éditer des fichiers sources d'assembleur (pour un microcontrôleur spécifique). J'ai utilisé https://www.emacswiki.org/emacs-test/ModeTutorial comme point de départ. Cela fonctionne mais j'aimerais changer deux choses mais je ne trouve pas de solution. Et oui, je suis désireux de développer une compréhension plus approfondie d'eLisp avec le temps, mais j'essaie aussi de me frayer rapidement un chemin vers une définition de mode de travail parce que j'en ai besoin maintenant (sans vraiment comprendre les subtilités - je sais, RTFM ...).emacs définition de mode majeur
Quoi qu'il en soit, je l'espère, d'obtenir une réponse à deux questions:
1) Alors que la coloration syntaxique des œuvres, je ne suis pas d'être insensible à la casse. J'ai essayé d'ajouter (setq font-lock-keywords-case-fold-search t)
à la fonction ci-dessous, mais il ne semble pas avoir l'effet désiré.
(defun xasm-mode()
(interactive)
(kill-all-local-variables)
(use-local-map xasm-mode-map)
(set-syntax-table xasm-mode-syntax-table)
;; set up font-lock
(set (make-local-variable 'font-lock-defaults) '(xasm-font-lock-keywords))
(setq font-lock-keywords-case-fold-search t)
(setq major-mode 'xasm-mode)
(setq mode-name "XASM")
(run-hooks 'xasm-mode-hook))
2) La deuxième question que démontre mon ignorance ... En fait, dans une expression avec la structure ci-dessous, je voudrais remplacer le « regexp » littéral (qui fonctionne) par une valeur dans une variable (ici: x, x étant (correctement) calculé par regexp-opt) ... Mais je ne sais pas comment insérer la valeur de x ici :-(
(setq x 'xyz)
(defconst v2
(list
'("regexp" . foo)
))
Merci pour vos conseils
Indépendamment de vos questions actuelles, avez-vous regardé 'define-generic-mode'? https://www.gnu.org/software/emacs/manual/html_node/elisp/Generic-Modes.html – Thomas
Pour votre deuxième question, ce que vous cherchez est "backquote", décrit dans [cette réponse] (http : //stackoverflow.com/a/11875822/113848), ainsi que [dans le manuel elisp] (https://www.gnu.org/software/emacs/manual/html_node/elisp/Backquote.html). – legoscia