Usiłuję uzyskać skrypt lisp do uruchamiania niektórych poleceń dla mnie, gdy otwieram plik określonego typu pliku. Wiem, że pracuję w poprawnym pliku init, ponieważ jeśli usunę z niego motyw, emacs nie będzie miał motywu podczas uruchamiania.
To jest skrypt, którego używam, który nie działa (bez błędów lub czegokolwiek):
(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
źródło
źródło
when
połączenia jest zniekształcona. Dwa wywołania funkcji nie mogą być otoczone nawiasami, tak jak są. Zwróć uwagę na różnicę między kodem a @ sds'sOdpowiedzi:
W terminologii Emacsa są to dwa różne kroki:
.ts
rozszerzeniem z trybem głównymtypescript-mode
.tss-setup-current-buffer
po uruchomieniu trybu maszynopisu.Aby wybrać tryb główny, którego należy użyć dla niektórych nazw plików, dodaj wpis do zmiennej
auto-mode-alist
. Umieść następujący wiersz w pliku inicjującym:\.ts\'
to wyrażenie regularne, które pasuje do nazw plików z.ts
rozszerzeniem.Aby uruchomić tę funkcję przy
tss-setup-current-buffer
każdym uruchomieniu trybu Typescript (zakładam, że chcesz go uruchomić nawet dla plików trybu Typescript, które nie mają.ts
rozszerzenia), dodaj go do haka uruchamiania trybu Typescript .W zależności od sposobu instalacji
typescript.el
itss.el
może być konieczne zadeklarowanie, że funkcjetypescript-mode
itss-setup-current-buffer
muszą zostać załadowane z tych plików. Pozwala to uniknąć konieczności ładowaniatypescript.el
itss.el
zaraz po uruchomieniu Emacsa: zostaną one załadowane na żądanie, gdy po raz pierwszy otworzysz.ts
plik lub uruchomisztypescript-mode
jawnie.źródło
To czego szukasz to
find-file-hook
:źródło
auto-mode-alist
Powinny być wykorzystane do określenia, kiedy uruchomieniem maszynopis-mode, itypescript-mode-hook
powinny być wykorzystane do uruchomieniatss-setup-current-buffer
.(add-to-list 'auto-mode-alist '("\\.ts\\'" . typescript-mode))
i(add-hook 'typescript-mode-hook 'tss-setup-current-buffer)
byłoby normalnym sposobem na zrobienie tego.