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 2694e2eaac..e7bb5c660a 100644
--- a/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/CompletionWindow/CodeCompletionWindow.cs
+++ b/src/Libraries/ICSharpCode.TextEditor/Project/Src/Gui/CompletionWindow/CodeCompletionWindow.cs
@@ -320,7 +320,7 @@ namespace ICSharpCode.TextEditor.Gui.CompletionWindow
/// The default width of the list view.
/// The height of the list view. This is
/// used to determine if the scrollbar is visible.
- /// The list view width to accommodate the longest completion
+ /// The list view width to accommodate the longest completion
/// data text string; otherwise the default width.
int GetListViewWidth(int defaultWidth, int height)
{
@@ -337,8 +337,8 @@ namespace ICSharpCode.TextEditor.Gui.CompletionWindow
float totalItemsHeight = codeCompletionListView.ItemHeight * completionData.Length;
if (totalItemsHeight > height) {
width += ScrollbarWidth; // Compensate for scroll bar.
- }
+ }
return (int)width;
- }
+ }
}
}
diff --git a/src/Main/Base/Project/Src/TextEditor/Gui/Dialogs/GotoDialog.cs b/src/Main/Base/Project/Src/TextEditor/Gui/Dialogs/GotoDialog.cs
index 61ddc197de..d1639fcdbb 100644
--- a/src/Main/Base/Project/Src/TextEditor/Gui/Dialogs/GotoDialog.cs
+++ b/src/Main/Base/Project/Src/TextEditor/Gui/Dialogs/GotoDialog.cs
@@ -101,9 +101,10 @@ namespace ICSharpCode.SharpDevelop.Gui
if (editor != null) {
CtrlSpaceCompletionDataProvider cdp = new CtrlSpaceCompletionDataProvider(ExpressionContext.Default);
ctrlSpaceCompletionData = cdp.GenerateCompletionData(editor.FileName, editor.ActiveTextAreaControl.TextArea, '\0');
- return ctrlSpaceCompletionData;
}
- return new ICompletionData[0];
+ if (ctrlSpaceCompletionData == null)
+ ctrlSpaceCompletionData = new ICompletionData[0];
+ return ctrlSpaceCompletionData;
}
ICompletionData[] Resolve(string expression)
@@ -111,7 +112,8 @@ namespace ICSharpCode.SharpDevelop.Gui
TextEditorControl editor = GetEditor();
if (editor != null) {
CodeCompletionDataProvider cdp = new CodeCompletionDataProvider(new ExpressionResult(expression));
- return cdp.GenerateCompletionData(editor.FileName, editor.ActiveTextAreaControl.TextArea, '.');
+ return cdp.GenerateCompletionData(editor.FileName, editor.ActiveTextAreaControl.TextArea, '.')
+ ?? new ICompletionData[0];
}
return new ICompletionData[0];
}
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 49ccd4ea78..3e089902eb 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
@@ -92,6 +92,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
///
/// Generates the completion data. This method is called by the text editor control.
+ /// This method may return null.
///
public abstract ICompletionData[] GenerateCompletionData(string fileName, TextArea textArea, char charTyped);
}
diff --git a/src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/AttributesDataProvider.cs b/src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/AttributesDataProvider.cs
index 273e6627f6..cf4ecf3e0d 100644
--- a/src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/AttributesDataProvider.cs
+++ b/src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/AttributesDataProvider.cs
@@ -40,7 +40,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
public override ICompletionData[] GenerateCompletionData(string fileName, TextArea textArea, char charTyped)
{
ICompletionData[] data = base.GenerateCompletionData(fileName, textArea, charTyped);
- if (removeAttributeSuffix) {
+ if (removeAttributeSuffix && data != null) {
foreach (ICompletionData d in data) {
if (d.Text.EndsWith("Attribute")) {
d.Text = d.Text.Substring(0, d.Text.Length - 9);
diff --git a/src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/CachedCompletionDataProvider.cs b/src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/CachedCompletionDataProvider.cs
index 35f8b48fd3..96b3002430 100644
--- a/src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/CachedCompletionDataProvider.cs
+++ b/src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/CachedCompletionDataProvider.cs
@@ -51,7 +51,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
public override ICompletionData[] GenerateCompletionData(string fileName, TextArea textArea, char charTyped)
{
if (completionData == null) {
- completionData = baseProvider.GenerateCompletionData(fileName, textArea, charTyped);
+ completionData = baseProvider.GenerateCompletionData(fileName, textArea, charTyped) ?? new ICompletionData[0];
preSelection = baseProvider.PreSelection;
this.DefaultIndex = baseProvider.DefaultIndex;
}
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 06b770520f..f73ed7c367 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
@@ -49,6 +49,8 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
return;
ICompletionData suggestedData = DefaultIndex >= 0 ? completionData[DefaultIndex] : null;
ICompletionData[] templateCompletionData = new TemplateCompletionDataProvider().GenerateCompletionData(fileName, textArea, charTyped);
+ if (templateCompletionData == null || templateCompletionData.Length == 0)
+ return;
for (int i = 0; i < completionData.Count; i++) {
if (completionData[i].ImageIndex == ClassBrowserIconService.KeywordIndex) {
string text = completionData[i].Text;
@@ -101,6 +103,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
preSelection = null;
}
AddResolveResults(ParserService.CtrlSpace(caretLineNumber, caretColumn, fileName, textArea.Document.TextContent, expressionResult.Context), expressionResult.Context);
+ AddTemplates(textArea, charTyped);
return;
}
@@ -119,6 +122,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
}
ArrayList results = ParserService.CtrlSpace(caretLineNumber, caretColumn, fileName, textArea.Document.TextContent, expressionResult.Context);
AddResolveResults(results, expressionResult.Context);
+ AddTemplates(textArea, charTyped);
}
}
}