Como obtenho o emacs para autoexpandir a partir de uma lista de palavras-chave conhecidas?

1

Em uma instalação do Ubuntu eu tenho os dois python-mode.el e o comando no meu arquivo .emacs :

(global-set-key [f2] 'hippie-expand)

Assim, as palavras-chave são destacadas e as variáveis que defini já podem ser expandidas automaticamente com [f2] . Como posso obter o autoexpand para trabalhar com as palavras-chave python? Por exemplo, dado o código

for x in enumera

Ao pressionar [f2] , como posso fazer isso expandir para

for x in enumerate

( enumerate é uma palavra-chave conhecida). Como estou aprendendo o emacs, quanto mais detalhes na resposta, mais isso ajudaria!

    
por Hooked 14.06.2013 / 00:19

1 resposta

1

Primeiro, você pode preferir usar um dos pacotes preenchimento automático ou jedi .

Dito isso, hippie-expand funciona tentando expandir a palavra atual usando uma lista de funções, armazenadas na variável hippie-expand-try-functions-list (para exibir seu conteúdo, pressione C-h v hippie-expand-try-functions-list RET ). Por exemplo, a primeira função no valor padrão dessa variável tenta expandir um nome de arquivo. hippie-expand pede uma expansão para cada função, passando para a próxima quando uma função tiver esgotado todas as suas possíveis conclusões. (Ou seja, você pode continuar pressionando [f2] para obter mais expansões.)

Quando você expande o nome de uma variável que já aparece no seu código python, hippie-expand está usando a função try-expand-dabbrev , que procura a palavra atual no buffer atual. Outra função nessa lista, try-expand-dabbrev-all-buffers , procura a palavra atual em todos os buffers abertos. Assim, uma solução rápida (e suja) para o seu problema seria criar um arquivo com todas as palavras-chave e built-ins ( enumerate é um built-in), e manter esse arquivo aberto no emacs. Isto é, se você insistir em usar hippie-expand ; claramente os dois pacotes que eu mencionei antes parecem soluções melhores se você puder fazê-los funcionar.

    
por 14.06.2013 / 01:28