Skip to content
This repository was archived by the owner on Oct 16, 2020. It is now read-only.

Commit 2bdddf3

Browse files
add special handling for enum member completion data
1 parent d41e13e commit 2bdddf3

3 files changed

Lines changed: 54 additions & 2 deletions

File tree

src/AddIns/BackendBindings/CSharpBinding/Project/CSharpBinding.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@
7878
<Compile Include="Src\Completion\CSharpCompletionContext.cs" />
7979
<Compile Include="Src\Completion\CSharpInsightItem.cs" />
8080
<Compile Include="Src\Completion\CSharpMethodInsight.cs" />
81+
<Compile Include="Src\Completion\EnumMemberCompletionData.cs" />
8182
<Compile Include="Src\Completion\EventCreationCompletionData.cs" />
8283
<Compile Include="Src\Completion\FormatItemCompletionData.cs" />
8384
<Compile Include="Src\Completion\ImportCompletionData.cs" />

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,7 @@ static string StripAttributeSuffix(string text)
8686

8787
ICompletionData ICompletionDataFactory.CreateMemberCompletionData(IType type, IEntity member)
8888
{
89-
string typeName = builder.ConvertType(type).ToString();
90-
return new CompletionData(typeName + "." + member.Name);
89+
return new EnumMemberCompletionData(type, member, builder);
9190
}
9291

9392
ICompletionData ICompletionDataFactory.CreateLiteralCompletionData(string title, string description, string insertText)
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
// Copyright (c) 2014 AlphaSierraPapa for the SharpDevelop Team
2+
//
3+
// Permission is hereby granted, free of charge, to any person obtaining a copy of this
4+
// software and associated documentation files (the "Software"), to deal in the Software
5+
// without restriction, including without limitation the rights to use, copy, modify, merge,
6+
// publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons
7+
// to whom the Software is furnished to do so, subject to the following conditions:
8+
//
9+
// The above copyright notice and this permission notice shall be included in all copies or
10+
// substantial portions of the Software.
11+
//
12+
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
13+
// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
14+
// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
15+
// FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
16+
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
17+
// DEALINGS IN THE SOFTWARE.
18+
19+
using System;
20+
using System.Linq;
21+
using System.Windows.Controls;
22+
using ICSharpCode.NRefactory.CSharp.Refactoring;
23+
using ICSharpCode.NRefactory.TypeSystem;
24+
using ICSharpCode.SharpDevelop;
25+
using ICSharpCode.SharpDevelop.Editor;
26+
namespace CSharpBinding.Completion
27+
{
28+
class EnumMemberCompletionData : CompletionData
29+
{
30+
IType enumType;
31+
32+
IEntity member;
33+
34+
public EnumMemberCompletionData(IType enumType, IEntity member, TypeSystemAstBuilder builder) : base(enumType.Name + "." + member.Name)
35+
{
36+
this.enumType = enumType;
37+
this.member = member;
38+
this.Image = ClassBrowserIconService.Const;
39+
this.CompletionText = builder.ConvertType(enumType).ToString() + "." + member.Name;
40+
}
41+
42+
protected override object CreateFancyDescription()
43+
{
44+
return new FlowDocumentScrollViewer {
45+
Document = XmlDocFormatter.CreateTooltip(member, false),
46+
VerticalScrollBarVisibility = ScrollBarVisibility.Auto
47+
};
48+
}
49+
}
50+
}
51+
52+

0 commit comments

Comments
 (0)