我试图让Julia REPL在崇高的文本中工作。但是,在尝试这样做时,我在朱莉亚方面遇到了一些问题。基本上,我的嵌入式julia REPL可以工作,但是不会显示交互式元素(例如提示符)。我出于各种原因对使用Sublime-IJulia不感兴趣。
当我从xterm运行时,我的REPL工作正常。
据我所知,我需要找到一种让Julia使用基本REPL的方法,当我从崇高中运行它时,我不知道该怎么做。
从xterm运行Base.active_repl
会给我以下输出:
LineEditREPL(
TTYTerminal("xterm-256color",TTY(open, 0 bytes waiting),TTY(open, 0 bytes waiting),TTY(open, 0 bytes waiting)),
true,
"\e[1m\e[32m",
"\e[1m","\e[1m",
"\e[1m\e[31m",
"\e[1m\e[33m",
false,
false,
false,
true,
false,
nothing,
ModalInterface(TextInterface["Prompt(\"julia> \",...)","Prompt(\"shell> \",...)","Prompt(\"help?> \",...)",HistoryPrompt{REPLHistoryProvider}(REPLHistoryProvider(String["5","exit","exit()","Pkg.status()","Pkg.add(\"ZMQ\")","Pkg.add(\"IJulia\")","Pkg.status()","Pkg.remove(\"IJulia\")","Pkg.rm(\"IJulia\")","Pkg.status()" … "import REPL","import Base..REPL","Base.BasicRepl","Base.BasicREPL","Base.REPL","Base.REPL.BasicREPL","Base.active_repl = Base.REPL.BasicREPL()","Base.active_repl","exit()","Base.active_repl"],IOStream(<file .julia_history>),62,-1,IOBuffer(data=Uint8[...], readable=true, writable=true, seekable=true, append=false, size=0, maxsize=Inf, ptr=1, mark=-1),"Prompt(\"julia> \",...)",[:help=>"Prompt(\"help?> \",...)",:shell=>"Prompt(\"shell> \",...)",:julia=>"Prompt(\"julia> \",...)"],[:julia,:julia,:julia,:julia,:julia,:julia,:julia,:julia,:julia,:julia … :julia,:julia,:julia,:julia,:julia,:julia,:julia,:julia,:julia,:julia]),LatexCompletions(),(anonymous function))]),
REPLBackendRef(RemoteRef(1,1,0),RemoteRef(1,1,1)))
从SublimeRepl运行它会返回以下错误:ERROR: active_repl not defined
。
所以简而言之,是否有某种方法可以让我编辑julia从sublime运行时启动的REPL类型?如果可以,我需要使用哪种类型的REPL?
答案 0 :(得分:1)
我在reddit上发现了一段时间的解决方法:https://www.reddit.com/r/SublimeText/comments/5jtnj7/sublimerepl_is_it_possible_to_mimic_commandline/
特别是:
找到一个(真的)hacky解决方案来查看
julia>
提示!在
Preferences > Browse Packages > SublimeREPL/sublimerepl.py
中,添加else:
语句handle_repl_packet()
下的这两行:if self.repl.name() == 'julia' : self.write_prompt('julia>')
为了保证,整个方法将如下所示:
def handle_repl_packet(self, packet): if self.repl.apiv2: for opcode, data in packet: if opcode == 'output': self.write(data) elif opcode == 'prompt': self.write_prompt(data) elif opcode == 'highlight': a, b = data regions = self._view.get_regions('sublimerepl') regions.append(sublime.Region(a, b)) self._view.add_regions('sublimerepl', regions, 'invalid', '', sublime.DRAW_EMPTY | sublime.DRAW_OUTLINED) else: print('SublimeREPL: unknown REPL opcode: ' + opcode) else: if self.repl.name() == 'julia' : self.write_prompt('julia>') self.write(packet)
这在第一行失败了 - 我会看看能不能解决这个问题。
编辑:我没有提到我之前已经改变了sublimerepl.py
如此处所述:SublimeREPL's Slow Printing/Freezing - A Solution。 根据我的经验,它使SublimeREPL的打印速度更快......而且 需要使此julia>
修复按原样运行。
我从未找到过更强大的解决方案。