gpt4 book ai didi

python - 如果没有运行 REPL 并发送到 REPL,则启动 REPL 的快捷方式

转载 作者:太空宇宙 更新时间:2023-11-03 18:11:56 27 4
gpt4 key购买 nike

我想在 Sublime Text 中创建一个快捷方式来执行以下操作:

  • 如果 R 的 REPL 已打开,请将所选文本发送到此 REPL
  • 否则在新窗口中打开 R REPL 并将文本发送到此 REPL。

我正在使用 R-box。这个包有一个Python类RboxSendTextCommand,它使用命令repl_send

       external_id = self.view.scope_name(0).split(" ")[0].split(".", 1)[1] 
self.view.window().run_command("repl_send", {"external_id": external_id, "text": cmd})
return

当没有打开 REPL 时,这会引发错误“无法找到 `r` 的 REPL”。我已经尝试修改它

        try:
self.view.window().run_command("repl_send", {"external_id": external_id, "text": cmd})
except:
self.view.window().run_command("run_existing_window_command",{"id": "repl_r", "file": "config/R/Main.sublime-menu"})
self.view.window().run_command("repl_send", {"external_id": external_id, "text": cmd})
return
else:
self.view.window().run_command("repl_send", {"external_id": external_id, "text": cmd})
return

但是,当没有打开 REPL R 窗口时,会发生相同的错误。你知道该怎么做吗?我并不特别需要通过 R-box 脚本来做到这一点。

最佳答案

首先,从SublimeREPL源代码来看,如果没有REPL R运行,它只是打印一条错误消息。它不会抛出任何错误。所以 try... except... 在这里不起作用。

class ReplSend(sublime_plugin.TextCommand):
def run(self, edit, external_id, text, with_auto_postfix=True):
for rv in manager.find_repl(external_id):
...
else:
sublime.error_message("Cannot find REPL for '{}'".format(external_id))

不知道有没有更好的办法。但是,您可以通过 View 名称检测 REPL R。

    if App == "SublimeREPL":
external_id = self.view.scope_name(0).split(" ")[0].split(".", 1)[1]
current_window = self.view.window()
found = False
repl_name = "*REPL* [%s]" % external_id
for w in sublime.windows():
for v in w.views():
if v.name() == repl_name:
found = True
if not found:
current_window.run_command("run_existing_window_command",{"id": "repl_r", "file": "config/R/Main.sublime-menu"})
current_window.run_command("repl_send", {"external_id": external_id, "text": cmd})
return

在新窗口中打开 REPL:

    sublime.run_command("new_window")
created_window = sublime.active_window()
created_window.run_command("run_existing_window_command",{"id": "repl_r", "file": "config/R/Main.sublime-menu"})

关于python - 如果没有运行 REPL 并发送到 REPL,则启动 REPL 的快捷方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25775585/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com