Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Eclipse plug-in: Create a new file extension for a language not supported by Eclipse

I am creating an Eclipse plug-in for it to support a new language. The problem I have is with the content type/file association and its respective editor.

The language has no base in Java or XML and let's say its extension is '.xyz'

From what I understood of research online, I would need to create a new Content Type with file extension '.xyz'. But all the information I have found online has related to either associating a new extension with java (for java syntax highlighting) or creating a new type of file which can be a variant of XML, hence having a lot of details about the describer.
Basically, I am confused about the content describer, am I also to create a new describer for a new language? And what base-type would I give for a language not related to XML or JAVA at all?

Also, since I will be adding my own syntax highlighting, would I need to create my own editor or can I just open such a file in the pre-set editorArea (editors).

The package I am looking at for content types is org.eclipse.core.contenttype.contentTypes.

like image 559
nbz Avatar asked Oct 01 '10 11:10

nbz


1 Answers

I realised that I never really picked an answer for this question and eventually I found some useful information on it, so I thought I would share it.

This is the information I understood and used; I apologize if there are any errors or I have misunderstood, and I am open to any corrections.

It was actually a lot simpler than I expected. To create a new file extension, you just need to extend

org.eclipse.core.contenttype.contentTypes

If you are using the PDE, then you can just right click on the extension (once it is added in the extensions tab) and choose New... -> content-type

Here is the xml code for it,

<extension
         id="com.newLanguage.XYZ.contentType"
         point="org.eclipse.core.contenttype.contentTypes">
      <content-type
            file-extensions="xyz,xyzz"
            id="com.newLanguage.XYZ.contenttypeMod"
            name="XYZ File"
            priority="normal">
      </content-type>
   </extension>

Here you can set the properties of this content-type by defining a unique id, a human-readable name and the extension. You can also give multiple extensions for this content type. For example, my XYZ language can have 2 types of extension '.xyz, and '.xyzz'.

The content describer comes in when I have one generic file-extension: '.xy' but the content or format of the file may differentiate and so I need a describer for the editor to be able to go through the content of the file and recognize the difference. This is handy for syntax highlighting where I need to know the differences.

Since I am not very good at explaining this, this link was extremely useful to me.

But all in all, this tutorial is what set me on my pace and has actually taken me far in understanding how to implement an IDE plug-in for Eclipse. I think it is a very ideal place to start, especially for someone new.

Another place that kept my work going is the Eclipse FAQs but I would specifically like to point out to section 3.5 Implementing Support for Your Own Language which has many tutorial links.

like image 142
nbz Avatar answered Sep 16 '22 13:09

nbz