Browse Source

Added back snippet completion. Not yet context-aware.

pull/48/head
Tobias Ibounig 12 years ago
parent
commit
8e6cc20f76
  1. 6
      src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/CSharpCompletionDataFactory.cs
  2. 110
      src/Main/Base/Project/Editor/CodeCompletion/SnippetCompletionData.cs
  3. 1
      src/Main/Base/Project/ICSharpCode.SharpDevelop.csproj

6
src/AddIns/BackendBindings/CSharpBinding/Project/Src/Completion/CSharpCompletionDataFactory.cs

@ -11,10 +11,9 @@ using ICSharpCode.NRefactory.CSharp.Resolver;
using ICSharpCode.NRefactory.Completion; using ICSharpCode.NRefactory.Completion;
using ICSharpCode.NRefactory.CSharp; using ICSharpCode.NRefactory.CSharp;
using ICSharpCode.NRefactory.CSharp.Completion; using ICSharpCode.NRefactory.CSharp.Completion;
using ICSharpCode.NRefactory.CSharp.TypeSystem;
using ICSharpCode.NRefactory.TypeSystem; using ICSharpCode.NRefactory.TypeSystem;
using ICSharpCode.SharpDevelop; using ICSharpCode.SharpDevelop;
using ICSharpCode.SharpDevelop.Editor; using ICSharpCode.SharpDevelop.Editor.CodeCompletion;
namespace CSharpBinding.Completion namespace CSharpBinding.Completion
{ {
@ -127,7 +126,8 @@ namespace CSharpBinding.Completion
IEnumerable<ICompletionData> ICompletionDataFactory.CreateCodeTemplateCompletionData() IEnumerable<ICompletionData> ICompletionDataFactory.CreateCodeTemplateCompletionData()
{ {
yield break; return completionContext.Editor.GetSnippets().OfType<ISnippetCompletionItem>()
.Select(snippet => new SnippetCompletionData(snippet));
} }
IEnumerable<ICompletionData> ICompletionDataFactory.CreatePreProcessorDefinesCompletionData() IEnumerable<ICompletionData> ICompletionDataFactory.CreatePreProcessorDefinesCompletionData()

110
src/Main/Base/Project/Editor/CodeCompletion/SnippetCompletionData.cs

@ -0,0 +1,110 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
using ICSharpCode.NRefactory;
using ICSharpCode.NRefactory.Completion;
using ICSharpCode.SharpDevelop.Editor.CodeCompletion;
namespace ICSharpCode.SharpDevelop.Editor.CodeCompletion
{
/// <summary>
/// Code completion data for snippets.
/// </summary>
public class SnippetCompletionData : IFancyCompletionItem, ISnippetCompletionItem, ICompletionData, ICompletionItem
{
#region ICompletionData implementation
void ICompletionData.AddOverload(ICompletionData data) { }
CompletionCategory category;
CompletionCategory ICompletionData.CompletionCategory {
get { return category; }
set { category = value; }
}
string ICompletionData.DisplayText {
get { return snippet.Text; }
set { }
}
string ICompletionData.Description {
get { return snippet.Description; }
set { }
}
string ICompletionData.CompletionText {
get { return snippet.Text; }
set { }
}
DisplayFlags displayFlags;
DisplayFlags ICompletionData.DisplayFlags {
get { return displayFlags; }
set { displayFlags = value; }
}
bool ICompletionData.HasOverloads {
get { return false; }
}
System.Collections.Generic.IEnumerable<ICompletionData> ICompletionData.OverloadedData {
get { return EmptyList<ICompletionData>.Instance; }
}
#endregion
ISnippetCompletionItem snippet;
public SnippetCompletionData(ISnippetCompletionItem completionItem)
{
snippet = completionItem;
}
#region ISnippetCompletionItem implementation
public string Keyword {
get { return snippet.Keyword; }
}
#endregion
#region ICompletionItem implementation
public void Complete(CompletionContext context)
{
snippet.Complete(context);
}
public string Text {
get { return snippet.Text; }
}
string ICompletionItem.Description {
get { return snippet.Description; }
}
public ICSharpCode.SharpDevelop.IImage Image {
get { return snippet.Image; }
}
public double Priority {
get { return snippet.Priority; }
}
#endregion
#region IFancyCompletionItem implementation
public object Content {
get { return snippet.Text; }
}
public object Description {
get { return snippet.Description; }
}
#endregion
}
}

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

@ -126,6 +126,7 @@
<Compile Include="Editor\Bookmarks\IBookmarkMargin.cs" /> <Compile Include="Editor\Bookmarks\IBookmarkMargin.cs" />
<Compile Include="Editor\Bookmarks\SDBookmark.cs" /> <Compile Include="Editor\Bookmarks\SDBookmark.cs" />
<Compile Include="Editor\Bookmarks\SDMarkerBookmark.cs" /> <Compile Include="Editor\Bookmarks\SDMarkerBookmark.cs" />
<Compile Include="Editor\CodeCompletion\SnippetCompletionData.cs" />
<Compile Include="Editor\DocumentServiceAttribute.cs" /> <Compile Include="Editor\DocumentServiceAttribute.cs" />
<Compile Include="Editor\DocumentUtilities.cs" /> <Compile Include="Editor\DocumentUtilities.cs" />
<Compile Include="Editor\IBracketSearcher.cs" /> <Compile Include="Editor\IBracketSearcher.cs" />

Loading…
Cancel
Save