Skip to content
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

Mixed slashes on Windows #1828

Open
1 task done
fgimian opened this issue Aug 1, 2024 · 4 comments
Open
1 task done

Mixed slashes on Windows #1828

fgimian opened this issue Aug 1, 2024 · 4 comments

Comments

@fgimian
Copy link

fgimian commented Aug 1, 2024

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:

  • Using cd ~\so and hitting tab does not provide completions
  • Using cd ~/so works and completes with mixed slashes cd C:\Users\Fots/source\
  • After completing the source path, hitting enter and then tab, forward slashes are used but the / from the first completion is not normalised (e.g. C:\Users\Fots/source\checksum-validator\)
  • Using path:join dir1 dir2 uses \ characters as expected (dir1\dir2)

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
Copy link
Member

xiaq commented Aug 7, 2024

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
Copy link
Author

fgimian commented Aug 7, 2024

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
Copy link
Member

xiaq commented Aug 8, 2024

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
Copy link
Author

fgimian commented Aug 8, 2024

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

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

No branches or pull requests

2 participants