Author Topic: Plugin for a Programming Language  (Read 22691 times)

Offline igorevc

  • Multiple posting newcomer
  • *
  • Posts: 23
Plugin for a Programming Language
« on: January 27, 2009, 01:45:18 pm »
Good day.

I want to create a plugin for Code::Blocks for a programming language that has the following features:

- New project type and new file types
- Testing and debugging facilitations

I already made the Hello World tutorial but I need some more info to make my project possible.
Can you help me out?

Thank you for your attention.

Offline dmoore

  • Developer
  • Lives here!
  • *****
  • Posts: 1576
Re: Plugin for a Programming Language
« Reply #1 on: January 27, 2009, 03:48:22 pm »
what programming language? compiled or interpreted?

files types are handled automatically (more or less - at present, there's no programmatic way to add new file types for the project tree). you can create project wizards without creating a plugin.

a plugin would be suitable for adding testing or debugging facilities. I put together a "proof-of-concept" python debugger a couple of years back, which simply parses the output of the command line debugger (pdb) in order to offer familiar gui interaction. what do you have in mind for testing?

Offline igorevc

  • Multiple posting newcomer
  • *
  • Posts: 23
Re: Plugin for a Programming Language
« Reply #2 on: January 27, 2009, 05:03:10 pm »
If you need to know, it's a interpreted.

But the plugin must add new project types and new file types.

For testing, it should create a console that interpretates commands and return the possible results.

I need what I asked to make a complete plugin.

By the way, is there a way to incorporate the console on "Log & others"?

Once more, I thank you for your attention.

Offline dmoore

  • Developer
  • Lives here!
  • *****
  • Posts: 1576
Re: Plugin for a Programming Language
« Reply #3 on: January 27, 2009, 06:45:15 pm »
If you need to know, it's a interpreted.

I asked because it makes a difference. CB's project infrastructure was designed for compiled languages. Interpreted languages don't need all of that complexity. So what sort of project support do you need: just a container to say these files belong to this project?

Quote
But the plugin must add new project types and new file types.

you could deploy a project wizard along with your plugin. It wouldn't be all that difficult to tweak the CB SDK to add the ability to add file types programmatically (file a patch if you want)

Quote
For testing, it should create a console that interpretates commands and return the possible results.
...
By the way, is there a way to incorporate the console on "Log & others"?

You could use existing logs to send output (for example, commands that you set up on the tools menu can be redirected to the log)

Alternatively, you could create your own frame or window that handles process I/O. I've written a plugin called ShellExtensions that does just that for arbitrary commands. (you can find links to these plugins at the project page in my sig. I'm in the process of getting some of this code ready to move into C::B proper)
« Last Edit: January 27, 2009, 07:34:44 pm by dmoore »

Offline igorevc

  • Multiple posting newcomer
  • *
  • Posts: 23
Re: Plugin for a Programming Language
« Reply #4 on: January 27, 2009, 07:24:14 pm »
On the project part, I'll need a file container and to verify errors.

I really want my plugin to extend the project choices.

Thank you so much for your attention.

Offline dmoore

  • Developer
  • Lives here!
  • *****
  • Posts: 1576
Re: Plugin for a Programming Language
« Reply #5 on: January 27, 2009, 09:33:43 pm »
On the project part, I'll need a file container and to verify errors.

one way to proceed would be for your projects to offer two targets (or two sets of targets): one for the actual program, and one for its tests. users could then select which target they want to run. the problem with this is that C::B targets can't at this time be set up to pass their output to a plugin for further processing. the other problem is that if you use the project system in this way, C::B will expect you to choose a compiler for the project (or use an existing compiler) and present a bunch of unwanted and confusing compiler options to your users.

Offline igorevc

  • Multiple posting newcomer
  • *
  • Posts: 23
Re: Plugin for a Programming Language
« Reply #6 on: January 27, 2009, 10:22:47 pm »
I could just verify errors during the build. It would be easier, don't you think?

Thank you for your attention.

Offline dmoore

  • Developer
  • Lives here!
  • *****
  • Posts: 1576
