Open LilithHafner opened 5 months ago
2. Support all Unicode symbols by official name (e.g.
\MUSICAL_SYMBOL_SINGLE_BARLINE
)
I think this is reasonable, the official naming also helps to find, and this feature does not involve code compatibility, it just requires users to take time to adapt.
it just requires users to take time to adapt.
I was thinking in addition to the existing completions (possibly with different capitalization or escaping) so users don't have to adapt if they don't want to.
How about a different direction: come up with a simple shared configuration format for Unicode completions and then respect that configuration, advocate for other tools to also use that configuration. E.g. could just be a ~/.unicode_completions.csv
file that has a name in the first column and a string in the second column.
That should probably not live in JuliaLang and certainly not in JuliaLang/julia.
Agreed, but we may need to spearhead the effort. Would want to get buy-in from a few other relevant parties. Can we start with a list of some of the related parties? Julia and various editor plugins?
(Before we implemented this in Julia #6911, IIRC there was no popular editor support for anything like this except maybe for an emacs input mode? Many of the current editor modes that implement this directly copied the Julia table at some point in time. But because we've updated our tables over time, some of these have diverged. It would be nice to have a separate shared repo for this.)
Support all Unicode symbols by official name (e.g
\MUSICAL_SYMBOL_SINGLE_BARLINE
)
I'm not 100% convinced of what purpose this serves? These names aren't exactly optimized for use as human input … who actually wants to type them this way? (We also probably don't want to support tab completion for all 150,000 unicode symbols, but I'm not sure if you intended to imply that.)
(Note also that some of the emoji symbols are actually multiple characters.)
That should probably not live in JuliaLang
Shouldn't the Julia language get some credit for this? What other org would it live in?
E.g. could just be a ~/.unicode_completions.csv file that has a name in the first column and a string in the second column.
You'd probably want the string delimited by "..."
with some escaping rules?
None of the names should have commas in them, so standard issue csv without escaping seems like a fine choice to me.
We also probably don't want to support tab completion for all 150,000 unicode symbols, but I'm not sure if you intended to imply that.
That is exactly what I was implying. That way folks who occasionally type obscure unicode characters would still be able to stay in the REPL and we wouldn't end up adding 15,000 of those 150,000 symbols in an add-hoc way one issue/pr at a time. Maybe that belongs in a package?
That way folks who occasionally type obscure unicode characters would still be able to stay in the REPL
They can already do that, by either copy-pasting the symbols, using an alternate input mode, or adding their own completion. And we can continue to add symbols piecemeal upon reasonable request — this avoids adding tens of thousands of completions that no one seems to want.
Realize that a huge number of unicode characters are from Asian languages, for example — it makes no sense to have tab completions for them, since anyone who can actually read/write those languages should have input methods for them.
Here is Lean's vscode abbreviations.json. They have a set of conventions like
McF: ℱ
MCF: 𝓕
for \mathcal
where julia uses
scrF
bscrF
It might be worth chatting with them.
As an experiment, I added ≈34000 named symbols from the UnicodeData.txt
file, and this is what happens to tab completing, for example, \C
:
Basically, backslash tab completion becomes useless if we are too indiscriminate. (Though who among us has not wanted to include the occasional Cuneiform character in our code? It would be cool to have 𒁃(𒀖) = 𒀖 + 1
!)
For comparison, our current tab completions for \C
are:
julia> \C
\Cap
\Chi
\Colon
\Coloneq
\Cup
Before we implemented this in Julia https://github.com/JuliaLang/julia/pull/6911, IIRC there was no popular editor support for anything like this except maybe for an emacs input mode?
Just for reference, https://github.com/emacs-mirror/emacs/blob/master/lisp/leim/quail/latin-ltx.el is what you'd be thinking of :slightly_smiling_face:.
In general, I think following LaTeX where possible/sensible, and adding other symbols as needed (as in #54182) seems better than trying to generate names from the overly-verbose unicode character names. An "outside of julialang/julia
" copy/authoritative version of this does sound helpful, perhaps julialang/unicode-abbreviations
or similar?
I don't love that we have our own custom mapping from strings to unicode characters. It is not friendly to users who switch between Julia and other programs that define similar though not identical mappings.
Given that we do have this mapping, I think we should
\MUSICAL_SYMBOL_SINGLE_BARLINE
)~ (bad idea)Originally posted by @LilithHafner in https://github.com/JuliaLang/julia/issues/54182#issuecomment-2069281006