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

Support underscores as separators #385

Closed
triallax opened this issue Jun 13, 2023 · 4 comments
Closed

Support underscores as separators #385

triallax opened this issue Jun 13, 2023 · 4 comments

Comments

@triallax
Copy link
Contributor

triallax commented Jun 13, 2023

Commas as separators was discussed before, but they were ruled out because they cause ambiguity in function arguments (e.g. is f(1,2) equivalent to f(1, 2) or (f12)?). I think underscores are a suitable alternative instead. Supporting underscores in input is important for me, but supporting them in output too (possibly behind a toggle) would be also nice in my opinion, because it's difficult for me to count the zeros at a glance in e.g. 23000000.

@sharkdp
Copy link
Owner

sharkdp commented Jun 13, 2023

Sounds great. C++ uses single quotes as a separator: 100'000, but I think I like Python-style underscores better. In Python, you are allowed to put those separators everywhere you want. You can write 230_0_0_000, if you desire. I was thinking if it would be beneficial to only allow the separators to appear in the "right" spots (1000-separators), as in 23_000_000?

@triallax
Copy link
Contributor Author

C++ uses single quotes as a separator: 100'000, but I think I like Python-style underscores better.

I wouldn't mind single quotes too, especially since they don't require two keypresses to type as opposed to an underscore (Shift+- on my layout). This is layout-dependent though. Regardless, I think it would be nice to allow setting the separator from a predetermined list of allowed values (#107).

In Python, you are allowed to put those separators everywhere you want. You can write 230_0_0_000, if you desire. I was thinking if it would be beneficial to only allow the separators to appear in the "right" spots (1000-separators), as in 23_000_000?

I can see the advantage of this (the user can know for sure that they didn't put underscores in the wrong places, or added or removed digits by accident), and it's also in line with Insect's philosophy of being strict rather than lax. However, I fear that this may preclude edge use cases (e.g. if somebody wants to separate by the 10 thousands instead of thousands), or negatively affect editing experience (e.g. if a user wants to change 2_123_450 to 2_123_45, they have to move the separators appropriately, which kind of sucks). I don't know how realistic those concerns are though, so some real usage may be warranted to gauge the impact of these and other issues.

The alternatives to this that come to my mind:

  1. Allow configuring whether separators should only separate by the thousands
  2. Allow a "consistent" number of digits between each separator (i.e. 2_0_0 and 2_0000_0000 are okay, but 2_00_0 is not)
  3. Just allow separators anywhere in a number

@triallax
Copy link
Contributor Author

Also, I just thought of this idea that I think is awesome but admittedly somewhat unorthodox and possibly non-trivial: auto-insert underscores in the input. For instance, if I type 2000, Insect would automatically show an underscore after the 2, like 2_000.

@sharkdp
Copy link
Owner

sharkdp commented Sep 20, 2023

This is now supported in Numbat, you can try it here: https://numbat.dev/?q=200_000

@sharkdp sharkdp closed this as completed Sep 26, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants