Ich versuche, ein LISP-Skript zum Ausführen einiger Befehle für mich zu erstellen, wenn ich eine Datei eines bestimmten Dateityps öffne. Ich weiß, dass ich in der richtigen Init-Datei arbeite, denn wenn ich das Theme von ihr entferne, hat Emacs beim Start kein Theme.
Dies ist das Skript, das ich verwende und das nicht funktioniert (keine Fehler oder irgendetwas):
(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
quelle
quelle
when
Anrufs ist fehlerhaft. Die beiden Funktionsaufrufe können nicht in Klammern eingeschlossen werden. Beachten Sie den Unterschied zwischen Ihrem Code und @ sdsAntworten:
In der Emacs-Terminologie sind dies zwei verschiedene Schritte:
.ts
Erweiterung dem Hauptmodus zutypescript-mode
.tss-setup-current-buffer
wenn der Typescript-Modus gestartet wird.So wählen Sie die wichtigsten Modus verwenden für bestimmte Dateinamen, fügen Sie einen Eintrag in die Variable
auto-mode-alist
. Fügen Sie die folgende Zeile in Ihre Init-Datei ein:\.ts\'
ist ein regulärer Ausdruck, der Dateinamen mit der.ts
Erweiterung übereinstimmt .Um die Funktion
tss-setup-current-buffer
immer dann auszuführen, wenn der Typescript-Modus gestartet wird (ich gehe davon aus, dass Sie sie auch für Dateien im Typescript-Modus ausführen möchten, die nicht die.ts
Erweiterung haben), fügen Sie sie dem Start- Hook des Typescript-Modus hinzu .Abhängig davon, wie Sie
typescript.el
und installiert habentss.el
, müssen Sie möglicherweise auch deklarieren, dass die Funktionentypescript-mode
undtss-setup-current-buffer
aus diesen Dateien geladen werden müssen. Dies vermeidet das Ladentypescript.el
undtss.el
sobald Emacs startet: Sie werden bei Bedarf geladen, wenn Sie eine.ts
Datei zum ersten Mal öffnen odertypescript-mode
explizit ausführen .quelle
Was Sie suchen, ist
find-file-hook
:quelle
auto-mode-alist
sollte verwendet werden, um zu bestimmen, wann der Typenskript-Modus gestartet werden soll, und atypescript-mode-hook
sollte zum Ausführen verwendet werdentss-setup-current-buffer
.(add-to-list 'auto-mode-alist '("\\.ts\\'" . typescript-mode))
und(add-hook 'typescript-mode-hook 'tss-setup-current-buffer)
wäre der normale Weg, dies zu tun.