我希望在Visual Studio中为自定义语言创建代码完成。我已经有了一些简单的编辑器交互代码,比如语法高亮和大括号匹配。现在我想转到代码完成。但是我遇到了一些问题 - 数据来源。
与C#等语言一样,我隐式地在多个文件之间共享代码。这意味着,为了编写完整的一个文件,我需要知道其他文件的内容。更具体地说,虽然我可以简单地遍历项目和项目项目并破解文件,但这是一个次优的解决方案。例如,我无法编写用户所做的完整未保存更改。另一方面,我已经做了很多处理工作,或者解析内容以填充用户的语法高亮请求等等,我不想复制那些工作。
如何访问项目中其他文件的内容,并获取他们的ITextBuffers,以便重新使用我已经完成的工作?
答案 0 :(得分:2)
为磁盘上存在但当前未在Visual Studio中打开的文件提供ITextBuffer
。可以使用ITextBuffer
为任意文件创建ITextDocumentFactoryService::CreateAndLoadDocument
的实例。这需要一个字符串,并将返回一个ITextDocument
实例,您可以从中访问ITextBuffer
。
要查找当前打开的文件的现有ITextBuffer
,您可以执行以下操作