2011-12-20 4 views
15

WPF (.Net4) windows 응용 프로그램을위한 스크립팅 인터페이스 구현이 포함 된 프로젝트 작업 중입니다. 누구든지 선호하는 편집기를 제안 할 수 있다면 궁금합니다. AvalonEditScintillaNET. 하나 이상의 함정과 장점. C#과 IronPython을 스크립팅 언어로 지원해야합니다. (최소한 그것은 초기 계획이지만 우리는 그 중 하나를 최종 결정할 수 있습니다).ScintillaNET vs WPF 응용 프로그램 용 스크립팅 인터페이스를 제공하는 AvalonEdit

ScintillaNET의 단점 중 하나는 원시 (관리되지 않는) Scintilla를 관리하는 래퍼입니다. WPF4와 함께 사용하면 문제가 발생합니다.

모든 의견과 제안을 부탁드립니다.

+2

부후반, 결국 당신은 무엇에 정착 했습니까? (지금, 거의 2 년 후) – Goswin

+0

필자는 소스 코드에서 컴포넌트로 사용하지는 않지만, (AintonEdit을 기반으로하는'ScintillaNET'과'SharpDevelop'를 기반으로 한'QuickSharp'를 기반으로 한 두 제품을 대안의 경량 C# 편집기. Imo, 'SharpDevelop'는 더 많은 기능과 훨씬 더 쉽게 작업 할 수있었습니다. – nawfal

답변

22

이것은 편집기에서 구현할 기능의 수에 달려 있다고 생각합니다. 또한 그것을 확장하기 위해 얼마나 많은 노력을 기울이고 당신이 다루기를 원하는 학습 곡선이 얼마나되는지.

Win32를 대상으로하고 관리되지 않는 DLL에 신경 쓰지 않는다면 Scintilla.NET이 문제가되지 않을 것이라고 생각합니다. 또한 this 페이지에서 제안하는대로 쉽게 WPF에서 호스팅 할 수 있습니다.

필자는 신틸라가 AvalonEdit보다 성능이 뛰어나다 고 개인적으로 느꼈습니다. 또한 기본 편집기로 시작하는 것이 더 쉽고, 상자에서 많은 것을 제공합니다. 예를 들어, Scintilla는 코드를 상자 밖으로 접을 수 있습니다.

AvalonEdit을 사용하면 접기 전략을 작성하고 문서를 직접 구문 분석해야합니다. 이것은 아직 구현하지 않은 IronPython을 IronPython에 지원하기 위해 수행해야하는 작업입니다.

내가 불꽃에 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의 경우는 외부 하이 라이터를로드 할 수 파일을 보면 자세한 내용은 this 블로그 게시물을 볼 수 있습니다. 그래서 당신이 기본 (하이라이트, 파이썬 + C# 접기)을 원한다면 나의 결론은 신틸라가 더 쉽고 더 잘 수행된다는 것입니다. AvalonEdit을 사용하면 학습 곡선을 다룰 때 기꺼이 더 많은 것을 할 수 있습니다. 지금은 Scintilla를 안정적인 편집기로 사용하고 Avalon을 개념 증명으로 실험하고 있습니다. 아마도 나는 편집자에 대해 더 많은 것을 배울 때 새로운 의견을 형성 할 것입니다.

행운을 빌어 요.

+0

감사합니다. Andre. 이것은 매우 도움이됩니다 – Bhuvan

+6

@Andre, 당신은 여전히 ​​오늘 (거의 2 년 후) 같은 답장을 해 주시겠습니까? – Goswin

+0

그래도 @ Goswin의 질문에 대한 답변을 보내고 싶습니다. – gideon