Skip to content

Commit 95ba0e3

Browse files
committed
v1.3.4; 修正特殊输入(新建事件等)无法工作的问题;
1 parent 2eab753 commit 95ba0e3

File tree

4 files changed

+262
-17
lines changed

4 files changed

+262
-17
lines changed

src/ChinesePinyinIntelliSenseExtender.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,7 @@
5050
</PropertyGroup>
5151
<ItemGroup>
5252
<Compile Include="Intellisense\IIdeographCompletionSet.cs" />
53+
<Compile Include="Intellisense\SyncCompletion\IdeographCustomCommitCompletions.cs" />
5354
<Compile Include="Intellisense\SyncCompletion\IdeographCompletionSets.cs" />
5455
<Compile Include="Intellisense\SyncCompletion\IdeographCompletions.cs" />
5556
<Compile Include="Intellisense\IIdeographCompletion.cs" />

src/Intellisense/SyncCompletion/IdeographCompletionSource.cs

Lines changed: 46 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -90,30 +90,60 @@ private static CompletionSet CreateNewCompletionSet(CompletionSet completionSet,
9090

9191
private Completion CloneCompletion(Completion originCompletion)
9292
{
93-
return originCompletion switch
93+
if (originCompletion is ICustomCommit customCommitter)
9494
{
95-
Completion4 completion4 => completion4.Suffix?.Length > 0
96-
? new IdeographCompletion4(displayText: completion4.DisplayText, suffix: completion4.Suffix, origin: completion4)
97-
: new IdeographCompletion4(displayText: completion4.DisplayText, origin: completion4),
98-
Completion3 completion3 => new IdeographCompletion3(displayText: completion3.DisplayText, origin: completion3),
99-
Completion2 completion2 => new IdeographCompletion2(displayText: completion2.DisplayText, origin: completion2),
100-
_ => new IdeographCompletion(displayText: originCompletion.DisplayText, origin: originCompletion),
101-
};
95+
return originCompletion switch
96+
{
97+
Completion4 completion4 => completion4.Suffix?.Length > 0
98+
? new IdeographCustomCommitCompletion4(displayText: completion4.DisplayText, suffix: completion4.Suffix, origin: completion4, customCommitter: customCommitter)
99+
: new IdeographCustomCommitCompletion4(displayText: completion4.DisplayText, origin: completion4, customCommitter: customCommitter),
100+
Completion3 completion3 => new IdeographCustomCommitCompletion3(displayText: completion3.DisplayText, origin: completion3, customCommitter: customCommitter),
101+
Completion2 completion2 => new IdeographCustomCommitCompletion2(displayText: completion2.DisplayText, origin: completion2, customCommitter: customCommitter),
102+
_ => new IdeographCustomCommitCompletion(displayText: originCompletion.DisplayText, origin: originCompletion, customCommitter: customCommitter),
103+
};
104+
}
105+
else
106+
{
107+
return originCompletion switch
108+
{
109+
Completion4 completion4 => completion4.Suffix?.Length > 0
110+
? new IdeographCompletion4(displayText: completion4.DisplayText, suffix: completion4.Suffix, origin: completion4)
111+
: new IdeographCompletion4(displayText: completion4.DisplayText, origin: completion4),
112+
Completion3 completion3 => new IdeographCompletion3(displayText: completion3.DisplayText, origin: completion3),
113+
Completion2 completion2 => new IdeographCompletion2(displayText: completion2.DisplayText, origin: completion2),
114+
_ => new IdeographCompletion(displayText: originCompletion.DisplayText, origin: originCompletion),
115+
};
116+
}
102117
}
103118

