Browse Source

added ICompletionItemHandler

git-svn-id: svn://svn.sharpdevelop.net/sharpdevelop/trunk@5560 1ccf3a8d-04fe-1044-b7c0-cef0b8235c61
pull/1/head
Siegfried Pammer 16 years ago
parent
commit
9f80028772
  1. 2
      SharpDevelop.sln
  2. 1
      src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj
  3. 17
      src/Main/Base/Project/Src/Editor/CodeCompletion/ICompletionItemHandler.cs
  4. 18
      src/Main/Base/Project/Src/Editor/CodeCompletion/OverrideCompletionItem.cs

2
SharpDevelop.sln

@ -1,7 +1,7 @@ @@ -1,7 +1,7 @@

Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
# SharpDevelop 4.0.0.5498
# SharpDevelop 4.0.0.5490
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Main", "Main", "{256F5C28-532C-44C0-8AB8-D8EC5E492E01}"
ProjectSection(SolutionItems) = postProject
EndProjectSection

1
src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj

@ -74,6 +74,7 @@ @@ -74,6 +74,7 @@
<Compile Include="Src\Editor\AvalonEdit\AvalonEditTextEditorAdapter.cs" />
<Compile Include="Src\Editor\AvalonEdit\AvalonEditTextSourceAdapter.cs" />
<Compile Include="Src\Editor\AvalonEdit\IndentationStrategyAdapter.cs" />
<Compile Include="Src\Editor\CodeCompletion\ICompletionItemHandler.cs" />
<Compile Include="Src\Editor\IEditorUIService.cs" />
<Compile Include="Src\Editor\CodeCompletion\AttributesItemProvider.cs" />
<Compile Include="Src\Editor\CodeCompletion\CodeCompletionBinding.cs" />

17
src/Main/Base/Project/Src/Editor/CodeCompletion/ICompletionItemHandler.cs

@ -0,0 +1,17 @@ @@ -0,0 +1,17 @@
// <file>
// <copyright see="prj:///doc/copyright.txt"/>
// <license see="prj:///doc/license.txt"/>
// <owner name="Siegfried Pammer" email="siegfriedpammer@gmail.com" />
// <version>$Revision$</version>
// </file>
using System;
namespace ICSharpCode.SharpDevelop.Editor.CodeCompletion
{
public interface ICompletionItemHandler
{
void Insert(CompletionContext context);
bool Handles(ICompletionItem item);
}
}

18
src/Main/Base/Project/Src/Editor/CodeCompletion/OverrideCompletionItem.cs

@ -6,6 +6,8 @@ @@ -6,6 +6,8 @@
// </file>
using System;
using System.Collections.Generic;
using ICSharpCode.Core;
using ICSharpCode.SharpDevelop.DefaultEditor.Gui.Editor;
using ICSharpCode.SharpDevelop.Dom;
using ICSharpCode.SharpDevelop.Dom.Refactoring;
@ -18,6 +20,8 @@ namespace ICSharpCode.SharpDevelop.Editor.CodeCompletion @@ -18,6 +20,8 @@ namespace ICSharpCode.SharpDevelop.Editor.CodeCompletion
string text;
IImage image;
static readonly List<ICompletionItemHandler> handlers = AddInTree.BuildItems<ICompletionItemHandler>("/SharpDevelop/ViewContent/TextEditor/OverrideCompletionHandler", null, false);
public OverrideCompletionItem(IMember member)
{
if (member == null)
@ -67,13 +71,25 @@ namespace ICSharpCode.SharpDevelop.Editor.CodeCompletion @@ -67,13 +71,25 @@ namespace ICSharpCode.SharpDevelop.Editor.CodeCompletion
return;
}
}
string indentation = lineText.Substring(0, lineText.Length - lineText.TrimStart().Length);
editor.Document.Remove(line.Offset, caretPosition - line.Offset);
foreach (ICompletionItemHandler handler in handlers) {
if (handler.Handles(this)) {
editor.Document.Insert(line.Offset, indentation);
handler.Insert(context);
return;
}
}
CodeGenerator codeGen = ParserService.CurrentProjectContent.Language.CodeGenerator;
string text = codeGen.GenerateCode(codeGen.GetOverridingMethod(member, classFinder), indentation);
text = text.TrimEnd(); // remove newline from end
editor.Document.Replace(line.Offset, caretPosition - line.Offset, text);
editor.Document.Insert(line.Offset, text);
int endPos = line.Offset + text.Length;
line = editor.Document.GetLineForOffset(endPos);

Loading…
Cancel
Save