def loadConfig(defaultsOnly=False): """ loadConfig(defaultsOnly=False) Load default configuration file and that of the user (if it exists). Any missing fields in the user config are set to the defaults. """ # Function to insert names from one config in another def replaceFields(base, new): for key in new: if key in base and isinstance(base[key], ssdf.Struct): replaceFields(base[key], new[key]) else: base[key] = new[key] # Reset our pyzo.config structure ssdf.clear(config) # Load default and inject in the pyzo.config fname = os.path.join(pyzoDir, 'resources', 'defaultConfig.ssdf') defaultConfig = ssdf.load(fname) replaceFields(config, defaultConfig) # Platform specific keybinding: on Mac, Ctrl+Tab (actually Cmd+Tab) is a system shortcut if sys.platform == 'darwin': config.shortcuts2.view__select_previous_file = 'Alt+Tab,' # Load user config and inject in pyzo.config fname = os.path.join(appDataDir, "config.ssdf") if os.path.isfile(fname): userConfig = ssdf.load(fname) replaceFields(config, userConfig)
def loadConfig(defaultsOnly=False): """loadConfig(defaultsOnly=False) Load default and site-wide configuration file(s) and that of the user (if it exists). Any missing fields in the user config are set to the defaults. """ # Function to insert names from one config in another def replaceFields(base, new): for key in new: if key in base and isinstance(base[key], ssdf.Struct): replaceFields(base[key], new[key]) else: base[key] = new[key] config = pyzo.config # Reset our pyzo.config structure ssdf.clear(config) # Load default and inject in the pyzo.config fname = os.path.join(pyzo.pyzoDir, "resources", "defaultConfig.ssdf") defaultConfig = ssdf.load(fname) replaceFields(config, defaultConfig) # Platform specific keybinding: on Mac, Ctrl+Tab (actually Cmd+Tab) is a system shortcut if sys.platform == "darwin": config.shortcuts2.view__select_previous_file = "Alt+Tab," # Load site-wide config if it exists and inject in pyzo.config fname = os.path.join(pyzo.pyzoDir, "resources", "siteConfig.ssdf") if os.path.isfile(fname): try: siteConfig = ssdf.load(fname) replaceFields(config, siteConfig) except Exception: t = "Error while reading config file %r, maybe its corrupt?" print(t % fname) raise # Load user config and inject in pyzo.config fname = os.path.join(pyzo.appConfigDir, "config.ssdf") if os.path.isfile(fname): try: userConfig = ssdf.load(fname) replaceFields(config, userConfig) except Exception: t = "Error while reading config file %r, maybe its corrupt?" print(t % fname) raise