private Task UpdateGuidelinesFromCodingConventionAsync(ICodingConventionContext codingConventionContext, CancellationToken cancellationToken)
        {
            if (cancellationToken.IsCancellationRequested)
            {
                return(Task.FromCanceled(cancellationToken));
            }

            StrokeParameters strokeParameters = null;

            if (codingConventionContext.CurrentConventions.TryGetConventionValue("guidelines_style", out string guidelines_style))
            {
                if (TryParseStrokeParametersFromCodingConvention(guidelines_style, out strokeParameters))
                {
                    _isUsingCodingConvention = true;
                    strokeParameters.Freeze();
                }
            }

            ICollection <Guideline> guidelines = null;

            if (codingConventionContext.CurrentConventions.TryGetConventionValue("guidelines", out string guidelinesConventionValue))
            {
                guidelines = ParseGuidelinesFromCodingConvention(guidelinesConventionValue, strokeParameters);
            }

            // Also support max_line_length: https://github.com/editorconfig/editorconfig/wiki/EditorConfig-Properties#max_line_length
            if (codingConventionContext.CurrentConventions.TryGetConventionValue("max_line_length", out string max_line_length) && TryParsePosition(max_line_length, out int maxLineLengthValue))
            {
                (guidelines ?? (guidelines = new List <Guideline>())).Add(new Guideline(maxLineLengthValue, strokeParameters));
            }

            if (guidelines != null)
            {
                // Override 'classic' settings.
                _isUsingCodingConvention = true;

                // TODO: await JoinableTaskFactory.SwitchToMainThreadAsync();
                _view.VisualElement.Dispatcher.BeginInvoke(new Action <IEnumerable <Guideline> >(GuidelinesChanged), guidelines);
            }

            if (_isUsingCodingConvention && !s_sentEditorConfigTelemetry)
            {
                var eventTelemetry = new EventTelemetry("EditorConfig");
                if (!string.IsNullOrEmpty(guidelinesConventionValue))
                {
                    eventTelemetry.Properties.Add("Convention", guidelinesConventionValue);
                }

                if (!string.IsNullOrEmpty(max_line_length))
                {
                    eventTelemetry.Properties.Add(nameof(max_line_length), max_line_length);
                }

                if (!string.IsNullOrEmpty(guidelines_style))
                {
                    eventTelemetry.Properties.Add(nameof(guidelines_style), guidelines_style);
                }

                ColumnGuideAdornmentFactory.AddGuidelinesToTelemetry(eventTelemetry, guidelines);
                s_sentEditorConfigTelemetry = true;
            }

            return(Task.CompletedTask);
        }
 private Brush GetGuidelineBrushFromFontsAndColors()
 {
     return(ColumnGuideAdornmentFactory.GetGuidelineBrushFromFontsAndColors(_formatMap));
 }