20

haskel-modeemacsにインストールしました。次に、.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)

emacsがHaskellのオートコンプリートできるように、confファイルに何を追加する必要がありますか?またはHaskellモードではそのような可能性はありませんか?

4

6 に答える 6

18

言語固有のサポートがない場合は、タグを使用できます。これは一般的な完了メカニズムです。

  1. TAGS識別子のリストとそれらが定義されている場所を含むファイルを生成します。Emacsにはetags多くの言語でこれを行うプログラムが付属していますが、Haskellには付属していません。ghcにはが付属していhasktagsます。

  2. TAGSを使用してファイルをロードしますM-x visit-tags-table

タグはコンテキストに依存しないため、あらゆる場所でタイプ、値、コンストラクターなどを無差別に提案します。また、値のタイプを簡単に表示するなどの高度な機能も提供しません。最も重要なタグコマンドは次のとおりです。

  • M-TABcomplete-symbol)は、ロードされたタグのリストに従って識別子を完成させます。

  • M-.find-tag)は、ポイントの識別子が定義されている場所に移動し、必要に応じて含まれているファイルを開きます。

  • M-*pop-tag-mark)は前の場所に戻りますM-.

  • M-x tags-apropos正規表現に一致する識別子のリストを示しています。

詳細については、Emacsマニュアルの「タグ」を参照してください。


さらに粗雑ですが、完全に自動化されたメカニズムには、動的な略語機能があります。C-M-/dabbrev-completion)は、ほとんどの開いているバッファーで完了を探します。これは完全に言語に依存しないため、文字列やコメントなどの単語も検索されます。M-/dabbrev-expand)も同様ですが、ポイントの前の最も近い一致に直接完了します。

于 2010-08-06T20:49:08.267 に答える
11

ghc-modは、Emacs内のHaskellにいくつかの補完を提供し、hlintとghcでチェックします。M- /と組み合わせると、私には十分です。

于 2010-08-07T22:06:41.840 に答える
8

haskell-mode現在、そのような可能性はありません。CEDET用のhaskellパーサーの実装に関する作業がいくつかあります。この場合、ユーザーはオートコンプリート機能を自動的に取得します。しかし、この作業はそれほど前に始まっていませんでした...

于 2010-08-06T19:00:10.377 に答える
7

私のセットアップはもう少し複雑です。従来のIDEと同様に、候補のドロップダウンリストを自動的に表示するオートコンプリートインフラストラクチャを使用します。すべてのキーワードをハードコードするこのスクリプトをダウンロードしました。それに加えて、ghc-modを使用してモジュール名を生成します。

于 2010-08-08T01:54:51.003 に答える
6

「安くて陽気な」オートコンプリートメカニズムとして、見落とさないでくださいM-/。完全にヒューリスティックで言語に依存しませんが、驚くほど効果的です。

于 2012-07-21T00:22:58.703 に答える
2

独自のコードのオートコンプリートに加えて、 company-ghcを使用して、標準ライブラリのオートコンプリート(apidocsでも)、インポート名、およびプラグマ名を取得することもできます。このガイドは非常に役に立ちました。注意してください、私はまだそれを自分自身のために完全に機能させることができませんでした、しかし私は私が近くにいると感じることができます:-)

于 2014-11-16T19:33:12.770 に答える