@@ -65,7 +65,7 @@ public void Initialize()
6565 /// </summary>
6666 public void Dispose ( )
6767 {
68- if ( completionModeHandler != null ) completionModeHandler . Stop ( ) ;
68+ completionModeHandler ? . Stop ( ) ;
6969 SaveSettings ( ) ;
7070 }
7171
@@ -74,33 +74,36 @@ public void Dispose()
7474 /// </summary>
7575 public void HandleEvent ( object sender , NotifyEvent e , HandlingPriority priority )
7676 {
77+ var completionList = Reflector . CompletionList . completionList ;
7778 switch ( e . Type )
7879 {
7980 case EventType . UIStarted :
80- Reflector . CompletionList . completionList . VisibleChanged += OnCompletionListVisibleChanged ;
81+ completionList . VisibleChanged -= OnCompletionListVisibleChanged ;
82+ completionList . VisibleChanged += OnCompletionListVisibleChanged ;
8183 break ;
8284 case EventType . Command :
8385 if ( ( ( DataEvent ) e ) . Action == ProjectManagerEvents . Project )
8486 {
8587 if ( ! ( PluginBase . CurrentProject is HaxeProject ) ) return ;
8688 var context = ( Context ) ASContext . GetLanguageContext ( "haxe" ) ;
87- ( ( HaXeSettings ) context . Settings ) . CompletionModeChanged += OnHaxeCompletionModeChanged ;
89+ if ( context == null ) return ;
90+ var settings = ( HaXeSettings ) context . Settings ;
91+ settings . CompletionModeChanged -= OnHaxeCompletionModeChanged ;
92+ settings . CompletionModeChanged += OnHaxeCompletionModeChanged ;
8893 OnHaxeCompletionModeChanged ( ) ;
8994 }
9095 break ;
9196 case EventType . Keys :
9297 var keys = ( ( KeyEvent ) e ) . Value ;
9398 if ( keys == ( Keys . Control | Keys . Space ) )
9499 {
100+ if ( CompletionList . Active ) return ;
95101 var expr = GetPostfixCompletionExpr ( ) ;
96102 if ( expr == null || expr . IsNull ( ) ) return ;
97103 e . Handled = ASComplete . OnShortcut ( keys , PluginBase . MainForm . CurrentDocument . SciControl ) ;
98- if ( ! CompletionList . Active )
99- {
100- Reflector . CompletionList . completionList . VisibleChanged -= OnCompletionListVisibleChanged ;
101- UpdateCompletionList ( expr ) ;
102- Reflector . CompletionList . completionList . VisibleChanged += OnCompletionListVisibleChanged ;
103- }
104+ completionList . VisibleChanged -= OnCompletionListVisibleChanged ;
105+ UpdateCompletionList ( expr ) ;
106+ completionList . VisibleChanged += OnCompletionListVisibleChanged ;
104107 }
105108 break ;
106109 }
@@ -144,14 +147,12 @@ void AddEventHandlers()
144147 /// <summary>
145148 /// Saves the plugin settings
146149 /// </summary>
147- void SaveSettings ( )
148- {
149- ObjectSerializer . Serialize ( settingFilename , Settings ) ;
150- }
150+ void SaveSettings ( ) => ObjectSerializer . Serialize ( settingFilename , Settings ) ;
151151
152152 static void UpdateCompletionList ( )
153153 {
154- UpdateCompletionList ( GetPostfixCompletionExpr ( ) ) ;
154+ var expr = GetPostfixCompletionExpr ( ) ;
155+ UpdateCompletionList ( expr ) ;
155156 }
156157
157158 static void UpdateCompletionList ( ASResult expr )
@@ -163,10 +164,9 @@ static void UpdateCompletionList(ASResult expr)
163164 UpdateCompletionList ( target , expr ) ;
164165 return ;
165166 }
166- if ( completionModeHandler == null ) return ;
167+ if ( expr . Context == null || completionModeHandler == null ) return ;
167168 var sci = PluginBase . MainForm . CurrentDocument . SciControl ;
168- if ( sci . ConfigurationLanguage . ToLower ( ) != "haxe" || expr . Context == null || sci . CharAt ( expr . Context . Position ) != '.' )
169- return ;
169+ if ( sci . ConfigurationLanguage . ToLower ( ) != "haxe" || sci . CharAt ( expr . Context . Position ) != '.' ) return ;
170170 var hc = new HaxeComplete ( sci , expr , false , completionModeHandler , HaxeCompilerService . Type ) ;
171171 hc . GetPositionType ( OnFunctionTypeResult ) ;
172172 }
@@ -179,10 +179,15 @@ static void UpdateCompletionList(MemberModel target, ASResult expr)
179179 var allItems = Reflector . CompletionList . allItems ;
180180 if ( allItems != null )
181181 {
182- allItems = new List < ICompletionListItem > ( allItems ) ;
182+ var labels = new HashSet < string > ( ) ;
183+ foreach ( var item in allItems )
184+ {
185+ labels . Add ( item . Label ) ;
186+ }
183187 foreach ( var item in items )
184188 {
185- if ( ! allItems . Exists ( it => it . Label == item . Label ) ) allItems . Add ( item ) ;
189+ var label = item . Label ;
190+ if ( ! labels . Contains ( label ) ) allItems . Add ( item ) ;
186191 }
187192 items = allItems ;
188193 }
@@ -191,6 +196,7 @@ static void UpdateCompletionList(MemberModel target, ASResult expr)
191196 CompletionList . Show ( items , false , word ) ;
192197 var list = Reflector . CompletionList . completionList ;
193198 completionListItemCount = list . Items . Count ;
199+ list . SelectedValueChanged -= OnCompletionListSelectedValueChanged ;
194200 list . SelectedValueChanged += OnCompletionListSelectedValueChanged ;
195201 }
196202
@@ -243,12 +249,9 @@ static List<ICompletionListItem> GetPostfixCompletionItems(MemberModel target, A
243249 if ( expr . Member != null ) result . AddRange ( GetCompletionItems ( expr . Member . Type , target , expr ) ) ;
244250 else if ( expr . Type != null ) result . AddRange ( GetCompletionItems ( expr . Type . Type , target , expr ) ) ;
245251 result . AddRange ( GetCompletionItems ( TemplateUtils . PATTERN_MEMBER , expr ) ) ;
246- if ( GetTargetIsNullable ( target ) )
247- result . AddRange ( GetCompletionItems ( TemplateUtils . PATTERN_NULLABLE , expr ) ) ;
248- if ( GetTargetIsCollection ( target ) )
249- result . AddRange ( GetCompletionItems ( TemplateUtils . PATTERN_COLLECTION , expr ) ) ;
250- if ( GetTargetIsHash ( target ) )
251- result . AddRange ( GetCompletionItems ( TemplateUtils . PATTERN_HASH , expr ) ) ;
252+ if ( IsNullable ( target ) ) result . AddRange ( GetCompletionItems ( TemplateUtils . PATTERN_NULLABLE , expr ) ) ;
253+ if ( IsCollection ( target ) ) result . AddRange ( GetCompletionItems ( TemplateUtils . PATTERN_COLLECTION , expr ) ) ;
254+ if ( IsHash ( target ) ) result . AddRange ( GetCompletionItems ( TemplateUtils . PATTERN_HASH , expr ) ) ;
252255 if ( PluginBase . MainForm . CurrentDocument . SciControl . ConfigurationLanguage . ToLower ( ) == "haxe" )
253256 {
254257 var type = expr . Type != null && ! string . IsNullOrEmpty ( expr . Type . Type ) &&
@@ -257,27 +260,19 @@ static List<ICompletionListItem> GetPostfixCompletionItems(MemberModel target, A
257260 : null ;
258261 if ( type != null )
259262 {
260- if ( GetTargetIsCollection ( type ) )
261- result . AddRange ( GetCompletionItems ( TemplateUtils . PATTERN_COLLECTION , expr ) ) ;
262- if ( GetTargetIsHash ( type ) )
263- result . AddRange ( GetCompletionItems ( TemplateUtils . PATTERN_HASH , expr ) ) ;
263+ if ( IsCollection ( type ) ) result . AddRange ( GetCompletionItems ( TemplateUtils . PATTERN_COLLECTION , expr ) ) ;
264+ if ( IsHash ( type ) ) result . AddRange ( GetCompletionItems ( TemplateUtils . PATTERN_HASH , expr ) ) ;
264265 }
265266 }
266- if ( GetTargetIsBoolean ( target ) )
267- result . AddRange ( GetCompletionItems ( TemplateUtils . PATTERN_BOOL , expr ) ) ;
268- if ( GetTargetIsNumber ( target ) )
269- result . AddRange ( GetCompletionItems ( TemplateUtils . PATTERN_NUMBER , expr ) ) ;
270- if ( GetTargetIsString ( target ) )
271- result . AddRange ( GetCompletionItems ( TemplateUtils . PATTERN_STRING , expr ) ) ;
267+ if ( IsBoolean ( target ) ) result . AddRange ( GetCompletionItems ( TemplateUtils . PATTERN_BOOL , expr ) ) ;
268+ if ( IsNumber ( target ) ) result . AddRange ( GetCompletionItems ( TemplateUtils . PATTERN_NUMBER , expr ) ) ;
269+ if ( IsString ( target ) ) result . AddRange ( GetCompletionItems ( TemplateUtils . PATTERN_STRING , expr ) ) ;
272270 return result . Distinct ( ) . ToList ( ) ;
273271 }
274272
275- static bool GetTargetIsNullable ( MemberModel target )
276- {
277- return ! GetTargetIsNumber ( target ) && target . Type != ASContext . Context . Features . booleanKey ;
278- }
273+ static bool IsNullable ( MemberModel target ) => ! IsNumber ( target ) && target . Type != ASContext . Context . Features . booleanKey ;
279274
280- static bool GetTargetIsCollection ( MemberModel target )
275+ static bool IsCollection ( MemberModel target )
281276 {
282277 var type = target . Type ;
283278 var arrayKey = ASContext . Context . Features . arrayKey ;
@@ -286,7 +281,7 @@ static bool GetTargetIsCollection(MemberModel target)
286281 {
287282 case "as2" :
288283 case "as3" :
289- return type . Contains ( "Vector.<" ) || type . Contains ( "@" + arrayKey ) ;
284+ return type . Contains ( "Vector.<" ) || type . Contains ( $ "@ { arrayKey } " ) ;
290285 case "haxe" :
291286 return Reflector . ASGenerator . CleanType ( type ) == Reflector . ASGenerator . CleanType ( arrayKey )
292287 || ( type . Contains ( "Vector<" ) && Reflector . ASGenerator . CleanType ( type ) == Reflector . ASGenerator . CleanType ( "Vector<T>" ) ) ;
@@ -295,7 +290,7 @@ static bool GetTargetIsCollection(MemberModel target)
295290 }
296291 }
297292
298- static bool GetTargetIsHash ( MemberModel target )
293+ static bool IsHash ( MemberModel target )
299294 {
300295 switch ( PluginBase . MainForm . CurrentDocument . SciControl . ConfigurationLanguage . ToLower ( ) )
301296 {
@@ -327,12 +322,9 @@ static bool IsIteratorOrIterable(MemberModel member)
327322 return cleanType == "Iterator" || cleanType == "Iterable" ;
328323 }
329324
330- static bool GetTargetIsBoolean ( MemberModel target )
331- {
332- return target . Type == ASContext . Context . Features . booleanKey ;
333- }
325+ static bool IsBoolean ( MemberModel target ) => target . Type == ASContext . Context . Features . booleanKey ;
334326
335- static bool GetTargetIsNumber ( MemberModel target )
327+ static bool IsNumber ( MemberModel target )
336328 {
337329 var type = target . Type ;
338330 if ( type == ASContext . Context . Features . numberKey ) return true ;
@@ -348,10 +340,7 @@ static bool GetTargetIsNumber(MemberModel target)
348340 }
349341 }
350342
351- static bool GetTargetIsString ( MemberModel target )
352- {
353- return target . Type == ASContext . Context . Features . stringKey ;
354- }
343+ static bool IsString ( MemberModel target ) => target . Type == ASContext . Context . Features . stringKey ;
355344
356345 static IEnumerable < ICompletionListItem > GetCompletionItems ( string pattern , MemberModel target , ASResult expr )
357346 {
@@ -460,7 +449,6 @@ static void OnCharAdded(ScintillaControl sender, int value)
460449 }
461450 catch ( Exception e )
462451 {
463- Console . WriteLine ( e ) ;
464452 ErrorManager . ShowError ( e ) ;
465453 }
466454 }
0 commit comments