mooeditのチューニング、バグの修正

最初の部分で mooeditのPerlソースの構文チェックとフォーマットが追加されました 。 最初のものに問題がなかった場合、フォーマット時に通知領域にエラーを表示することを拒否する必要がありました。 しかし、それ以降、 unstable-1.1.9xブランチに新しいバージョンが登場しました。 バージョン1.1.97-develでは、待望のコード折りたたみのための空白を除いて、特に不安定なものに気付きませんでした。 ただし、内部APIには少なくとも1つの素晴らしい変更があります。





以前は、ユーティリティの結果を表示する場所を選択することはできませんでした:エディターウィンドウ(フォーマットされたソース)または通知領域(エラーメッセージ)。 出力用のオブジェクトを取得できるようになりました。LuaとPythonのスクリプトのコードはまったく同じです。



obj = window.get_output() obj.clear() obj.set_filter_by_id("default") obj.write_with_filter("-,   ") window.present_output()
      
      







開始するには、 〜/ bin / perlsyntaxスクリプトを少し変更し 、それにリターンコードreturnを追加します。



 #!/usr/bin/perl use strict; die "Usage: $0 file\n" unless $ARGV[0]; my $out = `/usr/bin/perl -c $ARGV[0] 2>&1`; my $rc = ($out =~ s|^(.*) at (($ARGV[0]) line (\d+))(.*)$|$3:$4 $1$5|gm); print $out; exit $rc; # 0 -  
      
      







そして、ソースをフォーマットするためにスクリプトを修正します。



 filename = doc.get_filename() codefile = os.tmpname() rc = os.execute(string.format("/home/klopp/bin/perlsyntax \"%s\" > \"%s\" 2>&1",filename,codefile)) if rc == 0 then tidyfile = os.tmpname() os.execute(string.format("/usr/bin/perltidy -nsak=\"if elsif unless for while\" -pt=0 -i=4 -bl -vt=2 -vtc=2 -boc -st \"%s\" > \"%s\"",filename,tidyfile)) out = io.open(tidyfile,"r") doc.select_all() doc.replace_selected_text(out:read("*a")) doc.save() os.remove(tidyfile) else out = io.open(codefile,"r") err = string.format("Run syntax check!\n\n%s",out:read("*a")) o = window.get_output() o.clear() o.set_filter_by_id("default") o.write_with_filter(err) window.present_output() end os.remove(codefile)
      
      







これで、エラーが発生しても、エディターウィンドウのソースは変更されず、これらのエラーの出力が通知領域に表示されます。 さらに、エラーのある行をクリックすると、エディターウィンドウの同じ行に移動します。







ユーティリティ設定は次のとおりです。







さらに、エディターからスクリプトを直接実行するユーティリティを作成します。 もちろん、以前と同じように- / usr / bin / perl "$ DOC_PATH"を実行するだけです。 ただし、エラーが発生した場合、通知領域にクリック可能な出力は表示されません。 したがって、すべてがうまくいけば最初にソースをチェックします-スクリプトを実行し、エラーが修正されたメッセージを表示するかどうか。 これを行うには、次の内容で〜/ bin / perlrunを作成します。



 #!/bin/sh rc=`/home/klopp/bin/perlsyntax $1` if [ "$?" -eq 0 ] ; then /usr/bin/perl $1 else echo $rc fi
      
      







そして、次の設定でユーティリティに起動を書き込みます。







エディタの次のバージョンを待っています。おそらく何か他のものが表示されるでしょう:)



All Articles