對於AuthoringSink錯誤列表問題,我在我的語言服務中使用此行爲。在ParseSource中,ParseRequest類有一個AuthoringSink。如果你想在解析器的行爲之外工作,你也可以創建一個新的ErrorListProvider。這裏是一些示例代碼:
error_list = new ErrorListProvider(this.Site);
error_list.ProviderName = "MyLanguageService Errors";
error_list.ProviderGuid = new Guid(this.errorlistGUIDstring.);
}
ErrorTask task = new ErrorTask();
task.Document = filename;
task.CanDelete = true;
task.Category = TaskCategory.CodeSense;
task.Column = column;
task.Line = line;
task.Text = message;
task.ErrorCategory = TaskErrorCategory.Error;
task.Navigate += NavigateToParseError;
error_list.Tasks.Add(task);
我希望這是有幫助的。
按需應該被解僱每次有命令,在你的MYSOURCE類,你可以做這樣的事情(從工作中拉)時間:
public override void OnCommand(IVsTextView textView, VsCommands2K command, char ch)
{
if (textView == null || this.LanguageService == null
|| !this.LanguageService.Preferences.EnableCodeSense)
return;
if (command == Microsoft.VisualStudio.VSConstants.VSStd2KCmdID.TYPECHAR)
{
if (char.IsLetterOrDigit(ch))
{
//do something cool
}
}
base.OnCommand(textView, command, ch);
}
如果不行仔細檢查CodeSense =設置LanguageService包時,您的ProvideLanguageService屬性爲true。 LanguageService中很多很酷的功能需要正確打開這些屬性。有些甚至給予免費的酷行爲!
另一件需要注意的事情是,根據我的經驗,某些行爲(如着色器)在蜂房中無法正常工作。我不認爲這些是給我帶來麻煩的,但是我在幾年前實施了這些,所以我主要只是回顧舊代碼。
請注意,對於面向Visual Studio 2010及更新版本的擴展,MPF語言服務已過時。如果可能的話,你應該考慮使用新的MEF接口(除非你需要定位Visual Studio 2008或更早的版本)。 – 2014-03-26 12:50:06