Я пытаюсь заставить скрипт lisp запускать некоторые команды для меня, когда я открываю файл определенного типа файла. Я знаю, что работаю в правильном файле инициализации, потому что, если я удаляю тему из него, у emacs не будет темы при запуске.
Это скрипт, который я использую, который не работает (без ошибок или чего-либо еще):
(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
источник
источник
when
звонка искажено. Два вызова функций не могут быть заключены в круглые скобки, как они есть. Обратите внимание на разницу между вашим кодом и @ sds'sОтветы:
В терминологии Emacs это два разных шага:
.ts
расширением с основным режимомtypescript-mode
.tss-setup-current-buffer
при запуске режима Typescript.Чтобы выбрать, какой основной режим использовать для определенных имен файлов, добавьте запись в переменную
auto-mode-alist
. Поместите следующую строку в ваш файл инициализации:\.ts\'
является регулярным выражением, которое сопоставляет имена файлов с.ts
расширением.Чтобы запустить функцию
tss-setup-current-buffer
при каждом запуске режима Typescript (я предполагаю, что вы хотите запустить ее даже для файлов режима Typescript, которые не имеют.ts
расширения), добавьте ее в хук запуска режима Typescript .В зависимости от того, как вы установили
typescript.el
иtss.el
, вам также может потребоваться объявить, что функцииtypescript-mode
иtss-setup-current-buffer
должны быть загружены из этих файлов. Это позволяет избежать необходимости загрузкиtypescript.el
иtss.el
сразу после запуска Emacs: они будут загружаться по требованию, когда вы впервые открываете.ts
файл или запускаете егоtypescript-mode
явно.источник
То, что вы ищете, это
find-file-hook
:источник
auto-mode-alist
Следует использовать , чтобы определить , когда для запуска машинопись-режим, иtypescript-mode-hook
должны быть использованы для запускаtss-setup-current-buffer
.(add-to-list 'auto-mode-alist '("\\.ts\\'" . typescript-mode))
и(add-hook 'typescript-mode-hook 'tss-setup-current-buffer)
будет нормальным способом сделать это.