Browse Source

Fixed forum-7331: Deleting .cs code template group causes code completion to throw NullReferenceException

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@2939 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
shortcuts
Daniel Grunwald 18 years ago
parent
commit
2d0d13aae7
  1. 8
      src/Main/Base/Project/Src/TextEditor/Gui/Dialogs/GotoDialog.cs
  2. 1
      src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/AbstractCompletionDataProvider.cs
  3. 2
      src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/AttributesDataProvider.cs
  4. 2
      src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/CachedCompletionDataProvider.cs
  5. 4
      src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/CtrlSpaceCompletionDataProvider.cs

8
src/Main/Base/Project/Src/TextEditor/Gui/Dialogs/GotoDialog.cs

@ -101,9 +101,10 @@ namespace ICSharpCode.SharpDevelop.Gui @@ -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 @@ -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];
}

1
src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/AbstractCompletionDataProvider.cs

@ -92,6 +92,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor @@ -92,6 +92,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor
/// <summary>
/// Generates the completion data. This method is called by the text editor control.
/// This method may return null.
/// </summary>
public abstract ICompletionData[] GenerateCompletionData(string fileName, TextArea textArea, char charTyped);
}

2
src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/AttributesDataProvider.cs

@ -40,7 +40,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor @@ -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);

2
src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/CachedCompletionDataProvider.cs

@ -51,7 +51,7 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor @@ -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;
}

4
src/Main/Base/Project/Src/TextEditor/Gui/Editor/CompletionWindow/CtrlSpaceCompletionDataProvider.cs

@ -49,6 +49,8 @@ namespace ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor @@ -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 @@ -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 @@ -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);
}
}
}

Loading…
Cancel
Save