public InjectedHlslTypingAssist( Lifetime lifetime, [NotNull] ISolution solution, [NotNull] IPsiServices psiServices, [NotNull] ICommandProcessor commandProcessor, [NotNull] ISettingsStore settingsStore, [NotNull] RunsProducts.ProductConfigurations productConfigurations, [NotNull] CachingLexerService cachingLexerService, [NotNull] ITypingAssistManager typingAssistManager, [NotNull] IExternalIntellisenseHost externalIntellisenseHost, [NotNull] SkippingTypingAssist skippingTypingAssist, [NotNull] LastTypingAction lastTypingAssistAction, [NotNull] InjectedHlslDummyFormatter dummyFormatter, [NotNull] StructuralRemoveManager structuralRemoveManager) : base(solution, settingsStore, cachingLexerService, commandProcessor, psiServices, externalIntellisenseHost, skippingTypingAssist, lastTypingAssistAction, structuralRemoveManager) { myCachingLexerService = cachingLexerService; myDummyFormatter = dummyFormatter; var braceHandler = new InjectedHlslBraceHandler(this, dummyFormatter, false, productConfigurations.IsInternalMode()); var quoteHandler = new CppQuoteHandler <ShaderLabLanguage>(this); var deleteHandler = new CppDeleteHandler <ShaderLabLanguage>(this, dummyFormatter); typingAssistManager.AddTypingHandler(lifetime, '{', this, c => ExecuteTypingInCppContextOnly(c, braceHandler.HandleLeftBraceTyped), IsTypingHandlerAvailable); typingAssistManager.AddTypingHandler(lifetime, '}', this, c => ExecuteTypingInCppContextOnly(c, braceHandler.HandleRightBraceTyped), IsTypingHandlerAvailable); typingAssistManager.AddTypingHandler(lifetime, '(', this, c => ExecuteTypingInCppContextOnly(c, braceHandler.HandleLeftBracketOrParenthTyped), IsTypingSmartParenthesisHandlerAvailable); typingAssistManager.AddTypingHandler(lifetime, '<', this, c => ExecuteTypingInCppContextOnly(c, braceHandler.HandleLTTyped), IsTypingSmartParenthesisHandlerAvailable); typingAssistManager.AddTypingHandler(lifetime, '>', this, c => ExecuteTypingInCppContextOnly(c, braceHandler.HandleRightBracketTyped), IsTypingSmartParenthesisHandlerAvailable); typingAssistManager.AddTypingHandler(lifetime, '[', this, c => ExecuteTypingInCppContextOnly(c, braceHandler.HandleLeftBracketOrParenthTyped), IsTypingSmartParenthesisHandlerAvailable); typingAssistManager.AddTypingHandler(lifetime, ']', this, c => ExecuteTypingInCppContextOnly(c, braceHandler.HandleRightBracketTyped), IsTypingSmartParenthesisHandlerAvailable); typingAssistManager.AddTypingHandler(lifetime, ')', this, c => ExecuteTypingInCppContextOnly(c, braceHandler.HandleRightBracketTyped), IsTypingSmartParenthesisHandlerAvailable); typingAssistManager.AddTypingHandler(lifetime, '"', this, c => ExecuteTypingInCppContextOnly(c, quoteHandler.HandleQuoteTyped), IsTypingSmartParenthesisHandlerAvailable); typingAssistManager.AddTypingHandler(lifetime, '\'', this, c => ExecuteTypingInCppContextOnly(c, quoteHandler.HandleQuoteTyped), IsTypingSmartParenthesisHandlerAvailable); typingAssistManager.AddTypingHandler(lifetime, ';', this, c => ExecuteTypingInCppContextOnly(c, braceHandler.HandleSemicolonTyped), IsCorrectCommonTyposAvailable); typingAssistManager.AddTypingHandler(lifetime, ':', this, c => ExecuteTypingInCppContextOnly(c, braceHandler.HandleColonTyped), IsTypingHandlerAvailable); typingAssistManager.AddTypingHandler(lifetime, '*', this, c => ExecuteTypingInCppContextOnly(c, braceHandler.HandleStarTyped), IsCorrectCommonTyposAvailable); typingAssistManager.AddActionHandler(lifetime, TextControlActions.ActionIds.Backspace, this, c => ExecuteActionInCppContextOnly(c, deleteHandler.HandleBackspacePressed), IsActionHandlerAvailable); typingAssistManager.AddActionHandler(lifetime, TextControlActions.ActionIds.Enter, this, c => ExecuteActionInCppContextOnly(c, braceHandler.HandleEnterTyped), IsActionHandlerAvailable); typingAssistManager.AddActionHandler(lifetime, EditorStartNewLineBeforeAction.ACTION_ID, this, c => ExecuteActionInCppContextOnly(c, braceHandler.HandleStartNewLineBeforePressed), IsActionHandlerAvailable); }
public InjectedHlslTypingAssist( Lifetime lifetime, [NotNull] ISolution solution, [NotNull] IPsiServices psiServices, [NotNull] ICommandProcessor commandProcessor, [NotNull] ISettingsStore settingsStore, [NotNull] RunsProducts.ProductConfigurations productConfigurations, [NotNull] CachingLexerService cachingLexerService, [NotNull] ITypingAssistManager typingAssistManager, [NotNull] IExternalIntellisenseHost externalIntellisenseHost, [NotNull] SkippingTypingAssist skippingTypingAssist, [NotNull] LastTypingAssistAction lastTypingAssistAction, [NotNull] HlslInShaderLabDummyFormatter inShaderLabDummyFormatter) : base(solution, settingsStore, cachingLexerService, commandProcessor, psiServices, externalIntellisenseHost, skippingTypingAssist, lastTypingAssistAction) { myInShaderLabDummyFormatter = inShaderLabDummyFormatter; var braceHandler = new InjectedHlslBraceHandler(this, inShaderLabDummyFormatter, false, productConfigurations.IsInternalMode()); var quoteHandler = new CppQuoteHandler <ShaderLabLanguage>(this); var deleteHandler = new CppDeleteHandler <ShaderLabLanguage>(this, inShaderLabDummyFormatter); typingAssistManager.AddTypingHandler(lifetime, '{', this, c => WrapCppAction(c, braceHandler.HandleLeftBraceTyped), IsTypingHandlerAvailable); typingAssistManager.AddTypingHandler(lifetime, '}', this, c => WrapCppAction(c, braceHandler.HandleRightBraceTyped), IsTypingHandlerAvailable); typingAssistManager.AddTypingHandler(lifetime, '(', this, c => WrapCppAction(c, braceHandler.HandleLeftBracketOrParenthTyped), IsTypingSmartParenthesisHandlerAvailable); typingAssistManager.AddTypingHandler(lifetime, '<', this, c => WrapCppAction(c, braceHandler.HandleLTTyped), IsTypingSmartParenthesisHandlerAvailable); typingAssistManager.AddTypingHandler(lifetime, '>', this, c => WrapCppAction(c, braceHandler.HandleRightBracketTyped), IsTypingSmartParenthesisHandlerAvailable); typingAssistManager.AddTypingHandler(lifetime, '[', this, c => WrapCppAction(c, braceHandler.HandleLeftBracketOrParenthTyped), IsTypingSmartParenthesisHandlerAvailable); typingAssistManager.AddTypingHandler(lifetime, ']', this, c => WrapCppAction(c, braceHandler.HandleRightBracketTyped), IsTypingSmartParenthesisHandlerAvailable); typingAssistManager.AddTypingHandler(lifetime, ')', this, c => WrapCppAction(c, braceHandler.HandleRightBracketTyped), IsTypingSmartParenthesisHandlerAvailable); typingAssistManager.AddTypingHandler(lifetime, '"', this, c => WrapCppAction(c, quoteHandler.HandleQuoteTyped), IsTypingSmartParenthesisHandlerAvailable); typingAssistManager.AddTypingHandler(lifetime, '\'', this, c => WrapCppAction(c, quoteHandler.HandleQuoteTyped), IsTypingSmartParenthesisHandlerAvailable); typingAssistManager.AddTypingHandler(lifetime, ';', this, c => WrapCppAction(c, braceHandler.HandleSemicolonTyped), IsCorrectCommonTyposAvailable); typingAssistManager.AddTypingHandler(lifetime, ':', this, c => WrapCppAction(c, braceHandler.HandleColonTyped), IsTypingHandlerAvailable); typingAssistManager.AddTypingHandler(lifetime, '*', this, c => WrapCppAction(c, braceHandler.HandleStarTyped), IsCorrectCommonTyposAvailable); // TODO: # typing should respect ShaderLabIndent // typingAssistManager.AddTypingHandler(lifetime, '#', this, c => WrapCppAction(c, braceHandler.HandleSharpTyped), // IsCorrectCommonTyposAvailable); typingAssistManager.AddActionHandler(lifetime, TextControlActions.ActionIds.Backspace, this, c => WrapAction(c, deleteHandler.HandleBackspacePressed), IsActionHandlerAvailable); typingAssistManager.AddActionHandler(lifetime, TextControlActions.ActionIds.Enter, this, c => WrapAction(c, braceHandler.HandleEnterTyped), IsActionHandlerAvailable); typingAssistManager.AddActionHandler(lifetime, TextControlActions.ActionIds.Tab, this, HandleTabPressed, IsActionHandlerAvailable); typingAssistManager.AddActionHandler(lifetime, TextControlActions.ActionIds.TabLeft, this, HandleTabLeftPressed, IsActionHandlerAvailable); typingAssistManager.AddActionHandler(lifetime, EditorStartNewLineBeforeAction.ACTION_ID, this, c => WrapAction(c, braceHandler.HandleStartNewLineBeforePressed), IsActionHandlerAvailable); }