-
-
Notifications
You must be signed in to change notification settings - Fork 5.5k
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
Meta-issue for improving the REPL experience #50817
Comments
I am so onboard with this plan! Not confident how much I can promise to work on the code directly, but I'm happy to support via Because Maybe we can add another item to the list:
Because last time I looked at the REPL.jl completion code it's ... a bit of a scary disaster area of regexes and heuristics IIUC |
Another item to add to the list:
|
I'm wondering, would it be worth making a channel on Zulip/etc. for chatting about this? I think it could be worth making a space for discussion around this, and I'm not sure that just this issue suffices. |
@tecosaur I think that's a good idea. I was surprised that a #repl channel doesn't already exist in the Slack |
Personally, I'm much more a fan of the Zulip, so if other people are fine with that (yes?), I'll put in a request for a #repl channel there. |
I've now made a Zulip stream: https://julialang.zulipchat.com/#narrow/stream/404905-repl 🙂 |
FYI, there is now also a Slack channel (that currently basically says "go to Zulip"), and the Slack/Zulip channels should be listed as part of the new "REPL working group" soon (with me as the contact). Meetings etc. TBD, but for now I thought it would be a nice start to better collect people interested in driving this aspect of the Julia experience forward 🙂. |
Fix #51194 This PR fixes a regression introduced in #49294, so I believe it should be backported to v1.10. In the current code, completion of `qux(foo, bar.` is detected by parsing `foo(qux, bar` as an incomplete expression, and then looking for the sub-expression to complete (here, `bar.`). This approach fails however for infix calls, since completing `foo + bar.` starts by parsing `foo + bar`, which is a complete call expression, and so the code behaves as if completing `(foo + bar).` instead of `bar.`. This leads to the current problematic behaviour: ```julia julia> Complex(1, 3) + (4//5).#TAB im re ``` which would be correct for `(Complex(1, 3) + (4//5)).#TAB`, but here we expect ```julia julia> Complex(1, 3) + (4//5).#TAB den num ``` This PR fixes that by trying to detect infix calls. In the long term, all this ad-hoc and probably somewhat wrong string processing should be replaced by proper use of `JuliaSyntax` (as mentioned in #49294 (comment), #50817 (comment) and probably other places), but for now at least this fixes the regression.
Fix #51194 This PR fixes a regression introduced in #49294, so I believe it should be backported to v1.10. In the current code, completion of `qux(foo, bar.` is detected by parsing `foo(qux, bar` as an incomplete expression, and then looking for the sub-expression to complete (here, `bar.`). This approach fails however for infix calls, since completing `foo + bar.` starts by parsing `foo + bar`, which is a complete call expression, and so the code behaves as if completing `(foo + bar).` instead of `bar.`. This leads to the current problematic behaviour: ```julia julia> Complex(1, 3) + (4//5).#TAB im re ``` which would be correct for `(Complex(1, 3) + (4//5)).#TAB`, but here we expect ```julia julia> Complex(1, 3) + (4//5).#TAB den num ``` This PR fixes that by trying to detect infix calls. In the long term, all this ad-hoc and probably somewhat wrong string processing should be replaced by proper use of `JuliaSyntax` (as mentioned in #49294 (comment), #50817 (comment) and probably other places), but for now at least this fixes the regression. (cherry picked from commit e949236)
I've added a plot to the end of the initial message that people subscribed to this issue may find of interest, I've also plopped it in a zulip thread. |
From slack, Ruby's interactive REPL has had a fun update that we might want to look at in this effort: https://railsatscale.com/2023-12-19-irb-for-ruby-3-3/ |
Thanks to a bout of recent merging, this effort seems to be lurching forwards again 😀 |
I'm starting an effort to provide a fresh take on |
I've ended up on a path to improve the REPL experience in a few ways, and thought I'd actually write up the overall plan.
Markdown.MD
Styled markdown, with a few tweaks #51928REPL
stdlib (see Upgradable stdlibs #50697)Here's the vision for the REPL I currently have in mind:
GraphViz code
The text was updated successfully, but these errors were encountered: