16

WPF(.Net4)Windowsアプリケーション用のスクリプトインターフェイスの実装を含むプロジェクトに取り組んでいます。誰かが好みのエディター、AvalonEditScintillaNETを提案できるかどうか知りたいです。落とし穴と一方の他方に対する利点。スクリプト言語としてC#とIronPythonの両方をサポートする必要があります。(少なくともそれは最初の計画です。しかし、そのうちの1つを最終決定するかもしれません)。

ScintillaNETの欠点の1つは、ネイティブ(管理されていない)Scintillaの単なる管理されたラッパーであるということです。これは、WPF4で使用したときに問題を引き起こす可能性がありますか?

任意のポインタと提案をいただければ幸いです。

4

1 に答える 1

23

これは、エディターに実装する機能の数に依存すると思います。また、それを拡張するためにどれだけの労力を費やしても構わないと思っているか、そしてどれだけの学習曲線に対処しても構わないと思っているか。

Win32をターゲットにしていて、アンマネージdllを気にしないのであれば、Scintilla.NETは問題にならないだろうと思います。また、このページが示すように、WPFで簡単にホストできます。

個人的には、ScintillaはAvalonEditよりもパフォーマンスが優れていると感じました。また、基本的なエディターを使い始めるのも簡単で、箱から出してすぐに使えるものがたくさんあります。たとえば、Scintillaは箱から出してコードを折りたたむことができます。

AvalonEditを使用すると、折りたたみ戦略を作成し、ドキュメントを自分で解析する必要があります。これは、まだ実装していないAvalonEdit用のIronPythonをサポートするために私がしなければならなかったことです。

scintillaでIronPythonエディターをサポートするために必要なのは、検索パスのSciLexer.dllとScintilla.netアセンブリおよび次の構成だけでした。

private void Form1_Load(object sender, EventArgs e)
    {
        this.scintilla1 = new ScintillaNet.Scintilla();
        this.scintilla1.ConfigurationManager.Language = "python";
        this.scintilla1.Indentation.ShowGuides = true;
        this.scintilla1.Indentation.SmartIndentType = ScintillaNet.SmartIndent.Simple;
        this.scintilla1.Location = new System.Drawing.Point(0, 0);
        this.scintilla1.Margins.Margin0.Width = 40;
        this.scintilla1.Margins.Margin2.Width = 20;
        this.scintilla1.Name = "scintilla1";
        this.scintilla1.TabIndex = 4;
        this.scintilla1.Whitespace.Mode = ScintillaNet.WhitespaceMode.VisibleAfterIndent;
        this.scintilla1.Dock = DockStyle.Fill;
        this.Controls.Add(this.scintilla1);
    }

AvalonEditの場合、外部蛍光ペンファイルをロードする必要があります。詳細については、このブログ投稿を参照してください。したがって、基本(強調表示、python + c#の折りたたみ)が必要な場合、私の結論は、schintillaの方が簡単で、パフォーマンスが優れているということです。AvalonEditを使用すると、努力を惜しまず学習曲線に対処する意思がある場合、最終的にはより多くのことができる可能性があります。現在、私は安定したエディターとしてScintillaを使用しており、概念実証としてAvalonを実験しています。おそらく、私も編集者についてもっと学ぶにつれて、新しい意見を形成するでしょう。

幸運を

于 2012-01-03T11:29:16.940 に答える