[MonoDevelop] syntax definition of "addin.xml"

Michael Hutchinson m.j.hutchinson at gmail.com
Thu Jan 28 21:59:52 EST 2010


On Thu, Jan 28, 2010 at 9:16 PM, Vasili I. Galchin <vigalchin at gmail.com> wrote:
> Besides LanguageBinding what do you suggest for this "very small set"?

I'll list them in the context of some of the steps I gave.

>> 1) stub out the addin

Create project and addin manifest with header, dependencies, etc.

>> 2) file type definitions

Define mimetypes for new file types using /MonoDevelop/Core/MimeTypes
Register any icons you need using /MonoDevelop/Core/StockIcons
Define file filters for "open" dialog using /MonoDevelop/Ide/FileFilters

>> 3) IDotNetLanguageBinding for project & compilation support

Register project extension, MSBuild imports and type GUID using
/MonoDevelop/ProjectModel/MSBuildItemTypes
Implement IDotNetLanguageBinding and register at
/MonoDevelop/ProjectModel/LanguageBindings, and implement the
IDotNetLanguageBinding
Register parameters/configuration settings classes used by your
language binding at /MonoDevelop/ProjectModel/SerializableClasses

>> 4) file & project templates

Write file and project templates and register at
/MonoDevelop/Ide/FileTemplates
/MonoDevelop/Ide/ProjectTemplates

**** At this point you should be able to create/save/load/compile/run
projects for your language, so I would call this the minimum set. ****

Past this, a few more hints:

>> 5) option panels for setting language-specific project options

Implement options panels for editing your settings classes and
register at /MonoDevelop/ProjectModel/Gui/ItemOptionPanels

>> 6) a syntax highlighting definition

Write a syntax definition for your source files' mimetypes and
register at /MonoDevelop/SourceEditor2/SyntaxModes

>> 8) a parser, to provide outlining, folding, class list, quick finder,
>> and fill the database that code completion uses

Implement parser and register at /MonoDevelop/ProjectModel/DomParser
Implement an ambience class and register at /MonoDevelop/ProjectModel/Ambiences

At this point you'll have a working document outline, quick finder,
class view, go-to-type, and C# projects that reference yours will have
code completion.

>> 9) a text editor extension subclassing CompletionTextEditorExtension,
>> to provide code completion and smart indentation etc.

Implement CompletionTextEditorExtension subclass and register at
/MonoDevelop/Ide/TextEditorExtensions.

-- 
Michael Hutchinson
http://mjhutchinson.com


More information about the Monodevelop-list mailing list