Skip to main content



      Home
Home » Language IDEs » C / C++ IDE (CDT) » Using the CDT code formatter from another plugin(Using the CDT code formatter from another plugin)
Using the CDT code formatter from another plugin [message #807618] Sun, 26 February 2012 14:42 Go to next message
Eclipse UserFriend
Hi,

I'm working on a plugin that as one of it's outcomes produces some C code that it writes to a file on the file system.

I would really like to format this C code using the CDT code formatter (I guess the org.eclipse.cdt.core.formatter.CodeFormatter class would be relevant here).

Is it possible to set up and call the CDT code formatter from some Java code in another plugin? Any input on how I might go about this is greatly appreciated.

Kind regards,

- Stephan
Re: Using the CDT code formatter from another plugin [message #807679 is a reply to message #807618] Sun, 26 February 2012 16:54 Go to previous messageGo to next message
Eclipse UserFriend
I found the answer myself Smile It's like finally deciding to go to the doctor, and then you get well....

Here is my current solution,

package icecaptools.compiler;

import org.eclipse.cdt.core.formatter.CodeFormatter;
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.jface.text.Document;
import org.eclipse.jface.text.IDocument;
import org.eclipse.text.edits.MalformedTreeException;
import org.eclipse.text.edits.TextEdit;

public class EclipseCCodeFormatter implements IcecapCodeFormatter {

private CodeFormatter codeFormatter;

public EclipseCCodeFormatter()
{
codeFormatter = org.eclipse.cdt.core.ToolFactory.createDefaultCodeFormatter(null);
}

public String format(String source) {

// int kind, String source, int offset, int length, int indentationLevel, String lineSeparator

TextEdit edit = codeFormatter.format(0, source, 0, source.length(), 0, null);

IDocument document= new Document(source);
try {
edit.apply(document);
} catch (MalformedTreeException e) {
;
} catch (BadLocationException e) {
;
}
String formattedSource = document.get();
return formattedSource;
}
}

It is absolutely fantastic what you can do with just a couple of lines of code in the open source world Smile

Thanks to whoever made this stuff available!

- Stephan
Re: Using the CDT code formatter from another plugin [message #826679 is a reply to message #807679] Thu, 22 March 2012 07:23 Go to previous messageGo to next message
Eclipse UserFriend
Hi Stephan,
Thanks for putting up the solution.

I tried the writing similar code as yours to create a CodeFormatter instance using ToolFactory.createDefaultCodeFormatter. code got compiled but gave me runtime error

Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/cdt/core/ToolFactory
at FormatterTest.main(FormatterTest.java:19)
Caused by: java.lang.ClassNotFoundException: org.eclipse.cdt.core.ToolFactory
...
...

I tried peeking into the jar files under <path>/eclipse/plugins folder to see which jar file provides createDefaultCodeFormatter for eclipse distribution I am using. Somehow I found that none of jar files contain this method. Could you help me fix this problem.

Thanks,
Pankaj
Re: Using the CDT code formatter from another plugin [message #826982 is a reply to message #826679] Thu, 22 March 2012 14:51 Go to previous messageGo to next message
Eclipse UserFriend
To get the example above working I added the following dependencies to the plugin manifest,

org.eclipse.cdt.core
org.eclipse.text

These should be available if you have installed CDT.

- Stephan
Re: Using the CDT code formatter from another plugin [message #829341 is a reply to message #826982] Mon, 26 March 2012 02:56 Go to previous messageGo to next message
Eclipse UserFriend
Thanks for the reply Stephan. I am a C programmer and pretty novice in Java programming. Could you help me how to add the dependencies in the manifest. Yeah I have installed CDT (Eclipse Indigo distribution). Appreciate your suggestion.
Re: Using the CDT code formatter from another plugin [message #830891 is a reply to message #829341] Wed, 28 March 2012 03:26 Go to previous messageGo to next message
Eclipse UserFriend
I figured out the trouble and fixed it. Basically I had to add all the jar files provided by eclipse in the classpath. Very Happy
Re: Using the CDT code formatter from another plugin [message #905858 is a reply to message #826982] Fri, 31 August 2012 04:02 Go to previous message
Eclipse UserFriend
Thanks Stephan, this was just what I was looking for - so thank you for sharing your solution.

Cheers
Brian
Previous Topic:subdir.mk not generated properly
Next Topic:Bug - Confirm?
Goto Forum:
  


Current Time: Sat Jun 14 14:22:29 EDT 2025

Powered by FUDForum. Page generated in 0.04621 seconds
.:: Contact :: Home ::.

Powered by: FUDforum 3.0.2.
Copyright ©2001-2010 FUDforum Bulletin Board Software

Back to the top