-
Notifications
You must be signed in to change notification settings - Fork 2
Description
Summary
We want to improve keybindings in #32 as well as support some of the basic settings Monaco generally supports including but not limited to things like font size, showing line numbers, etc. The amount of settings in the app isn't going to decrease and some of this could work with a feature flag system, experimental group is fairly common.
Basic example
I want to make the font size bigger. I want to search for a setting
Motivation
Adds functionality expected of a modern code editor to Apollo and increases user customize ability.
Design proposal
A lot of the settings groups are tied to some specific domain of functionality, the editor, analysis, themeing.
The settings modal is going to get bloated over time so an easier way to globally add and work with settings would be great.
Each domain would implement an 'ISettingsService' where T is the specific settings model it needs with strongly typed c# properties.
We add new custom attributes to help decorate these properties for the ui, things like 'Order' and 'Description'
Only the settings modal will likely care about those properties so we'll have a wrapping 'ISettingsProvider' or 'SettingsState' type of class to handle grabbing all implementing settings from DI and inspecting attributes and making sure we display the UI as expected.
Ideally we would even be able to persist these in local storage like we do with some theme settings today, but we can standardize it even more.