elves / elvish

Powerful scripting language & versatile interactive shell
https://elv.sh/
BSD 2-Clause "Simplified" License
5.63k stars 299 forks source link

Mixed slashes on Windows #1828

Open fgimian opened 1 month ago

fgimian commented 1 month ago

What happened, and what did you expect to happen?

Hi there, firstly forgive me if I'm missing something as this is my first day using Elvish.

On Windows, Elvish seems a little mixed up about which slashes to use on a Windows system:

Suppose I'm trying to get to C:\Users\<username>\source:

I think this feels a bit awkward to work with.

My hope would be that both / and \ would trigger completions and paths would always be normalised to use the native \ separators to remain as widely compatible with CLI tools.

Huge thanks for your time Fotis

Output of "elvish -version"

0.20.1+official

Code of Conduct

xiaq commented 1 month ago

Hmm, the reason it's this way is that if the user typed a / it could be intentional and Elvish should respect that. You can always get \ by, well, typing \ in the first place.

@fgimian Is there a specific reason you'd use / instead of \ when typing paths?

fgimian commented 1 month ago

Hmm, the reason it's this way is that if the user typed a / it could be intentional and Elvish should respect that. You can always get \ by, well, typing \ in the first place.

@fgimian Is there a specific reason you'd use / instead of \ when typing paths?

Thanks for the response. I found that Elvish would not offer completions when using \, while / did. This is ultimately the only reason I was using it. Is it possible I'm missing something?

Cheers Fotis

xiaq commented 1 month ago

Hmm, the reason it's this way is that if the user typed a / it could be intentional and Elvish should respect that. You can always get \ by, well, typing \ in the first place. @fgimian Is there a specific reason you'd use / instead of \ when typing paths?

Thanks for the response. I found that Elvish would not offer completions when using \, while / did. This is ultimately the only reason I was using it. Is it possible I'm missing something?

Aha, I see what the problem is now. I was only testing completion after something like cd .\, which does work. But cd ~\ doesn't work.

The problem is actually a bit deeper than tab completion - on the language level, Elvish can't expand ~\foo correctly because tilde expansion assumes /. I'll fix that.

fgimian commented 1 month ago

Hmm, the reason it's this way is that if the user typed a / it could be intentional and Elvish should respect that. You can always get \ by, well, typing \ in the first place. @fgimian Is there a specific reason you'd use / instead of \ when typing paths?

Thanks for the response. I found that Elvish would not offer completions when using \, while / did. This is ultimately the only reason I was using it. Is it possible I'm missing something?

Aha, I see what the problem is now. I was only testing completion after something like cd .\, which does work. But cd ~\ doesn't work.

The problem is actually a bit deeper than tab completion - on the language level, Elvish can't expand ~\foo correctly because tilde expansion assumes /. I'll fix that.

Ahh, and yeah you're right, I usually base my paths from ~. 😄

Thanks so much for all your help! Fotis