Language Addins
There are a number of extension points that need to be implemented when creating a Language Addin for MonoDevelop.
1. Stub out the addin
Create a project with an addin manifest defining the ID, 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 and 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. Not all the members need to be implemented at this point.
Register parameters/configuration settings classes used by your language binding at /MonoDevelop/ProjectModel/SerializableClasses
4. File and 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.
5. Options Panels
Implement options panels for editing your language-specific settings classes and register at /MonoDevelop/ProjectModel/Gui/ItemOptionPanels
6) Syntax Highlighting
Write a syntax definition for your source files’ mimetypes and register at /MonoDevelop/SourceEditor2/SyntaxModes
7) Parser
A parser provides type information to the MonoDevelop type system, automatically enabling the class pad, the document outline, the class member breadcrumbs, and the go-to-type commands. It’s used by code completion fby projects that reference the current project. It also provides code folding and error undelrining information.
Implement the parser and register at /MonoDevelop/ProjectModel/DomParser
8) Ambience
Ambiences format type information shown in info tooltips, the document outline, and so on.
Implement an ambience class and register at /MonoDevelop/ProjectModel/Ambiences
9) Code Completion
Implement a CompletionTextEditorExtension subclass and register at /MonoDevelop/Ide/TextEditorExtensions.
There are further extension points that can be implemented to add more features and integrate further -
- code formatter
- references finder
- refactorer implementation
- specific refactorings
- expression finder
- debugger evaluator
- smart indentation
- ASP.NET inline code completion