Skip to content

Commit d17712c

Browse files
XuechunHHHimykhai
authored andcommitted
update caret position
1 parent d3180e1 commit d17712c

File tree

1 file changed

+16
-11
lines changed

1 file changed

+16
-11
lines changed

server/aws-lsp-partiql/src/server/completion-hint/parser-completion.ts

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -52,11 +52,6 @@ function symbolAtCaretPosition(parseTree: TerminalNode, caretPosition: { line: n
5252
const start = parseTree.symbol.column
5353
const stop = start + (parseTree.symbol.text?.length ?? 0)
5454

55-
console.log(
56-
`Checking symbol: ${parseTree.symbol.text}, Line: ${parseTree.symbol.line}, Start: ${start}, Stop: ${stop}`
57-
)
58-
console.log(`Caret POsition: Line: ${caretPosition.line + 1}, character: ${caretPosition.character}`)
59-
6055
return (
6156
parseTree.symbol.line == caretPosition.line + 1 &&
6257
start <= caretPosition.character &&
@@ -69,7 +64,6 @@ function computeTokenIndexOfTerminalNode(
6964
caretPosition: { line: number; character: number }
7065
): number | undefined {
7166
if (symbolAtCaretPosition(parseTree, caretPosition)) {
72-
console.log(`Token index found: ${parseTree.symbol.tokenIndex} for symbol: ${parseTree.symbol.text}`)
7367
return parseTree.symbol.tokenIndex
7468
} else {
7569
return undefined
@@ -83,10 +77,8 @@ function computeTokenIndexOfChildNode(
8377
for (let i = 0; i < parseTree.getChildCount(); i++) {
8478
const child = parseTree.getChild(i)
8579
if (child != null) {
86-
console.log(`Visiting child node at index: ${i}`)
8780
const index = computeTokenIndex(child, caretPosition)
8881
if (index !== undefined) {
89-
console.log(`Index found in child: ${index}`)
9082
return index
9183
}
9284
}
@@ -98,7 +90,6 @@ function computeTokenIndex(
9890
parseTree: ParseTree,
9991
caretPosition: { line: number; character: number }
10092
): number | undefined {
101-
console.log(`Current parseTree node type: ${parseTree.constructor.name}`)
10293
if (parseTree instanceof TerminalNode) {
10394
return computeTokenIndexOfTerminalNode(parseTree, caretPosition)
10495
} else {
@@ -118,13 +109,27 @@ function getCandidates(parser: PartiQLParser, index: number) {
118109

119110
// Add rules
120111
core.preferredRules = new Set([
121-
// PartiQLParser.RULE_qualifiedName,
112+
// No rules specified for now
122113
])
123114
return core.collectCandidates(index)
124115
}
125116

117+
function getPosition(
118+
content: string,
119+
position: { line: number; character: number }
120+
): { line: number; character: number } {
121+
const lines = content.split('\n')
122+
const line = lines[position.line]
123+
const substring = line.substring(0, position.character)
124+
const lastSpaceIndex = substring.lastIndexOf(' ')
125+
return {
126+
line: position.line,
127+
character: lastSpaceIndex + 1,
128+
}
129+
}
130+
126131
export function getSuggestions(content: string, position: { line: number; character: number }): CompletionList | null {
127-
console.log(`Getting suggestions for content: ${content}, position: ${position.line + 1}:${position.character}`)
132+
position = getPosition(content, position)
128133
const parser = initializePartiQLParser(content)
129134
const tokenIndex = getTokenIndexFromParseTree(parser, position)
130135
const candidates = getCandidates(parser, tokenIndex)

0 commit comments

Comments
 (0)