+ Optional, list of semicolon-separated entries of the file extensions handled by the binding.
+ If no extensions attribute is specified, the binding is activated in all files.
+
+
+
+
class:
+
+ Name of the ICodeCompletionBinding class (normally deriving from DefaultCodeCompletionBinding).
+
+
+
+
+
Usage:
+
Only in /AddIns/DefaultTextEditor/CodeCompletion
+
+
+
Returns:
+
+ The ICodeCompletionBinding class specified with the 'class' attribute, or a
+ wrapper that lazy-loads the actual class when it is used in a file with the specified
+ extension.
+
+ Creates associations between file types or node types in the project browser and
+ icons in the resource service.
+
+
+
+
Doozer name:
+
ICSharpCode.Core.IconDoozer
+
+
Attributes:
+
+
resource:
+
+ This attribute must be specified. It is the name of a bitmap resource
+ in the resource service.
+
+
+
+
language:
+
+ This attribute is specified when a project icon association should be created.
+ It specifies the language of the project types that use the icon.
+
+
+
+
extensions:
+
+ This attribute is specified when a file icon association should be created.
+ It specifies the semicolon-separated list of file types that use the icon.
+
+
+
+
+
Usage:
+
Only in /Workspace/Icons
+
+
+
Returns:
+
+ An IconDescriptor object that exposes the attributes.
+
+ Builds one or multiple items from another location in the addin tree.
+ This doozer can use the "item" OR the "path" attribute.
+
+
+
+
Doozer name:
+
ICSharpCode.Core.IncludeDoozer
+
+
Attributes:
+
+
item:
+
+ When this attribute is used, the include doozer builds the item that is at the
+ addin tree location specified by this attribute.
+
+
+
+
path:
+
+ When this attribute is used, the include doozer builds all items inside the
+ path addin tree location specified by this attribute and returns an
+ which includes all items in the output list.
+
+
+
+
+
Usage:
+
Everywhere
+
+
+
Returns:
+
+ Any object, depending on the included codon(s).
+
+ Creates menu items from a location in the addin tree.
+
+
+
+
Doozer name:
+
ICSharpCode.Core.MenuItemDoozer
+
+
Attributes:
+
+
type:
+
+ This attribute must be specified and one of these values:
+ Separator, CheckBox, Item=Command, Menu (=with subitems),
+ Builder (=class implementing ISubmenuBuilder)
+
+
+
+
loadclasslazy:
+
+ Only for the type "Item"/"Command".
+ When set to false, the command class is loaded
+ immediately instead of the usual lazy-loading.
+
+
+
+
icon:
+
+ Icon of the menu item.
+
+
+
+
label:
+
+ Label of the menu item.
+
+
+
+
class:
+
+ Command class that is run when item is clicked.
+
+
+
+
+
Children:
+
+ If "type" is "Menu", the item can have sub-menuitems.
+
+
+
+
Usage:
+
Any menu strip paths or context menu paths, e.g. /SharpDevelop/Workbench/MainMenu
+
+
+
Returns:
+
+ A ToolStrip* object, depending on the type attribute.
+
+ Creates PadDescriptor objects for SharpDevelop pads.
+
+
+
+
Doozer name:
+
ICSharpCode.Core.PadDoozer
+
+
Attributes:
+
+
title:
+
+ Title of the pad that is shown in the user interface.
+ Should be a resource string, e.g. "${res:AddIns.HtmlHelp2.Contents}"
+
+
+
+
icon:
+
+ Optional, specifies the name of the icon resource used for the pad.
+ Pad icon resources must be registered with the ResourceService before the
+ workbench is loaded!
+
+
+
+
category:
+
+ Category of the pad. It is possible to create menu items that automatically
+ contain show commands for all pads in a certain category.
+ Pads in the category "Main" will show up in the "View" menu, the category
+ "Tools" in the "View -> Tools" menu, the category "Debugger" in the
+ "View -> Debugger" menu.
+
+
+
+
shortcut:
+
+ Shortcut that activates the 'Show pad' command (e.g. "Control|Alt|T").
+
+
+
+
class:
+
+ IPadContent class that is loaded when the pad content is shown for the first time.
+
+
+
+
+
Usage:
+
Only in /Workspace/Parser
+
+
+
Returns:
+
+ An PadDescriptor object that wraps the IPadContent object.
+
+ Creates tool bar items from a location in the addin tree.
+
+
+
+
Doozer name:
+
ICSharpCode.Core.ToolbarItemDoozer
+
+
Attributes:
+
+
type:
+
+ This attribute must be specified and one of these values:
+ Separator, CheckBox, Item, ComboBox, DropDownButton
+
+
+
+
loadclasslazy:
+
+ Only for the type "Item". When set to false, the command class is loaded
+ immediately instead of the usual lazy-loading.
+
+
+
+
icon:
+
+ Icon of the tool bar item.
+
+
+
+
tooltip:
+
+ Tooltip of the tool bar item.
+
+
+
+
class:
+
+ Command class that is run when item is clicked; or class that manages
+ the ComboBox/DropDownButton.
+
+
+
+
+
Usage:
+
Any toolbar strip paths, e.g. /SharpDevelop/Workbench/ToolBar
+
+
+
Returns:
+
+ A ToolStrip* object, depending on the type attribute.
+
+
+
+
Conditions:
+
MenuMode
+
+
+
+
diff --git a/doc/technotes/listing.css b/doc/technotes/listing.css
new file mode 100644
index 0000000000..f9e7bc0b62
--- /dev/null
+++ b/doc/technotes/listing.css
@@ -0,0 +1,50 @@
+body, td, th {
+ font-family: Verdana, Arial, Helvetica;
+ font-size: 10pt;
+ color: #000000;
+ background-color: #ffffff;
+}
+.notice {
+ font-size: 75%;
+ color: #606060;
+}
+th {
+ vertical-align: top;
+ text-align: left;
+}
+h1 {
+ font-size: 200%;
+}
+h2 {
+ font-size: 150%;
+ text-decoration: bold;
+ margin-top: 0px;
+ margin-bottom: 0px;
+}
+h3 {
+ font-size: 110%;
+ margin-top: 0px;
+}
+div {
+ border: 1px solid #ccccff;
+ background: #fafaff;
+ padding-left: 4px;
+ padding-right: 10px;
+ padding-top: 4px;
+ margin-top: 4px;
+ margin-bottom: 4px;
+}
+td, th {
+ background: #fdfdfd;
+}
+table {
+ border: 1px solid #ccccff;
+ width: 100%;
+ margin-bottom: 4px;
+}
+hr {
+ border: 0px;
+ color: #ccccff;
+ background-color: #ccccff;
+ height: 1px;
+}
diff --git a/src/AddIns/BackendBindings/Boo/BooBinding/Project/BooBinding.addin b/src/AddIns/BackendBindings/Boo/BooBinding/Project/BooBinding.addin
index 4480dac1e5..3410dde9fd 100644
--- a/src/AddIns/BackendBindings/Boo/BooBinding/Project/BooBinding.addin
+++ b/src/AddIns/BackendBindings/Boo/BooBinding/Project/BooBinding.addin
@@ -56,10 +56,11 @@
-
+
diff --git a/src/AddIns/Misc/SubversionAddIn/Project/SubversionAddIn.csproj b/src/AddIns/Misc/SubversionAddIn/Project/SubversionAddIn.csproj
index 9e601271e1..78e60cf0a9 100644
--- a/src/AddIns/Misc/SubversionAddIn/Project/SubversionAddIn.csproj
+++ b/src/AddIns/Misc/SubversionAddIn/Project/SubversionAddIn.csproj
@@ -9,7 +9,7 @@
$(MSBuildProjectDirectory)\PostBuildEvent.bat "$(MSBuildProjectDirectory)"8.0.502152.0
- OnOutputUpdated
+ OnSuccessfulBuildTrue
diff --git a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Actions/FormatActions.cs b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Actions/FormatActions.cs
index 81d71e6a35..dd637217bf 100644
--- a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Actions/FormatActions.cs
+++ b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Actions/FormatActions.cs
@@ -208,9 +208,9 @@ namespace ICSharpCode.TextEditor.Actions
for (int i = y2; i >= y1; --i) {
LineSegment line = document.GetLineSegment(i);
if(line.Length > 0) {
- /// note: some users may prefer a more radical ConvertLeadingSpacesToTabs that
- /// means there can be no spaces before the first character even if the spaces
- /// didn't add up to a whole number of tabs
+ // note: some users may prefer a more radical ConvertLeadingSpacesToTabs that
+ // means there can be no spaces before the first character even if the spaces
+ // didn't add up to a whole number of tabs
string newLine = TextUtilities.LeadingWhiteSpaceToTabs(document.GetText(line.Offset,line.Length), document.TextEditorProperties.TabIndent);
document.Replace(line.Offset,line.Length,newLine);
++redocounter;
diff --git a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextArea.cs b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextArea.cs
index cf16f9c6e1..37fc0a7e7a 100644
--- a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextArea.cs
+++ b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextArea.cs
@@ -435,7 +435,7 @@ namespace ICSharpCode.TextEditor
///
/// This method is called on each Keypress
- ///
+ ///
///
/// True, if the key is handled by this method and should NOT be
/// inserted in the textarea.
diff --git a/src/Libraries/NRefactory/Project/Src/Parser/AST/General/Expressions/BinaryOperatorExpression.cs b/src/Libraries/NRefactory/Project/Src/Parser/AST/General/Expressions/BinaryOperatorExpression.cs
index 14d1335a3c..2017869cb0 100644
--- a/src/Libraries/NRefactory/Project/Src/Parser/AST/General/Expressions/BinaryOperatorExpression.cs
+++ b/src/Libraries/NRefactory/Project/Src/Parser/AST/General/Expressions/BinaryOperatorExpression.cs
@@ -53,7 +53,7 @@ namespace ICSharpCode.NRefactory.Parser.AST
DivideInteger,
/// VB-only: ^
Power,
- /// VB-only: &
+ /// VB-only: &
Concat,
/// C#: <<
diff --git a/src/Main/Base/Project/Src/Dom/Implementations/NullReturnType.cs b/src/Main/Base/Project/Src/Dom/Implementations/NullReturnType.cs
index 6b414cb813..35903dbd77 100644
--- a/src/Main/Base/Project/Src/Dom/Implementations/NullReturnType.cs
+++ b/src/Main/Base/Project/Src/Dom/Implementations/NullReturnType.cs
@@ -11,8 +11,8 @@ using ICSharpCode.Core;
namespace ICSharpCode.SharpDevelop.Dom
{
- [Serializable]
/// The type of the 'null'/'nothing' literal.
+ [Serializable]
public sealed class NullReturnType : AbstractReturnType
{
public static readonly NullReturnType Instance = new NullReturnType();
diff --git a/src/Main/Base/Project/Src/Gui/AbstractViewContent.cs b/src/Main/Base/Project/Src/Gui/AbstractViewContent.cs
index dd47575de8..e33dd9e3ad 100644
--- a/src/Main/Base/Project/Src/Gui/AbstractViewContent.cs
+++ b/src/Main/Base/Project/Src/Gui/AbstractViewContent.cs
@@ -133,7 +133,7 @@ namespace ICSharpCode.SharpDevelop.Gui
}
///
- /// Sets the file name to and the title to the file name without path. Sets dirty == false too.
+ /// Sets the file name to and the title to the file name without path. Sets dirty == false too.
///
/// The name of the file currently inside the content.
protected void SetTitleAndFileName(string fileName)
diff --git a/src/Main/Base/Project/Src/Gui/BrowserDisplayBinding/SchemeExtension.cs b/src/Main/Base/Project/Src/Gui/BrowserDisplayBinding/SchemeExtension.cs
index 0060666094..2fd710e048 100644
--- a/src/Main/Base/Project/Src/Gui/BrowserDisplayBinding/SchemeExtension.cs
+++ b/src/Main/Base/Project/Src/Gui/BrowserDisplayBinding/SchemeExtension.cs
@@ -70,6 +70,19 @@ namespace ICSharpCode.SharpDevelop.BrowserDisplayBinding
}
}
+ ///
+ /// Creates browser scheme extensions that can intercept calls on one protocol.
+ ///
+ ///
+ /// Specifies the name of the protocol the extension handles. (e.g. 'ms-help' or 'startpage')
+ ///
+ ///
+ /// Name of the ISchemeExtension class (normally deriving from DefaultSchemeExtension).
+ ///
+ /// Only in /SharpDevelop/Views/Browser/SchemeExtensions
+ ///
+ /// An SchemeExtensionDescriptor object that exposes the protocol name and ISchemeExtension object (lazy-loading).
+ ///
public class SchemeExtensionDoozer : IDoozer
{
///
diff --git a/src/Main/Base/Project/Src/Gui/Components/ExtTreeView/ExtTreeNode.cs b/src/Main/Base/Project/Src/Gui/Components/ExtTreeView/ExtTreeNode.cs
index 3818be9131..dff31a3593 100644
--- a/src/Main/Base/Project/Src/Gui/Components/ExtTreeView/ExtTreeNode.cs
+++ b/src/Main/Base/Project/Src/Gui/Components/ExtTreeView/ExtTreeNode.cs
@@ -322,7 +322,7 @@ namespace ICSharpCode.SharpDevelop.Gui
#region Drag and Drop
///
- /// Generates a Drag & Drop data object. If this property returns null
+ /// Generates a Drag & Drop data object. If this property returns null
/// the node indicates that it can't be dragged.
///
public virtual DataObject DragDropDataObject {
@@ -332,14 +332,14 @@ namespace ICSharpCode.SharpDevelop.Gui
}
///
- /// Gets the drag & drop effect, when a DataObject is dragged over this node.
+ /// Gets the drag & drop effect, when a DataObject is dragged over this node.
///
///
/// The default effect DragDropEffects.Copy and DragDropEffects.Move, depending on the
- /// key the user presses while performing d&d.
+ /// key the user presses while performing d&d.
///
///
- /// DragDropEffects.None when no drag&drop can occur.
+ /// DragDropEffects.None when no drag&drop can occur.
///
public virtual DragDropEffects GetDragDropEffect(IDataObject dataObject, DragDropEffects proposedEffect)
{
diff --git a/src/Main/Base/Project/Src/Gui/Dialogs/NewFileDialog.cs b/src/Main/Base/Project/Src/Gui/Dialogs/NewFileDialog.cs
index ce40776ced..57070061de 100644
--- a/src/Main/Base/Project/Src/Gui/Dialogs/NewFileDialog.cs
+++ b/src/Main/Base/Project/Src/Gui/Dialogs/NewFileDialog.cs
@@ -31,7 +31,7 @@ namespace ICSharpCode.SharpDevelop.Gui
{
///
/// This class is for creating a new "empty" file
- ///
public class NewFileDialog : BaseSharpDevelopForm, INewFileCreator
{
ArrayList alltemplates = new ArrayList();
diff --git a/src/Main/Base/Project/Src/Gui/Dialogs/Wizard/WizardDialog.cs b/src/Main/Base/Project/Src/Gui/Dialogs/Wizard/WizardDialog.cs
index b9a1ae6760..151930337d 100644
--- a/src/Main/Base/Project/Src/Gui/Dialogs/Wizard/WizardDialog.cs
+++ b/src/Main/Base/Project/Src/Gui/Dialogs/Wizard/WizardDialog.cs
@@ -87,7 +87,7 @@ namespace ICSharpCode.SharpDevelop.Gui
return nextID;
}
- /// returns true, if all dialog panels could be finished
+ /// returns true, if all dialog panels could be finished
bool CanFinish {
get {
int currentNr = 0;
diff --git a/src/Main/Base/Project/Src/Internal/Doozers/DefaultDialogPanelDescriptor.cs b/src/Main/Base/Project/Src/Internal/Doozers/DefaultDialogPanelDescriptor.cs
index 0c29fa8880..1cab0b7895 100644
--- a/src/Main/Base/Project/Src/Internal/Doozers/DefaultDialogPanelDescriptor.cs
+++ b/src/Main/Base/Project/Src/Internal/Doozers/DefaultDialogPanelDescriptor.cs
@@ -42,8 +42,18 @@ namespace ICSharpCode.Core
}
}
+ AddIn addin;
+ string dialogPanelPath;
+
public IDialogPanel DialogPanel {
get {
+ if (dialogPanelPath != null) {
+ if (dialogPanel == null) {
+ dialogPanel = (IDialogPanel)addin.CreateObject(dialogPanelPath);
+ }
+ dialogPanelPath = null;
+ addin = null;
+ }
return dialogPanel;
}
set {
@@ -62,9 +72,10 @@ namespace ICSharpCode.Core
this.dialogPanelDescriptors = dialogPanelDescriptors;
}
- public DefaultDialogPanelDescriptor(string id, string label, IDialogPanel dialogPanel) : this(id, label)
+ public DefaultDialogPanelDescriptor(string id, string label, AddIn addin, string dialogPanelPath) : this(id, label)
{
- this.dialogPanel = dialogPanel;
+ this.addin = addin;
+ this.dialogPanelPath = dialogPanelPath;
}
}
}
diff --git a/src/Main/Base/Project/Src/Internal/Doozers/DialogPanelDoozer.cs b/src/Main/Base/Project/Src/Internal/Doozers/DialogPanelDoozer.cs
index e027b80a26..0a3575b2cf 100644
--- a/src/Main/Base/Project/Src/Internal/Doozers/DialogPanelDoozer.cs
+++ b/src/Main/Base/Project/Src/Internal/Doozers/DialogPanelDoozer.cs
@@ -11,6 +11,23 @@ using System.Reflection;
namespace ICSharpCode.Core
{
+ ///
+ /// Creates DefaultDialogPanelDescriptor objects that are used in option dialogs.
+ ///
+ ///
+ /// Name of the IDialogPanel class. Optional if the page has subpages.
+ ///
+ ///
+ /// Caption of the dialog panel.
+ ///
+ ///
+ /// In the SharpDevelop options, option pages can have subpages by specifying them
+ /// as children in the AddInTree.
+ ///
+ /// In /SharpDevelop/BackendBindings/ProjectOptions/ and /SharpDevelop/Dialogs/OptionsDialog
+ ///
+ /// A DefaultDialogPanelDescriptor object.
+ ///
public class DialogPanelDoozer : IDoozer
{
///
@@ -33,7 +50,7 @@ namespace ICSharpCode.Core
if (subItems == null || subItems.Count == 0) {
if (codon.Properties.Contains("class")) {
- return new DefaultDialogPanelDescriptor(codon.Id, StringParser.Parse(label), (IDialogPanel)codon.AddIn.CreateObject(codon.Properties["class"]));
+ return new DefaultDialogPanelDescriptor(codon.Id, StringParser.Parse(label), codon.AddIn, codon.Properties["class"]);
} else {
return new DefaultDialogPanelDescriptor(codon.Id, StringParser.Parse(label));
}
diff --git a/src/Main/Base/Project/Src/Internal/Doozers/DirectoryDoozer.cs b/src/Main/Base/Project/Src/Internal/Doozers/DirectoryDoozer.cs
index 434913586e..c6aba0a4d4 100644
--- a/src/Main/Base/Project/Src/Internal/Doozers/DirectoryDoozer.cs
+++ b/src/Main/Base/Project/Src/Internal/Doozers/DirectoryDoozer.cs
@@ -17,6 +17,8 @@ namespace ICSharpCode.Core
///
/// Path relative to the directory which contains the .addin file defining the codon.
///
+ /// Where directory paths to a folder inside the addin directory are expected, e.g.
+ /// /SharpDevelop/BackendBindings/Templates
///
/// A string containing the full path name.
///
diff --git a/src/Main/Base/Project/Src/Internal/Doozers/PadDoozer.cs b/src/Main/Base/Project/Src/Internal/Doozers/PadDoozer.cs
index bea764741a..7eae3dfb82 100644
--- a/src/Main/Base/Project/Src/Internal/Doozers/PadDoozer.cs
+++ b/src/Main/Base/Project/Src/Internal/Doozers/PadDoozer.cs
@@ -12,6 +12,35 @@ using ICSharpCode.SharpDevelop.Gui;
namespace ICSharpCode.Core
{
+ ///
+ /// Creates PadDescriptor objects for SharpDevelop pads.
+ ///
+ ///
+ /// Title of the pad that is shown in the user interface.
+ /// Should be a resource string, e.g. "${res:AddIns.HtmlHelp2.Contents}"
+ ///
+ ///
+ /// Optional, specifies the name of the icon resource used for the pad.
+ /// Pad icon resources must be registered with the ResourceService before the
+ /// workbench is loaded!
+ ///
+ ///
+ /// Category of the pad. It is possible to create menu items that automatically
+ /// contain show commands for all pads in a certain category.
+ /// Pads in the category "Main" will show up in the "View" menu, the category
+ /// "Tools" in the "View -> Tools" menu, the category "Debugger" in the
+ /// "View -> Debugger" menu.
+ ///
+ ///
+ /// Shortcut that activates the 'Show pad' command (e.g. "Control|Alt|T").
+ ///
+ ///
+ /// IPadContent class that is loaded when the pad content is shown for the first time.
+ ///
+ /// Only in /Workspace/Parser
+ ///
+ /// An PadDescriptor object that wraps the IPadContent object.
+ ///
public class PadDoozer : IDoozer
{
///
diff --git a/src/Main/Base/Project/Src/Services/Debugger/DebuggerDoozer.cs b/src/Main/Base/Project/Src/Services/Debugger/DebuggerDoozer.cs
index 9472873951..3b074f479a 100644
--- a/src/Main/Base/Project/Src/Services/Debugger/DebuggerDoozer.cs
+++ b/src/Main/Base/Project/Src/Services/Debugger/DebuggerDoozer.cs
@@ -10,6 +10,31 @@ using System.Collections;
namespace ICSharpCode.Core
{
+ ///
+ /// Creates debuggers.
+ ///
+ ///
+ /// Specifies if the debugger supports the 'Start' command. Default: true
+ ///
+ ///
+ /// Specifies if the debugger supports the 'StartWithoutDebugger' command. Default: true
+ ///
+ ///
+ /// Specifies if the debugger supports the 'Stop' (kill running process) command. Default: true
+ ///
+ ///
+ /// Specifies if the debugger supports stepping. Default: false
+ ///
+ ///
+ /// Specifies if the debugger supports execution control (break, resume). Default: false
+ ///
+ ///
+ /// Name of the IDebugger class.
+ ///
+ /// Only in /SharpDevelop/Services/DebuggerService/Debugger
+ ///
+ /// An DebuggerDescriptor object that exposes the attributes and the IDebugger object (lazy-loading).
+ ///
public class DebuggerDoozer : IDoozer
{
///
diff --git a/src/Main/Base/Project/Src/Services/DisplayBinding/DisplayBindingDescriptor.cs b/src/Main/Base/Project/Src/Services/DisplayBinding/DisplayBindingDescriptor.cs
index 18a417e2b0..c0a18a85ca 100644
--- a/src/Main/Base/Project/Src/Services/DisplayBinding/DisplayBindingDescriptor.cs
+++ b/src/Main/Base/Project/Src/Services/DisplayBinding/DisplayBindingDescriptor.cs
@@ -40,9 +40,11 @@ namespace ICSharpCode.Core
}
}
+ bool isSecondary;
+
public bool IsSecondary {
get {
- return codon.Properties["type"] == "Secondary";
+ return isSecondary;
}
}
@@ -51,9 +53,12 @@ namespace ICSharpCode.Core
return codon;
}
}
-
+
public DisplayBindingDescriptor(Codon codon)
{
+ isSecondary = codon.Properties["type"] == "Secondary";
+ if (!isSecondary && codon.Properties["type"] != "" && codon.Properties["type"] != "Primary")
+ MessageService.ShowWarning("Unknown display binding type: " + codon.Properties["type"]);
this.codon = codon;
}
diff --git a/src/Main/Base/Project/Src/Services/DisplayBinding/DisplayBindingDoozer.cs b/src/Main/Base/Project/Src/Services/DisplayBinding/DisplayBindingDoozer.cs
index 99f7a7519e..68a9ae4947 100644
--- a/src/Main/Base/Project/Src/Services/DisplayBinding/DisplayBindingDoozer.cs
+++ b/src/Main/Base/Project/Src/Services/DisplayBinding/DisplayBindingDoozer.cs
@@ -13,6 +13,28 @@ using ICSharpCode.Core;
namespace ICSharpCode.Core
{
+ ///
+ /// Creates DisplayBindingDescriptor objects.
+ ///
+ ///
+ /// Name of the IDisplayBinding or ISecondaryDisplayBinding class.
+ ///
+ ///
+ /// Type of the display binding (either "Primary" or "Secondary"). Default: "Primary".
+ ///
+ ///
+ /// Optional. Regular expression that specifies the file names for which the display binding
+ /// will be used. Example: "\.res(x|ources)$"
+ ///
+ ///
+ /// Optional. Regular expression that specifies the language for which the display binding
+ /// will be used. Example: "\Resource Files$"
+ ///
+ /// Only in /SharpDevelop/Workbench/DisplayBindings
+ ///
+ /// An DisplayBindingDescriptor object that wraps either a IDisplayBinding
+ /// or a ISecondaryDisplayBinding object.
+ ///
public class DisplayBindingDoozer : IDoozer
{
///
diff --git a/src/Main/Base/Project/Src/Services/LanguageBinding/LanguageBindingDoozer.cs b/src/Main/Base/Project/Src/Services/LanguageBinding/LanguageBindingDoozer.cs
index 193b17524d..56fffc38f3 100644
--- a/src/Main/Base/Project/Src/Services/LanguageBinding/LanguageBindingDoozer.cs
+++ b/src/Main/Base/Project/Src/Services/LanguageBinding/LanguageBindingDoozer.cs
@@ -14,6 +14,25 @@ using ICSharpCode.SharpDevelop.Project;
namespace ICSharpCode.Core
{
+ ///
+ /// Creates LanguageBindingDescriptor objects for the project service.
+ ///
+ ///
+ /// Project type GUID of the project used by MsBuild.
+ ///
+ ///
+ /// Semicolon-separated list of file extensions that are compilable files in the project. (e.g. ".boo")
+ ///
+ ///
+ /// File extension of project files. (e.g. ".booproj")
+ ///
+ ///
+ /// Name of the ILanguageBinding class.
+ ///
+ /// Only in /SharpDevelop/Workbench/LanguageBindings
+ ///
+ /// An LanguageBindingDescriptor object that wraps the ILanguageBinding object.
+ ///
public class LanguageBindingDoozer : IDoozer
{
///
diff --git a/src/Main/Base/Project/Src/Services/ParserService/Doozer/ParserDescriptor.cs b/src/Main/Base/Project/Src/Services/ParserService/Doozer/ParserDescriptor.cs
index e1b38a49e0..ee59748e65 100644
--- a/src/Main/Base/Project/Src/Services/ParserService/Doozer/ParserDescriptor.cs
+++ b/src/Main/Base/Project/Src/Services/ParserService/Doozer/ParserDescriptor.cs
@@ -52,7 +52,7 @@ namespace ICSharpCode.Core
public string[] Supportedextensions {
get {
if (supportedExtensions == null) {
- supportedExtensions = codon.Properties["supportedextensions"].ToUpper().Split(';');
+ supportedExtensions = codon.Properties["supportedextensions"].ToUpperInvariant().Split(';');
}
return supportedExtensions;
}
@@ -60,7 +60,7 @@ namespace ICSharpCode.Core
public bool CanParse(string fileName)
{
- string fileExtension = Path.GetExtension(fileName).ToUpper();
+ string fileExtension = Path.GetExtension(fileName).ToUpperInvariant();
foreach (string ext in Supportedextensions) {
if (fileExtension == ext) {
return true;
diff --git a/src/Main/Base/Project/Src/Services/ParserService/Doozer/ParserDoozer.cs b/src/Main/Base/Project/Src/Services/ParserService/Doozer/ParserDoozer.cs
index d8bfae1a97..2488e546c9 100644
--- a/src/Main/Base/Project/Src/Services/ParserService/Doozer/ParserDoozer.cs
+++ b/src/Main/Base/Project/Src/Services/ParserService/Doozer/ParserDoozer.cs
@@ -14,6 +14,22 @@ using ICSharpCode.SharpDevelop.Project;
namespace ICSharpCode.Core
{
+ ///
+ /// Creates ParserDescriptor objects for the parsing service.
+ ///
+ ///
+ /// Semicolon-separated list of file extensions for which the parser is used. (e.g. ".boo")
+ ///
+ ///
+ /// File extension of project files. (e.g. ".booproj")
+ ///
+ ///
+ /// Name of the IParser class.
+ ///
+ /// Only in /Workspace/Parser
+ ///
+ /// An ParserDescriptor object that wraps the IParser object.
+ ///
public class ParserDoozer : IDoozer
{
///
diff --git a/src/Main/Base/Project/Src/TextEditor/Codons/EditActionDoozer.cs b/src/Main/Base/Project/Src/TextEditor/Codons/EditActionDoozer.cs
index bb5a4b0c01..c7910886be 100644
--- a/src/Main/Base/Project/Src/TextEditor/Codons/EditActionDoozer.cs
+++ b/src/Main/Base/Project/Src/TextEditor/Codons/EditActionDoozer.cs
@@ -17,6 +17,20 @@ using ICSharpCode.TextEditor.Actions;
namespace ICSharpCode.SharpDevelop.DefaultEditor.Codons
{
+ ///
+ /// Creates IEditAction objects for the text editor.
+ ///
+ ///
+ /// Comma-separated list of keyboard shortcuts that activate the edit action.
+ /// E.g. "Control|C,Control|Insert"
+ ///
+ ///
+ /// Name of the IEditAction class.
+ ///
+ /// Only in /AddIns/DefaultTextEditor/EditActions
+ ///
+ /// An IEditAction object.
+ ///
public class EditActionDoozer : IDoozer
{
///
diff --git a/src/Main/Base/Project/Src/TextEditor/Codons/SyntaxModeDoozer.cs b/src/Main/Base/Project/Src/TextEditor/Codons/SyntaxModeDoozer.cs
index c70297d8e6..fb5a1e55de 100644
--- a/src/Main/Base/Project/Src/TextEditor/Codons/SyntaxModeDoozer.cs
+++ b/src/Main/Base/Project/Src/TextEditor/Codons/SyntaxModeDoozer.cs
@@ -42,6 +42,24 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Codons
}
}
+ ///
+ /// Creates AddInTreeSyntaxMode objects that wrap a .xshd syntax mode stored as resource in the
+ /// addin assembly.
+ ///
+ ///
+ /// Name of the language for which the syntax mode is used.
+ ///
+ ///
+ /// Semicolon-separated list of file extensions for which the syntax mode is used.
+ ///
+ ///
+ /// Fully qualified name of the resource file.
+ ///
+ /// Only in /SharpDevelop/ViewContent/DefaultTextEditor/SyntaxModes
+ ///
+ /// An AddInTreeSyntaxMode object that loads the resource from the addin assembly when
+ /// its CreateTextReader method is called.
+ ///
public class SyntaxModeDoozer : IDoozer
{
///
diff --git a/src/Main/Base/Project/Src/TextEditor/Gui/Editor/CodeCompletionBinding.cs b/src/Main/Base/Project/Src/TextEditor/Gui/Editor/CodeCompletionBinding.cs
index dcc6153621..38ae55e43b 100644
--- a/src/Main/Base/Project/Src/TextEditor/Gui/Editor/CodeCompletionBinding.cs
+++ b/src/Main/Base/Project/Src/TextEditor/Gui/Editor/CodeCompletionBinding.cs
@@ -22,6 +22,22 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
bool HandleKeyPress(SharpDevelopTextAreaControl editor, char ch);
}
+ ///
+ /// Creates code completion bindings that manage code completion for one language.
+ ///
+ ///
+ /// Optional, list of semicolon-separated entries of the file extensions handled by the binding.
+ /// If no extensions attribute is specified, the binding is activated in all files.
+ ///
+ ///
+ /// Name of the ICodeCompletionBinding class (normally deriving from DefaultCodeCompletionBinding).
+ ///
+ /// Only in /AddIns/DefaultTextEditor/CodeCompletion
+ ///
+ /// The ICodeCompletionBinding class specified with the 'class' attribute, or a
+ /// wrapper that lazy-loads the actual class when it is used in a file with the specified
+ /// extension.
+ ///
public class CodeCompletionBindingDoozer : IDoozer
{
public bool HandleConditions {
diff --git a/src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/ClassDoozer.cs b/src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/ClassDoozer.cs
index 0b5fda872a..657f515896 100644
--- a/src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/ClassDoozer.cs
+++ b/src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/ClassDoozer.cs
@@ -17,6 +17,7 @@ namespace ICSharpCode.Core
///
/// The fully qualified type name of the attribute to create.
///
+ /// Everywhere where objects are expected.
///
/// Any kind of object.
///
diff --git a/src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/FileFilterDoozer.cs b/src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/FileFilterDoozer.cs
index e8e6590645..5a07ab4582 100644
--- a/src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/FileFilterDoozer.cs
+++ b/src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/FileFilterDoozer.cs
@@ -19,6 +19,7 @@ namespace ICSharpCode.Core
///
/// The extensions associated with this file filter entry.
///
+ /// Only in /SharpDevelop/Workbench/FileFilter
///
/// String in the format "name|extensions".
///
diff --git a/src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/Icon/IconDoozer.cs b/src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/Icon/IconDoozer.cs
index ba85ec4fb8..1807f901e2 100644
--- a/src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/Icon/IconDoozer.cs
+++ b/src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/Icon/IconDoozer.cs
@@ -28,6 +28,7 @@ namespace ICSharpCode.Core
/// This attribute is specified when a file icon association should be created.
/// It specifies the semicolon-separated list of file types that use the icon.
///
+ /// Only in /Workspace/Icons
///
/// An IconDescriptor object that exposes the attributes.
///
diff --git a/src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/IncludeDoozer.cs b/src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/IncludeDoozer.cs
index b4636ca72d..f1aa9932b2 100644
--- a/src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/IncludeDoozer.cs
+++ b/src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/IncludeDoozer.cs
@@ -23,6 +23,7 @@ namespace ICSharpCode.Core
/// path addin tree location specified by this attribute and returns an
/// which includes all items in the output list.
///
+ /// Everywhere
///
/// Any object, depending on the included codon(s).
///
diff --git a/src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/MenuItem/MenuItemDoozer.cs b/src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/MenuItem/MenuItemDoozer.cs
index 1179bf7bd5..04488a4041 100644
--- a/src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/MenuItem/MenuItemDoozer.cs
+++ b/src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/MenuItem/MenuItemDoozer.cs
@@ -33,6 +33,10 @@ namespace ICSharpCode.Core
///
/// Command class that is run when item is clicked.
///
+ ///
+ /// If "type" is "Menu", the item can have sub-menuitems.
+ ///
+ /// Any menu strip paths or context menu paths, e.g. /SharpDevelop/Workbench/MainMenu
///
/// A ToolStrip* object, depending on the type attribute.
///
diff --git a/src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/ToolBarItem/ToolBarItemDoozer.cs b/src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/ToolBarItem/ToolBarItemDoozer.cs
index 2acc0d449f..bce21479ac 100644
--- a/src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/ToolBarItem/ToolBarItemDoozer.cs
+++ b/src/Main/Core/Project/Src/AddInTree/AddIn/DefaultDoozers/ToolBarItem/ToolBarItemDoozer.cs
@@ -32,6 +32,7 @@ namespace ICSharpCode.Core
/// Command class that is run when item is clicked; or class that manages
/// the ComboBox/DropDownButton.
///
+ /// Any toolbar strip paths, e.g. /SharpDevelop/Workbench/ToolBar
///
/// A ToolStrip* object, depending on the type attribute.
///
diff --git a/src/Tools/BuildAddinDocumentation/BuildAddinDocumentation.csproj b/src/Tools/BuildAddinDocumentation/BuildAddinDocumentation.csproj
new file mode 100644
index 0000000000..65582bc743
--- /dev/null
+++ b/src/Tools/BuildAddinDocumentation/BuildAddinDocumentation.csproj
@@ -0,0 +1,34 @@
+
+
+ Exe
+ BuildAddinDocumentation
+ BuildAddinDocumentation
+ Debug
+ AnyCPU
+ {211887B2-E9E4-45A4-BE16-6CEA4A7E00F2}
+
+
+ bin\Debug\
+ False
+ DEBUG;TRACE
+ True
+ Full
+ True
+
+
+ bin\Release\
+ True
+ TRACE
+ False
+ None
+ False
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Tools/BuildAddinDocumentation/BuildAddinDocumentation.sln b/src/Tools/BuildAddinDocumentation/BuildAddinDocumentation.sln
new file mode 100644
index 0000000000..475a255aea
--- /dev/null
+++ b/src/Tools/BuildAddinDocumentation/BuildAddinDocumentation.sln
@@ -0,0 +1,6 @@
+Microsoft Visual Studio Solution File, Format Version 9.00
+# SharpDevelop 2.0.0.589
+Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "BuildAddinDocumentation", "BuildAddinDocumentation.csproj", "{211887B2-E9E4-45A4-BE16-6CEA4A7E00F2}"
+EndProject
+Global
+EndGlobal
diff --git a/src/Tools/BuildAddinDocumentation/MainClass.cs b/src/Tools/BuildAddinDocumentation/MainClass.cs
new file mode 100644
index 0000000000..d24a593b71
--- /dev/null
+++ b/src/Tools/BuildAddinDocumentation/MainClass.cs
@@ -0,0 +1,186 @@
+/*
+ * Created by SharpDevelop.
+ * User: Daniel Grunwald
+ * Date: 17.10.2005
+ * Time: 14:50
+ */
+using System;
+using System.Collections.Generic;
+using System.Diagnostics;
+using System.IO;
+using System.Xml;
+
+namespace BuildAddinDocumentation
+{
+ public class MainClass
+ {
+ static FileVersionInfo sdVersion;
+
+ public static void Main()
+ {
+ string srcDir = @"..\..\..\..\";
+ Debug.WriteLine(Path.GetFullPath(srcDir));
+ List doozers = new List();
+ List conditions = new List();
+
+ if (!ReadXmlDocu(srcDir + "Main\\Core\\Project", doozers, conditions))
+ return;
+ if (!ReadXmlDocu(srcDir + "Main\\Base\\Project", doozers, conditions))
+ return;
+
+ // build normal SharpDevelop:
+ ProcessStartInfo info = new ProcessStartInfo("cmd", "/c debugbuild.bat");
+ info.WorkingDirectory = srcDir;
+ Process p = Process.Start(info);
+ if (!p.WaitForExit(60000)) {
+ Debug.WriteLine("msbuild did not exit");
+ return;
+ }
+ if (p.ExitCode != 0) {
+ Debug.WriteLine("msbuild exit code: " + p.ExitCode);
+ return;
+ }
+
+ sdVersion = FileVersionInfo.GetVersionInfo(Path.GetFullPath(Path.Combine(srcDir, "..\\bin\\SharpDevelop.exe")));
+
+ Comparison comparison = delegate(XmlElement a, XmlElement b) {
+ string shortNameA = a.GetAttribute("name").Substring(a.GetAttribute("name").LastIndexOf('.') + 1);
+ string shortNameB = b.GetAttribute("name").Substring(b.GetAttribute("name").LastIndexOf('.') + 1);
+ return shortNameA.CompareTo(shortNameB);
+ };
+ doozers.Sort(comparison);
+ conditions.Sort(comparison);
+
+ using (StreamWriter html = new StreamWriter(Path.Combine(srcDir, "..\\doc\\technotes\\DoozerList.html"))) {
+ WriteHeader(html, "Doozer List");
+ WriteList(html, doozers, true);
+ WriteFooter(html);
+ }
+ using (StreamWriter html = new StreamWriter(Path.Combine(srcDir, "..\\doc\\technotes\\ConditionList.html"))) {
+ WriteHeader(html, "Condition List");
+ WriteList(html, conditions, false);
+ WriteFooter(html);
+ }
+ }
+
+ static void WriteList(StreamWriter html, List elementList, bool isDoozer)
+ {
+ html.WriteLine("
This file was generated by the tool 'BuildAddinDocumentation'.");
+ html.WriteLine("It is based on SharpDevelop " + sdVersion.FileMajorPart + "." + sdVersion.FileMinorPart +
+ "." + sdVersion.FileBuildPart + "." + sdVersion.FilePrivatePart + ".
");
+ }
+
+ static void WriteFooter(StreamWriter html)
+ {
+ html.WriteLine("");
+ }
+
+ static bool ReadXmlDocu(string projectFolder, List doozers, List conditions)
+ {
+ XmlDocument doc = GetXmlDocu(projectFolder);
+ if (doc == null) return false;
+ foreach (XmlElement member in doc.DocumentElement["members"]) {
+ if (member.GetAttribute("name").EndsWith("Doozer"))
+ doozers.Add(member);
+ if (member.GetAttribute("name").EndsWith("ConditionEvaluator"))
+ conditions.Add(member);
+ }
+ return true;
+ }
+
+ static XmlDocument GetXmlDocu(string projectFolder)
+ {
+ string docFile = Path.GetFullPath("doc.xml");
+ if (File.Exists(docFile))
+ File.Delete(docFile);
+ string args = "\"/p:DocumentationFile=" + docFile + "\" \"/p:NoWarn=1591 1573 1574 1572 419\"";
+ string msbuild = Path.Combine(Path.GetDirectoryName(typeof(object).Assembly.Location), "msbuild.exe");
+ ProcessStartInfo info = new ProcessStartInfo(msbuild, args);
+ info.WorkingDirectory = projectFolder;
+ Process p = Process.Start(info);
+ if (!p.WaitForExit(60000)) {
+ Debug.WriteLine("msbuild did not exit");
+ return null;
+ }
+ if (p.ExitCode != 0) {
+ Debug.WriteLine("msbuild exit code: " + p.ExitCode);
+ return null;
+ }
+ XmlDocument doc = new XmlDocument();
+ doc.Load(docFile);
+ return doc;
+ }
+ }
+}