@@ -2,20 +2,23 @@ import { CancellationToken, CompletionContext, CompletionItem, CompletionItemKin
2
2
import { BackTrackSearchResult , DirectoryContent } from "../utils/interfaces" ;
3
3
import { setAutCompleteList } from "../utils/utils" ;
4
4
import { Registers } from "./register" ;
5
+ import { Base } from "./base" ;
6
+ import { Cjson } from "coded-json" ;
7
+ import path from "path" ;
5
8
6
- export class CompletionItems implements CompletionItemProvider {
9
+ export class CompletionItems extends Base implements CompletionItemProvider {
7
10
private fileList : DirectoryContent [ ] | undefined ;
8
11
public completionItemList : CompletionItem [ ] = [ ] ;
9
12
public previousCompleteList : CompletionItem [ ] = [ ] ;
10
13
// Condition for checkAndConfirm to work as expected
11
14
private isDirectoryChanged : boolean = false ;
12
15
13
- private checkAndConfirm ( item : string ) {
16
+ protected checkAndConfirm ( item : string ) : boolean {
14
17
if ( this . isDirectoryChanged )
15
18
return false ;
16
19
else {
17
20
for ( let i = 0 ; i < this . completionItemList . length ; i ++ )
18
- if ( JSON . parse ( JSON . stringify ( this . completionItemList [ i ] . label . valueOf ( ) ) ) [ "label" ] === item )
21
+ if ( JSON . parse ( JSON . stringify ( this . completionItemList [ i ] . label . valueOf ( ) ) ) === item )
19
22
return true ;
20
23
return false ;
21
24
}
@@ -149,4 +152,35 @@ export class CompletionItems implements CompletionItemProvider {
149
152
return false ;
150
153
}
151
154
}
155
+ }
156
+
157
+ export class RelativeVariableCompletionProvider extends Base implements CompletionItemProvider {
158
+ public completionItemList : CompletionItem [ ] = [ ] ;
159
+
160
+ protected checkAndConfirm ( item : string ) : boolean {
161
+ for ( let i = 0 ; i < this . completionItemList . length ; i ++ )
162
+ if ( JSON . parse ( JSON . stringify ( this . completionItemList [ i ] . label . valueOf ( ) ) ) === item )
163
+ return true ;
164
+ return false ;
165
+ }
166
+
167
+ provideCompletionItems ( document : TextDocument , position : Position , token : CancellationToken , context : CompletionContext ) : ProviderResult < CompletionItem [ ] | CompletionList < CompletionItem > > {
168
+ if ( workspace . workspaceFolders ) {
169
+ if ( document . fileName !== undefined ) {
170
+ var cjson = new Cjson ( document . fileName ) ;
171
+ cjson . json ?. getAllKeys ( ) . map ( ( eachElem ) => {
172
+ if ( ! this . checkAndConfirm ( eachElem ) )
173
+ this . completionItemList . push ( new CompletionItem ( eachElem ) ) ;
174
+ } ) ;
175
+ }
176
+ else
177
+ window . showErrorMessage ( "No CJSON file is opened" ) ;
178
+ }
179
+ else
180
+ window . showErrorMessage ( "CJSON requires folder to be opened" ) ;
181
+ return this . completionItemList ;
182
+ }
183
+ resolveCompletionItem ?( item : CompletionItem , token : CancellationToken ) : ProviderResult < CompletionItem > {
184
+ return item ;
185
+ }
152
186
}
0 commit comments