Example #1
0
        public IDocumentAffinity GetAffinity(int line, int col)
        {
            IDocumentAffinity grm = null;
            var id = GetAffinityId(line, col);

            if (id != 0)
            {
                grm = App.Ext.Grammars().GetGrammar(id);
            }

            return(grm ?? GetRootAffinity() ?? editor.EditorSettings);
        }
Example #2
0
        private bool TraverseBackward(IDocumentAffinity aff, string brackets, int pi, Selection sel)
        {
            var cc = 0;

            for (var lni = sel.Caret.Col > 2 ? sel.Caret.Line : sel.Caret.Line - 1; lni > -1; lni--)
            {
                var line = editor.Lines[lni];
                var ist1 = lni == sel.Caret.Line ? sel.Caret.Col - 1 : line.Length - 1;
                var ist2 = lni == sel.Caret.Line ? sel.Caret.Col - 2 : line.Length - 1;
                var grm  = editor.AffinityManager.GetAffinity(new Pos(lni, ist1));

                if (grm != aff && lni != sel.Caret.Line)
                {
                    continue;
                }

                for (var i = ist2; i > -1; i--)
                {
                    if (line[i].Char == brackets[pi] && IsBracketStyle(line, i))
                    {
                        cc++;
                    }
                    else if (line[i].Char == brackets[pi - 1] && IsBracketStyle(line, i))
                    {
                        if (cc > 0)
                        {
                            cc--;
                        }
                        else
                        {
                            Style(sel.Caret.Line, sel.Caret.Col - 1);
                            Style(lni, i);
                            return(true);
                        }
                    }
                }
            }

            return(false);
        }
Example #3
0
        private bool TraverseForward(IDocumentAffinity aff, string brackets, int pi, Selection sel)
        {
            var cc = 0;

            for (var lni = sel.Caret.Line; lni < editor.Lines.Count; lni++)
            {
                var line = editor.Lines[lni];
                var ist  = lni == sel.Caret.Line ? sel.Caret.Col + 1 : 0;
                var grm  = editor.AffinityManager.GetAffinity(new Pos(lni, ist));

                if (grm != aff && lni != sel.Caret.Line)
                {
                    continue;
                }

                for (var i = ist; i < line.Length; i++)
                {
                    if (line[i].Char == brackets[pi] && IsBracketStyle(line, i))
                    {
                        cc++;
                    }
                    else if (line[i].Char == brackets[pi + 1] && IsBracketStyle(line, i))
                    {
                        if (cc > 0)
                        {
                            cc--;
                        }
                        else
                        {
                            Style(sel.Caret.Line, sel.Caret.Col);
                            Style(lni, i);
                            return(true);
                        }
                    }
                }
            }

            return(false);
        }
Example #4
0
 public static string GetNonWordSymbols(this IDocumentAffinity aff, EditorControl ctx)
 {
     return(aff.NonWordSymbols ?? ctx.EditorSettings.NonWordSymbols);
 }
Example #5
0
 public static Identifier GetIndentComponentKey(this IDocumentAffinity aff, EditorControl ctx)
 {
     return(aff.IndentComponentKey ?? ctx.EditorSettings.IndentComponentKey);
 }
Example #6
0
 public static string GetAutocompleteSymbols(this IDocumentAffinity aff, EditorControl ctx)
 {
     return(aff.AutocompleteSymbols ?? ctx.EditorSettings.AutocompleteSymbols);
 }
Example #7
0
 public static string GetBracketSymbols(this IDocumentAffinity aff, EditorControl ctx)
 {
     return(aff.BracketSymbols ?? ctx.EditorSettings.BracketSymbols);
 }