@@ -39,8 +39,7 @@ public string[]
3939 public List < SMTypedef > Typedefs = new List < SMTypedef > ( ) ;
4040 public string [ ] TypeStrings = new string [ 0 ] ;
4141 public List < SMVariable > Variables = new List < SMVariable > ( ) ;
42- public string [ ] VariableStrings = new string [ 0 ] ;
43-
42+
4443 public void Sort ( )
4544 {
4645 try
@@ -90,7 +89,7 @@ public void AppendFiles(IEnumerable<string> paths)
9089 ProduceStringArrays ( ) ;
9190 }
9291
93- private void ProduceStringArrays ( )
92+ private void ProduceStringArrays ( int caret = - 1 , string text = "" )
9493 {
9594 FunctionStrings = new string [ Functions . Count ] ;
9695 for ( var i = 0 ; i < Functions . Count ; ++ i ) FunctionStrings [ i ] = Functions [ i ] . Name ;
@@ -100,7 +99,6 @@ private void ProduceStringArrays()
10099 var enumStructNames = new List < string > ( ) ;
101100 var structMethodNames = new List < string > ( ) ;
102101 var structFieldNames = new List < string > ( ) ;
103- var varNames = new List < string > ( ) ;
104102
105103 foreach ( var mm in Methodmaps )
106104 {
@@ -116,22 +114,29 @@ private void ProduceStringArrays()
116114 structFieldNames . AddRange ( sm . Fields . Select ( f => f . Name ) ) ;
117115 }
118116
119- foreach ( var v in Variables ) varNames . Add ( v . Name ) ;
120-
121117 MethodsStrings = methodNames . ToArray ( ) ;
122118 FieldStrings = fieldNames . ToArray ( ) ;
123119 StructFieldStrings = structFieldNames . ToArray ( ) ;
124120 StructMethodStrings = structMethodNames . ToArray ( ) ;
125121 MethodmapsStrings = methodmapNames . ToArray ( ) ;
126122 EnumStructStrings = enumStructNames . ToArray ( ) ;
127- VariableStrings = varNames . ToArray ( ) ;
128123
129124 var constantNames = Constants . Select ( i => i . Name ) . ToList ( ) ;
130125 foreach ( var e in Enums ) constantNames . AddRange ( e . Entries ) ;
131126
132127 constantNames . AddRange ( Defines . Select ( i => i . Name ) ) ;
133128 constantNames . AddRange ( Variables . Select ( v => v . Name ) ) ;
134129
130+ if ( caret != - 1 )
131+ {
132+ var currentFunc = Functions . FirstOrDefault ( e => e . Index < caret && caret <= e . EndPos && e . File . EndsWith ( ".sp" ) ) ;
133+ if ( currentFunc != null )
134+ {
135+
136+ constantNames . AddRange ( currentFunc . FuncVariables . Select ( v => v . Name ) ) ;
137+ }
138+ }
139+
135140 constantNames . Sort ( string . Compare ) ;
136141 ConstantsStrings = constantNames . ToArray ( ) ;
137142 var typeNames = new List < string >
@@ -171,7 +176,7 @@ public ISNode[] ProduceISNodes()
171176 nodes . AddRange ( ISNode . ConvertFromStringArray ( FieldStrings , false , "• " ) ) ;
172177 nodes . AddRange ( ISNode . ConvertFromStringArray ( StructFieldStrings , false , "• " ) ) ;
173178
174- nodes . AddRange ( ISNode . ConvertFromStringArray ( VariableStrings , false , "v " ) ) ;
179+ // nodes.AddRange(ISNode.ConvertFromStringArray(VariableStrings, false, "v "));
175180
176181 nodes = nodes . Distinct ( new ISNodeEqualityComparer ( ) ) . ToList ( ) ;
177182 nodes . Sort ( ( a , b ) => string . CompareOrdinal ( a . EntryName , b . EntryName ) ) ;
@@ -198,30 +203,24 @@ public void MergeDefinitions(SMDefinition def)
198203 }
199204 }
200205
201- public SMDefinition ProduceTemporaryExpandedDefinition ( SMDefinition [ ] definitions )
206+ public SMDefinition ProduceTemporaryExpandedDefinition ( SMDefinition [ ] definitions , int caret , string text )
202207 {
203208 var def = new SMDefinition ( ) ;
204- try
205- {
206209 def . MergeDefinitions ( this ) ;
207- for ( var i = 0 ; i < definitions . Length ; ++ i )
208- if ( definitions [ i ] != null )
209- def . MergeDefinitions ( definitions [ i ] ) ;
210- def . Sort ( ) ;
211- def . ProduceStringArrays ( ) ;
212- }
213- catch ( Exception )
214- {
215- }
210+ foreach ( var definition in definitions )
211+ if ( definition != null )
212+ def . MergeDefinitions ( definition ) ;
216213
214+ def . Sort ( ) ;
215+ def . ProduceStringArrays ( caret , text ) ;
217216 return def ;
218217 }
219218
220219 private class SMFunctionComparer : IEqualityComparer < SMFunction >
221220 {
222221 public bool Equals ( SMFunction left , SMFunction right )
223222 {
224- return left . Name == right . Name ;
223+ return left ? . Name == right ? . Name ;
225224 }
226225
227226 public int GetHashCode ( SMFunction sm )
@@ -234,7 +233,7 @@ private class SMEnumComparer : IEqualityComparer<SMEnum>
234233 {
235234 public bool Equals ( SMEnum left , SMEnum right )
236235 {
237- return left . Name == right . Name ;
236+ return left ? . Name == right ? . Name ;
238237 }
239238
240239 public int GetHashCode ( SMEnum sm )
@@ -247,7 +246,7 @@ private class SMStructComparer : IEqualityComparer<SMStruct>
247246 {
248247 public bool Equals ( SMStruct left , SMStruct right )
249248 {
250- return left . Name == right . Name ;
249+ return left ? . Name == right ? . Name ;
251250 }
252251
253252 public int GetHashCode ( SMStruct sm )
@@ -260,7 +259,7 @@ private class SMDefineComparer : IEqualityComparer<SMDefine>
260259 {
261260 public bool Equals ( SMDefine left , SMDefine right )
262261 {
263- return left . Name == right . Name ;
262+ return left ? . Name == right ? . Name ;
264263 }
265264
266265 public int GetHashCode ( SMDefine sm )
@@ -273,7 +272,7 @@ private class SMConstantComparer : IEqualityComparer<SMConstant>
273272 {
274273 public bool Equals ( SMConstant left , SMConstant right )
275274 {
276- return left . Name == right . Name ;
275+ return left ? . Name == right ? . Name ;
277276 }
278277
279278 public int GetHashCode ( SMConstant sm )
@@ -286,7 +285,7 @@ private class SMMethodmapsComparer : IEqualityComparer<SMMethodmap>
286285 {
287286 public bool Equals ( SMMethodmap left , SMMethodmap right )
288287 {
289- return left . Name == right . Name ;
288+ return left ? . Name == right ? . Name ;
290289 }
291290
292291 public int GetHashCode ( SMMethodmap sm )
@@ -307,7 +306,7 @@ public class ISNodeEqualityComparer : IEqualityComparer<ISNode>
307306 {
308307 public bool Equals ( ISNode nodeA , ISNode nodeB )
309308 {
310- return nodeA . EntryName == nodeB . EntryName ;
309+ return nodeA ? . EntryName == nodeB ? . EntryName ;
311310 }
312311
313312 public int GetHashCode ( ISNode node )
0 commit comments