2

我有一个 jEdit BeanShell 宏,当我保存它们时,它通过 Maruku 运行我的 Markdown 文件:

if (buffer.getMode().toString().equals("markdown")) {
  cmd = "C:\\Ruby\\bin\\maruku.bat -o " + buffer.getDirectory() + buffer.getName().replaceAll("markdown$", "html") + " " + buffer.getPath(); 
  exec(cmd);
}

当 Markdown 文件有效时,这很有效。但是如果我犯了一个错误,jEdit 就会永远等待exec()“成功”的调用,它永远不会。发生这种情况时,我必须终止 jEdit 的javaw.exe进程并从命令行手动运行 Maruku 以发现错误,例如:

E:\docs>maruku mydoc.markdown

 ___________________________________________________________________________
| Maruku tells you:
+---------------------------------------------------------------------------
| Could not find ref_id = "17" for md_link(["17"],"17")
| Available refs are []
+---------------------------------------------------------------------------
!C:/Ruby/lib/ruby/gems/1.8/gems/maruku-0.6.0/lib/maruku/errors_management.rb:49:in `maruku_error'
!C:/Ruby/lib/ruby/gems/1.8/gems/maruku-0.6.0/lib/maruku/output/to_html.rb:716:in `to_html_link'
!C:/Ruby/lib/ruby/gems/1.8/gems/maruku-0.6.0/lib/maruku/output/to_html.rb:970:in `send'
!C:/Ruby/lib/ruby/gems/1.8/gems/maruku-0.6.0/lib/maruku/output/to_html.rb:970:in `array_to_html'
!C:/Ruby/lib/ruby/gems/1.8/gems/maruku-0.6.0/lib/maruku/output/to_html.rb:961:in `each'
\___________________________________________________________________________
Not creating a link for ref_id = "17".

然后我重新启动 jEdit,修复错误并重新保存文件,此时宏成功。

我怎样才能让我的宏更有弹性地要么帮助地死去(显示 Maruku 的错误输出),要么至少默默地死去,这样我就不必杀死 jEdit?

4

2 回答 2

0

我在宏中使用了一个稍微不同的调用来执行系统命令:

Runtime.getRuntime().exec("asdf");

当我运行它时,Jedit 会给我一个弹出窗口: <code>exec</code> 失败时的 Jedit 弹出窗口

我正在使用 JDK 1.6.0_26 运行 Jedit 4.4.1。

于 2012-07-10T20:42:14.610 回答
0

这里可能ErrorList涉及插件并发生死锁。该错误已修复,尽管该修复尚未发布。无论如何,在错误跟踪器中,您可能会找到解决问题的方法。

于 2012-09-18T06:30:55.853 回答