Open
Description
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.
- Wait for JuliaSyntax to be merged Enable JuliaSyntax.jl as the default Julia parser #46372
- Get StyledStrings capabilities into Base AnnotatedStrings, and a string styling stdlib #49586
- Prerequisite: Terminfo parser #50797
- Write docs, tests, ...
- Start applying StyledStrings across the Julia codebase
- Integrate with Logging: Allow AnnotatedStrings in log messages #51802
- Implement a syntax highlighter: Introduce new syntax highlighting stdlib #51810
- Revamp the display of
Markdown.MD
Styled markdown, with a few tweaks #51928
- Free the
REPL
stdlib (see Upgradable stdlibs #50697) - Revamp TerminalMenus Improving TerminalMenus #48381
- Util for highlighting Julia code: Introduce new syntax highlighting stdlib #51810
- Can be applied to: Markdown code blocks, history selection, REPL itself
- Improved history selection (also from my Replete.jl project) #51874
- Investigate in-REPL syntax highlighting
- Investigate nicer REPL completion, and see if it can be done based on the JuliaSyntax parser
Here's the vision for the REPL I currently have in mind:
GraphViz code
digraph {
graph [bgcolor="transparent"];
node [shape="underline" penwidth="2" style="rounded,filled" fillcolor="#efefef" color="#c9c9c9" fontcolor="#000000" fontname="Alegreya Sans"];
edge [color="#aaaaaa" penwidth="1.2" fontname="Alegreya Sans"]
rankdir = "LR"
// Merged
node [color="#a371f7"];
"#46372 (JuliaSyntax)"
"#50797 (Terminfo parser)"
"#49583 (AnnotatedStrings + StyledStrings)"
"StyledStrings#6 (Legacy support)"
"StyledStrings#3 (Precompile fix)"
"#51867 (move banner function)"
"ColorTypes.jl#293 (convert to SimpleColor)"
"#51806 (Improved annotation *-concat)"
"#51810 (JuliaSyntaxHighlighting)"
"#51807 (AnnotatedIOBuffer)"
"StyledStrings#12 (printstyled specialisation)"
"#51869 (load StyledStrings in REPL)"
"#X Merged"
// Pending
node [color="#3fb950"];
"#51802 (AnnotatedStrings in log messages)"
"#51816 (Themable stacktraces)"
"StyledStrings#36 (Themable stacktraces)"
"#51829 (StyledStrings for Logging)"
"#51914 (Improved join method for AnnotatedStrings)"
"#51928 (StyledStrings for Markdown)"
"#51811 (Resizing tweaked banner)"
"#X Open"
// Draft
node [color="#6e7680"];
"#51887 (StyledStrings for REPL Prompts)"
"#X Draft"
// Conceptual
node [fillcolor="#fafafa" color="#dddddd" fontcolor="#444444"];
"#? Conceptual"
subgraph cluster_0 {
style=rounded
fillcolor="#ffffff"
color="#222222"
rankdir="LR"
"#? Conceptual" -> "#X Draft" -> "#X Open" -> "#X Merged"
}
"#50797 (Terminfo parser)" -> "#49583 (AnnotatedStrings + StyledStrings)"
"#49583 (AnnotatedStrings + StyledStrings)" -> "#51802 (AnnotatedStrings in log messages)"
"#49583 (AnnotatedStrings + StyledStrings)" -> "#51806 (Improved annotation *-concat)"
"#49583 (AnnotatedStrings + StyledStrings)" -> "#51807 (AnnotatedIOBuffer)"
"#49583 (AnnotatedStrings + StyledStrings)" -> "#51810 (JuliaSyntaxHighlighting)"
"#49583 (AnnotatedStrings + StyledStrings)" -> "ColorTypes.jl#293 (convert to SimpleColor)"
"#46372 (JuliaSyntax)" -> "#51810 (JuliaSyntaxHighlighting)"
"#46372 (JuliaSyntax)" -> "#??? (Prettier JuliaSyntax errors)"
"#49583 (AnnotatedStrings + StyledStrings)" -> "#??? (Prettier JuliaSyntax errors)"
"#51810 (JuliaSyntaxHighlighting)" -> "#??? (Prettier JuliaSyntax errors)"
"#51810 (JuliaSyntaxHighlighting)" -> "#51928 (StyledStrings for Markdown)"
"#51807 (AnnotatedIOBuffer)" -> "#51914 (Improved join method for AnnotatedStrings)"
"#51807 (AnnotatedIOBuffer)" -> "#51928 (StyledStrings for Markdown)"
"#51807 (AnnotatedIOBuffer)" -> "StyledStrings#12 (printstyled specialisation)"
"#51807 (AnnotatedIOBuffer)" -> "#??? (show/showerror with StyledStrings)"
"#??? (string similarity matcher in Base)" -> "#??? (More helpful error messages)"
"#??? (show/showerror with StyledStrings)" -> "#??? (More helpful error messages)"
"#49583 (AnnotatedStrings + StyledStrings)" -> "#51869 (load StyledStrings in REPL)"
"#51869 (load StyledStrings in REPL)" -> "#51811 (Resizing tweaked banner)"
"#51867 (move banner function)" -> "#51811 (Resizing tweaked banner)"
"#51811 (Resizing tweaked banner)" -> "#??? (Spiffed up banner)"
"#49583 (AnnotatedStrings + StyledStrings)" -> "#51816 (Themable stacktraces)"
"#51869 (load StyledStrings in REPL)" -> "#51816 (Themable stacktraces)"
"StyledStrings#36 (Themable stacktraces)" -> "#51816 (Themable stacktraces)"
"#49583 (AnnotatedStrings + StyledStrings)" -> "#51829 (StyledStrings for Logging)"
"#51869 (load StyledStrings in REPL)" -> "#51887 (StyledStrings for REPL Prompts)"
"#49583 (AnnotatedStrings + StyledStrings)" -> "#51887 (StyledStrings for REPL Prompts)"
"#49583 (AnnotatedStrings + StyledStrings)" -> "#??? (Deeper StyledStrings ↔ REPL integration)"
"#51869 (load StyledStrings in REPL)" -> "#??? (Deeper StyledStrings ↔ REPL integration)"
"#??? (Deeper StyledStrings ↔ REPL integration)" -> "#??? (REPL syntax highlighting)"
"#51810 (JuliaSyntaxHighlighting)" -> "#??? (REPL syntax highlighting)"
"#49583 (AnnotatedStrings + StyledStrings)" -> "StyledStrings#3 (Precompile fix)"
"#49583 (AnnotatedStrings + StyledStrings)" -> "StyledStrings#6 (Legacy support)"
"StyledStrings#6 (Legacy support)" -> "#51869 (load StyledStrings in REPL)"
"StyledStrings#6 (Legacy support)" -> "#51829 (StyledStrings for Logging)"
"StyledStrings#3 (Precompile fix)" -> "#51829 (StyledStrings for Logging)"
"#51869 (load StyledStrings in REPL)" -> "#51829 (StyledStrings for Logging)"
"#51869 (load StyledStrings in REPL)" -> "#51928 (StyledStrings for Markdown)"
"#51869 (load StyledStrings in REPL)" -> "#??? (StyledStrings for Pkg)"
"#??? (Basic terminal pager)" -> "#??? (Pageable help)"
"#??? (Resolution of [@ref] links)" -> "#??? (Interactively navigable docs)"
"#??? (Pageable help)" -> "#??? (Interactively navigable docs)"
"#51928 (StyledStrings for Markdown)" -> "#??? (Pageable help)"
"#??? (Deeper StyledStrings ↔ REPL integration)" -> "#??? (Basic terminal pager)"
"#??? (Deeper StyledStrings ↔ REPL integration)" -> "#??? (REPL menu revamp)"
"#??? (REPL menu revamp)" -> "#??? (Multi-modal menus)"
"#??? (REPL menu revamp)" -> "#??? (Interactive history search)"
"#51810 (JuliaSyntaxHighlighting)" -> "#??? (Interactive history search)"
}