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); } } }