104119
private Completion CreateCompletion(Completion originCompletion, string originInsertText, string spelling)
105120
{
106121
var displayText = FormatString(Options.SyncCompletionDisplayTextFormat, spelling, originInsertText);
107122

108-
return originCompletion switch
123+
if (originCompletion is ICustomCommit customCommitter)
109124
{
110-
Completion4 completion4 => completion4.Suffix?.Length > 0
111-
? new IdeographMatchableCompletion4(displayText: displayText, suffix: completion4.Suffix, matchText: spelling, origin: completion4)
112-
: new IdeographMatchableCompletion4(displayText: displayText, matchText: spelling, origin: completion4),
113-
Completion3 completion3 => new IdeographMatchableCompletion3(displayText: displayText, matchText: spelling, origin: completion3),
114-
Completion2 completion2 => new IdeographMatchableCompletion2(displayText: displayText, matchText: spelling, origin: completion2),
115-
_ => new IdeographMatchableCompletion(displayText: displayText, matchText: spelling, origin: originCompletion),
116-
};
125+
return originCompletion switch
126+
{
127+
Completion4 completion4 => completion4.Suffix?.Length > 0
128+
? new IdeographMatchableCustomCommitCompletion4(displayText: displayText, suffix: completion4.Suffix, matchText: spelling, origin: completion4, customCommitter: customCommitter)
129+
: new IdeographMatchableCustomCommitCompletion4(displayText: displayText, matchText: spelling, origin: completion4, customCommitter: customCommitter),
130+
Completion3 completion3 => new IdeographMatchableCustomCommitCompletion3(displayText: displayText, matchText: spelling, origin: completion3, customCommitter: customCommitter),
131+
Completion2 completion2 => new IdeographMatchableCustomCommitCompletion2(displayText: displayText, matchText: spelling, origin: completion2, customCommitter: customCommitter),
132+
_ => new IdeographMatchableCustomCommitCompletion(displayText: displayText, matchText: spelling, origin: originCompletion, customCommitter: customCommitter),
133+
};
134+
}
135+
else
136+
{
137+
return originCompletion switch
138+
{
139+
Completion4 completion4 => completion4.Suffix?.Length > 0
140+
? new IdeographMatchableCompletion4(displayText: displayText, suffix: completion4.Suffix, matchText: spelling, origin: completion4)
141+
: new IdeographMatchableCompletion4(displayText: displayText, matchText: spelling, origin: completion4),
142+
Completion3 completion3 => new IdeographMatchableCompletion3(displayText: displayText, matchText: spelling, origin: completion3),
143+
Completion2 completion2 => new IdeographMatchableCompletion2(displayText: displayText, matchText: spelling, origin: completion2),
144+
_ => new IdeographMatchableCompletion(displayText: displayText, matchText: spelling, origin: originCompletion),
145+
};
146+
}
117147
}
118148

