Question about lang.parserDefinition in XML

Hi,

In my META-INF/plugin.xml if I have a tag called  tag, what attributes must be present?

From trial and error I've determined that if I put a "factoryClass"
attribute in, it should be the fully-qualified name of class which
implements the com.intellij.openapi.extensions.ExtensionFactory
interface.

If I put in an "implementationClass" attribute, I know that that must
be the fully-qualified name of a class that implements
com.intellij.lang.ParserDefinition

I've also determined that it needs a "language" attribute. Is there
somewhere that documents all of this clearly? I feel like I've been
doing things the hard (or stupid) way.

Also, I'm not quite sure what I should put in my
ExtensionFactory-implementing class if I use one.

If anyone could point me in the direction of some documentation that
explains how all these pieces fit together, that would be great!

Thanks in advance,

-Mike

6 comments
Comment actions Permalink

Hello Mike,

You need to put in the "language" and "implementationClass" attributes. The
"factoryClass" is something that is designed to allow writing implementations
of extension points in languages other than Java; that's not something that
should be used by regular plugin developers.

Why don't you look at example code? There are plenty of language plugins
available, both in the CE source code (Groovy) and elsewhere.

In my META-INF/plugin.xml if I have a tag called
<lang.parserDefinition …> inside my <extensions> tag, what attributes
must be present?

From trial and error I've determined that if I put a "factoryClass"
attribute in, it should be the fully-qualified name of class which
implements the com.intellij.openapi.extensions.ExtensionFactory
interface.

If I put in an "implementationClass" attribute, I know that that must
be the fully-qualified name of a class that implements
com.intellij.lang.ParserDefinition

I've also determined that it needs a "language" attribute. Is there
somewhere that documents all of this clearly? I feel like I've been
doing things the hard (or stupid) way.

Also, I'm not quite sure what I should put in my
ExtensionFactory-implementing class if I use one.

If anyone could point me in the direction of some documentation that
explains how all these pieces fit together, that would be great!


--
Dmitry Jemerov
Development Lead
JetBrains, Inc.
http://www.jetbrains.com/
"Develop with Pleasure!"


0
Comment actions Permalink

Hi Dmitry,

Thanks for the clarification. I'll try to infer what's going on from
sample code.

I tried creating a new plugin project and then added the groovy plugin
sources, but now I'm having trouble resolving dependencies. For
example, where does
com.intellij.lang.refactoring.ReferencesToInlineSearcher live?

Is the groovy plugin the best example to work from in your opinion?

Thanks again for all of your help.

-Mike

On 2011-08-30 10:23:31 +0000, Dmitry Jemerov said:

Hello Mike,

You need to put in the "language" and "implementationClass" attributes.
The "factoryClass" is something that is designed to allow writing
implementations of extension points in languages other than Java;
that's not something that should be used by regular plugin developers.

Why don't you look at example code? There are plenty of language
plugins available, both in the CE source code (Groovy) and elsewhere.

>> In my META-INF/plugin.xml if I have a tag called
>>  explains how all these pieces fit together, that would be great!


0
Comment actions Permalink

Hello Mike,

If you're working with IDEA 10.5, please make sure to get the Groovy plugin
code from the xena branch, not from the master branch. Otherwise it won't
compile.

The Groovy plugin is fairly large and complilcated; many of the other plugins
are much smaller. The simplest of JetBrains-developed plugins is probably
La Clojure.

Thanks for the clarification. I'll try to infer what's going on from
sample code.

I tried creating a new plugin project and then added the groovy plugin
sources, but now I'm having trouble resolving dependencies. For
example, where does
com.intellij.lang.refactoring.ReferencesToInlineSearcher live?

Is the groovy plugin the best example to work from in your opinion?

Thanks again for all of your help.

-Mike

On 2011-08-30 10:23:31 +0000, Dmitry Jemerov said:

>> Hello Mike,
>>
>> You need to put in the "language" and "implementationClass"
>> attributes. The "factoryClass" is something that is designed to allow
>> writing implementations of extension points in languages other than
>> Java; that's not something that should be used by regular plugin
>> developers.
>>
>> Why don't you look at example code? There are plenty of language
>> plugins available, both in the CE source code (Groovy) and elsewhere.
>>
>>> In my META-INF/plugin.xml if I have a tag called
>>> 

--
Dmitry Jemerov
Development Lead
JetBrains, Inc.
http://www.jetbrains.com/
"Develop with Pleasure!"


0
Comment actions Permalink

Thanks Dmitry!

