Fix code completion issue on the document start offset #352
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Purpose
When typing at the start of a document (offset 0), the code completion feature does not capture the initial characters typed. Consequently, accepting a completion suggestion results in it being incorrectly appended to the initially typed text. This fix aims to ensure that suggestions are accurately based on the entire text entered and are inserted correctly. Related to #351
Approach
Change the function
public String getCompletionPrefix(Editor editor, int offset)
In the original implementation, the function scans backwards from the offset until it encounters a delimiter. If no delimiter is found, it returns an empty string. However, at the start of the document where there are no preceding delimiters, this approach results in an empty string being returned, failing to capture the text initially typed. To address this, the function should be adjusted to return the captured characters up to the point where a delimiter is encountered, or, if at the start of the document where no delimiters are present, return the text from the start to the current offset.
Change the function
public void prepareAndRunSnippet(String insertText)
An IDE error throws when trying to insert a suggestion that is not a code snippet from this function. Therefore, if the insertText does not align with recognized code snippet patterns, the function should return immediately, avoiding further processing.