我正在爲Visual Studio中的自定義語言創建代碼完成。我已經有了一些簡單的編輯器交互的代碼,比如語法高亮和大括號匹配。現在我想轉到代碼完成。但是我遇到了一個小問題 - 數據源。Visual Studio擴展代碼完成 - 多個文件數據
就像在C#語言中一樣,我隱式地在多個文件之間共享代碼。這意味着,爲了編碼完成一個文件,我需要知道其他文件的內容。更具體地說,雖然我可以簡單地遍歷項目和項目項目並破解文件,但這是一個不理想的解決方案。例如,我將無法編寫完整的未保存的用戶所做的更改。另一方面,我已經做了大量的處理工作,或者解析內容以滿足用戶對語法突出顯示的要求,而且我也不想重複這些工作。
如何訪問項目中其他文件的內容並獲取其ITextBuffers,以便重新使用我已完成的工作?
如果我爲沒有打開的文件創建自己的TextBuffer,如果用戶試圖打開它們,IDE會重新使用它們嗎? – Puppy
另外,我正在查看IVsRunningDocumentTable的文檔,並且界面並不那麼相似。例如,我只能從GetDocumentInfo獲得一個IVsHierarchy。 – Puppy
@DeadMG我添加了示例代碼的鏈接,它向您展示瞭如何從'GetDocumentInfo'獲取'IVsTextLine'實例。我在飛行中輸入並忘記它在'IVsTextLines'的結構上存儲爲'object',並且需要一些施法魔法。 – JaredPar