I apologize for the naiive question, but how do I grab the "xena"
branch? (I haven't used git very much).


On 2011-08-30 17:06:04 +0000, Dmitry Jemerov said:

Hello Mike,

If you're working with IDEA 10.5, please make sure to get the Groovy
plugin code from the xena branch, not from the master branch. Otherwise
it won't compile.

The Groovy plugin is fairly large and complilcated; many of the other
plugins are much smaller. The simplest of JetBrains-developed plugins
is probably La Clojure.

>> Thanks for the clarification. I'll try to infer what's going on from
>> sample code.
>>
>> I tried creating a new plugin project and then added the groovy plugin
>> sources, but now I'm having trouble resolving dependencies. For
>> example, where does
>> com.intellij.lang.refactoring.ReferencesToInlineSearcher live?
>>
>> Is the groovy plugin the best example to work from in your opinion?
>>
>> Thanks again for all of your help.
>>
>> -Mike
>>
>> On 2011-08-30 10:23:31 +0000, Dmitry Jemerov said:
>>
>>> Hello Mike,
>>>
>>> You need to put in the "language" and "implementationClass"
>>> attributes. The "factoryClass" is something that is designed to allow
>>> writing implementations of extension points in languages other than
>>> Java; that's not something that should be used by regular plugin
>>> developers.
>>>
>>> Why don't you look at example code? There are plenty of language
>>> plugins available, both in the CE source code (Groovy) and elsewhere.
>>>
>>>> In my META-INF/plugin.xml if I have a tag called
>>>>  explains how all these pieces fit together, that would be great!


0
Comment actions Permalink

Is it just:

git clone --branch xena git://git.jetbrains.org/idea/community.git xena

?

On 2011-08-30 17:22:01 +0000, Mike Jennings said:

Thanks Dmitry!

I apologize for the naiive question, but how do I grab the "xena"
branch? (I haven't used git very much).


On 2011-08-30 17:06:04 +0000, Dmitry Jemerov said:

>> Hello Mike,
>>
>> If you're working with IDEA 10.5, please make sure to get the Groovy
>> plugin code from the xena branch, not from the master branch. Otherwise
>> it won't compile.
>>
>> The Groovy plugin is fairly large and complilcated; many of the other
>> plugins are much smaller. The simplest of JetBrains-developed plugins
>> is probably La Clojure.
>>
>>> Thanks for the clarification. I'll try to infer what's going on from
>>> sample code.
>>>
>>> I tried creating a new plugin project and then added the groovy plugin
>>> sources, but now I'm having trouble resolving dependencies. For
>>> example, where does
>>> com.intellij.lang.refactoring.ReferencesToInlineSearcher live?
>>>
>>> Is the groovy plugin the best example to work from in your opinion?
>>>
>>> Thanks again for all of your help.
>>>
>>> -Mike
>>>
>>> On 2011-08-30 10:23:31 +0000, Dmitry Jemerov said:
>>>
>>>> Hello Mike,
>>>>
>>>> You need to put in the "language" and "implementationClass"
>>>> attributes. The "factoryClass" is something that is designed to allow
>>>> writing implementations of extension points in languages other than
>>>> Java; that's not something that should be used by regular plugin
>>>> developers.
>>>>
>>>> Why don't you look at example code? There are plenty of language
>>>> plugins available, both in the CE source code (Groovy) and elsewhere.
>>>>
>>>>> In my META-INF/plugin.xml if I have a tag called
>>>>>  explains how all these pieces fit together, that would be great!


0
Comment actions Permalink

Hello Mike,

git checkout -b xena

Thanks Dmitry!

I apologize for the naiive question, but how do I grab the "xena"
branch? (I haven't used git very much).

On 2011-08-30 17:06:04 +0000, Dmitry Jemerov said:

>> Hello Mike,
>>
>> If you're working with IDEA 10.5, please make sure to get the Groovy
>> plugin code from the xena branch, not from the master branch.
>> Otherwise it won't compile.
>>
>> The Groovy plugin is fairly large and complilcated; many of the other
>> plugins are much smaller. The simplest of JetBrains-developed plugins
>> is probably La Clojure.
>>
>>> Thanks for the clarification. I'll try to infer what's going on from
>>> sample code.
>>>
>>> I tried creating a new plugin project and then added the groovy
>>> plugin sources, but now I'm having trouble resolving dependencies.
>>> For example, where does
>>> com.intellij.lang.refactoring.ReferencesToInlineSearcher live?
>>>
>>> Is the groovy plugin the best example to work from in your opinion?
>>>
>>> Thanks again for all of your help.
>>>
>>> -Mike
>>>
>>> On 2011-08-30 10:23:31 +0000, Dmitry Jemerov said:
>>>
>>>> Hello Mike,
>>>>
>>>> You need to put in the "language" and "implementationClass"
>>>> attributes. The "factoryClass" is something that is designed to
>>>> allow writing implementations of extension points in languages
>>>> other than Java; that's not something that should be used by
>>>> regular plugin developers.
>>>>
>>>> Why don't you look at example code? There are plenty of language
>>>> plugins available, both in the CE source code (Groovy) and
>>>> elsewhere.
>>>>
>>>>> In my META-INF/plugin.xml if I have a tag called
>>>>>  explains how all these pieces fit together, that would be great!

--
Dmitry Jemerov
Development Lead
JetBrains, Inc.
http://www.jetbrains.com/
"Develop with Pleasure!"


0

Please sign in to leave a comment.