KristofferC / OhMyREPL.jl

Syntax highlighting and other enhancements for the Julia REPL
https://kristofferc.github.io/OhMyREPL.jl/latest/
Other
768 stars 60 forks source link

Tab completion menu looks boring #278

Open eschnett opened 2 years ago

eschnett commented 2 years ago

OhMyREPL nicely colours the input I type. However, when I hit the "tab" key, then it opens a large menu showing previous inputs that is all black-and-white. That is confusing (it breaks my expectations), and also difficult to read (since I might see 50 lines of monotonous letters), making it difficult to choose the line I want (see below).

It would be nice if OhMyREPL coloured the output here.

JuliaFormatter.format_text(code) |> print
  JuliaFormatter.format("src/jl/AbstractSphericalHarmonics.jl")
  JuliaFormatter.format("src/jl/SSHT.jl")
  JuliaFormatter.format("/tmp/omega.c")
  JuliaFormatter.format("/tmp/omega.jl")
  JuliaFormatter.format("src/jl/KorzyńskiSpin.jl")
  JuliaFormatter.format("src/jl/GPUIndexSpaces.jl")
  JuliaFormatter.format("src/jl/GridFunctions.jl")
  JuliaFormatter.format("src/jl/FastBigInts.jl")
  JuliaFormatter.format("src/jl/DifferentialForms.jl")
  JuliaFormatter.format("src/jl/VaidyaMetric.jl")
  mqpc[0].forms
  evaluate(mqpc[0].forms[1], xs[1])
  evaluate(mqpc[0].forms[1], x) for x in xs)
  [evaluate(mqpc[0].forms[1], x) for x in xs]
  [evaluate(mqpc[0].forms[2], x) for x in xs]
  [evaluate(mqpc[0].forms[3], x) for x in xs]
  mqpc[0].forms[3]
  pb = position_basisvectors(mqpc[0].forms, xs, fs)
  pb2 = position_basisvectors(mqpc[2].forms, xs1, fs1)
  pb2 = position_basisvectors(mqpc[2].forms, xs2, fs2)
  pb1 = position_basisvectors(mqpc[1].forms, xs1, fs1)
  pb10 = position_basisvectors(mqpc[1].forms, xs10, cs10, fs10)
  pb20 = position_basisvectors(mqpc[2].forms, xs20, cs20, fs20)
  pb00 = position_basisvectors(mqpdc[(0,0)].forms, xs00, cs00, fs00)
  pb10 = position_basisvectors(mqpdc[(1,0)].forms, xs10, cs10, fs10)
  pb20 = position_basisvectors(mqpdc[(2,0)].forms, xs20, cs20, fs20)
  mqpdc[(1,1)].forms
  pb11 = position_basisvectors(mqpdc[(1,1)].forms, xs11, cs11, fs11)
  pb21 = position_basisvectors(mqpdc[(2,0)].forms, xs21, cs21, fs21)
  pb21 = position_basisvectors(mqpdc[(2,1)].forms, xs21, cs21, fs21)
  pb22 = position_basisvectors(mqpdc[(2,2)].forms, xs22, cs22, fs22)
  deriv(mqpc[0].forms[1])
  deriv(mqpc[0].forms[1]) |> iszero
  deriv(mqpc[0].forms[1]) ⋅ mqpc[1]
  basisvector_coeff(mqpc[1], deriv(mqpc[0].forms[1]))
  pb0 = position_basisvectors(mqpc[0].forms, xs0, cs0, fs0)
  pb1 = position_basisvectors(mqpc[1].forms, xs1, cs1, fs1)
  pb2 = position_basisvectors(mqpc[2].forms, xs2, cs2, fs2)
  JuliaFormatter.format("src/jl/SimplexPoly.jl")
  JuliaFormatter.format("/Users/eschnett/Cactus/arrangements/CarpetX/Z4c/par/benchmark-submit.jl")
  JuliaFormatter.format("/Users/eschnett/Cactus/arrangements/CarpetX/Z4c/par/BenchmarkPlots")
  JuliaFormatter.format("/Users/eschnett/src/jl/Delaunay.jl")
  JuliaFormatter.format("/Users/eschnett/Cactus/repos/cactusamrex/AHFinder/jl/ahfinder1d.jl")
  JuliaFormatter.format("/Users/eschnett/Cactus/repos/cactusamrex/AHFinder")
  JuliaFormatter.format("/Users/eschnett/src/jl/GPUIndexSpaces.jl")
  JuliaFormatter.format("/Users/eschnett/src/jl/KorzyńskiSpin.jl")
  JuliaFormatter.format("/Users/eschnett/src/jl/SymmetricArrays")
  JuliaFormatter.format("/Users/eschnett/src/jl/TanhSinhQuadrature")
  JuliaFormatter.format("/Users/eschnett/src/jl/LargeFloats")
  JuliaFormatter.format("src/jl/Compose.jl")
  JuliaFormatter.format("/Users/eschnett/src/jl/ScalarSelfForce")
  JuliaFormatter.format("/Users/eschnett/src/jl/SparseGridQuadrature")
  JuliaFormatter.format("/tmp/jl.jl")
  JuliaFormatter.format("/Users/eschnett/Cactus/repos/cactusamrex/BenchmarkPlots")
  JuliaFormatter.format("/Users/eschnett/src/jl/Compose.jl")
  JuliaFormatter.format("/Users/eschnett/src/jl/ArrayTests")
  JuliaFormatter.format_text("f(::T) where T end")
  JuliaFormatter.format_text("f(::T) where T; end")
  JuliaFormatter.format_text("f(::T) where T\nend")
  JuliaFormatter.format_text("f(::T) where T = 0")
  JuliaFormatter.format_text("Union{A{X} where X}")
  JuliaFormatter.format_text("T = Union{A{X} where X}")
  JuliaFormatter.format_text("X = Union{A{T} where T}")
  JuliaFormatter.format("/Users/eschnett/src/jl/LinearAlgebraTests")
> JuliaFormatter.format("/Users/eschnett/src/jl/NullWaveToy")
  514/17645 (0)
> .form
KristofferC commented 2 years ago

We call fzf to do this fuzzy finding in the REPL history. With the --preview option it should be possible to show a full view of the text to the right, similar to:

gnome-shell-screenshot-gjrzhx

(fzf --preview 'bat --style=numbers --color=always --line-range :500 {}')