public async Task DidChangeConfiguration(JToken token, CancellationToken cancellationToken) { using (await _prioritizer.ConfigurationPriorityAsync(cancellationToken)) { var settings = new LanguageServerSettings(); var rootSection = token["settings"]; var pythonSection = rootSection?["python"]; if (pythonSection == null) { return; } var autoComplete = pythonSection["autoComplete"]; settings.completion.showAdvancedMembers = GetSetting(autoComplete, "showAdvancedMembers", true); settings.completion.addBrackets = GetSetting(autoComplete, "addBrackets", false); var analysis = pythonSection["analysis"]; settings.symbolsHierarchyDepthLimit = GetSetting(analysis, "symbolsHierarchyDepthLimit", 10); settings.symbolsHierarchyMaxSymbols = GetSetting(analysis, "symbolsHierarchyMaxSymbols", 1000); _logger.LogLevel = GetLogLevel(analysis).ToTraceEventType(); HandlePathWatchChanges(token, cancellationToken); HandleDiagnosticsChanges(pythonSection, settings); _server.DidChangeConfiguration(new DidChangeConfigurationParams { settings = settings }, cancellationToken); } }
private void HandleDiagnosticsChanges(JToken pythonSection, LanguageServerSettings settings) { var analysis = pythonSection["analysis"]; settings.diagnosticPublishDelay = GetSetting(analysis, "diagnosticPublishDelay", 1000); var ds = _services.GetService <IDiagnosticsService>(); ds.PublishingDelay = settings.diagnosticPublishDelay; ds.DiagnosticsSeverityMap = new DiagnosticsSeverityMap( GetSetting(analysis, "errors", Array.Empty <string>()), GetSetting(analysis, "warnings", Array.Empty <string>()), GetSetting(analysis, "information", Array.Empty <string>()), GetSetting(analysis, "disabled", Array.Empty <string>())); var linting = pythonSection["linting"]; HandleLintingOnOff(_services, GetSetting(linting, "enabled", true)); var memory = analysis["memory"]; var optionsProvider = _services.GetService <IAnalysisOptionsProvider>(); optionsProvider.Options.KeepLibraryLocalVariables = GetSetting(memory, "keepLibraryLocalVariables", false); optionsProvider.Options.KeepLibraryAst = GetSetting(memory, "keepLibraryAst", false); optionsProvider.Options.AnalysisCachingLevel = GetAnalysisCachingLevel(analysis); _logger?.Log(TraceEventType.Information, Resources.AnalysisCacheLevel.FormatInvariant(optionsProvider.Options.AnalysisCachingLevel)); }
public async Task DidChangeConfiguration(JToken token, CancellationToken cancellationToken) { using (await _prioritizer.ConfigurationPriorityAsync(cancellationToken)) { var settings = new LanguageServerSettings(); // https://github.com/microsoft/python-language-server/issues/915 // If token or settings are missing, assume defaults. var rootSection = token?["settings"]; var pythonSection = rootSection?["python"]; if (pythonSection == null) { return; } var autoComplete = pythonSection["autoComplete"]; settings.completion.showAdvancedMembers = GetSetting(autoComplete, "showAdvancedMembers", true); settings.completion.addBrackets = GetSetting(autoComplete, "addBrackets", false); var analysis = pythonSection["analysis"]; settings.symbolsHierarchyDepthLimit = GetSetting(analysis, "symbolsHierarchyDepthLimit", 10); settings.symbolsHierarchyMaxSymbols = GetSetting(analysis, "symbolsHierarchyMaxSymbols", 1000); _logger.LogLevel = GetLogLevel(analysis).ToTraceEventType(); var userConfiguredPaths = GetUserConfiguredPaths(pythonSection); HandleUserConfiguredPathsChanges(userConfiguredPaths); HandlePathWatchChanges(GetSetting(analysis, "watchSearchPaths", true)); HandleDiagnosticsChanges(pythonSection, settings); _server.DidChangeConfiguration(new DidChangeConfigurationParams { settings = settings }, cancellationToken); } }
public async Task DidChangeConfiguration(JToken token, CancellationToken cancellationToken) { using (await _prioritizer.ConfigurationPriorityAsync(cancellationToken)) { var settings = new LanguageServerSettings(); var rootSection = token["settings"]; var pythonSection = rootSection?["python"]; if (pythonSection == null) { return; } var autoComplete = pythonSection["autoComplete"]; settings.completion.showAdvancedMembers = GetSetting(autoComplete, "showAdvancedMembers", true); var analysis = pythonSection["analysis"]; settings.analysis.openFilesOnly = GetSetting(analysis, "openFilesOnly", false); settings.diagnosticPublishDelay = GetSetting(analysis, "diagnosticPublishDelay", 1000); settings.symbolsHierarchyDepthLimit = GetSetting(analysis, "symbolsHierarchyDepthLimit", 10); _ui.SetLogLevel(GetLogLevel(analysis)); _idleTimeTracker?.Dispose(); _idleTimeTracker = new IdleTimeTracker(settings.diagnosticPublishDelay, PublishPendingDiagnostics); _pathsWatcher?.Dispose(); var watchSearchPaths = GetSetting(analysis, "watchSearchPaths", true); if (watchSearchPaths) { if (!_searchPaths.SetEquals(_initParams.initializationOptions.searchPaths)) { _pathsWatcher = new PathsWatcher( _initParams.initializationOptions.searchPaths, () => _server.ReloadModulesAsync(CancellationToken.None).DoNotWait(), _server ); } } var errors = GetSetting(analysis, "errors", Array.Empty <string>()); var warnings = GetSetting(analysis, "warnings", Array.Empty <string>()); var information = GetSetting(analysis, "information", Array.Empty <string>()); var disabled = GetSetting(analysis, "disabled", Array.Empty <string>()); settings.analysis.SetErrorSeverityOptions(errors, warnings, information, disabled); await _server.DidChangeConfiguration(new DidChangeConfigurationParams { settings = settings }, cancellationToken); if (!_filesLoaded) { await LoadDirectoryFiles(); } _filesLoaded = true; } }
public async Task DidChangeConfiguration(JToken token, CancellationToken cancellationToken) { var settings = new LanguageServerSettings(); var rootSection = token["settings"]; var pythonSection = rootSection?["python"]; if (pythonSection == null) { return; } var autoComplete = pythonSection["autoComplete"]; settings.completion.showAdvancedMembers = GetSetting(autoComplete, "showAdvancedMembers", true); var analysis = pythonSection["analysis"]; settings.analysis.openFilesOnly = GetSetting(analysis, "openFilesOnly", false); _pathsWatcher?.Dispose(); var watchSearchPaths = GetSetting(analysis, "watchSearchPaths", true); if (watchSearchPaths) { _pathsWatcher = new PathsWatcher( _initParams.initializationOptions.searchPaths, () => _server.ReloadModulesAsync(CancellationToken.None).DoNotWait() ); } var errors = GetSetting(analysis, "errors", Array.Empty <string>()); var warnings = GetSetting(analysis, "warnings", Array.Empty <string>()); var information = GetSetting(analysis, "information", Array.Empty <string>()); var disabled = GetSetting(analysis, "disabled", Array.Empty <string>()); settings.analysis.SetErrorSeverityOptions(errors, warnings, information, disabled); await _server.DidChangeConfiguration(new DidChangeConfigurationParams { settings = settings }, cancellationToken); if (!_filesLoaded) { await LoadDirectoryFiles(); _filesLoaded = true; } }
private void HandleDiagnosticsChanges(JToken pythonSection, LanguageServerSettings settings) { var analysis = pythonSection["analysis"]; settings.diagnosticPublishDelay = GetSetting(analysis, "diagnosticPublishDelay", 1000); var ds = _services.GetService <IDiagnosticsService>(); ds.PublishingDelay = settings.diagnosticPublishDelay; ds.DiagnosticsSeverityMap = new DiagnosticsSeverityMap( GetSetting(analysis, "errors", Array.Empty <string>()), GetSetting(analysis, "warnings", Array.Empty <string>()), GetSetting(analysis, "information", Array.Empty <string>()), GetSetting(analysis, "disabled", Array.Empty <string>())); var linting = pythonSection["linting"]; HandleLintingOnOff(_services, GetSetting(linting, "enabled", true)); }
public async Task DidChangeConfiguration(JToken token, CancellationToken cancellationToken) { using (await _prioritizer.ConfigurationPriorityAsync(cancellationToken)) { var settings = new LanguageServerSettings(); var rootSection = token["settings"]; var pythonSection = rootSection?["python"]; if (pythonSection == null) { return; } var autoComplete = pythonSection["autoComplete"]; settings.completion.showAdvancedMembers = GetSetting(autoComplete, "showAdvancedMembers", true); settings.completion.addBrackets = GetSetting(autoComplete, "addBrackets", false); var analysis = pythonSection["analysis"]; settings.analysis.openFilesOnly = GetSetting(analysis, "openFilesOnly", false); settings.diagnosticPublishDelay = GetSetting(analysis, "diagnosticPublishDelay", 1000); settings.symbolsHierarchyDepthLimit = GetSetting(analysis, "symbolsHierarchyDepthLimit", 10); settings.symbolsHierarchyMaxSymbols = GetSetting(analysis, "symbolsHierarchyMaxSymbols", 1000); _logger.LogLevel = GetLogLevel(analysis).ToTraceEventType(); _diagnosticsPublisher.PublishingDelay = settings.diagnosticPublishDelay; HandlePathWatchChange(token); var errors = GetSetting(analysis, "errors", Array.Empty <string>()); var warnings = GetSetting(analysis, "warnings", Array.Empty <string>()); var information = GetSetting(analysis, "information", Array.Empty <string>()); var disabled = GetSetting(analysis, "disabled", Array.Empty <string>()); settings.analysis.SetErrorSeverityOptions(errors, warnings, information, disabled); await _server.DidChangeConfiguration(new DidChangeConfigurationParams { settings = settings }, cancellationToken); if (!_filesLoaded) { await LoadDirectoryFiles(); } _filesLoaded = true; } }