Skip to content

Commit

Permalink
Merge pull request #24 from jeddict/feature
Browse files Browse the repository at this point in the history
Fixes auto completion for non-java files
  • Loading branch information
jGauravGupta authored Oct 19, 2024
2 parents 7ab21dc + 3d23ea2 commit 5ae1f00
Showing 1 changed file with 15 additions and 9 deletions.
24 changes: 15 additions & 9 deletions src/main/java/io/github/jeddict/ai/JeddictCompletionProvider.java
Original file line number Diff line number Diff line change
Expand Up @@ -273,14 +273,16 @@ private JeddictItem createItem(Snippet varName, String line, String lineTextBefo

String snippetWOSpace = removeAllSpaces(varName.getSnippet());
String tlLine = trimLeadingSpaces(line);
String tlLineTextBeforeCaret = trimLeadingSpaces(lineTextBeforeCaret);
String tlLineTextBeforeCaret = trimLeadingSpaces(lineTextBeforeCaret);

// Handle line and snippet first words safely
String firstWordLine = "";
String lastWordLine = "";
if (lineTextBeforeCaret != null && !lineTextBeforeCaret.trim().isEmpty()) {
String[] textSegments = lineTextBeforeCaret.trim().split("[^a-zA-Z0-9]+");
String[] textSegments = lineTextBeforeCaret.trim().split("[^a-zA-Z0-9<]+");
if(textSegments.length > 0) {
firstWordLine = textSegments[0]; // Split by any non-alphanumeric character
firstWordLine = textSegments[0];
lastWordLine = textSegments[textSegments.length - 1];
}
}

Expand All @@ -292,26 +294,30 @@ private JeddictItem createItem(Snippet varName, String line, String lineTextBefo
}
}

boolean midWordMatched = false;
if (firstWordLine.equalsIgnoreCase(firstWordSnippet)) {
newcaretOffset = newcaretOffset - tlLineTextBeforeCaret.length();
} else if (snippetWOSpace.startsWith(lastWordLine)) {
midWordMatched = true;
newcaretOffset = newcaretOffset - lastWordLine.length();
} else if (snippetWOSpace.startsWith(removeAllSpaces(line))) {
newcaretOffset = newcaretOffset - tlLine.length();
} else if (snippetWOSpace.startsWith(removeAllSpaces(lineTextBeforeCaret))) {
newcaretOffset = newcaretOffset - tlLineTextBeforeCaret.length();
}
// for annotations
if (tlLine != null && !tlLine.isEmpty() && tlLine.charAt(0) == '@'
&& snippetWOSpace != null && !snippetWOSpace.isEmpty() && snippetWOSpace.charAt(0) == '@') {
newcaretOffset = newcaretOffset - tlLine.length();
}
int caretToEndLength = -1;
if (javaToken.getId() == STRING_LITERAL && kind == Tree.Kind.STRING_LITERAL) {
if ((javaToken.getId() == STRING_LITERAL && kind == Tree.Kind.STRING_LITERAL) || midWordMatched) {

} else if (newcaretOffset != caretOffset) {
caretToEndLength = line.length() - lineTextBeforeCaret.length();
String textAfterCaret = doc.getText(caretOffset, caretToEndLength);
caretToEndLength = trimTrailingSpaces(textAfterCaret).length();
}
System.out.println("varName.getSnippet(), "+ varName.getSnippet() + caretOffset + " " + newcaretOffset);
JeddictItem var = new JeddictItem(null, null, varName.getSnippet(), varName.getDescription(), varName.getImports(), newcaretOffset, caretToEndLength, true, false, -1);
return var;
}
Expand Down Expand Up @@ -489,13 +495,13 @@ && trimLeadingSpaces(line).charAt(0) == '@') || kind == Tree.Kind.ANNOTATION) {
}
}
} else {
String currentLine = getLineText(doc, caretOffset);
String line = getLineText(doc, caretOffset);
String lineTextBeforeCaret = getLineTextBeforeCaret(doc, caretOffset);
FileObject fileObject = getFileObjectFromEditor(doc);
String updateddoc = insertPlaceholderAtCaret(doc, caretOffset, "${SUGGEST_CODE_LIST}");
List<Snippet> sugs = getJeddictChatModel(fileObject).suggestNextLineCode(updateddoc, currentLine, mimeType);
List<Snippet> sugs = getJeddictChatModel(fileObject).suggestNextLineCode(updateddoc, line, mimeType);
for (Snippet varName : sugs) {
JeddictItem var = new JeddictItem(null, null, varName.getSnippet(),"", Collections.emptyList(), caretOffset, true, false, -1);
resultSet.addItem(var);
resultSet.addItem(createItem(varName, line, lineTextBeforeCaret, javaToken, null, doc));
}
}
} catch (Exception e) {
Expand Down

0 comments on commit 5ae1f00

Please sign in to comment.