J'essaie d'obtenir un script lisp pour exécuter certaines commandes pour moi lorsque j'ouvre un fichier d'un type de fichier spécifique. Je sais que je travaille dans le bon fichier d'initialisation car si j'en supprime le thème, emacs n'a pas de thème au démarrage.
Voici le script que j'utilise qui ne fonctionne pas (pas d'erreurs ou quoi que ce soit):
(defun my-project-hook (filename)
(when (string= (file-name-extension filename) "ts")
((typescript-mode)
(tss-setup-current-buffer))
)
)
(add-hook 'after-load-functions 'my-project-hook)
hooks
files
major-mode
SiXoS
la source
la source
when
appel est mal formé. Les deux appels de fonction ne peuvent pas être entourés de parenthèses comme ils le sont. Notez la différence entre votre code et @ sdsRéponses:
Dans la terminologie Emacs, ce sont deux étapes différentes:
.ts
extension au mode principaltypescript-mode
.tss-setup-current-buffer
lorsque le mode Typescript démarre.Pour choisir le mode principal à utiliser pour certains noms de fichiers, ajoutez une entrée à la variable
auto-mode-alist
. Mettez la ligne suivante dans votre fichier init:\.ts\'
est une expression régulière qui correspond aux noms de fichiers avec l'.ts
extension.Pour exécuter la fonction
tss-setup-current-buffer
chaque fois que le mode Typescript démarre (je suppose que vous souhaitez l'exécuter même pour les fichiers en mode Typescript qui n'ont pas l'.ts
extension), ajoutez-la au crochet de démarrage du mode Typescript .Selon la façon dont vous avez installé
typescript.el
ettss.el
, vous devrez peut-être également déclarer que les fonctionstypescript-mode
ettss-setup-current-buffer
doivent être chargées à partir de ces fichiers. Cela évite d'avoir à chargertypescript.el
ettss.el
dès le démarrage d'Emacs: ils seront chargés à la demande, lors de la première ouverture d'un.ts
fichier ou de son exécutiontypescript-mode
explicite.la source
Ce que vous recherchez, c'est
find-file-hook
:la source
auto-mode-alist
doit être utilisé pour déterminer quand démarrer le mode typographique et atypescript-mode-hook
doit être utilisé pour s'exécutertss-setup-current-buffer
.(add-to-list 'auto-mode-alist '("\\.ts\\'" . typescript-mode))
et(add-hook 'typescript-mode-hook 'tss-setup-current-buffer)
serait la manière normale de le faire.