Saya mencoba untuk mendapatkan skrip lisp untuk menjalankan beberapa perintah untuk saya ketika saya membuka file tipe file tertentu. Saya tahu bahwa saya bekerja di file init yang benar karena jika saya menghapus tema dari itu, emacs tidak memiliki tema ketika saya memulai.
Ini adalah skrip yang saya gunakan yang tidak berfungsi (tidak ada kesalahan atau apa pun):
(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
sumber
sumber
when
panggilan Anda salah. Panggilan fungsi dua tidak dapat dikelilingi dengan tanda kurung seperti mereka. Perhatikan perbedaan antara kode Anda dan @ sds'sJawaban:
Dalam terminologi Emacs, ini adalah dua langkah yang berbeda:
.ts
ekstensi dengan mode utamatypescript-mode
.tss-setup-current-buffer
ketika mode Typcript dimulai.Untuk memilih mode utama mana yang akan digunakan untuk nama file tertentu, tambahkan entri ke variabel
auto-mode-alist
. Masukkan baris berikut dalam file init Anda:\.ts\'
adalah ekspresi reguler yang cocok dengan nama file dengan.ts
ekstensi.Untuk menjalankan fungsi
tss-setup-current-buffer
setiap kali mode Typcript dimulai (saya kira Anda ingin menjalankannya bahkan untuk file mode Typcript yang tidak memiliki.ts
ekstensi), tambahkan ke kait startup mode Typcript .Tergantung pada bagaimana Anda menginstal
typescript.el
dantss.el
, Anda mungkin juga perlu menyatakan bahwa fungsitypescript-mode
dantss-setup-current-buffer
harus diambil dari file-file itu. Ini menghindari keharusan memuattypescript.el
dantss.el
segera setelah Emacs mulai: mereka akan dimuat saat diminta, ketika Anda pertama kali membuka.ts
file atau menjalankantypescript-mode
secara eksplisit.sumber
Apa yang Anda cari adalah
find-file-hook
:sumber
auto-mode-alist
harus digunakan untuk menentukan kapan untuk startup naskah-mode, dantypescript-mode-hook
harus digunakan untuk menjalankantss-setup-current-buffer
.(add-to-list 'auto-mode-alist '("\\.ts\\'" . typescript-mode))
dan(add-hook 'typescript-mode-hook 'tss-setup-current-buffer)
akan menjadi cara normal untuk melakukannya.