Existe uma maneira de usar python em vez de elisp para estender o emacs?

11

Estou interessado em usar outros idiomas além do elisp para escrever extensões emacs, isso é possível? Se o python não for suportado, quais idiomas são?

nukeop
fonte

Respostas:

10

Como disse Tephra, o Pymacs é um pacote projetado para isso.

É uma interface entre Python e Emacs Lisp. O projeto não é muito ativo, mas pelo que entendi, é totalmente funcional com a versão mais recente do Emacs. Alguns pacotes Python o usam (por exemplo, Ropemacs ); portanto, qualquer alteração no Emacs que o interrompa provavelmente será corrigida.

O link do GitHub para a documentação on - line parece estar morto, mas você ainda pode encontrá-lo na Wayback Machine . A documentação do Wayback está disponível apenas para a versão 0.23 - a versão atual é 0.25. As mudanças são bem pequenas. O código fonte do Ropemacs é um bom lugar para procurar exemplos, assim como os outros projetos implementados com o Pymacs.

O problema com o Pymacs é que ele tira muito do que torna o Elisp útil como linguagem para um editor de texto extensível. Você precisa editar o código-fonte diretamente se quiser alterar o comportamento. Você não pode aconselhar funções facilmente e não pode navegar pelo Elisp na memória. Como a implementação do Python é abstraída do Elisp normal, isso remove grande parte do comportamento de auto-documentação que torna o Emacs excelente e os erros se tornam menos informativos. Idiomas de extensão como este são úteis principalmente para interface com pacotes externos escritos em outro idioma.

jcaw
fonte
Há um garfo atualizados para ele agora (se torna o autor original faleceu): github.com/dgentry/Pymacs
braham-Snyder
7

Você pode estender o Emacs em outros idiomas, como Haskell e OCaml .

Há uma discussão no Reddit sobre vantagens e desvantagens de fazê-lo. Em resumo, não acho que seja uma boa ideia usar outros idiomas (exceto possivelmente C para desempenho) devido à necessidade de um tempo de execução adicional e à falta de conhecimento comum de outros membros da comunidade Emacs sobre idiomas de extensão não Elisp.

Tianxiang Xiong
fonte
4

Existe algo chamado Pymacs, que é uma interface python para o emacs-lisp. Embora o projeto não pareça tão ativo. O wiki mantém uma lista de outros módulos que permitem estender o emacs em algo que não seja o elisp.

Tephra
fonte