Re: Plugin for a Programming Language
« Reply #7 on: January 27, 2009, 11:14:22 pm »
I could just verify errors during the build. It would be easier, don't you think?

Thank you for your attention.

ok, so you would use compile to run the tests. I suppose that would work. Try playing around with the compiler toolchain to get this working...

Offline igorevc

  • Multiple posting newcomer
  • *
  • Posts: 23
Re: Plugin for a Programming Language
« Reply #8 on: January 28, 2009, 12:19:02 am »
"compiler toolchain"?
I'm a bit confused. Explain better.

Once again, thank you for your attention.

Offline igorevc

  • Multiple posting newcomer
  • *
  • Posts: 23
Re: Plugin for a Programming Language
« Reply #9 on: January 28, 2009, 12:30:33 am »
I made a research on Code::Blocks Plugin Development and I found what I was looking for:

http://wiki.codeblocks.org/index.php?title=Creating_a_plugin_that_actually_does_something

But the tutorial is incomplete. Is there an updated (and completed) version of the tutorial?

Thank you for your attention.

Offline dmoore

  • Developer
  • Lives here!
  • *****
  • Posts: 1576
Re: Plugin for a Programming Language
« Reply #10 on: January 28, 2009, 05:26:40 am »
I made a research on Code::Blocks Plugin Development and I found what I was looking for:

http://wiki.codeblocks.org/index.php?title=Creating_a_plugin_that_actually_does_something

But the tutorial is incomplete. Is there an updated (and completed) version of the tutorial?

unfortunately plugin development documentation is in a sorry state (lots of incomplete stuff). The best way to learn is just to download code::blocks source and inspect some of the plugins.

We can help you, but you need to give us a better idea of what you want to do. I suggest writing up a short description that more precisely lays out a minimal sample project and the features that you want to support.

"compiler toolchain"?
I'm a bit confused. Explain better.

take a look at Settings -> Compiler and Debugger -> "Other Settings" tab -> Advanced Options

that will give you an idea of how you might be able to abstract the concept of a compiler to your purposes. that could save you a bunch of coding time.

Offline dmoore

  • Developer
  • Lives here!
  • *****
  • Posts: 1576
Re: Plugin for a Programming Language
« Reply #11 on: January 28, 2009, 05:38:19 am »
also look at

http://wiki.codeblocks.org/index.php?title=Adding_support_for_non_C/C%2B%2B_files_to_the_build_system

and for the record:

http://wiki.codeblocks.org/index.php?title=Creating_a_plugin_that_actually_does_something

was written by the project leader to educate me on how to write a plugin. :) If you are interested in that specific example, it actually became the basis for the "ShellExtensions" plugin (which does a lot more than just launch external programs: it has a file manager, supports custom commands and redirection of command output to a dockable window). I'm working on getting that plugin ready for the main cb repository. Right now, you can find it by following the link to the project page in my sig.

Offline igorevc

  • Multiple posting newcomer
  • *
  • Posts: 23
Re: Plugin for a Programming Language
« Reply #12 on: January 28, 2009, 05:49:01 pm »
I'm more interessed in the code itself.
Could you put also the code?

Thank you for your attention.

Offline dmoore

  • Developer
  • Lives here!
  • *****
  • Posts: 1576
Re: Plugin for a Programming Language
« Reply #13 on: January 28, 2009, 06:23:10 pm »
it's an open source project. the source is at the project page (look under SVN)

EDIT: Let me warn you that the code needs a lot of cleanup
« Last Edit: January 28, 2009, 06:27:15 pm by dmoore »

Offline igorevc

  • Multiple posting newcomer
  • *
  • Posts: 23
Re: Plugin for a Programming Language
« Reply #14 on: February 18, 2009, 07:25:49 pm »
Good afternoon.

Just for now, I need to make a plugin that:
 - when plugged to Code::Blocks, it will add a new project type and new file extensions
 - when unplugged to Code::Blocks, the new project type and new file extensions will disappear

Is it possible? If so, can someone help me out?

I thank you for your attention.