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 を強制終了する必要がないようにするにはどうすればよいでしょうか?