-
Notifications
You must be signed in to change notification settings - Fork 5k
Supporting shell completions (spec) #434
-
Is your feature request related to a problem? Please describe.
Ex. I'm always frustrated when autocomplete doesnt work.
Eg:
touchTAB doesnt work~/preTAB doesnt work (should expand to~/prefixninja insTAB completes toninja install_manifest.txt, notninja installcd rustdTAB completes tocd rustdoc/, notcd rustdoc, where I can then specify I wanted to go torustdoc-json, (in rustcsrc/testdirman claTAB doesn't comlete (zsh shows clang clang++ clang++-12 clang-12 classes.conf)
Describe the solution you'd like
I'd like to be able to deligate to the underlying shell to provide autocompletion.
Beta Was this translation helpful? Give feedback.
All reactions
-
👍 200 -
🎉 3 -
❤️ 1 -
👀 2
Replies: 83 comments 63 replies
-
Makes sense as a request.
Our current approach is to try move this logic into Warp by building out our own completion grammar and library, with the rationale being:
- Shell autocomplete is pretty hard to configure
- You lose most of your completions when you go to remote boxes unless you've also configured completions on them
- The current shell completion specs are (in our opinion) pretty hard to write new completions for
That said, we are missing a bunch of context right now from the shell which is making our completions worse than they should be. And we just have a number of bugs. I think we will see how far we can get without delegating to the shell, and add that as a fallback if we can't make it great.
Thanks for the report.
Beta Was this translation helpful? Give feedback.
All reactions
-
👍 5 -
👎 44
-
I'm seeing this today with Bazel & Kubernetes, both of which use compinit in zsh.
Beta Was this translation helpful? Give feedback.
All reactions
-
Is there a way to create custom Warp completions for custom scripts? I have created many handy bash scripts for which I created bash completions, however, those are useless on Warp.
Beta Was this translation helpful? Give feedback.
All reactions
-
All I know, is you can spend over 700ドル a month on this garbage, and it can't take 4 words off a screen in 10 hours, unless you know how to direct it... Amazing what it can do.. if it costed 20ドル. But you can literally spend over 2000ドル a month on Warp. After that 20,ドル they drive the price up to over 20ドル for like 400 or 600 requests. So at first you pay, and your like okay, 20,ドル this is cool, and then after a couple days, when you spend your money, you realize your spending 50ドル a day sometimes to keep going... And it's pretty addictive, and pretty amazing... But... The money... VS. it's inability to do simple things, like make sure your files are able to be copied, and then unmanipulated by the edits to the original.... And it's inability to keep your files clean, causing massive overhauls to the organization after you have spent hours trying to get things done... and then messing up trying to organize things... I mean I have tried everything to "Vibe Code" with, and I do admit warp is amazing... But to actually afford it... You'd have to be 100k+ per year, a developer, or just using it in a very worst case scenario. Maybe using Github primarily, and then using warp to fix all the mistakes... I love it.. It's just insane what they want to charge. I could pay like 50ドル a month or something, but you get WAY more time on Github for the same price.. Even if it's a pinch less accurate.... I do admit if I ever get rich, I will pay for warp for my whole family. But unless I'm rolling 6 figures... I just can't afford it... and neither can most people who aren't already wealthy enough to make their own coding LLM on their own server and avoid all the publication of their work... meh.
Beta Was this translation helpful? Give feedback.
All reactions
-
Ohh, that's damning. Is this a death knell? I really like warp for what it provides except that AI part, which just gets in the way. The only dark spot in Warp is this lack of shell completions. Is a shame that all the ai functionality can't just be kept separate from the core product and allow users to opt to use warp in an agentic manner or continue to use it in a sane classic way that preserves the users control over execution of commands.
Beta Was this translation helpful? Give feedback.
All reactions
-
👍 3
-
- Shell autocomplete is pretty hard to configure
For some people, not for me. And you know, we are in the AI age, therefore, this issue can be very easily overcome.
- You lose most of your completions when you go to remote boxes unless you've also configured completions on them
Maybe, but if I need them there, I’ll make sure there are installed there too. YMMV, but this is an irrational reason for not supporting shell completions IMO.
- The current shell completion specs are (in our opinion) pretty hard to write new completions for
But they are still de facto stamdards im various shells, therefore: who cares? As you can see, there are many actual users of shell completions who rely on them, therefore, IMHO Warp should follow the convention in this case. I have no problem with Warp being a pioneer in the next shell completion convention, however, in the meantime, I think you should just add support for shell completions.
That said, we are missing a bunch of context right now from the shell which is making our completions worse than they should be.
This smells like a skill issue (but I might be wrong). If everything else fails, just look at other open-source terminals, see how they do it and adapt it for Warp.
I am really interested in what context exactly you miss and the issues you face.
Beta Was this translation helpful? Give feedback.
All reactions
-
Maybe a hybrid aproach works best, where if you know about a tool (npm, etc) you provide native support, but if not, you can delegate to the underlying shell (ninja, r2, rg etc).
Some of the more basic stuff (starting with ~ or /, completing touch) should definatly be fixed in your layer
Beta Was this translation helpful? Give feedback.
All reactions
-
Shall-defined functions should also be included in the auto-completion. If i say
myfunction () { bla bla }
The myfunction should be available in auto-complete. Just like normal zsh.
Beta Was this translation helpful? Give feedback.
All reactions
-
👍 5
-
The myfunction should be available in auto-complete. Just like normal zsh.
Not justzsh, but also Bash and many other shells.
Beta Was this translation helpful? Give feedback.
All reactions
-
Yup, we will explore that. We actually started with an approach of delegating the shell, but it did introduce extra latency. As a fallback though it might be acceptable. Appreciate the feedback.
Beta Was this translation helpful? Give feedback.
All reactions
-
Is your feature request related to a problem? Please describe.
Ex. I'm always frustrated when autocomplete doesnt work.Eg:
touchTAB doesnt work~/preTAB doesnt work (should expand to~/prefixninja insTAB completes toninja install_manifest.txt, notninja installcd rustdTAB completes tocd rustdoc/, notcd rustdoc, where I can then specify I wanted to go torustdoc-json, (in rustcsrc/testdirman claTAB doesn't comlete (zsh shows clang clang++ clang++-12 clang-12 classes.conf)Describe the solution you'd like
I'd like to be able to deligate to the underlying shell to provide autocompletion.
Completion using variables is also broken, e.g. ls $HOME/Dow expands the variable and autocompletes to ls /Users/simjnd/Downloads but it doesn't work in Warp
Beta Was this translation helpful? Give feedback.
All reactions
-
👍 1
-
Throwing my +1 into the mix on this that the autocomplete issues definitely hinder my ability to use Warp as a primary driver right now. I also source an open source git_completion.sh script to get autocomplete for git branches and commands, but that doesn't seem to work with warp either. Would definitely like a fallback to native autocompletion when warp has no suggestions.
Beta Was this translation helpful? Give feedback.
All reactions
-
I think the lack of make autocompletion is related too.
Otherwise I may open another feature-request to support make 🙂
Beta Was this translation helpful? Give feedback.
All reactions
-
While it's a beta (and pretty impressive so far - I find very little of what it actually does that I don't like a lot!), not having some sort of command completion at least for filenames working is really going to make things difficult to continue. Maybe my setup (bash) is interfering, but even just '. ~/.bash_al' doesn't do anything - no list of files, no default pick, nothing. I have no choice but to retype in the file name completely. Anybody reported anything in bash that might interfere with what you're building (so I could at least get the minimal file completion?)
Beta Was this translation helpful? Give feedback.
All reactions
-
I definitely think that the shell needs to take precedence here over any autocompletion by the terminal. I have my shell configured exactly how I want it to be, with the autocomplete that I want it to have. Regardless of if I'm using Warp, iTerm2, Terminal.app, or any other terminal, I don't want to have a difference experience. The terminal should enhance the shell, not replace it.
Beta Was this translation helpful? Give feedback.
All reactions
-
👍 32
-
I definitely think that the shell needs to take precedence here over any autocompletion by the terminal. I have my shell configured exactly how I want it to be, with the autocomplete that I want it to have.
+1 for this!
Having default autocompletion included in the terminal is fine, but I think that users must have the ability to customize it exactly the way they want is very important.
Being able to simply use what was already made at the shell level would be best, but another acceptable possibility, imo, would be to be able to customize it with a config file for Warp.
As someone else mentioned already, this is the single thing that prevents me to daily test Warp.
Beta Was this translation helpful? Give feedback.
All reactions
-
👍 17
-
Same here! This is preventing me from switching to warp from iterm
Beta Was this translation helpful? Give feedback.
All reactions
-
👍 1
-
+1 So far I like Warp a lot, but configurable completions is a must have.
Beta Was this translation helpful? Give feedback.
All reactions
-
👍 7
-
I think a JOSN like command structure would be of great help. More info here: #585
Beta Was this translation helpful? Give feedback.
All reactions
-
From @arunkumar413
Hi Team,
Most of the Linux commands don't have a common structure. Each command has its own options and flags. I recommend a JSON like structure for the commands and their options.
For example:
{
commandName: "ls",
options: {
all: true,
author: true,
humanReadable: true,
recursive: true
}
}
This JSON like structure should be parsed into the regular Linux commands and executed. We'll have a terminal feature like text editor that takes JSON input, interprets the JSON like structure into regular commands and outputs the result.
This feature would make the documentation, linting, code completion easier. Each command option would be self explanatory and easier to understand.
Note: This wont be a complete replace of the existing command line but just an addition to the existing command line which takes a JSON structure as a command.
Beta Was this translation helpful? Give feedback.
All reactions
-
👍 1
-
Had a ticket related to this discussion here: #622.
I was having issues using commands like kubectl and skaffold where the tab autocompletion would simply do nothing (presumably because there wasn't a file in my working dir with the same prefix). I think in cases where the command is unsupported, delegating to shell is a good way to go, even if it adds latency.
For kubectl for instance, the shell completion fetches suggestions from the k8s API I believe to give autocompletions that wouldn't be found on machine. I can see how this would be tricky to build a custom solution for in Warp so falling back to shell could be a good stopgap.
Beta Was this translation helpful? Give feedback.
All reactions
-
👍 3
-
From ChrisVarenChris via Discord: https://discord.com/channels/851854972600451112/852251449068486773/900932342653255700
i assume a shell's native completion system is just incompatible, so you need to write new ones for Warp? At the moment, this 100% what's stopping me from using Warp for the majority of work. A crowd sourced repository of open source completions wouldn't solve it since we have completions for internal tools that are used all the time. Though most of these completions are autogenerated from getopt-style help texts so just the ability to have custom user completions would be enough. (I believe fish shell auto-magically generates completions in a similar way)
Beta Was this translation helpful? Give feedback.
All reactions
-
👍 1
-
It doesn't autocomplete functions defined .zshrc, e.g.
function rstoserver { rsync 1ドル user@server.com:2ドル }.
Is there a work around?
Beta Was this translation helpful? Give feedback.
All reactions
-
From blitz2145 via Discord: https://discord.com/channels/851854972600451112/906269689116770304/908912605232529418
Perhaps this one is out of scope for the warp terminal in the short term, but the UI could build on a shell that supported this theoretical completions protocol. How about something like the LSP (Language Server Protocol) but for autocompletions, perhaps cli programs themselves could be invoked to output completions for their own commands, rather than having to build stuff like fig (which is nice, but cli programs themselves should take on the responsibility for completions), etc. The Oil shell actually has a great design/architecture for how to do this, https://github.com/oilshell/oil/wiki/Shellac-Protocol-Proposal
Beta Was this translation helpful? Give feedback.
All reactions
-
❤️ 1
-
+1
Beta Was this translation helpful? Give feedback.
All reactions
-
I was going to swap to warp, but this issue is a serious dealbreaker. Unfortunate, back to Hyper for me.
Beta Was this translation helpful? Give feedback.
All reactions
-
I have been using Warp for many years. Today I found this issue and decided to switch to another terminal.😭
Beta Was this translation helpful? Give feedback.
All reactions
-
So still nothing on this after 4 years. You cant just tell every other cli tool that you dont support to go fuck it self. at least have an option to turn off the warps completion so we can use shell completions or a way to submit cli tool completions to warp. How can you just be silent?. You keep adding all this ways to interact with AI but dont care about this crucial issue
Beta Was this translation helpful? Give feedback.
All reactions
-
So still nothing on this after 4 years. You cant just tell every other cli tool that you dont support to go fuck it self. at least have an option to turn off the warps completion so we can use shell completions or a way to submit cli tool completions to warp. How can you just be silent?. You keep adding all this ways to interact with AI but dont care about this crucial issue
Thats exact the point, AI can be implemented if everything else is working as it should, thats how i see it.
But AI is in the time now the super seller i think, so every software need to have it, regardless if it is needed.
Every IT professional will not use it if autocompletion will not work.
This shell has the potential to be the new standard for all, also for it professionals but for that this has to work.
I think you will sell more if this is working, i think you loose so much possible customers this way.
Because right now every it professional will download it and use it until he gets that this isn't working and thats it. (like me, at first i couldn't believe that this common thing isn't working)
So please have a look into this!!!
Beta Was this translation helpful? Give feedback.
All reactions
-
+1 - Without shell completions, Warp, which otherwise looks great, is a not-starter.
Beta Was this translation helpful? Give feedback.
All reactions
-
👍 3
-
Agreed, this is kinda a deal breaker for custom workflows, and really breaks a corner stone of CLI :/
Beta Was this translation helpful? Give feedback.
All reactions
-
Is this still not implemented?
Only reason I stopped using a few months back when ghost came out. Ridiculous destruction of productivity
Beta Was this translation helpful? Give feedback.
All reactions
-
This has been on the list for 4 years and is pretty much my only blocker from using this tool permanently. Honestly this is a bear signal on y'all succeeding (thus not worth building my workflow around)
You literally would save money with less AI api calls by using the default shell behavior here. Please don't bet on pure vibe coders. If you're building a dev tool, build for devs. Optimize your roadmap for vibe coders second.
I recommend you get leadership involved here. Maybe doing so will help with your adoption rates.
image
All the best team.
Beta Was this translation helpful? Give feedback.
All reactions
-
👍 9
-
I was not expecting this. This is really bad and unfortunately breaks too much for me to be able to use this :/
It's good to be different, but you should try to keep some basics around that people rely on :)
Beta Was this translation helpful? Give feedback.
All reactions
-
+1. This thread seems to have got a little hostile. But I think the ability to add your own completion specs would be great.
Beta Was this translation helpful? Give feedback.
All reactions
-
sorry if i miss topic but guys please finally fix it
imageevery time in powershell command adding first character Georgian "პ" utf8 and no more command not working after and full session is dead :(
Beta Was this translation helpful? Give feedback.
All reactions
-
Wild. I'm switching to Ghostty.
Beta Was this translation helpful? Give feedback.
All reactions
-
tried to move to ghostty but failed 🥲
Beta Was this translation helpful? Give feedback.
All reactions
-
Ghostty lacking many features. Company blocked warp so can’t use at work and my days it’s so annoying having to config a terminal to have what warp has out of the box. I’ve just been using basic wezterm cause I can’t be bothered to setup terminal
Beta Was this translation helpful? Give feedback.
All reactions
-
👍 2
-
There is one positive thing about that. I somehow managed to learn every command's "commands". 😂
Beta Was this translation helpful? Give feedback.
All reactions
-
Damn I tried to implement my own custom tab completion for a program I write.
And nearly go crazy about it. Just to find out my script is completely fine. Warp just doesn’t support it. :(
Beta Was this translation helpful? Give feedback.
All reactions
-
lol, yup! 2 hours wasted today.
I was using compdef and all I was getting for auto complete were file folders.
I tested in Ghostty and would you look at that, it's was working this whole time.
Beta Was this translation helpful? Give feedback.
All reactions
-
This has been rubbing me the wrong way and I've been thinking of switching for a long time now. But, inertia is a powerful thing so I kept using Warp. Today, it updated and shoved in my face notifications about a bunch of AI features I never wanted in my terminal. At the same time, this is just getting ignored.
So congratulations, you finally managed to change me from someone recommending warp to others to switching away from it today.
Clap ... clap ... clap ...
Beta Was this translation helpful? Give feedback.
All reactions
-
Tabby, Ghostty, and maybe WindowsTerminal if you are on windows
Beta Was this translation helpful? Give feedback.
All reactions
-
Thanks, I'm on Mac and I reached for Ghostty as first choice. I pretty much rage installed it just a few hours ago but so far so good. :)
Beta Was this translation helpful? Give feedback.
All reactions
-
👍 1
-
Time walks away and still no autocompletion.
So much time was spent here to work out AI and the coders tools, would be great if someone would have a eye on it administrators so that we can also use it.
Beta Was this translation helpful? Give feedback.
All reactions
-
it seems AI gets everyones time these days. Not necessarily instead of this particular issue, but generally
Beta Was this translation helpful? Give feedback.