@@ -134,31 +134,43 @@ class SignatureHelper extends CypherCmdParserListener {
134
134
}
135
135
136
136
export function signatureHelp (
137
- fullQuery : string ,
137
+ query : string ,
138
138
dbSchema : DbSchema ,
139
- caretPosition : number ,
139
+ caretPosition : number = query . length ,
140
140
) : SignatureHelp {
141
141
let result : SignatureHelp = emptyResult ;
142
-
143
- const parserResult = parserWrapper . parse ( fullQuery ) ;
144
- const caret = findCaret ( parserResult , caretPosition ) ;
145
-
146
- if ( caret ) {
147
- const statement = caret . statement ;
148
-
149
- const signatureHelper = new SignatureHelper ( statement . tokens , caret . token ) ;
150
-
151
- ParseTreeWalker . DEFAULT . walk ( signatureHelper , statement . ctx ) ;
152
- const method = signatureHelper . result ;
153
-
154
- if ( method !== undefined ) {
155
- if ( method . methodType === MethodType . function ) {
156
- result = toSignatureHelp ( dbSchema . functionSignatures , method ) ;
157
- } else {
158
- result = toSignatureHelp ( dbSchema . procedureSignatures , method ) ;
142
+ /* We need the token inmediately before the caret
143
+
144
+ CALL something(
145
+ ^
146
+ because in this case what gives us information on where we are
147
+ in the procedure is not the space at the caret, but the opening (
148
+ */
149
+ const prevCaretPosition = caretPosition - 1 ;
150
+
151
+ if ( prevCaretPosition > 0 ) {
152
+ const parserResult = parserWrapper . parse ( query ) ;
153
+ const caret = findCaret ( parserResult , prevCaretPosition ) ;
154
+
155
+ if ( caret ) {
156
+ const statement = caret . statement ;
157
+
158
+ const signatureHelper = new SignatureHelper (
159
+ statement . tokens ,
160
+ caret . token ,
161
+ ) ;
162
+
163
+ ParseTreeWalker . DEFAULT . walk ( signatureHelper , statement . ctx ) ;
164
+ const method = signatureHelper . result ;
165
+
166
+ if ( method !== undefined ) {
167
+ if ( method . methodType === MethodType . function ) {
168
+ result = toSignatureHelp ( dbSchema . functionSignatures , method ) ;
169
+ } else {
170
+ result = toSignatureHelp ( dbSchema . procedureSignatures , method ) ;
171
+ }
159
172
}
160
173
}
161
174
}
162
-
163
175
return result ;
164
176
}
0 commit comments