Scintillanet是Windows Forms控件,包裝器和多功能scintilla源代碼編輯組件的綁定。
"As well as features found in standard text editing components, Scintilla includes features especially useful when editing and debugging source code. These include support for syntax styling, error indicators, code completion and call tips. The selection margin can contain markers like those used in debuggers to indicate breakpoints and the current line. Styling choices are more open than with many editors, allowing the use of proportional fonts, bold and italics, multiple foreground and background colours and多個字體。” - scintilla.org
Scintillanet也可以使用WindowsFormshost與WPF一起使用。
Scintillanet正在積極發展。如果您發現任何問題,或者只是有一個問題,請隨時在我們的GitHub頁面上使用這些問題。
可以從Nuget或發行頁面下載編譯的生產版本。
對於最新和最偉大的,您可以使用Visual Studio 2015從源構建主分支。
Github上存在著一個相當充滿活力的閃爍體社區。我們特別建議您查看以下項目:
在Wiki的用戶提交配方頁面中跟踪其他項目和用戶提取的代碼。
該項目是對Codeplex主持的Scintillanet項目的重寫,由我自己和其他人維護。在為該項目做出了多年的貢獻之後,我決定對我們創建的API進行不同的思考,並認為如果我願意回到空白的畫布,我可以做得更好。因此,這個項目是原始scintillanet的精神繼任者,但已從從頭開始寫。
Scintillanet歷史上遇到的問題之一是,本地scintilla控制在字節而不是角色上運行的事實。 Scintillanet的先前版本並未解釋這一點,當您處理Unicode時,一個字節並不總是等於一個字符。結果是一個API,有時是預期的字節偏移和其他時間預期的字符偏移。有時,事情會按預期工作,而其他時間會隨機失敗和外部異常。
不再。這種改寫的主要重點之一是使Scintillanet從頭開始了解Unicode。現在,每個API都像.NET開發人員的期望一樣,始終與基於字符的偏移和範圍一起使用。在內部,我們將字符映射到字節偏移(反之亦然),並為您完成所有翻譯,因此您無需擔心它。沒有更多的異常例外。沒有更多的混亂。沒有更多的痛苦。它只是有效的。
第二個最受歡迎的Scintillanet問題是混亂分發了Scintillanet DLL及其本地成分Scilexer DLL。 Scintillanet是一名包裝紙。沒有scilexer.dll包含核心閃爍功能的功能,那是什麼。作為本機組件,必須將32和64位版本的Windows分別編譯為scilexer.dll。因此,實際上是開發人員必須運送其應用程序的三個DLL。
這證明了一個痛點,因為開發人員通常不想分發這麼多庫,也不想將它們放在替代位置,這會破壞Pinvoke和Scintillanet使用的DLL加載機制。由於相同的原因,它還在視覺工作室的設計時間內引起頭痛。
要解決此scintillanet,現在在scintillanet dll中嵌入了32位和64位版本的scilexer.dll。您需要在一個庫中運行Scintillanet所需的一切。除了舒緩上面提到的痛苦之外,現在這使我們有可能創建一個scintillanet nuget軟件包。
重寫的另一個目標是接受原始的scintilla API,而不是在不應該或不可能的情況下嘗試將其脅到.NET風格的API。一個很好的例子是Scintillanet使用索引器訪問線路的方式,但不將其視為.NET集合。 Scintilla控件中的線路不是集合中的項目。沒有API可以添加,插入或刪除Scintilla中的一條線,因此我們不會嘗試在scintillanet中創建一條線。這些與.NET慣例的偏差很少見,但是這樣做是為了保留與託管包裝器相關的任何本地scintilla文檔,並避免試圖強迫原始API進入更熟悉的情況,這比有用更有害。
注意:這並不是說Scintillanet無法添加,插入或刪除線條。但是,這些操作是隨著文本更改而不是線路更改處理的。
我們的所有軟件包都包含完整的API文檔。此外,Wiki項目中還有大量文檔,該文檔具有用於常見任務和問題的食譜。如果您是Scintillanet的新手,那麼Wiki是一個開始的好地方。
正如Project Charter中所指出的那樣,已經付出了巨大的努力來保持Scintillanet API與本地Scintilla API組成。因此,本地的Scintilla文檔仍然是學習一些更深層次功能的寶貴資源。
一般而言,他們的API將以以下方式映射到我們的API:
SCI_GETTEXT和SCI_SETTEXT(value) ,將映射到類似命名的屬性(例如Text )。SCI_INDICSETFORE(indicatorNumber, ...)或SCI_STYLEGETSIZE(styleNumber, ...) ,將通過索引器(例如Indicators[0].ForeColor或Styles[0].Size 。天然的scintilla控制習慣將輸入值夾在可接受的範圍內,而不是拋出異常,因此我們將這種行為保留在scintillanet中。例如, GotoPosition方法需要一個字符position參數。如果該值小於零或超過文檔末尾,則將夾緊到0或TextLength ,而不是拋出OutOfRangeException 。這往往會導致較少的例外,但是相同的預期結果。
麻省理工學院許可證(MIT)
版權(c)2017,雅各布·斯盧塞(Jacob Slusser),https://github.com/jacobslusser
特此免費授予獲得此軟件副本和相關文檔文件副本(“軟件”)的任何人,以無限制處理該軟件,包括無限制的使用權,複製,複製,修改,合併,合併,發布,分發,分發,分發,訂婚,和/或允許軟件的副本,並允許對以下條件提供以下條件,以下是以下條件。
上述版權通知和此許可通知應包含在軟件的所有副本或大量部分中。
該軟件是“原樣”提供的,沒有任何形式的明示或暗示保證,包括但不限於適銷性,特定目的的適用性和非侵權的保證。在任何情況下,作者或版權持有人都不應對任何索賠,損害賠償或其他責任責任,無論是在合同,侵權的訴訟中還是其他責任,是由軟件,使用或與軟件中的使用或其他交易有關的。