Por favor, verifique yasnippet . É um ótimo sistema de templates Emacs, facilmente instalado e personalizável para o que você quer fazer. Além disso, verifique a documentação (sobre como usar seções e uma demonstração em vídeo).
Como posso configurar o emacs
para gerar algum esqueleto de código?
Por exemplo, para arquivos C:
#include <stdio.h>
#include <stdlib.h>
int main (int argc, char **argv) {
return EXIT_SUCCESS;
}
ou algo mais dinâmico em Python:
#!<insert result of 'which python' here>
def main():
if __name__ == "__main__":
main()
Eu gostaria de definir dois modos para inserir os modelos:
crie uma função insert-template
(ou algo assim), ligando-a a uma determinada combinação de teclas ( C-c C-t
) que inseriria o modelo correto de acordo com o modo principal.
crie uma opção para inserir automaticamente o modelo na criação do arquivo, detectando o tipo correto pelo sufixo do nome do arquivo (semelhante ao modo principal detectado). Esta opção deve ser facilmente ativada / desativada no arquivo .emacs
.
Idealmente, gostaria de evitar módulos / pacotes de terceiros. Mas eu não sou completamente contra isso.
Por favor, verifique yasnippet . É um ótimo sistema de templates Emacs, facilmente instalado e personalizável para o que você quer fazer. Além disso, verifique a documentação (sobre como usar seções e uma demonstração em vídeo).
Por que evitar modos do emacs de terceiros se eles já estão lá? O EmacsWiki tem uma longa lista de soluções para o seu problema . Destes, abbrev-mode
está conosco há décadas. Pode ser muito suavemente abusado para fazer o que você precisa. auto-insert-mode
é ainda melhor e parte do emacs.
Eu suspeito que você tenha que escrever um pouco do Lisp do emacs para pesquisar o caminho do binário do interpretador Python (ou qualquer outra coisa).
E existem até poderosas opções poderosas por aí (confira a página do EmascWiki - não há limite que cubra todas as suas necessidades)
Para inserir automaticamente esses arquivos na criação de arquivos, acho que você precisa adicionar ganchos aos modos apropriados. Por exemplo
(add-hook 'python-mode-hook '(lambda () (when (empty-buffer?) (insert-python-template))))
(defun empty-buffer? () (= (buffer-end 1) (buffer-end -1)))
(defun insert-python-template ()
(interactive)
(insert "Template stuff goes here"))
Agora, sempre que você abrir um novo buffer em python-mode
, ele será automaticamente preenchido com esse modelo.
Se você estiver aberto a módulos de terceiros e quiser adicionar modelos / modelos parciais a um buffer aberto, confira o yasnippet
modo menor. Eu não cheguei a usá-lo, mas continuo ouvindo coisas boas sobre isso.
Que tal o modo de modelo? Eu o usei quando precisei criar muitos arquivos novos.
Isso não lida com seu desejo de inserir funções de um modelo, mas lida com a criação de novos arquivos de maneira bastante flexível.
Confira o link
Acabei de baixar a versão 3.1c, e ela pareceu funcionar com o meu emacs (versão 22.0.90.1 darwin)
Você pode usar o auto-insert-mode
incorporado.
Adicione o seguinte ao seu arquivo .emacs
:
(auto-insert-mode)
(setq auto-insert-directory "~/.emacs.d/templates/") ;; trailing slash IMPORTANT
(define-auto-insert "\.py" "python-template.py")
e, em seguida, coloque o conteúdo do modelo em python-template.py
no diretório ~/.emacs.d/templates/
.
Se você não quiser ser solicitado a inserir cada vez, também poderá adicionar a seguinte linha ao arquivo .emacs
:
(setq auto-insert-query nil) ;; don't prompt before template insertion
Tags emacs