カスタムJavascriptのようなカスタム言語プラグインを構築しています。このカスタム言語は、Ecmascript 6/Javascriptに基づいています。 Javascriptの上に特別なカスタムタグとキーワードを追加したいと思います。最も重要なのは、コードシンタックスのハイライトをJavascriptと同じように見せたいと思っています。私はJava言語で構文の強調表示をテストしています。私はこのコンストラクタとハイライトが私のプラグインをデバッグした後に働いた追加私のMyScriptLanguage.java
ファイル内IntelliJカスタム言語プラグイン - 言語IDは既に登録されているエラーです
:
protected MyScriptLanguage() { super(JavaLanguage.INSTANCE, "MyScript", "text/ms", "application/ms"); }
は、その後、私はこのようにJavascriptの言語に切り替える:
protected MyScriptLanguage() { super(JavascriptLanguage.INSTANCE, "MyScript", "text/ms", "application/ms"); }
をへ切り替えた後Javascriptデバッグがいくつかの言語の競合エラーで動作を停止しました
2017-11-14 08:57:56,531 [ 12556] ERROR - llij.ide.plugins.PluginManager - com.intellij.ide.plugins.PluginManager$StartupAbortedException: Fatal error initializing plugin com.ndoubismarck.mytest
java.lang.RuntimeException: com.intellij.ide.plugins.PluginManager$StartupAbortedException: Fatal error initializing plugin com.ndoubismarck.mytest
at com.intellij.idea.IdeaApplication.run(IdeaApplication.java:210)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.idea.MainImpl$1$1.a(MainImpl.java:64)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:756)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:726)
at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:345)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Caused by: com.intellij.ide.plugins.PluginManager$StartupAbortedException: Fatal error initializing plugin com.ndoubismarck.mytest
at com.intellij.ide.plugins.PluginManager.handleComponentError(PluginManager.java:272)
at com.intellij.openapi.fileTypes.impl.FileTypeManagerImpl.initStandardFileTypes(FileTypeManagerImpl.java:310)
at com.intellij.openapi.fileTypes.impl.FileTypeManagerImpl.<init>(FileTypeManagerImpl.java:267)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.picocontainer.defaults.InstantiatingComponentAdapter.newInstance(InstantiatingComponentAdapter.java:193)
at com.intellij.util.pico.CachingConstructorInjectionComponentAdapter.doGetComponentInstance(CachingConstructorInjectionComponentAdapter.java:103)
at com.intellij.util.pico.CachingConstructorInjectionComponentAdapter.instantiateGuarded(CachingConstructorInjectionComponentAdapter.java:80)
at com.intellij.util.pico.CachingConstructorInjectionComponentAdapter.getComponentInstance(CachingConstructorInjectionComponentAdapter.java:63)
at com.intellij.openapi.components.impl.ComponentManagerImpl$ComponentConfigComponentAdapter.getComponentInstance(ComponentManagerImpl.java:469)
at com.intellij.openapi.components.impl.ComponentManagerImpl.createComponents(ComponentManagerImpl.java:118)
at com.intellij.openapi.application.impl.ApplicationImpl.a(ApplicationImpl.java:462)
at com.intellij.openapi.progress.impl.CoreProgressManager.a(CoreProgressManager.java:170)
at com.intellij.openapi.progress.impl.CoreProgressManager.a(CoreProgressManager.java:548)
at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:493)
at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:94)
at com.intellij.openapi.progress.impl.CoreProgressManager.runProcess(CoreProgressManager.java:157)
at com.intellij.openapi.application.impl.ApplicationImpl.createComponents(ApplicationImpl.java:469)
at com.intellij.openapi.components.impl.ComponentManagerImpl.init(ComponentManagerImpl.java:102)
at com.intellij.openapi.application.impl.ApplicationImpl.load(ApplicationImpl.java:421)
at com.intellij.openapi.application.impl.ApplicationImpl.load(ApplicationImpl.java:407)
at com.intellij.idea.IdeaApplication.run(IdeaApplication.java:203)
... 20 more
Caused by: com.intellij.diagnostic.PluginException: [Plugin: com.ndoubismarck.mytest]
... 44 more
Caused by: java.lang.ExceptionInInitializerError
at com.ndoubismarck.mytest.lang.myscript.MyScriptLanguage.<init>(MyScriptLanguage.java:12)
at com.ndoubismarck.mytest.lang.myscript.MyScriptLanguage.<clinit>(MyScriptLanguage.java:7)
at com.ndoubismarck.mytest.lang.myscript.MyScriptFileType.<init>(MyScriptFileType.java:12)
at com.ndoubismarck.mytest.lang.myscript.MyScriptFileType.<clinit>(MyScriptFileType.java:9)
at com.ndoubismarck.mytest.lang.myscript.MyScriptFileTypeFactory.createFileTypes(MyScriptFileTypeFactory.java:10)
at com.intellij.openapi.fileTypes.impl.FileTypeManagerImpl.initStandardFileTypes(FileTypeManagerImpl.java:307)
... 42 more
Caused by: com.intellij.diagnostic.ImplementationConflictException: Language with ID 'JavaScript' is already registered: class com.intellij.lang.javascript.JavascriptLanguage
at com.intellij.lang.Language.<init>(Language.java:89)
at com.intellij.lang.Language.<init>(Language.java:73)
at com.intellij.lang.javascript.JavascriptLanguage.<init>(JavascriptLanguage.java:26)
at com.intellij.lang.javascript.JavascriptLanguage.<clinit>(JavascriptLanguage.java:23)
... 48 more
2017-11-14 08:57:56,538 [ 12563] ERROR - llij.ide.plugins.PluginManager - IntelliJ IDEA 2017.2.5 Build #IU-172.4343.14
2017-11-14 08:57:56,538 [ 12563] ERROR - llij.ide.plugins.PluginManager - JDK: 1.8.0_111
2017-11-14 08:57:56,538 [ 12563] ERROR - llij.ide.plugins.PluginManager - VM: Java HotSpot(TM) 64-Bit Server VM
2017-11-14 08:57:56,539 [ 12564] ERROR - llij.ide.plugins.PluginManager - Vendor: Oracle Corporation
2017-11-14 08:57:56,539 [ 12564] ERROR - llij.ide.plugins.PluginManager - OS: Mac OS X
1のplugin.xml
<idea-plugin>
<id>com.ndoubismarck.mytest</id>
<name>My Custom Language</name>
<version>1.0</version>
<vendor email="[email protected]" url="http://www.yourcompany.com">YourCompany</vendor>
<description><![CDATA[
My custom language which is extending Javascript, HTML and CSS.<br>
<em>Javascript, HTML, CSS</em>
]]></description>
<change-notes><![CDATA[
<br>
<em></em>
]]>
</change-notes>
<!-- please see http://www.jetbrains.org/intellij/sdk/docs/basics/getting_started/build_number_ranges.html for description -->
<idea-version since-build="145.0"/>
<!-- please see http://www.jetbrains.org/intellij/sdk/docs/basics/getting_started/plugin_compatibility.html
on how to target different products -->
<!-- uncomment to enable plugin in all products
<depends>com.intellij.modules.lang</depends>
-->
<extensions defaultExtensionNs="com.intellij">
<!-- Add your extensions here -->
<fileTypeFactory implementation="com.ndoubismarck.mytest.lang.myscript.MyScriptFileTypeFactory"/>
</extensions>
<actions>
<!-- Add your actions here -->
</actions>
</idea-plugin>
2 MyScriptFileTypeFactory.java
package com.ndoubismarck.mytest.lang.myscript;
import com.intellij.openapi.fileTypes.FileTypeConsumer;
import com.intellij.openapi.fileTypes.FileTypeFactory;
import org.jetbrains.annotations.NotNull;
public class MyScriptFileTypeFactory extends FileTypeFactory {
@Override
public void createFileTypes(@NotNull FileTypeConsumer fileTypeConsumer) {
fileTypeConsumer.consume(MyScriptFileType.INSTANCE, "ms");
}
}
3. MyScriptFileType.java
package com.ndoubismarck.mytest.lang.myscript;
import com.intellij.lang.Language;
import com.intellij.lang.javascript.JavascriptLanguage;
public class MyScriptLanguage extends Language {
public static final MyScriptLanguage INSTANCE = new MyScriptLanguage();
protected MyScriptLanguage() {
//super(JavaLanguage.INSTANCE, "MyScript", "text/ms", "application/ms");
super(JavascriptLanguage.INSTANCE, "MyScript", "text/ms", "application/ms");
}
@Override
public String getDisplayName() {
return "MyScript language";
}
}
誰かが私を助けることができます。私はJavascriptのハイライト機能とオートコンプリート機能を独自のカスタム機能の上に拡張する必要があります。
あなたは、おそらくそれは間違ってやっているベンダータグの後
<depends>JavaScript</depends>
追加してみてください。 – Meo@Meo-本当ですか?どのようにあなたはそれを理解しましたか... – vikingsteve