【问题标题】:Julia REPL in sublime text崇高文本中的 Julia REPL
【发布时间】:2015-04-27 12:40:38
【问题描述】:

我正在尝试让 Julia REPL 在崇高的文本中工作。但是,在尝试执行此操作时,我在 julia 方面遇到了一些问题。基本上,我嵌入的 julia REPL 可以工作,但没有显示交互式元素(例如提示)。由于各种原因,我对使用 Sublime-IJulia 不感兴趣。

当我从 xterm 运行时,我的 REPL 运行良好。

据我所知,当我从 sublime 运行它时,我需要想办法让 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

简而言之,有什么方法可以让我编辑当我从 sublime 运行 julia 时启动的 REPL 类型?如果可以,我需要使用哪种类型的 REPL?

【问题讨论】:

    标签: sublimetext sublimetext3 julia sublimerepl


    【解决方案1】:

    我不久前在 reddit 上发现了一个解决方法:https://www.reddit.com/r/SublimeText/comments/5jtnj7/sublimerepl_is_it_possible_to_mimic_commandline/

    特别是:

    找到了一个(真的)hacky 解决方案来查看julia&gt; 提示!

    Preferences &gt; Browse Packages &gt; SublimeREPL/sublimerepl.py 中,添加 handle_repl_packet()else:语句下的这两行:

    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&gt; 修复按原样工作。

    从那以后我还没有找到更强大的解决方案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-03
      • 2013-04-20
      • 2016-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多