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

showing a doc string in the help mode of the REPL may throw in highlighting on nightly Julia #57514

Closed
nsajko opened this issue Feb 24, 2025 · 1 comment
Labels
duplicate Indicates similar issues or pull requests markdown regression Regression in behavior compared to a previous version REPL Julia's REPL (Read Eval Print Loop)

Comments

@nsajko
Copy link
Contributor

nsajko commented Feb 24, 2025

Possible JuliaSyntaxHighlighting.jl bug, move if appropriate, cc @tecosaur

Showing the Base.showarg help throws:

help?> Base.showarg
[...]
  The default show printing would display this full type. However, the summary
  for SubArrays actually prints as

Error showing value of type Markdown.MD:
ERROR: MethodError: no method matching keys(::Nothing)
The function `keys` exists, but no method is defined for this combination of argument types.

Closest candidates are:
  keys(::Core.SimpleVector)
   @ Base essentials.jl:945
  keys(::Cmd)
   @ Base process.jl:716
  keys(::Base.TermInfo)
   @ Base terminfo.jl:232
  ...

Stacktrace:
  [1] pairs(collection::Nothing)
    @ Base ./abstractdict.jl:178
  [2] findfirst(testf::JuliaSyntaxHighlighting.var"#17#18", A::Nothing)
    @ Base ./array.jl:2433
  [3] _hl_annotations!(highlights::Vector{@NamedTuple{region::UnitRange{Int64}, label::Symbol, value}}, lineage::JuliaSyntaxHighlighting.GreenLineage, ctx::JuliaSyntaxHighlighting.HighlightContext{String}; syntax_errors::Bool)
    @ JuliaSyntaxHighlighting ~/tmp/jl/jl/nightly/assert/julia-7e6971024b/share/julia/stdlib/v1.13/JuliaSyntaxHighlighting/src/JuliaSyntaxHighlighting.jl:222
  [4] _hl_annotations!
    @ ~/tmp/jl/jl/nightly/assert/julia-7e6971024b/share/julia/stdlib/v1.13/JuliaSyntaxHighlighting/src/JuliaSyntaxHighlighting.jl:181 [inlined]
  [5] _hl_annotations!(highlights::Vector{@NamedTuple{region::UnitRange{Int64}, label::Symbol, value}}, lineage::JuliaSyntaxHighlighting.GreenLineage, ctx::JuliaSyntaxHighlighting.HighlightContext{String}; syntax_errors::Bool)
    @ JuliaSyntaxHighlighting ~/tmp/jl/jl/nightly/assert/julia-7e6971024b/share/julia/stdlib/v1.13/JuliaSyntaxHighlighting/src/JuliaSyntaxHighlighting.jl:343
  [6] _hl_annotations!
    @ ~/tmp/jl/jl/nightly/assert/julia-7e6971024b/share/julia/stdlib/v1.13/JuliaSyntaxHighlighting/src/JuliaSyntaxHighlighting.jl:181 [inlined]
  [7] _hl_annotations!(highlights::Vector{@NamedTuple{region::UnitRange{Int64}, label::Symbol, value}}, lineage::JuliaSyntaxHighlighting.GreenLineage, ctx::JuliaSyntaxHighlighting.HighlightContext{String}; syntax_errors::Bool)
    @ JuliaSyntaxHighlighting ~/tmp/jl/jl/nightly/assert/julia-7e6971024b/share/julia/stdlib/v1.13/JuliaSyntaxHighlighting/src/JuliaSyntaxHighlighting.jl:343
  [8] _hl_annotations!
    @ ~/tmp/jl/jl/nightly/assert/julia-7e6971024b/share/julia/stdlib/v1.13/JuliaSyntaxHighlighting/src/JuliaSyntaxHighlighting.jl:181 [inlined]
  [9] #_hl_annotations#10
    @ ~/tmp/jl/jl/nightly/assert/julia-7e6971024b/share/julia/stdlib/v1.13/JuliaSyntaxHighlighting/src/JuliaSyntaxHighlighting.jl:170 [inlined]
 [10] _hl_annotations
    @ ~/tmp/jl/jl/nightly/assert/julia-7e6971024b/share/julia/stdlib/v1.13/JuliaSyntaxHighlighting/src/JuliaSyntaxHighlighting.jl:167 [inlined]
 [11] highlight
    @ ~/tmp/jl/jl/nightly/assert/julia-7e6971024b/share/julia/stdlib/v1.13/JuliaSyntaxHighlighting/src/JuliaSyntaxHighlighting.jl:392 [inlined]
 [12] highlight
    @ ~/tmp/jl/jl/nightly/assert/julia-7e6971024b/share/julia/stdlib/v1.13/JuliaSyntaxHighlighting/src/JuliaSyntaxHighlighting.jl:383 [inlined]
 [13] term(io::IOContext{REPL.LimitIO{Base.TTY}}, md::Markdown.Code, columns::Int64)
    @ Markdown ~/tmp/jl/jl/nightly/assert/julia-7e6971024b/share/julia/stdlib/v1.13/Markdown/src/render/terminal/render.jl:120
 [14] term(io::IOContext{REPL.LimitIO{Base.TTY}}, content::Vector{Any}, cols::Int64)
    @ Markdown ~/tmp/jl/jl/nightly/assert/julia-7e6971024b/share/julia/stdlib/v1.13/Markdown/src/render/terminal/render.jl:10
 [15] term(io::IOContext{REPL.LimitIO{Base.TTY}}, md::Markdown.MD, columns::Int64)
    @ Markdown ~/tmp/jl/jl/nightly/assert/julia-7e6971024b/share/julia/stdlib/v1.13/Markdown/src/render/terminal/render.jl:18
 [16] term(io::IOContext{REPL.LimitIO{Base.TTY}}, content::Vector{Any}, cols::Int64)
    @ Markdown ~/tmp/jl/jl/nightly/assert/julia-7e6971024b/share/julia/stdlib/v1.13/Markdown/src/render/terminal/render.jl:13
 [17] term(io::IOContext{REPL.LimitIO{Base.TTY}}, md::Markdown.MD, columns::Int64)
    @ Markdown ~/tmp/jl/jl/nightly/assert/julia-7e6971024b/share/julia/stdlib/v1.13/Markdown/src/render/terminal/render.jl:18
 [18] term(io::IOContext{REPL.LimitIO{Base.TTY}}, content::Vector{Any}, cols::Int64)
    @ Markdown ~/tmp/jl/jl/nightly/assert/julia-7e6971024b/share/julia/stdlib/v1.13/Markdown/src/render/terminal/render.jl:13
 [19] term
    @ ~/tmp/jl/jl/nightly/assert/julia-7e6971024b/share/julia/stdlib/v1.13/Markdown/src/render/terminal/render.jl:18 [inlined]
 [20] term
    @ ~/tmp/jl/jl/nightly/assert/julia-7e6971024b/share/julia/stdlib/v1.13/Markdown/src/render/terminal/render.jl:17 [inlined]
 [21] show(io::IOContext{REPL.LimitIO{Base.TTY}}, ::MIME{Symbol("text/plain")}, md::Markdown.MD)
    @ Markdown ~/tmp/jl/jl/nightly/assert/julia-7e6971024b/share/julia/stdlib/v1.13/Markdown/src/render/terminal/render.jl:231
 [22] show_repl(io::IO, mime::MIME{Symbol("text/plain")}, x::Any)
    @ REPL ~/tmp/jl/jl/nightly/assert/julia-7e6971024b/share/julia/stdlib/v1.13/REPL/src/REPL.jl:574
 [23] show_limited(io::IO, mime::MIME, x::Any)
    @ REPL ~/tmp/jl/jl/nightly/assert/julia-7e6971024b/share/julia/stdlib/v1.13/REPL/src/REPL.jl:543
 [24] (::REPL.var"#display##0#display##1"{REPL.REPLDisplay{REPL.LineEditREPL}, MIME{Symbol("text/plain")}, Base.RefValue{Any}})(io::Any)
    @ REPL ~/tmp/jl/jl/nightly/assert/julia-7e6971024b/share/julia/stdlib/v1.13/REPL/src/REPL.jl:566
 [25] with_repl_linfo(f::Any, repl::REPL.LineEditREPL)
    @ REPL ~/tmp/jl/jl/nightly/assert/julia-7e6971024b/share/julia/stdlib/v1.13/REPL/src/REPL.jl:867
 [26] display(d::REPL.REPLDisplay, mime::MIME{Symbol("text/plain")}, x::Any)
    @ REPL ~/tmp/jl/jl/nightly/assert/julia-7e6971024b/share/julia/stdlib/v1.13/REPL/src/REPL.jl:552
 [27] display
    @ ~/tmp/jl/jl/nightly/assert/julia-7e6971024b/share/julia/stdlib/v1.13/REPL/src/REPL.jl:572 [inlined]
 [28] display(x::Any)
    @ Base.Multimedia ./multimedia.jl:340
 [29] #invokelatest#1
    @ ./essentials.jl:1057 [inlined]
 [30] invokelatest
    @ ./essentials.jl:1053 [inlined]
 [31] print_response(errio::IO, response::Any, show_value::Bool, have_color::Bool, specialdisplay::Union{Nothing, AbstractDisplay})
    @ REPL ~/tmp/jl/jl/nightly/assert/julia-7e6971024b/share/julia/stdlib/v1.13/REPL/src/REPL.jl:615
 [32] (::REPL.var"#print_response##0#print_response##1"{REPL.LineEditREPL, Pair{Any, Bool}, Bool, Bool})(io::Any)
    @ REPL ~/tmp/jl/jl/nightly/assert/julia-7e6971024b/share/julia/stdlib/v1.13/REPL/src/REPL.jl:584
 [33] with_repl_linfo(f::Any, repl::REPL.LineEditREPL)
    @ REPL ~/tmp/jl/jl/nightly/assert/julia-7e6971024b/share/julia/stdlib/v1.13/REPL/src/REPL.jl:867
 [34] print_response(repl::REPL.AbstractREPL, response::Any, show_value::Bool, have_color::Bool)
    @ REPL ~/tmp/jl/jl/nightly/assert/julia-7e6971024b/share/julia/stdlib/v1.13/REPL/src/REPL.jl:582
 [35] (::REPL.var"#do_respond#71"{Bool, Bool, REPL.var"#setup_interface##0#setup_interface##1"{REPL.LineEditREPL}, REPL.LineEditREPL, REPL.LineEdit.Prompt})(s::REPL.LineEdit.MIState, buf::Any, ok::Bool)
    @ REPL ~/tmp/jl/jl/nightly/assert/julia-7e6971024b/share/julia/stdlib/v1.13/REPL/src/REPL.jl:1209
 [36] #invokelatest#1
    @ ./essentials.jl:1057 [inlined]
 [37] invokelatest
    @ ./essentials.jl:1053 [inlined]
 [38] run_interface(terminal::REPL.Terminals.TextTerminal, m::REPL.LineEdit.ModalInterface, s::REPL.LineEdit.MIState)
    @ REPL.LineEdit ~/tmp/jl/jl/nightly/assert/julia-7e6971024b/share/julia/stdlib/v1.13/REPL/src/LineEdit.jl:2852
 [39] run_frontend(repl::REPL.LineEditREPL, backend::REPL.REPLBackendRef)
    @ REPL ~/tmp/jl/jl/nightly/assert/julia-7e6971024b/share/julia/stdlib/v1.13/REPL/src/REPL.jl:1680
 [40] (::REPL.var"#59#60"{REPL.LineEditREPL, REPL.REPLBackendRef})()
    @ REPL ~/tmp/jl/jl/nightly/assert/julia-7e6971024b/share/julia/stdlib/v1.13/REPL/src/REPL.jl:686
@nsajko nsajko added markdown regression Regression in behavior compared to a previous version REPL Julia's REPL (Read Eval Print Loop) labels Feb 24, 2025
@tecosaur
Copy link
Contributor

Yea, I've been needing to find the time to actually review a PR that will fix this along the way. Fingers crossed I'll actually be able to do this in the next day or few and not have a bunch of stuff come up ...again.

This was raised earlier in #57402, which I think this is a pretty clear duplicate of.

@nsajko nsajko added the duplicate Indicates similar issues or pull requests label Feb 24, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
duplicate Indicates similar issues or pull requests markdown regression Regression in behavior compared to a previous version REPL Julia's REPL (Read Eval Print Loop)
Projects
None yet
Development

No branches or pull requests

2 participants