我想創建一個處理多語言內容類型的Visual Studio擴展。很像mvc模板和Django或ASP.NET,其中某些代碼的一部分是用另一種語言編寫的。如何在不創建編輯器實例的情況下在MEF中使用IProjectionBuffer?
我知道我應該使用Projection,並且我已經檢查過Django for Visual Studio extension,但是那裏的解決方案包括創建一個語言服務以及創建與代碼編輯器相關的所有零件。在這裏,我試圖通過使用MEF來實現相同的目標。
我知道,你可以使用IProjectionBuffer CreateProjectionBuffer()
創建的投影,但問題是如何以取代目前的TextBuffer與所生成的一個,當是做的最好時機。
同樣可以預期,如果他指定類型的基極定義「投影」是這樣的:
[Export]
[Name("Whatever")]
[BaseDefinition("code")]
[BaseDefinition("projection")]
internal static ContentTypeDefinition WhateverContentType = null;
所接收TextBuffer在提供商是IProjectionBuffer
型的(所有IProjectionBuffer從ITextBuffer繼承之後)。這是而不是,似乎投影基地定義沒有任何效果。
所以,如果我要改寫在tldr版本我的問題:
如何以及何時你申請的IProjectionBuffer當前視圖(使用MEF,並不會產生一個編輯器實例)?
是否有可能以某種方式添加到源緩衝區集合? – jwize 2014-04-13 05:52:45
您可以使用InsertSpans/RemoveSpans或其他內容添加/刪除單個跨度。源緩衝區是根據它自動計算的。如果您還有其他問題,最好從頭開始創建一個新問題。 – 2014-04-17 02:28:59