Esempio n. 1
0
        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);
            }
        }
Esempio n. 4
0
        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;
            }
        }
Esempio n. 5
0
        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;
            }
        }
Esempio n. 6
0
        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;
            }
        }