私はHeliosを使用しています。Eclipseプラグイン:非エディタIEditorInputを持つJSエディタ
我々はFormEditor
が含まれているプラグインを書いています。このエディタのタブの1つに、ネストされたJSエディタがあります。そのJSエディタ内で、オブジェクトモデルをオートコンプリートで表示します。
私は(この動作は無効にすることができます)私たちのいずれかのファイルを開いたときに自動的に現在のプロジェクトのJSのビルド・パスにJS自然と私たちのライブラリを追加する方法を考え出しました。
私たちはJSDocスタブa、IJsGlobalScopeContainerInitializer
、SystemLibraryLocation
などを持っています。
public class LibInitializer extends JsGlobalScopeContainerInitializer implements IJsGlobalScopeContainerInitializer {
//...
public int getKind() {
return IJsGlobalScopeContainer.K_SYSTEM;
}
public boolean canUpdateJsGlobalScopeContainer(IPath containerPath, IJavaScriptProject project) {
return true;
}
static class LibLocation extends SystemLibraryLocation {
//...
LibLocation() {
super();
}
public char[][] getLibraryFileNames() {
// what's plural of "chars"?
return LibInitializer.LIBRARY_FILE_CHARSES;
}
public IPath getWorkingLibPath() {
// stash our libraries in our state location for Easy Access.
return WebFormsUIPlugin.getDefault().getStateLocation().append("jsLib"); //$NON-NLS-1$
}
JSエディタが初期化されるときにコードが呼び出されます。返されるすべてのパスは有効です。
しかし、私たちのオブジェクトはオートコンプリートやJSDocのか何かには表示されませんなぜ私は私の人生のために把握することはできません。 JS Editorのデバッグオプションはあまり役に立ちません。ログやコンソールの出力に例外はありません(私が見つけることができます)。
ライブラリファイルが正しく解析されているかどうかを確認するにはどうすればよいですか?使用可能なすべてのJSクラスをダンプする方法はありますか?
EDITさらなる詳細:
JSエディタではなく、通常のFileEditorInputよりも、(私たちが書いた)ByteArrayStorageEditorInputに作用しています。このプロジェクトで
(JS自然とJSは、パスを含め、プロジェクトレベルの設定です)、私はJSファイルを作成する場合、すべてのコード補完情報は我々を含めインクルードパス内の任意およびすべてのライブラリから存在しています、。しかし私たちのエディタでは、コード補完情報は表示されません。私たちの図書館ではありません。他の標準ライブラリからのものではありません。 ECMAScript組み込みライブラリでもありません。
この作業を行うには、ファイルを使用する唯一の方法のように見えます。これにより、エディタ内で問題マーカーが使用されます。ファイルがないと、問題タブにリストが表示されません。
だから、これはむしろJSライブラリの問題よりも、IEditorInputの問題のように見えます。