public override CompletionRules GetRules() { var options = _workspace.Options; var enterRule = options.GetOption(CompletionOptions.EnterKeyBehavior, LanguageNames.CSharp); var snippetRule = options.GetOption(CompletionOptions.SnippetsBehavior, LanguageNames.CSharp); // Although EnterKeyBehavior is a per-language setting, the meaning of an unset setting (Default) differs between C# and VB // In C# the default means Never to maintain previous behavior if (enterRule == EnterKeyRule.Default) { enterRule = EnterKeyRule.Never; } if (snippetRule == SnippetsRule.Default) { snippetRule = SnippetsRule.AlwaysInclude; } // use interlocked + stored rules to reduce # of times this gets created when option is different than default var newRules = _latestRules.WithDefaultEnterKeyRule(enterRule) .WithSnippetsRule(snippetRule); Interlocked.Exchange(ref _latestRules, newRules); return(newRules); }
public override CompletionRules GetRules() { var options = _workspace.Options; var rule = options.GetOption(CSharpCompletionOptions.AddNewLineOnEnterAfterFullyTypedWord) ? EnterKeyRule.AfterFullyTypedWord : EnterKeyRule.Never; // use interlocked + stored rules to reduce # of times this gets created when option is different than default var newRules = _latestRules.WithDefaultEnterKeyRule(rule); Interlocked.Exchange(ref _latestRules, newRules); return(newRules); }