【问题标题】:Change julia promt to include evalutation numbers更改 Julia 提示以包含评估编号
【发布时间】:2018-01-02 04:29:14
【问题描述】:

在 REPL 中调试或运行 julia 代码时,我通常会看到显示 ... at ./REPL[161]:12 [inlined]... 的错误消息。我猜数字161 表示REPL 中的161-th 评估。所以我的问题是我们能否在 julia 的提示符中显示这个数字,即julia [161]> 而不是julia>

【问题讨论】:

标签: julia prompt


【解决方案1】:

Julia 的优势之一是其超强的灵活性。这在 Julia 0.7(夜间版本)中非常容易。

julia> repl = Base.active_repl.interface.modes[1]
"Prompt(\"julia> \",...)"

julia> repl.prompt = () -> "julia[$(length(repl.hist.history) - repl.hist.start_idx + 1)] >"
#1 (generic function with 1 method)

julia[3] >

julia[3] >2
2

julia[4] >f = () -> error("e")
#3 (generic function with 1 method)

julia[5] >f()
ERROR: e
Stacktrace:
 [1] error at .\error.jl:33 [inlined]
 [2] (::getfield(, Symbol("##3#4")))() at .\REPL[4]:1
 [3] top-level scope

您只需将前两行放到您的~/.juliarc 上即可享受~

由于 julia 0.7 之后的 REPL 有几处更改,这些代码在旧版本中不起作用。

编辑:嗯,实际上需要更多的努力才能使其在.juliarc.jl 中工作。试试这个代码:

atreplinit() do repl
    repl.interface = Base.REPL.setup_interface(repl)
    repl = Base.active_repl.interface.modes[1]
    repl.prompt = () -> "julia[$(length(repl.hist.history) - repl.hist.start_idx + 1)] >"
end

【讨论】:

  • 我会将repl(它代表Prompt 类型)重命名为base_mode,以免将一个名称混合用于两种不同的含义/类型。 (不仅出于教学原因)
  • 酷!有相关文档的链接吗?
  • 太好了,谢谢!无论如何,julia 0.7 版本很快就会发布。
  • @Liso 是的,谢谢。在将代码放到.juliarc.jl 之前,我在编写代码时没有考虑名称
  • @daycaster 我在this code 中学习了REPL 的内容以及如何显示行号here
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多