diff --git a/AddIns/ICSharpCode.SharpDevelop.addin b/AddIns/ICSharpCode.SharpDevelop.addin
index 78d4629e49..a163229f46 100644
--- a/AddIns/ICSharpCode.SharpDevelop.addin
+++ b/AddIns/ICSharpCode.SharpDevelop.addin
@@ -1999,6 +1999,7 @@
+
diff --git a/data/options/SharpDevelop-templates.xml b/data/options/SharpDevelop-templates.xml
index 1006bd6eac..c2aa7da510 100644
--- a/data/options/SharpDevelop-templates.xml
+++ b/data/options/SharpDevelop-templates.xml
@@ -4,12 +4,10 @@
{
${Selection}
}
- for (|; ; ) {
+ for (|; ; ) {
${Selection}
}
- for (|; ; )
- ${Selection}
- if (|) {
+ if (|) {
${Selection}
}
if (|) {
@@ -17,8 +15,6 @@
} else {
}
- if (|)
- ${Selection}
switch (|) {
case:
break;
@@ -26,12 +22,12 @@
${Selection}
break;
}
- switch (|) {
+ switch (|) {
case :
${Selection}
break;
}
- try {
+ try {
${Selection}|
} catch (Exception) {
@@ -48,11 +44,9 @@
} finally {
}
- while (|) {
+ while (|) {
${Selection}
}
- while (|)
- ${Selection}
System.Console.WriteLine(${Selection}|);
System.Console.Write(${Selection}|);
diff --git a/samples/CSharpCodeCompletion/CodeCompletionData.cs b/samples/CSharpCodeCompletion/CodeCompletionData.cs
index 8b954e9613..0ad63e0467 100644
--- a/samples/CSharpCodeCompletion/CodeCompletionData.cs
+++ b/samples/CSharpCodeCompletion/CodeCompletionData.cs
@@ -14,6 +14,7 @@ using System.Xml;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Dom.CSharp;
+using ICSharpCode.SharpDevelop.Dom.VBNet;
using ICSharpCode.TextEditor.Gui.CompletionWindow;
namespace CSharpEditor
@@ -76,8 +77,8 @@ namespace CSharpEditor
string ICompletionData.Description {
get {
if (description == null) {
- IDecoration entity = (IDecoration)member ?? c;
- description = GetCSharpText(entity);
+ IEntity entity = (IEntity)member ?? c;
+ description = GetText(entity);
if (overloads > 1) {
description += " (+" + overloads + " overloads)";
}
@@ -89,21 +90,22 @@ namespace CSharpEditor
///
/// Converts a member to text.
- /// Returns the declaration of the member as C# code, e.g.
+ /// Returns the declaration of the member as C# or VB code, e.g.
/// "public void MemberName(string parameter)"
///
- static string GetCSharpText(IDecoration entity)
+ static string GetText(IEntity entity)
{
+ IAmbience ambience = MainForm.IsVisualBasic ? (IAmbience)VBNetAmbience.Instance : CSharpAmbience.Instance;
if (entity is IMethod)
- return CSharpAmbience.Instance.Convert(entity as IMethod);
+ return ambience.Convert(entity as IMethod);
if (entity is IProperty)
- return CSharpAmbience.Instance.Convert(entity as IProperty);
+ return ambience.Convert(entity as IProperty);
if (entity is IEvent)
- return CSharpAmbience.Instance.Convert(entity as IEvent);
+ return ambience.Convert(entity as IEvent);
if (entity is IField)
- return CSharpAmbience.Instance.Convert(entity as IField);
+ return ambience.Convert(entity as IField);
if (entity is IClass)
- return CSharpAmbience.Instance.Convert(entity as IClass);
+ return ambience.Convert(entity as IClass);
// unknown entity:
return entity.ToString();
}
diff --git a/samples/CSharpCodeCompletion/CodeCompletionProvider.cs b/samples/CSharpCodeCompletion/CodeCompletionProvider.cs
index 23c697d5cb..5df81198f7 100644
--- a/samples/CSharpCodeCompletion/CodeCompletionProvider.cs
+++ b/samples/CSharpCodeCompletion/CodeCompletionProvider.cs
@@ -119,12 +119,16 @@ namespace CSharpEditor
} else {
finder = new Dom.CSharp.CSharpExpressionFinder(mainForm.parseInformation);
}
- return finder.FindExpression(textArea.Document.TextContent, textArea.Caret.Offset);
+ Dom.ExpressionResult expression = finder.FindExpression(textArea.Document.TextContent, textArea.Caret.Offset);
+ if (expression.Region.IsEmpty) {
+ expression.Region = new Dom.DomRegion(textArea.Caret.Line + 1, textArea.Caret.Column + 1);
+ }
+ return expression;
}
void AddCompletionData(List resultList, ArrayList completionData)
{
- // used to store method the names for grouping overloads
+ // used to store the method names for grouping overloads
Dictionary nameDictionary = new Dictionary();
// Add the completion data as returned by SharpDevelop.Dom to the
diff --git a/samples/CSharpCodeCompletion/MainForm.cs b/samples/CSharpCodeCompletion/MainForm.cs
index 88aaa3abbf..7c6db05835 100644
--- a/samples/CSharpCodeCompletion/MainForm.cs
+++ b/samples/CSharpCodeCompletion/MainForm.cs
@@ -181,7 +181,7 @@ class A
// Remove information from lastCompilationUnit and add information from newCompilationUnit.
myProjectContent.UpdateCompilationUnit(lastCompilationUnit, newCompilationUnit, DummyFileName);
lastCompilationUnit = newCompilationUnit;
- parseInformation.ValidCompilationUnit = newCompilationUnit;
+ parseInformation.SetCompilationUnit(newCompilationUnit);
}
Dom.ICompilationUnit ConvertCompilationUnit(NRefactory.Ast.CompilationUnit cu)
diff --git a/samples/CSharpCodeCompletion/ToolTipProvider.cs b/samples/CSharpCodeCompletion/ToolTipProvider.cs
index 54d94724a2..54bd58534f 100644
--- a/samples/CSharpCodeCompletion/ToolTipProvider.cs
+++ b/samples/CSharpCodeCompletion/ToolTipProvider.cs
@@ -64,6 +64,9 @@ namespace CSharpEditor
ExpressionResult expression = expressionFinder.FindFullExpression(
editor.Text,
editor.Document.PositionToOffset(e.LogicalPosition));
+ if (expression.Region.IsEmpty) {
+ expression.Region = new DomRegion(e.LogicalPosition.Line + 1, e.LogicalPosition.Column + 1);
+ }
TextEditor.TextArea textArea = editor.ActiveTextAreaControl.TextArea;
NRefactoryResolver resolver = new NRefactoryResolver(mainForm.myProjectContent.Language);
@@ -119,7 +122,7 @@ namespace CSharpEditor
}
}
- static string GetMemberText(IAmbience ambience, IDecoration member)
+ static string GetMemberText(IAmbience ambience, IEntity member)
{
StringBuilder text = new StringBuilder();
if (member is IField) {
diff --git a/src/AddIns/DisplayBindings/XmlEditor/Project/Src/XmlCompletionData.cs b/src/AddIns/DisplayBindings/XmlEditor/Project/Src/XmlCompletionData.cs
index 56c7c71b72..0dd231e573 100644
--- a/src/AddIns/DisplayBindings/XmlEditor/Project/Src/XmlCompletionData.cs
+++ b/src/AddIns/DisplayBindings/XmlEditor/Project/Src/XmlCompletionData.cs
@@ -101,13 +101,5 @@ namespace ICSharpCode.XmlEditor
}
return false;
}
-
- public int CompareTo(object obj)
- {
- if ((obj == null) || !(obj is XmlCompletionData)) {
- return -1;
- }
- return text.CompareTo(((XmlCompletionData)obj).text);
- }
}
}
diff --git a/src/AddIns/DisplayBindings/XmlEditor/Test/Completion/FirstCompletionListItemSelectedTestFixture.cs b/src/AddIns/DisplayBindings/XmlEditor/Test/Completion/FirstCompletionListItemSelectedTestFixture.cs
index cd9a9f4156..d94da565fe 100644
--- a/src/AddIns/DisplayBindings/XmlEditor/Test/Completion/FirstCompletionListItemSelectedTestFixture.cs
+++ b/src/AddIns/DisplayBindings/XmlEditor/Test/Completion/FirstCompletionListItemSelectedTestFixture.cs
@@ -85,7 +85,7 @@ namespace XmlEditor.Tests.Completion
public void SelectedCompletionDataMatches()
{
List items = new List(completionDataItems);
- items.Sort();
+ items.Sort(DefaultCompletionData.Compare);
Assert.AreEqual(items[0].Text, selectedCompletionData.Text);
}
}
diff --git a/src/Libraries/ICSharpCode.Build.Tasks/Project/ICSharpCode.Build.Tasks.csproj b/src/Libraries/ICSharpCode.Build.Tasks/Project/ICSharpCode.Build.Tasks.csproj
index e65755d244..3cbaf704d2 100644
--- a/src/Libraries/ICSharpCode.Build.Tasks/Project/ICSharpCode.Build.Tasks.csproj
+++ b/src/Libraries/ICSharpCode.Build.Tasks/Project/ICSharpCode.Build.Tasks.csproj
@@ -73,7 +73,6 @@
Always
-
\ No newline at end of file
diff --git a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/CompletionWindow/CodeCompletionListView.cs b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/CompletionWindow/CodeCompletionListView.cs
index 8536fe3f14..e7bfb11948 100644
--- a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/CompletionWindow/CodeCompletionListView.cs
+++ b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/CompletionWindow/CodeCompletionListView.cs
@@ -65,7 +65,7 @@ namespace ICSharpCode.TextEditor.Gui.CompletionWindow
public CodeCompletionListView(ICompletionData[] completionData)
{
- Array.Sort(completionData);
+ Array.Sort(completionData, DefaultCompletionData.Compare);
this.completionData = completionData;
// this.KeyDown += new System.Windows.Forms.KeyEventHandler(OnKey);
diff --git a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/CompletionWindow/CodeCompletionWindow.cs b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/CompletionWindow/CodeCompletionWindow.cs
index b7676b437d..2694e2eaac 100644
--- a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/CompletionWindow/CodeCompletionWindow.cs
+++ b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/CompletionWindow/CodeCompletionWindow.cs
@@ -246,8 +246,10 @@ namespace ICSharpCode.TextEditor.Gui.CompletionWindow
codeCompletionListView.SelectPrevItem();
return true;
case Keys.Tab:
+ InsertSelectedItem('\t');
+ return true;
case Keys.Return:
- InsertSelectedItem('\0');
+ InsertSelectedItem('\n');
return true;
}
return base.ProcessTextAreaKey(keyData);
diff --git a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/CompletionWindow/ICompletionData.cs b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/CompletionWindow/ICompletionData.cs
index c803227179..8a174345bd 100644
--- a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/CompletionWindow/ICompletionData.cs
+++ b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/CompletionWindow/ICompletionData.cs
@@ -9,7 +9,7 @@ using System;
namespace ICSharpCode.TextEditor.Gui.CompletionWindow
{
- public interface ICompletionData : IComparable
+ public interface ICompletionData
{
int ImageIndex {
get;
@@ -96,12 +96,13 @@ namespace ICSharpCode.TextEditor.Gui.CompletionWindow
this.imageIndex = imageIndex;
}
- public int CompareTo(object obj)
+ public static int Compare(ICompletionData a, ICompletionData b)
{
- if (obj == null || !(obj is DefaultCompletionData)) {
- return -1;
- }
- return text.CompareTo(((DefaultCompletionData)obj).Text);
+ if (a == null)
+ throw new ArgumentNullException("a");
+ if (b == null)
+ throw new ArgumentNullException("b");
+ return string.Compare(a.Text, b.Text, StringComparison.InvariantCultureIgnoreCase);
}
}
}
diff --git a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextEditorControlBase.cs b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextEditorControlBase.cs
index a98b2ddf83..d4f3a306ae 100644
--- a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextEditorControlBase.cs
+++ b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/TextEditorControlBase.cs
@@ -473,6 +473,7 @@ namespace ICSharpCode.TextEditor
/// purposes.
///
[Browsable(true)]
+ [DesignerSerializationVisibility(DesignerSerializationVisibility.Visible)]
[Description("The base font of the text area. No bold or italic fonts can be used because bold/italic is reserved for highlighting purposes.")]
public override Font Font {
get {
diff --git a/src/Main/Base/Project/Src/Internal/Templates/File/FileTemplate.cs b/src/Main/Base/Project/Src/Internal/Templates/File/FileTemplate.cs
index b77a37d9fb..7a6a2aa54a 100644
--- a/src/Main/Base/Project/Src/Internal/Templates/File/FileTemplate.cs
+++ b/src/Main/Base/Project/Src/Internal/Templates/File/FileTemplate.cs
@@ -71,39 +71,6 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates
}
}
- [Obsolete]
- public class TemplateScript
- {
- string languageName;
- string runAt;
- string scriptSourceCode;
-
- public string LanguageName {
- get {
- return languageName;
- }
- }
-
- public string RunAt {
- get {
- return runAt;
- }
- }
- string SourceText {
- get {
- return "public class ScriptObject : System.MarshalByRefObject { " + scriptSourceCode + "}";
- }
- }
-
-
- public TemplateScript(XmlElement scriptConfig)
- {
- languageName = scriptConfig.GetAttribute("language");
- runAt = scriptConfig.GetAttribute("runAt");
- scriptSourceCode = scriptConfig.InnerText;
- }
- }
-
public class TemplateType
{
string name;
@@ -244,20 +211,6 @@ namespace ICSharpCode.SharpDevelop.Internal.Templates
}
}
- [Obsolete]
- public List Scripts {
- get {
- return new List();
- }
- }
-
- [Obsolete]
- public bool HasScripts {
- get {
- return false;
- }
- }
-
public FileTemplate(string filename)
{
XmlDocument doc = new XmlDocument();
diff --git a/src/Main/Base/Project/Src/Services/ClassBrowserIcons/ClassBrowserIconService.cs b/src/Main/Base/Project/Src/Services/ClassBrowserIcons/ClassBrowserIconService.cs
index a6a820b407..22dac71290 100644
--- a/src/Main/Base/Project/Src/Services/ClassBrowserIcons/ClassBrowserIconService.cs
+++ b/src/Main/Base/Project/Src/Services/ClassBrowserIcons/ClassBrowserIconService.cs
@@ -23,8 +23,10 @@ namespace ICSharpCode.SharpDevelop
public const int LocalVariableIndex = 16;
public const int ParameterIndex = 17;
+ public const int KeywordIndex = NamespaceIndex; // TODO: give keywords their own icon
+ public const int CodeTemplateIndex = 18;
- public const int ClassIndex = 18;
+ public const int ClassIndex = 19;
public const int StructIndex = ClassIndex + 1 * 4;
public const int InterfaceIndex = ClassIndex + 2 * 4;
public const int EnumIndex = ClassIndex + 3 * 4;
@@ -240,8 +242,9 @@ namespace ICSharpCode.SharpDevelop
imglist.Images.Add(ResourceService.GetBitmap("Icons.16x16.Local"));
imglist.Images.Add(ResourceService.GetBitmap("Icons.16x16.Parameter"));
+ imglist.Images.Add(ResourceService.GetBitmap("Icons.16x16.TextFileIcon"));
- imglist.Images.Add(ResourceService.GetBitmap("Icons.16x16.Class")); //18
+ imglist.Images.Add(ResourceService.GetBitmap("Icons.16x16.Class")); //19
imglist.Images.Add(ResourceService.GetBitmap("Icons.16x16.InternalClass"));
imglist.Images.Add(ResourceService.GetBitmap("Icons.16x16.ProtectedClass"));
imglist.Images.Add(ResourceService.GetBitmap("Icons.16x16.PrivateClass"));
diff --git a/src/Main/Base/Project/Src/TextEditor/Actions.cs b/src/Main/Base/Project/Src/TextEditor/Actions.cs
index b1616e2325..f7c6d657f2 100644
--- a/src/Main/Base/Project/Src/TextEditor/Actions.cs
+++ b/src/Main/Base/Project/Src/TextEditor/Actions.cs
@@ -21,27 +21,37 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Actions
{
SharpDevelopTextAreaControl sdtac = (SharpDevelopTextAreaControl)services.MotherTextEditorControl;
services.AutoClearSelection = false;
- sdtac.ShowCompletionWindow(new TemplateCompletionDataProvider(), '\0');
+ sdtac.ShowCompletionWindow(new TemplateCompletionDataProvider() { AutomaticInsert = true }, '\0');
}
}
public class CodeCompletionPopup : AbstractEditAction
{
- public override void Execute(TextArea services)
+ public override void Execute(TextArea textArea)
{
- SharpDevelopTextAreaControl sdtac = (SharpDevelopTextAreaControl)services.MotherTextEditorControl;
+ SharpDevelopTextAreaControl sdtac = (SharpDevelopTextAreaControl)textArea.MotherTextEditorControl;
CtrlSpaceCompletionDataProvider provider = new CtrlSpaceCompletionDataProvider();
provider.AllowCompleteExistingExpression = true;
sdtac.ShowCompletionWindow(provider, '\0');
}
}
+ public class ExpandTemplateAction : Tab
+ {
+ public override void Execute(TextArea textArea)
+ {
+ SharpDevelopTextAreaControl sdtac = (SharpDevelopTextAreaControl)textArea.MotherTextEditorControl;
+ if (!sdtac.ExpandTemplateOnTab())
+ base.Execute(textArea);
+ }
+ }
+
#if DEBUG
internal class DebugCtrlSpaceCodeCompletionAction : AbstractEditAction
{
- public override void Execute(TextArea services)
+ public override void Execute(TextArea textArea)
{
- SharpDevelopTextAreaControl sdtac = (SharpDevelopTextAreaControl)services.MotherTextEditorControl;
+ SharpDevelopTextAreaControl sdtac = (SharpDevelopTextAreaControl)textArea.MotherTextEditorControl;
CtrlSpaceCompletionDataProvider provider = new CtrlSpaceCompletionDataProvider();
provider.AllowCompleteExistingExpression = true;
provider.DebugMode = true;
@@ -51,9 +61,9 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Actions
internal class DebugDotCompletionAction : AbstractEditAction
{
- public override void Execute(TextArea services)
+ public override void Execute(TextArea textArea)
{
- SharpDevelopTextAreaControl sdtac = (SharpDevelopTextAreaControl)services.MotherTextEditorControl;
+ SharpDevelopTextAreaControl sdtac = (SharpDevelopTextAreaControl)textArea.MotherTextEditorControl;
CodeCompletionDataProvider ccdp = new CodeCompletionDataProvider();
ccdp.DebugMode = true;
sdtac.ShowCompletionWindow(ccdp, '.');
diff --git a/src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/AbstractCompletionDataProvider.cs b/src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/AbstractCompletionDataProvider.cs
index 83af99adc5..d1ff254404 100644
--- a/src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/AbstractCompletionDataProvider.cs
+++ b/src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/AbstractCompletionDataProvider.cs
@@ -7,6 +7,7 @@
using System;
using System.Collections;
+using System.Collections.Generic;
using System.Windows.Forms;
using ICSharpCode.SharpDevelop.Dom;
@@ -105,7 +106,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
protected int caretColumn;
protected string fileName;
- protected ArrayList completionData = null;
+ protected List completionData = null;
protected ExpressionContext overrideContext;
///
@@ -113,7 +114,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
///
public override ICompletionData[] GenerateCompletionData(string fileName, TextArea textArea, char charTyped)
{
- completionData = new ArrayList();
+ completionData = new List();
this.fileName = fileName;
IDocument document = textArea.Document;
@@ -123,7 +124,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
GenerateCompletionData(textArea, charTyped);
- return (ICompletionData[])completionData.ToArray(typeof(ICompletionData));
+ return completionData.ToArray();
}
protected ExpressionResult GetExpression(TextArea textArea)
@@ -155,7 +156,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
CodeCompletionData ccd = CreateItem(o, context);
if (object.Equals(o, context.SuggestedItem))
suggestedData = ccd;
- if (ccd != null && !ccd.Text.StartsWith("___"))
+ if (ccd != null)
completionData.Add(ccd);
}
if (context.SuggestedItem != null) {
diff --git a/src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/CodeCompletionData.cs b/src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/CodeCompletionData.cs
index 00b330a1eb..e28587e6a6 100644
--- a/src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/CodeCompletionData.cs
+++ b/src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/CodeCompletionData.cs
@@ -309,15 +309,5 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
}
return cref;
}
-
- #region System.IComparable interface implementation
- public int CompareTo(object obj)
- {
- if (obj == null || !(obj is CodeCompletionData)) {
- return -1;
- }
- return text.CompareTo(((CodeCompletionData)obj).text);
- }
- #endregion
}
}
diff --git a/src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/CodeCompletionDataUsageCache.cs b/src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/CodeCompletionDataUsageCache.cs
index 5d6a6d934a..c5811b9f3a 100644
--- a/src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/CodeCompletionDataUsageCache.cs
+++ b/src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/CodeCompletionDataUsageCache.cs
@@ -143,7 +143,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
public int Compare(KeyValuePair x, KeyValuePair y)
{
double a = ((double)x.Value.Uses / x.Value.ShowCount);
- return a.CompareTo((double)y.Value.Uses / y.Value.ShowCount);
+ return -a.CompareTo((double)y.Value.Uses / y.Value.ShowCount);
}
}
diff --git a/src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/CommentCompletionDataProvider.cs b/src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/CommentCompletionDataProvider.cs
index 518d217501..3d413dd616 100644
--- a/src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/CommentCompletionDataProvider.cs
+++ b/src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/CommentCompletionDataProvider.cs
@@ -113,16 +113,6 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
this.text = text;
this.description = description;
}
- #region System.IComparable interface implementation
- public int CompareTo(object obj)
- {
- if (obj == null || !(obj is CommentCompletionData)) {
- return -1;
- }
- return text.CompareTo(((CommentCompletionData)obj).text);
- }
- #endregion
-
}
}
}
diff --git a/src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/CtrlSpaceCompletionDataProvider.cs b/src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/CtrlSpaceCompletionDataProvider.cs
index f97bd6d7f3..450e93ee81 100644
--- a/src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/CtrlSpaceCompletionDataProvider.cs
+++ b/src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/CtrlSpaceCompletionDataProvider.cs
@@ -11,6 +11,7 @@ using System.Diagnostics;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.Core;
using ICSharpCode.TextEditor;
+using ICSharpCode.TextEditor.Gui.CompletionWindow;
namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
{
@@ -52,6 +53,24 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
}
ExpressionContext context = overrideContext ?? ExpressionContext.Default;
AddResolveResults(ParserService.CtrlSpace(caretLineNumber, caretColumn, fileName, textArea.Document.TextContent, context), context);
+ ICompletionData[] templateCompletionData = new TemplateCompletionDataProvider().GenerateCompletionData(fileName, textArea, charTyped);
+ for (int i = 0; i < completionData.Count; i++) {
+ if (completionData[i].ImageIndex == ClassBrowserIconService.KeywordIndex) {
+ string text = completionData[i].Text;
+ for (int j = 0; j < templateCompletionData.Length; j++) {
+ if (templateCompletionData[j] != null && templateCompletionData[j].Text == text) {
+ // replace keyword with template
+ completionData[i] = templateCompletionData[j];
+ templateCompletionData[j] = null;
+ }
+ }
+ }
+ }
+ // add non-keyword code templates
+ for (int j = 0; j < templateCompletionData.Length; j++) {
+ if (templateCompletionData[j] != null)
+ completionData.Add(templateCompletionData[j]);
+ }
return;
}
diff --git a/src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/TemplateCompletionDataProvider.cs b/src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/TemplateCompletionDataProvider.cs
index eac955e028..e2bba826bd 100644
--- a/src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/TemplateCompletionDataProvider.cs
+++ b/src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/TemplateCompletionDataProvider.cs
@@ -7,6 +7,8 @@
using System;
using System.Collections;
+using System.Collections.Generic;
+using ICSharpCode.Core;
using System.Windows.Forms;
using ICSharpCode.SharpDevelop.Internal.Templates;
@@ -17,86 +19,54 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
{
public class TemplateCompletionDataProvider : AbstractCompletionDataProvider
{
- ImageList imageList = new ImageList();
-
public override ImageList ImageList {
get {
- return imageList;
+ return ClassBrowserIconService.ImageList;
}
}
+ public bool AutomaticInsert;
+
public override ICompletionData[] GenerateCompletionData(string fileName, TextArea textArea, char charTyped)
{
preSelection = "";
- imageList.Images.Add(IconService.GetBitmap("Icons.16x16.TextFileIcon"));
CodeTemplateGroup templateGroup = CodeTemplateLoader.GetTemplateGroupPerFilename(fileName);
if (templateGroup == null) {
return null;
}
- ArrayList completionData = new ArrayList();
+ bool automaticInsert = this.AutomaticInsert || DefaultEditor.Gui.Editor.SharpDevelopTextEditorProperties.Instance.AutoInsertTemplates;
+ List completionData = new List();
foreach (CodeTemplate template in templateGroup.Templates) {
- completionData.Add(new TemplateCompletionData(template));
+ completionData.Add(new TemplateCompletionData(template, automaticInsert));
}
- return (ICompletionData[])completionData.ToArray(typeof(ICompletionData));
+ return completionData.ToArray();
}
- class TemplateCompletionData : ICompletionData, IComparable
+ class TemplateCompletionData : DefaultCompletionData
{
CodeTemplate template;
+ bool automaticInsert;
- public int ImageIndex {
- get {
- return 0;
- }
- }
-
- public string Text {
- get {
- return template.Shortcut + "\t" + template.Description;
- }
- set {
- throw new NotSupportedException();
- }
- }
-
- public string Description {
- get {
- return template.Text;
- }
- }
-
- public double Priority {
- get {
- return 0;
- }
- }
-
- public bool InsertAction(TextArea textArea, char ch)
+ public override bool InsertAction(TextArea textArea, char ch)
{
- ((SharpDevelopTextAreaControl)textArea.MotherTextEditorControl).InsertTemplate(template);
- return false;
+ if (ch == '\t' || automaticInsert) {
+ ((SharpDevelopTextAreaControl)textArea.MotherTextEditorControl).InsertTemplate(template);
+ return false;
+ } else {
+ return base.InsertAction(textArea, ch);
+ }
}
- public TemplateCompletionData(CodeTemplate template)
+ public TemplateCompletionData(CodeTemplate template, bool automaticInsert)
+ : base(template.Shortcut,
+ template.Description + StringParser.Parse("\n${res:Dialog.Options.CodeTemplate.PressTabToInsertTemplate}\n\n") + template.Text,
+ ClassBrowserIconService.CodeTemplateIndex)
{
this.template = template;
+ this.automaticInsert = automaticInsert;
}
-
-
-
- #region System.IComparable interface implementation
- public int CompareTo(object obj)
- {
- if (obj == null || !(obj is TemplateCompletionData)) {
- return -1;
- }
- return template.Shortcut.CompareTo(((TemplateCompletionData)obj).template.Shortcut);
- }
- #endregion
-
-
}
}
}
diff --git a/src/Main/Base/Project/Src/TextEditor/Gui/Editor/NRefactoryCodeCompletionBinding.cs b/src/Main/Base/Project/Src/TextEditor/Gui/Editor/NRefactoryCodeCompletionBinding.cs
index 6d07a5db7f..89c748e5cc 100644
--- a/src/Main/Base/Project/Src/TextEditor/Gui/Editor/NRefactoryCodeCompletionBinding.cs
+++ b/src/Main/Base/Project/Src/TextEditor/Gui/Editor/NRefactoryCodeCompletionBinding.cs
@@ -168,7 +168,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
cache.activationKey = charTyped;
cache.GenerateCompletionData(editor.FileName, editor.ActiveTextAreaControl.TextArea, charTyped);
ICompletionData[] completionData = cache.CompletionData;
- Array.Sort(completionData);
+ Array.Sort(completionData, DefaultCompletionData.Compare);
for (int i = 0; i < completionData.Length; i++) {
CodeCompletionData ccd = completionData[i] as CodeCompletionData;
if (ccd != null && ccd.Class != null) {
diff --git a/src/Main/Base/Project/Src/TextEditor/Gui/Editor/SharpDevelopTextAreaControl.cs b/src/Main/Base/Project/Src/TextEditor/Gui/Editor/SharpDevelopTextAreaControl.cs
index 3ede44107d..df52f31e5a 100644
--- a/src/Main/Base/Project/Src/TextEditor/Gui/Editor/SharpDevelopTextAreaControl.cs
+++ b/src/Main/Base/Project/Src/TextEditor/Gui/Editor/SharpDevelopTextAreaControl.cs
@@ -23,10 +23,10 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
{
public class SharpDevelopTextAreaControl : TextEditorControl
{
- readonly static string contextMenuPath = "/SharpDevelop/ViewContent/DefaultTextEditor/ContextMenu";
- readonly static string editActionsPath = "/AddIns/DefaultTextEditor/EditActions";
- readonly static string formatingStrategyPath = "/AddIns/DefaultTextEditor/Formatter";
- readonly static string advancedHighlighterPath = "/AddIns/DefaultTextEditor/AdvancedHighlighter";
+ const string contextMenuPath = "/SharpDevelop/ViewContent/DefaultTextEditor/ContextMenu";
+ const string editActionsPath = "/AddIns/DefaultTextEditor/EditActions";
+ const string formatingStrategyPath = "/AddIns/DefaultTextEditor/Formatter";
+ const string advancedHighlighterPath = "/AddIns/DefaultTextEditor/AdvancedHighlighter";
QuickClassBrowserPanel quickClassBrowserPanel = null;
Control customQuickClassBrowserPanel = null;
@@ -316,26 +316,6 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
return false;
}
}
- if (ch == ' ' && SharpDevelopTextEditorProperties.Instance.AutoInsertTemplates) {
- string word = GetWordBeforeCaret();
- if (word != null) {
- CodeTemplateGroup templateGroup = CodeTemplateLoader.GetTemplateGroupPerFilename(FileName);
- if (templateGroup != null) {
- foreach (CodeTemplate template in templateGroup.Templates) {
- if (template.Shortcut == word) {
- if (word.Length > 0) {
- int newCaretOffset = DeleteWordBeforeCaret();
- //// set new position in text area
- ActiveTextAreaControl.TextArea.Caret.Position = Document.OffsetToPosition(newCaretOffset);
- }
-
- InsertTemplate(template);
- return true;
- }
- }
- }
- }
- }
} catch (Exception ex) {
LogException(ex);
} finally {
@@ -344,6 +324,29 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
return false;
}
+ internal bool ExpandTemplateOnTab()
+ {
+ string word = GetWordBeforeCaret();
+ if (word != null) {
+ CodeTemplateGroup templateGroup = CodeTemplateLoader.GetTemplateGroupPerFilename(FileName);
+ if (templateGroup != null) {
+ foreach (CodeTemplate template in templateGroup.Templates) {
+ if (template.Shortcut == word) {
+ if (word.Length > 0) {
+ int newCaretOffset = DeleteWordBeforeCaret();
+ //// set new position in text area
+ ActiveTextAreaControl.TextArea.Caret.Position = Document.OffsetToPosition(newCaretOffset);
+ }
+
+ InsertTemplate(template);
+ return true;
+ }
+ }
+ }
+ }
+ return false;
+ }
+
public void ShowInsightWindow(IInsightDataProvider insightDataProvider)
{
if (insightWindow == null || insightWindow.IsDisposed) {
diff --git a/src/Main/Base/Project/Src/TextEditor/Gui/Editor/SharpDevelopTextEditorProperties.cs b/src/Main/Base/Project/Src/TextEditor/Gui/Editor/SharpDevelopTextEditorProperties.cs
index 0c29ccda16..f59c2668f8 100644
--- a/src/Main/Base/Project/Src/TextEditor/Gui/Editor/SharpDevelopTextEditorProperties.cs
+++ b/src/Main/Base/Project/Src/TextEditor/Gui/Editor/SharpDevelopTextEditorProperties.cs
@@ -301,7 +301,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
}
public bool AutoInsertTemplates {
get {
- return properties.Get("AutoInsertTemplates", true);
+ return properties.Get("AutoInsertTemplates", false);
}
set {
properties.Set("AutoInsertTemplates", value);
diff --git a/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ProjectContent/DefaultProjectContent.cs b/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ProjectContent/DefaultProjectContent.cs
index f00fdb7aeb..0fdcbe91e3 100644
--- a/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ProjectContent/DefaultProjectContent.cs
+++ b/src/Main/ICSharpCode.SharpDevelop.Dom/Project/Src/ProjectContent/DefaultProjectContent.cs
@@ -328,7 +328,7 @@ namespace ICSharpCode.SharpDevelop.Dom
newParts.Add(addClass);
// construct a replacement CompoundClass with the new part list
addClass = CompoundClass.Create(newParts);
- LoggingService.Debug("Added new part / Replaced part! (old part count=" + compound.Parts.Count +", new part count=" + newParts.Count + ")");
+ LoggingService.Debug("Added new part (old part count=" + compound.Parts.Count +", new part count=" + newParts.Count + ")");
} else {
// Instead of overwriting a class with another, treat both parts as partial.
// This fixes SD2-1217.