Erlang和Elixir的彩色REPL贝壳

时间:2015-09-04 14:34:34

标签: erlang elixir erlang-shell

Learn some ErlangIEx如何着色REPL shell? kjell是一个稳定的替代品吗?

2 个答案:

答案 0 :(得分:4)

在LYSE中这样做的方法是使用一个名为highlight.js的javascript插件,所以LYSE实际上并没有这样做,你的浏览器就是这样。有很多主流(ish)语言的插件/模式可供highlight.js使用。如果网络是你感兴趣的,这是一种方法(除非用户不能使用JS或关闭它)。

这实际上并不是shell被突出显示,也不是在浏览器之外的任何地方都有用。我一直在想办法更普遍地做这件事,最初是在HTML和XML文档中插入静态格式(将其提供给文档,并且只要检测到/标记了它,就会以某种方式输出一个Erlang语法突出显示)。我还没有一个体面的项目可以发布这个(我的优先级列表atm非常低),但我可以指向你一些坚实的灵感方向:{{3}的来源}。

特别注意函数wx:demo。在那里,您将看到如何使用标记化例程为wx:demo应用程序中的源代码文本显示区域提供高亮提示。这可以为构建自己的源突出显示/显示实用程序提供坚实的基础。 (我认为这不是不可能的,考虑到今天常用的每个终端都正确地响应ANSI颜色代码,将一个插件写入直接突出显示终端输入的shell - 而不是说这个功能有一个很大的喧嚣时刻。)

编辑(由魔术奇迹狗Fred发表评论提示)

关于ANSI颜色代码的主题,如果这是您实际使用的颜色代码,它们很容易实现为您在终端中返回的任何字符串值的前置。终端转义它们,因此您不会看到字符,但会执行代码所代表的任何操作。没有终止(它不像一个包含文本的标记标记),并且通常没有“默认颜色可以返回”的概念(虽然telnet和终端模式有数千万亿的扩展,可以实现各种类似的废话这一点)。

基本着色的一个例子是demo:code_area/1的v0.1代码中的telcon:greet/0telcon:sys_help/0函数(以及其他一些地方 - 游戏中的着色是一种一个东西)。你看到的是每种颜色都有一个预建的列表,但是这可以用任何方式表示,这些值可以在字符串的前面获得这些值。 (我碰巧记得代码值序列,但不记得构成它们的字符;代码的下一个版本代表的方式有所不同。)这是指向ErlMUD和{{3}的链接}。玩转!它的讨厌的乐趣,1980年的风格!

哦,我差点忘了......如果你真的想要在没有像a list of ANSI color codes这样愚蠢的小孩玩具的情况下走下兔子洞来帮助你,请看看{{3 }}

答案 1 :(得分:2)

我不知道kjell是否是Erl的稳定替代品,但它不适用于IEx。

至于如何完成颜色;据我所知,它是用ANSI Escape Sequences完成的。