Skip to content

Feature request: Inline virtual text for suggestions #328

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
cpmsmith opened this issue Oct 24, 2024 · 5 comments
Open

Feature request: Inline virtual text for suggestions #328

cpmsmith opened this issue Oct 24, 2024 · 5 comments
Assignees
Labels
enhancement New feature or request

Comments

@cpmsmith
Copy link

Neovim 0.10 has been out for a while now, with support for virt_text_pos = "inline", i.e. virtual text which is visible in the middle of text, leaving the text in the buffer at its position visible instead of replacing it, in the style of LSP inlay hints.

It would be nice if copilot.lua used inline virtual text to display suggestions, as currently suggestions in the middle of a line obscure what remains on the line. This very often causes confusion around things like auto-pairs, e.g. in this example:

Screenshot 2024-10-24 at 12 16 17

If I dismiss the suggestion, I can see that the opening bracket has been auto-paired, but I have no way to tell while the Copilot suggestion is active.

Screenshot 2024-10-24 at 12 16 28

And if I accept the suggestion, it appears as though the closing bracket was added by Copilot, even though it didn't appear in the suggestion.

image

This is all much more noticeable if there is more than one remaining character on the line, e.g. when replacing the first argument of multiple in a function call, the suggestion may cover up the existing values for the following arguments.

Notes

  • In this example, when I did accept the suggestion, it actually moves my cursor after the closing bracket. Does that mean that the closing bracket is actually part of the suggestion and is being hidden, or automatically made to not conflict somehow?
  • Can inline virtual text have multiple lines?
@kedom1337
Copy link

Not having this is currently my top issue with using copilot. Having this would make the whole experience so much better

@AntoineGS AntoineGS self-assigned this Mar 24, 2025
@AntoineGS AntoineGS added the enhancement New feature or request label Mar 24, 2025
@AntoineGS
Copy link
Collaborator

I cannot seem to find a way to trigger a mid-line suggestion, whether I put virt_text_pos = "inline" or not the behavior seems the same.
I have created a branch with the change if you would like see for yourself: virt_text_inline.

@cpmsmith
Copy link
Author

cpmsmith commented Apr 2, 2025

@AntoineGS I messed around with it briefly, and I think setting virt_text_win_col overrides virt_text_pos = "inline". I got it to show up, though it'll need some behaviour changes around highlighting, and distinguishing exactly which suggestions should appear this way

@AntoineGS
Copy link
Collaborator

Good find, it does work without virt_text_win_col, I will play around with it and see how we can integrate the feature.

@AntoineGS AntoineGS marked this as a duplicate of #322 Apr 14, 2025
@AntoineGS
Copy link
Collaborator

AntoineGS commented Apr 17, 2025

I think I got it working properly, would you mind pulling the new code from the virt_text_inline branch?
I have had to manipulate the suggestions from Copilot as it assumes replacing the whole line, it seems to behave fine in my (currently) limited testing.
Let me know what you think, I think it's a real improvement when auto-completing with partial line suggestions!

Edit: yeah I am really digging the behavior, thanks for the suggestion :P :P

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

No branches or pull requests

3 participants