Estou tentando obter um script lisp para executar alguns comandos para mim quando abro um arquivo de um tipo de arquivo específico. Sei que estou trabalhando no arquivo init correto, porque se eu remover o tema, o emacs não terá um tema ao iniciá-lo.
Este é o script que estou usando, que não funciona (sem erros nem nada):
(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
fonte
fonte
when
chamada está incorreto. As duas chamadas de função não podem estar entre parênteses como estão. Observe a diferença entre seu código e @ sds deRespostas:
Na terminologia do Emacs, estas são duas etapas diferentes:
.ts
extensão ao modo principaltypescript-mode
.tss-setup-current-buffer
quando o modo TypeScript for iniciado.Para escolher qual modo principal usar para determinados nomes de arquivo, adicione uma entrada à variável
auto-mode-alist
. Coloque a seguinte linha no seu arquivo init:\.ts\'
é uma expressão regular que corresponde aos nomes dos arquivos com a.ts
extensãoPara executar a função
tss-setup-current-buffer
sempre que o modo Typecript iniciar (presumo que você queira executá-lo mesmo para arquivos no modo TypeScript que não possuem a.ts
extensão), adicione-a ao gancho de inicialização do modo TypeScript .Dependendo de como você instalou
typescript.el
etss.el
, talvez também seja necessário para declarar que as funçõestypescript-mode
etss-setup-current-buffer
tem que ser carregado a partir desses arquivos. Isso evita ter que carregartypescript.el
etss.el
assim que o Emacs iniciar: eles serão carregados sob demanda, quando você abrir um.ts
arquivo ou executartypescript-mode
explicitamente.fonte
O que você está procurando é
find-file-hook
:fonte
auto-mode-alist
deve ser usado para determinar quando a inicialização typescript-mode, etypescript-mode-hook
deve ser usado para executartss-setup-current-buffer
.(add-to-list 'auto-mode-alist '("\\.ts\\'" . typescript-mode))
e(add-hook 'typescript-mode-hook 'tss-setup-current-buffer)
seria a maneira normal de fazê-lo.