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?
Если нет поддержки для конкретного языка, вы можете использовать теги . Это общий механизм завершения.
Создайте файл TAGS
, который содержит список идентификаторов и места их определения. Emacs поставляется с программой etags
, которая делает это на многих языках, но не на Haskell; ghc поставляется с хештегами
.
Загрузите файл 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
) аналогично, но напрямую завершается до ближайшего совпадения перед точкой.
haskell-mode
в настоящее время не предоставляет такой возможности. Есть некоторая работа по реализации парсера haskell для CEDET - в этом случае пользователи будут получать возможности автозавершения автоматически. Но эта работа была начата не так давно...
ghc-mod обеспечивает некоторое завершение для Haskell в Emacs, а также проверку с помощью hlint и ghc. В сочетании с M- / меня вполне устраивает.
Моя установка немного сложнее. Он использует инфраструктуру автозаполнения , которая автоматически показывает раскрывающийся список кандидатов, аналогичный традиционным IDE. Я скачал этот скрипт , который жестко кодирует все ключевые слова. В дополнение к этому, я использую ghc-mod для генерации имен модулей.