Pergunta

Eu instalei haskel-mode em Emacs. Então eu escrevo nos meus .emacs:

(load "~/.emacs.d/haskell-mode/haskell-site-file")
(add-hook 'haskell-mode-hook 'turn-on-haskell-doc-mode)
(add-hook 'haskell-mode-hook 'turn-on-haskell-indentation)
(add-hook 'haskell-mode-hook 'haskell-font-lock-symbols t)
(put 'downcase-region 'disabled nil)

O que devo adicionar ao meu arquivo conf que o Emacs poderia preencher automaticamente o Haskell? Ou o modo Haskell não existe essa possibilidade?

Foi útil?

Solução

Quando não há suporte específico para linguagem, você pode usar Tag. Este é um mecanismo de conclusão genérico.

  1. Gerar a TAGS arquivo, que contém uma lista de identificadores e onde eles são definidos. Emacs vem com o etags programa para fazer isso em vários idiomas, mas não em Haskell; GHC vem com hasktags.

  2. Carregue o TAGS arquivo com M-x visit-tags-table.

As tags não são dependentes do contexto, portanto sugerem indiscriminadamente tipos, valores, construtores, etc. em todos os lugares. Eles também não fornecerão recursos avançados, como mostrar facilmente o tipo de valor. Os comandos de tags mais importantes são:

  • M-TAB (complete-symbol) Conclui um identificador de acordo com a lista carregada de tags.

  • M-. (find-tag) vai para o local onde o identificador no ponto é definido, abrindo o arquivo contendo, se necessário.

  • M-* (pop-tag-mark) volta onde você estava antes M-..

  • M-x tags-apropos mostra uma lista de identificadores que correspondem a um regexp.

Para obter mais informações, procure em "Tags" no manual do EMACS.


Para um mecanismo uniforme, mas totalmente automático, existe o abrev dinâmico característica. C-M-/ (dabbrev-completion) olhares na maioria dos buffers abertos para uma conclusão; Isso é completamente independente da linguagem, por isso encontrará palavras em cordas, comentários, qualquer que seja. M-/ (dabbrev-expand) é semelhante, mas completa diretamente para a partida mais próxima antes do ponto.

Outras dicas

GHC-MOD Fornece alguma conclusão para o Haskell na EMACS, bem como verificando com HLINT e GHC. Em combinação com M-/, é bom o suficiente para mim.

haskell-mode Atualmente não oferece essa possibilidade. Há algum trabalho sobre a implementação do Haskell Parser para Cedet - neste caso, os usuários obterão recursos de conclusão automaticamente automaticamente. Mas esse trabalho começou não muito tempo atrás ...

Meu configurar é um pouco mais complicado. Ele usa o autocompletar Infraestrutura que mostra uma lista suspensa de candidatos automaticamente semelhante aos IDEs tradicionais. Eu baixei Este script que codificam todas as palavras -chave. Além disso, eu uso GHC-MOD Para gerar nomes de módulos.

Como um mecanismo de preenchimento automático "barato e alegre", não esqueça M-/. É completamente heurístico e independente da linguagem, mas surpreendentemente eficaz.

Além da conclusão automática para o seu próprio código, você também pode obter preenchimento automático (com APidocs uniformes) para a biblioteca padrão, nomes de importação e nomes de Pragma usando Empresa-GHC. eu encontrei este guia para ser muito útil. Observe que ainda não consegui funcionar completamente para mim, mas posso sentir que estou perto :-)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top