zed
zed copied to clipboard
Suggest autocomplete options immediately after inserting a period
Check for existing issues
- [X] Completed
Describe the feature
As can be seen in the images below, the autocomplete only offers me suggestions after I insert a period, and this happens in any language I use daily (Go, Python & TypeScript).
This is quite annoying because it forces you to either read the documentation or start guessing the possible first letters of what you want.
My question is, is there a way to improve this? I come from using VSCode, and there it works 'as expected,' so why is it different in Zed?
In my opinion, this behavior in Zed is not productive.
After pressing period, nothing happens.
Since I know the name of the attribute, I press L and only at that moment does it suggest what I want.
If applicable, add mockups / screenshots to help present your vision of the feature
No response
I'm working in a TS codebase and the behaviour I'm seeing is the suggestion popover appears after showing the intent of accessing a property: inserting a period. The only time it doesn't pop up is when some code is suggested by Copilot.
https://github.com/zed-industries/zed/assets/16290753/a3a54d2d-dccc-4885-b788-7d46095adb7b
@Moshyfawn, do you have any particular configuration? I haven't changed anything, it is the default installation.
Thank you.
This has been the case with every configuration I've tried. My current settings are as follows:
{
"theme": "Rosé Pine",
"ui_font_size": 14,
"buffer_font_size": 14,
"tab_size": 2,
"show_wrap_guides": true,
"format_on_save": "language_server",
"scrollbar": {
"git_diff": false
},
"git": {
"git_gutter": "tracked_files"
}
}
I believe the difference in the behavior you're seeing is due to corresponding language server's CompletionProvider
not having a .
in its triggerCharacters
list.
Spec: https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/#textDocument_completion
Here are the only places in Zed codebase we register those trigger characters: https://github.com/zed-industries/zed/blob/7ad714366cedcfa234e942e5032bb5b4c0a4cb0e/crates/project/src/project.rs#L2086-L2096
https://github.com/zed-industries/zed/blob/7ad714366cedcfa234e942e5032bb5b4c0a4cb0e/crates/project/src/project.rs#L3342-L3352
So, while Zed can add some heuristics to trigger more completions, a more appropriate fix seems to belong to corresponding language servers.
Hm, the problem is: seems that all 3 mentioned servers do have .
in their completion providers in main
branches:
- pyright: https://github.com/microsoft/pyright/blob/9dce19cc8761ea8397d41bd7810f52e07f79a252/packages/pyright-internal/src/languageServerBase.ts#L741
- gopls: https://github.com/golang/tools/blob/5bf7d005299769e9d476813f09efd2a4296d5fe9/gopls/internal/server/general.go#L145
- typescript-language-server: https://github.com/typescript-language-server/typescript-language-server/blob/b224b878652438bcdd639137a6b1d1a6630129e4/src/lsp-server.ts#L181
So maybe it's Zed's issue, after all: but still, to debug this, one would need to find a case where it reproduces reliably, then
- check that the completion provider sends back a proper list with
.
- check that, during input (and when no active copilot suggestion exists), check that we determine input's trigger correctly: https://github.com/zed-industries/zed/blob/7ad714366cedcfa234e942e5032bb5b4c0a4cb0e/crates/editor/src/editor.rs#L2897-L2912
PS. I do not have Copilot, but when I had, I had the same behavior.
I would really appreciate if somebody can provide the issue with an open source project and the repro steps; or, alternatively if somebody could debug those things locally in the places mentioned above and add more context.
I can provide tomorrow. It basically does not work in any project to me.I do not have anything on my config and I have installed using homebrew.On 3 Mar 2024, at 14:49, Kirill Bulatov @.***> wrote: I would really appreciate if somebody can provide the issue with an open source project and the repro steps; or, alternatively if somebody could debug those things locally in the places mentioned above and add more context.
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you authored the thread.Message ID: @.***>
I use asdf to install the languages that I want use, in this case, NodeJS 18.x
The exactly same setup works for VSCode.
I am not seeing the same behavior. I am using Python, testing with a random little example:
class Test:
def __init__(self):
self.l = [1, 2, 3]
def add(self, i: int):
self.l.append(i)
something = Test()
When I type something.
I immediately get a suggestions pop-up.
I have default configuration for Zed, Python, Pyright, etc. Copilot is disabled.
Unfortunately unable to repro.
Sometimes works as expected, other no. I have no idea…
Experiencing the same exact issue here with my TypeScript project. I absolutely need an autocomplete list after pressing .
Currently running Zed 0.127.3
Edit: I restarted Zed and now it's working after pressing period? Seems inconsistent. Also worth noting that when I try to autocomplete a method, I'm not getting ()
automatically inserted. If the method has args, the text cursor should move inside the parens and show a tooltip for the argument the user is on, otherwise, simply move text cursor after parens.
Back to using WebStorm for now.
I'm experiencing an issue with autocompletion when Copilot is enabled. Most of the time I see a list of suggested symbols immediately after inserting a period. Sometimes, there's an issue where this list doesn't appear and I have to delete and retype the previous word to get the list to show again. It seems to be a conflict with the autocompletion suggested by Copilot. I can confirm that disabling Copilot resolves this.
Copilot enabled
https://github.com/zed-industries/zed/assets/38229097/e3304f91-a3e4-4066-8273-f06805668d4e
Copilot disabled
https://github.com/zed-industries/zed/assets/38229097/7f5c6035-8323-4fdf-b925-8f75e9a57f5e
I compared with the behaviour of Copilot in VSCode and it hides Copilot suggestions unless the autocomplete list is closed (like with Esc).
Should be fixed in Zed 0.135
Another option is to use Control + Spacebar. Also, thank you @SomeoneToIgnore !
I am still experiencing this problem on 0.136.2 and I have to press ctrl+space every single time to get the autocomplete options.
It still not working on the newest version... Not sure why was closed.
@skhaz
Can you provide more details? Language used; video or, at worst, a text description of the reproduction steps; ideally the project to test this on; the config.
So far, seems to work for me on a sample test project, and the test added also works — so there has to be something else, locally different for you, to trigger the behavior mismatch, or I am doing something wrong to reproduce it.
https://github.com/zed-industries/zed/assets/2690773/a0d3cf0a-eb98-4639-82cd-2182395c555c
@SomeoneToIgnore
I tried it on different projects, I have come to realize that it doesn't work on big projects, while it works fine on smaller/medium-sized ones.
I have only tried it with nodejs/typescript, as I don't have any equally big projects in any other languages. When I say a big project, I'm talking over 1000 .ts files, not counting node_modules (it's terrible legacy code)
Thank you, that might be https://github.com/zed-industries/zed/issues/4613 and/or https://github.com/zed-industries/zed/issues/5166 in play, so the issue could be closer to completion timeouts rather than the editor elements' logic.
It would be great to get a project to repro it, so if somebody has a public one, feel free to share.
just started using zed yesterday and realized this is also happening to me (typescript codebase)
after a restart it works again, until it doesn't
codebase is very small, so it can't be that
I am experiencing the same issue in my ts-server, and the version I am using is 0.139.3.
It seems that something is wrong in ts-server, when I restart the project, it works.
Is there anyway we can check the status for LSP? I will restart LSP when I get the issue, but I don't know the status.
Is there a way to open the suggestion window by a keybind?
Is there a way to open the suggestion window by a keybind?
you can try the command editor::ShowCompletions
@LukaPelgrom
Given the changing of the language server and how this problem persists, I guess it's safe to say it might not be the language server problem. And since ctrl+space works fine (and it's rather fast), I'm guessing upon inserting a period it might not be requesting anything from the language server? Can I see what requests are being made to the language server?
if what I'm saying sounds dumb, I apologize, I'm not familiar with how editors and language servers work.
I'm new to zed and was experiencing this issue in a Typescript project which lead me here, however after some more testing I found that it is actually working, but with a significant delay.
The delay seems to vary. Sometimes it can be as long as 1-2 seconds, and other times its faster.
VSCode feels basically instant every time, and zed never gets as fast. Using zed and chaining multiple calls together requires a pause every time I type a period, and makes the entire experience feel very sluggish.
Seeing this get fixed would improve the DX significantly!
I am also experiencing this issue, I do not get autocomplete suggestions unless I manually trigger them with control + space. I am working in a React TypeScript project on MacOS
For anyone that's experiencing this issue you might be able to fix it by uninstalling the language server. If you're using a LSP that Zed downloaded it's located in this directory ~/Library/Application\ Support/Zed/languages/
, and if it's an extension try uninstalling and installing the extension.
I'm also having this problem in TypeScript while running Zed v0.143.7
installed via brew (don't know if that's valuable info). Like @Traviskn said, I need to manually trigger the ShowCompletions
to pop up
@Anthony-Eid Thanks, brother. It works! You’re a legend.