119149
private void CreateCompletionWithConvertion(Completion originCompletion, InputMethodDictionaryGroup inputMethodDictionaryGroup, Func<string, bool> shouldProcessCheck, Completion[] itemBuffer, ref int bufferIndex)
Lines changed: 214 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,214 @@
1+
#nullable enable
2+
3+
using System.Diagnostics;
4+
using Microsoft.VisualStudio.Language.Intellisense;
5+
6+
namespace ChinesePinyinIntelliSenseExtender.Intellisense.SyncCompletion;
7+
8+
[DebuggerDisplay("{_origin.DisplayText,nq}")]
9+
internal class IdeographCustomCommitCompletion : IdeographCompletion, ICustomCommit, IIdeographCompletion
10+
{
11+
#region Private 字段
12+
13+
private readonly ICustomCommit _customCommitter;
14+
15+
#endregion Private 字段
16+
17+
#region Public 构造函数
18+
19+
public IdeographCustomCommitCompletion(string displayText, Completion origin, ICustomCommit customCommitter) : base(displayText, origin)
20+
{
21+
_customCommitter = customCommitter;
22+
}
23+
24+
#endregion Public 构造函数
25+
26+
#region Public 方法
27+
28+
public void Commit()
29+
{
30+
_customCommitter.Commit();
31+
}
32+
33+
#endregion Public 方法
34+
}
35+
36+
[DebuggerDisplay("{_origin.DisplayText,nq}")]
37+
internal class IdeographCustomCommitCompletion2 : IdeographCompletion2, ICustomCommit, IIdeographCompletion
38+
{
39+
#region Private 字段
40+
41+
private readonly ICustomCommit _customCommitter;
42+
43+
#endregion Private 字段
44+
45+
#region Public 构造函数
46+
47+
public IdeographCustomCommitCompletion2(string displayText, Completion2 origin, ICustomCommit customCommitter) : base(displayText, origin)
48+
{
49+
_customCommitter = customCommitter;
50+
}
51+
52+
#endregion Public 构造函数
53+
54+
#region Public 方法
55+
56+
public void Commit()
57+
{
58+
_customCommitter.Commit();
59+
}
60+
61+
#endregion Public 方法
62+
}
63+
64+
[DebuggerDisplay("{_origin.DisplayText,nq}")]
65+
internal class IdeographCustomCommitCompletion3 : IdeographCompletion3, ICustomCommit, IIdeographCompletion
66+
{
67+
#region Private 字段
68+
69+
private readonly ICustomCommit _customCommitter;
70+
71+
#endregion Private 字段
72+
73+
#region Public 构造函数
74+
75+
public IdeographCustomCommitCompletion3(string displayText, Completion3 origin, ICustomCommit customCommitter) : base(displayText, origin)
76+
{
77+
_customCommitter = customCommitter;
78+
}
79+
80+
#endregion Public 构造函数
81+
82+
#region Public 方法
83+
84+
public void Commit()
85+
{
86+
_customCommitter.Commit();
87+
}
88+
89+
#endregion Public 方法
90+
}
91+
92+
[DebuggerDisplay("{_origin.DisplayText,nq}")]
93+
internal class IdeographCustomCommitCompletion4 : IdeographCompletion4, ICustomCommit, IIdeographCompletion
94+
{
95+
#region Private 字段
96+
97+
private readonly ICustomCommit _customCommitter;
98+
99+
#endregion Private 字段
100+
101+
#region Public 构造函数
102+
103+
public IdeographCustomCommitCompletion4(string displayText, string suffix, Completion4 origin, ICustomCommit customCommitter)
104+
: base(displayText, suffix, origin)
105+
{
106+
_customCommitter = customCommitter;
107+
}
108+
109+
public IdeographCustomCommitCompletion4(string displayText, Completion4 origin, ICustomCommit customCommitter) : base(displayText, origin)
110+
{
111+
_customCommitter = customCommitter;
112+
}
113+
114+
#endregion Public 构造函数
115+
116+
#region Public 方法
117+
118+
public void Commit()
119+
{
120+
_customCommitter.Commit();
121+
}
122+
123+
#endregion Public 方法
124+
}
125+
126+
#region Matchable
127+
128+
[DebuggerDisplay("{_origin.DisplayText,nq} [{MatchText,nq}]")]
129+
internal class IdeographMatchableCustomCommitCompletion : IdeographCustomCommitCompletion, ICustomCommit, IIdeographMatchableCompletion
130+
{
131+
#region Public 属性
132+
133+
public string MatchText { get; }
134+
135+
#endregion Public 属性
136+
137+
#region Public 构造函数
138+
139+
public IdeographMatchableCustomCommitCompletion(string displayText, string matchText, Completion origin, ICustomCommit customCommitter)
140+
: base(displayText, origin, customCommitter)
141+
{
142+
MatchText = matchText;
143+
}
144+
145+
#endregion Public 构造函数
146+
}
147+
148+
[DebuggerDisplay("{_origin.DisplayText,nq} [{MatchText,nq}]")]
149+
internal class IdeographMatchableCustomCommitCompletion2 : IdeographCustomCommitCompletion2, ICustomCommit, IIdeographMatchableCompletion
150+
{
151+
#region Public 属性
152+
153+
public string MatchText { get; }
154+
155+
#endregion Public 属性
156+
157+
#region Public 构造函数
158+
159+
public IdeographMatchableCustomCommitCompletion2(string displayText, string matchText, Completion2 origin, ICustomCommit customCommitter)
160+
: base(displayText, origin, customCommitter)
161+
{
162+
MatchText = matchText;
163+
}
164+
165+
#endregion Public 构造函数
166+
}
167+
168+
[DebuggerDisplay("{_origin.DisplayText,nq} [{MatchText,nq}]")]
169+
internal class IdeographMatchableCustomCommitCompletion3 : IdeographCustomCommitCompletion3, ICustomCommit, IIdeographMatchableCompletion
170+
{
171+
#region Public 属性
172+
173+
public string MatchText { get; }
174+
175+
#endregion Public 属性
176+
177+
#region Public 构造函数
178+
179+
public IdeographMatchableCustomCommitCompletion3(string displayText, string matchText, Completion3 origin, ICustomCommit customCommitter)
180+
: base(displayText, origin, customCommitter)
181+
{
182+
MatchText = matchText;
183+
}
184+
185+
#endregion Public 构造函数
186+
}
187+
188+
[DebuggerDisplay("{_origin.DisplayText,nq} [{MatchText,nq}]")]
189+
internal class IdeographMatchableCustomCommitCompletion4 : IdeographCustomCommitCompletion4, ICustomCommit, IIdeographMatchableCompletion
190+
{
191+
#region Public 属性
192+
193+
public string MatchText { get; }
194+
195+
#endregion Public 属性
196+
197+
#region Public 构造函数
198+
199+
public IdeographMatchableCustomCommitCompletion4(string displayText, string suffix, string matchText, Completion4 origin, ICustomCommit customCommitter)
200+
: base(displayText, suffix, origin, customCommitter)
201+
{
202+
MatchText = matchText;
203+
}
204+
205+
public IdeographMatchableCustomCommitCompletion4(string displayText, string matchText, Completion4 origin, ICustomCommit customCommitter)
206+
: base(displayText, origin, customCommitter)
207+
{
208+
MatchText = matchText;
209+
}
210+
211+
#endregion Public 构造函数
212+
}
213+
214+
#endregion Matchable

src/source.extension.vsixmanifest

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<PackageManifest Version="2.0.0" xmlns="http://schemas.microsoft.com/developer/vsx-schema/2011" xmlns:d="http://schemas.microsoft.com/developer/vsx-schema-design/2011">
33
<Metadata>
4-
<Identity Id="ChinesePinyinIntelliSenseExtender.4293B766-9575-4472-B6F0-98BD86737E0D" Version="1.3.3" Language="en-US" Publisher="Stratos" />
4+
<Identity Id="ChinesePinyinIntelliSenseExtender.4293B766-9575-4472-B6F0-98BD86737E0D" Version="1.3.4" Language="en-US" Publisher="Stratos" />
55
<DisplayName>IntelliSense汉语拼音拓展</DisplayName>
66
<Description xml:space="preserve">汉语拼音的IntelliSense拓展。(支持基于 IAsyncCompletionSource 的完成,如: C#、JS等;支持自定义字符映射;)</Description>
77
<MoreInfo>https://github.com/stratosblue/chinesepinyinintellisenseextender</MoreInfo>

0 commit comments

Comments
 (0)