public NLedgerConfiguration(IEnumerable <ISettingDefinition> externalDefinitions = null) { var isAttyDefinition = AddDefinition(new BoolSettingDefinition("IsAtty", IsAttyDescription, true)); var isTimeZoneIdDefinition = AddDefinition(new TimeZoneSettingDefinition("TimeZoneId", TimeZoneDescription, TimeZoneInfo.Local)); var outputEncodingDefinition = AddDefinition(new EncodingSettingDefinition("OutputEncoding", OutputEncodingDescription, Encoding.Default)); var ansiTerminalEmulationDefinition = AddDefinition(new BoolSettingDefinition("AnsiTerminalEmulation", AnsiTerminalEmulationDescription, true)); var defaultPagerDefinition = AddDefinition(new StringSettingDefinition("DefaultPager", DefaultPagerDescription)); var disableUserSettingsDefinition = AddDefinition(new BoolSettingDefinition("DisableUserSettings", DisableUserSettingsDescription, false, SettingScopeEnum.Application)); if (externalDefinitions != null && externalDefinitions.Any()) { Definitions = Definitions.Concat(externalDefinitions).ToList(); } SettingsContainer = new NLedgerSettingsContainer(Definitions); IsAtty = new SettingValue <bool>(SettingsContainer, isAttyDefinition); TimeZoneId = new SettingValue <TimeZoneInfo>(SettingsContainer, isTimeZoneIdDefinition); OutputEncoding = new SettingValue <Encoding>(SettingsContainer, outputEncodingDefinition); AnsiTerminalEmulation = new SettingValue <bool>(SettingsContainer, ansiTerminalEmulationDefinition); DefaultPager = new SettingValue <string>(SettingsContainer, defaultPagerDefinition); DisableUserSettings = new SettingValue <bool>(SettingsContainer, disableUserSettingsDefinition); SettingsContainer.EffectiveScope = DisableUserSettings.Value ? SettingScopeEnum.Application : SettingScopeEnum.User; }