Haskell autocompletion in Emacs using haskell-mode

I installed haskel-mode in emacs. Then I write in my .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)

What must I add in my conf file that emacs could autocomplete for Haskell? Or Haskell mode there is no such possibility?

20
задан nbro 11 March 2017 в 17:21
поделиться

4 ответа

Если нет поддержки для конкретного языка, вы можете использовать теги . Это общий механизм завершения.

  1. Создайте файл TAGS , который содержит список идентификаторов и места их определения. Emacs поставляется с программой etags , которая делает это на многих языках, но не на Haskell; ghc поставляется с хештегами .

  2. Загрузите файл TAGS с M-x visit-tags-table .

Теги не зависят от контекста, поэтому они везде без разбора предлагают типы, значения, конструкторы и т. Д. Они также не будут предоставлять расширенные функции, такие как простое отображение типа значения.Наиболее важные команды тегов:

  • M-TAB ( полный-символ ) завершает идентификатор в соответствии с загруженным списком тегов.

  • М-. ( find-tag ) переходит в место, где определен идентификатор в точке, при необходимости открывая содержащий файл.

  • M - * ( pop-tag-mark ) возвращает вас туда, где вы были до M-. .

  • M-x tags-apropos показывает список идентификаторов, соответствующих регулярному выражению.

Дополнительную информацию смотрите в разделе «Теги» в руководстве Emacs.


Для еще более грубого, но полностью автоматического механизма существует функция динамического сокращения . C-M - / ( dabbrev-completion ) просматривает большинство открытых буферов в поисках завершения; это полностью не зависит от языка, поэтому он даже найдет слова в строках, комментариях и т. д. M - / ( dabbrev-expand ) аналогично, но напрямую завершается до ближайшего совпадения перед точкой.

18
ответ дан 29 November 2019 в 23:11
поделиться

haskell-mode в настоящее время не предоставляет такой возможности. Есть некоторая работа по реализации парсера haskell для CEDET - в этом случае пользователи будут получать возможности автозавершения автоматически. Но эта работа была начата не так давно...

8
ответ дан 29 November 2019 в 23:11
поделиться

ghc-mod обеспечивает некоторое завершение для Haskell в Emacs, а также проверку с помощью hlint и ghc. В сочетании с M- / меня вполне устраивает.

11
ответ дан 29 November 2019 в 23:11
поделиться

Моя установка немного сложнее. Он использует инфраструктуру автозаполнения , которая автоматически показывает раскрывающийся список кандидатов, аналогичный традиционным IDE. Я скачал этот скрипт , который жестко кодирует все ключевые слова. В дополнение к этому, я использую ghc-mod для генерации имен модулей.

7
ответ дан 29 November 2019 в 23:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: