/// <summary> /// This function is the callback used to execute the command when the menu item is clicked. /// See the constructor to see how the menu item is associated with this function using /// OleMenuCommandService service and MenuCommand class. /// </summary> /// <param name="sender">Event sender.</param> /// <param name="e">Event args.</param> private void MenuItemCallback(object sender, EventArgs e) { MenuCommand command = (MenuCommand)sender; bool newCheckedState = !command.Checked; // Dispatch the action switch (command.CommandID.ID) { case Constants.ToggleIndicatorMarginCmdId: UpdateSetting("TextEditor", "General", "MarginIndicatorBar", newCheckedState); break; case Constants.ToggleLineNumbersCmdId: UpdateSetting("TextEditor", "AllLanguages", "ShowLineNumbers", newCheckedState); break; //case Constants.ToggleQuickActionsCmdId: // HandleToggleLightbulbMarginAction(sender, newCheckedState); // break; case Constants.ToggleSelectionMarginCmdId: UpdateSetting("TextEditor", "General", "SelectionMargin", newCheckedState); break; case Constants.ToggleTrackChangesCmdId: UpdateSetting("TextEditor", "General", "TrackChanges", newCheckedState); break; case Constants.ToggleDiffMarginCmdId: // TODO: Implement this break; case Constants.ToggleOutliningCmdId: if (newCheckedState) { ShellUtil.ExecuteCommand("Edit.StartAutomaticOutlining"); } else { ShellUtil.ExecuteCommand("Edit.StopOutlining"); } break; case Constants.ToggleLiveUnitTestingCmdId: ToggleLiveUnitTesting.ToggleLUT(sender, e); break; case Constants.ToggleAnnotateCmdId: //UpdateSetting("TextEditor", "AllLanguages", "ShowBlame", newCheckedState); // TODO: Get this working break; // Editor Settings //case Constants.ToggleNavigationBarCmdId: // UpdateSetting("TextEditor", "AllLanguages", "ShowNavigationBar", newCheckedState); // command.Checked = newCheckedState; // break; case Constants.ToggleCodeLensCmdId: HandleToggleCodeLensAction(sender, newCheckedState); break; //case Constants.ToggleStructureGuideLinesCmdId: // UpdateSetting("TextEditor", "General", "IndentGuides", newCheckedState); // command.Checked = newCheckedState; // break; case Constants.ToggleHighlightCurrentLineCmdId: UpdateSetting("TextEditor", "General", "HighlightCurrentLine", newCheckedState); break; case Constants.ToggleAutoDelimiterHighlightingCmdId: UpdateSetting("TextEditor", "General", "AutoDelimiterHighlighting", newCheckedState); command.Checked = newCheckedState; break; case Constants.ToggleProcedureLineSeparatorCmdId: UpdateSetting("TextEditor", "CSharp-Specific", "DisplayLineSeparators", newCheckedState); command.Checked = newCheckedState; break; case Constants.ToggleIntelliSensePopUpCmdId: UpdateSetting("TextEditor", "AllLanguages", "AutoListMembers", newCheckedState); UpdateSetting("TextEditor", "AllLanguages", "AutoListParams", newCheckedState); break; case Constants.ToggleLineEndingsCmdId: UpdateSetting("TextEditor", "General", "LineEndings", newCheckedState); command.Checked = newCheckedState; break; case Constants.ToggleHighlightSymbolsCmdId: UpdateSetting("TextEditor", "CSharp-Specific", "HighlightReferences", newCheckedState); command.Checked = newCheckedState; break; case Constants.ToggleHighlightKeywordsCmdId: UpdateSetting("TextEditor", "CSharp-Specific", "EnableHighlightRelatedKeywords", newCheckedState); command.Checked = newCheckedState; break; //case Constants.ToggleIntelliSenseSquigglesCmdId: //UpdateSetting("TextEditor", "Basic", "TrackChanges", newCheckedState); //break; // Scrollbar Settings case Constants.ToggleShowScrollbarMarkersCmdId: UpdateSetting("TextEditor", "CSharp", "ShowAnnotations", newCheckedState); // Turns off all scrollbar markers break; case Constants.ToggleShowChangesCmdId: UpdateSetting("TextEditor", "CSharp", "ShowChanges", newCheckedState); break; case Constants.ToggleShowMarksCmdId: UpdateSetting("TextEditor", "CSharp", "ShowMarks", newCheckedState); break; case Constants.ToggleShowErrorsCmdId: UpdateSetting("TextEditor", "CSharp", "ShowErrors", newCheckedState); break; case Constants.ToggleShowCaretPositionCmdId: UpdateSetting("TextEditor", "CSharp", "ShowCaretPosition", newCheckedState); break; case Constants.ToggleShowDiffsCmdId: // Not implemented yet. Would hook into Git Diff Margin scrollbar setting. break; case Constants.ToggleCleanEditorCmdId: ExecuteToggleCleanEditor(); break; case Constants.ToggleCleanMarginsCmdId: MessageBox.Show("Toggle Margins"); // Not implemented yet. Would turn off all visible margins, or restore all previously visible margins break; } // Update state of checkbox //command.Checked = newCheckedState; }
/// <summary> /// This function is run whenever VS is considering displaying the command. /// For menu items, it runs it before opening the menu. For toolbar items, it seems to run is frequently. /// Here you can change the visibility of a menu item. Also set its Checked state, and other properties (like Enabled). /// </summary> public void OnBeforeQueryStatus(object sender, EventArgs e) { OleMenuCommand command = (OleMenuCommand)sender; switch ((uint)command.CommandID.ID) { //case Constants.ToggleIndicatorMarginCmdId: // this.HandleQueryStatusCheckedUserProperty(sender, "Text Editor", "Indicator Margin"); // break; //case Constants.ToggleLineNumbersCmdId: // this.HandleQueryStatusCheckedUserProperty(sender, "Text Editor\\CSharp", "Line Numbers"); // break; //case Constants.ToggleQuickActionsCmdId: // HandleToggleLightbulbMarginQueryStatus(sender); // break; //case Constants.ToggleSelectionMarginCmdId: // this.HandleQueryStatusCheckedUserProperty(sender, "Text Editor", "Selection Margin"); // break; //case Constants.ToggleTrackChangesCmdId: // this.HandleQueryStatusCheckedUserProperty(sender, "Text Editor", "Track Changes"); // break; case Constants.ToggleDiffMarginCmdId: this.HideItem(sender); break; case Constants.ToggleOutliningCmdId: this.HandleOutliningQueryStatus(sender); break; case Constants.ToggleLiveUnitTestingCmdId: ToggleLiveUnitTesting.OnBeforeQueryStatus(sender, e); break; case Constants.ToggleAnnotateCmdId: //this.HandleQueryStatusCheckedUserProperty(sender, "Text Editor\\CSharp", "Show Blame"); break; // Editor Settings //case Constants.ToggleNavigationBarCmdId: // this.HandleNavBarQueryStatus(sender); // break; case Constants.ToggleCodeLensCmdId: this.HandleToggleCodeLensQueryStatus(sender); break; //case Constants.ToggleStructureGuideLinesCmdId: // this.HandleQueryStatusCheckedUserProperty(sender, "Text Editor", "Indent Guides"); // // Hide if not VS2017+ // //this.HideItem(sender); //break; case Constants.ToggleHighlightCurrentLineCmdId: this.HandleQueryStatusCheckedUserProperty(sender, "Text Editor", "Highlight Current Line"); break; case Constants.ToggleAutoDelimiterHighlightingCmdId: this.HandleQueryStatusCheckedUserProperty(sender, "Text Editor", "Auto Delimiter Highlighting"); break; case Constants.ToggleProcedureLineSeparatorCmdId: break; case Constants.ToggleIntelliSensePopUpCmdId: this.HandleQueryStatusCheckedUserProperty(sender, "Text Editor\\CSharp", "Auto List Members"); this.HandleQueryStatusCheckedUserProperty(sender, "Text Editor\\CSharp", "Auto List Params"); //this.HandleQueryStatusCheckedUserProperty(sender, "Text Editor\\CSharp", "Hide Advanced Auto List Members"); break; case Constants.ToggleLineEndingsCmdId: break; case Constants.ToggleHighlightSymbolsCmdId: break; case Constants.ToggleHighlightKeywordsCmdId: break; //case Constants.ToggleIntelliSenseSquigglesCmdId: // Scrollbar Settings case Constants.ToggleShowScrollbarMarkersCmdId: // Turn off all Scrollbar markers with "ShowAnnotations" //this.HandleQueryStatusCheckedUserProperty(sender, "Text Editor\\CSharp", "ShowAnnotations"); MenuCommand menuCommand = ((MenuCommand)sender); //menuCommand.Visible = true; //menuCommand.Enabled = true; menuCommand.Checked = SettingsStore.GetBoolean("Text Editor\\CSharp", "ShowAnnotations"); break; case Constants.ToggleShowChangesCmdId: HandleScrollbarQueryStatus(sender, "ShowChanges"); break; case Constants.ToggleShowMarksCmdId: HandleScrollbarQueryStatus(sender, "ShowMarks"); break; case Constants.ToggleShowErrorsCmdId: HandleScrollbarQueryStatus(sender, "ShowErrors"); break; case Constants.ToggleShowCaretPositionCmdId: HandleScrollbarQueryStatus(sender, "ShowCaretPosition"); break; case Constants.ToggleShowDiffsCmdId: this.HideItem(sender); break; // Don't need query status for DistractionFree items. //case Constants.ToggleCleanEditorCmdId: // break; //case Constants.ToggleCleanMarginsCmdId: // break; } }