2

Markdown ファイルを保存するときに Maruku を介して実行する jEdit BeanShell マクロがあります。

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

ErrorListここにプラグインが関与し、デッドロックが発生する可能性があります。バグは修正されていますが、修正プログラムはまだリリースされていません。とにかく、バグトラッカーで問題の回避策を見つけることができます。

于 2012-09-18T06:30:55.853 に答える
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 に答える