優れたタブ補完とは、リフレクションなどを使用して動的に生成され(どこかに事前定義された補完のリストを必要としない)、特定の場所で何がフォローでき、何がフォローできないかを知っていることを意味します。
(.<TAB> x)
xのメソッドのリストを取得するように(println <TAB>)
、ローカルおよびグローバル定義(Math/<TAB>
のリストを取得し、数学関数のリストを取得します...
たとえばTab、ghci(Haskell)やipythonでどのように機能するかが好きです。
優れたタブ補完とは、リフレクションなどを使用して動的に生成され(どこかに事前定義された補完のリストを必要としない)、特定の場所で何がフォローでき、何がフォローできないかを知っていることを意味します。
(.<TAB> x)
xのメソッドのリストを取得するように(println <TAB>)
、ローカルおよびグローバル定義(Math/<TAB>
のリストを取得し、数学関数のリストを取得します...
たとえばTab、ghci(Haskell)やipythonでどのように機能するかが好きです。
それは確かに可能であり、いくつかのツールはその方向に進化しています。最新バージョンのclojureには、この種のツールの構築を容易にする「開発モード」オプションが含まれています。たとえば、デバッグを支援するためにローカルクリアをオフにし、IDEおよび関連ツールで使用するためにコンパイルプロセスに関するより多くの情報を最終的にエクスポートできるようにすることを目的としています。これはClojureエコシステムを改善する領域として広く認識されており、私の観察から、数人の非常に賢い人々がそれに取り組んでいます。
Eclipse CounterClockwise REPLの現在のベータ版では、コードの補完が大幅に改善されており、Javaの補完を含むすべてのケースに対応しています。もちろん、スタンドアロンのコマンドラインREPLではないことを除いて。ただし、動的言語であるClojureには、型の補完に制限があります。これは、Haskellのような強く型付けされた言語でははるかに簡単です。
私はEmacsをSlimeとEmacsのオートコンプリートを備えたエディターとして使用しており、Emacs内のReplで機能するすべての機能(Javaクラスとフィールドのオートコンプリート、自動コンプリートとClojure関数のドキュメント)を取得しています。残念ながら、Emacsをエディター/ IDEとして使用していない場合、これは機能しません。
IClojureは多かれ少なかれうまく機能しているように見えます。これは、IPythonに触発されて見え、タブ補完を提供し(完全ではなく、3つのケースのうち2つが言及されています)、コンソールでのClojureの開発に役立ちます。しかし、あまり安定していません。