static bool Replace(ViBuilderContext ctx)
        {
            ctx.RunAction((ViEditor e) => e.SetMode(ViEditorMode.Replace));
            ctx.SuppressCompleted();

            ctx.Builder = ViBuilders.InsertBuilder(insertActions);
            return(true);
        }
Beispiel #2
0
 public static bool ReplaceChar(ViBuilderContext ctx)
 {
     if (ctx.LastKey.Char != '\0')
     {
         ctx.RunAction((ViEditor ed) => ed.Data.Replace(ed.Data.Caret.Offset, 1, ctx.LastKey.Char.ToString()));
     }
     else
     {
         ctx.SetError("Expecting a character");
     }
     return(true);
 }
Beispiel #3
0
        public static bool GoToMark(ViBuilderContext ctx)
        {
            char c = ctx.LastKey.Char;
            if (!char.IsLetterOrDigit (c)) {
                ctx.SetError ("Invalid Mark");
                return true;
            }

            ctx.RunAction ((ViEditor ed) => {
                ViMark mark;
                if (ed.Marks.TryGetValue (c, out mark))
                    mark.LoadMark (ed.Data);
                else
                    ed.Reset ("Unknown Mark");
            });
            return true;
        }
Beispiel #4
0
        public static bool Mark(ViBuilderContext ctx)
        {
            char c = ctx.LastKey.Char;

            if (!char.IsLetterOrDigit(c))
            {
                ctx.SetError("Invalid Mark");
                return(true);
            }

            ctx.RunAction((ViEditor ed) => {
                ViMark mark;
                if (!ed.Marks.TryGetValue(c, out mark))
                {
                    ed.Marks [c] = mark = new ViMark(c);
                }
                mark.SaveMark(ed.Data);
            });
            return(true);
        }
Beispiel #5
0
        public static bool GoToMark(ViBuilderContext ctx)
        {
            char c = ctx.LastKey.Char;

            if (!char.IsLetterOrDigit(c))
            {
                ctx.SetError("Invalid Mark");
                return(true);
            }

            ctx.RunAction((ViEditor ed) => {
                ViMark mark;
                if (ed.Marks.TryGetValue(c, out mark))
                {
                    mark.LoadMark(ed.Data);
                }
                else
                {
                    ed.Reset("Unknown Mark");
                }
            });
            return(true);
        }
Beispiel #6
0
        public bool Builder(ViBuilderContext ctx)
        {
            Action <ViEditor> a;

            if (actions.TryGetValue(ctx.LastKey, out a))
            {
                ctx.RunAction(a);
                return(true);
            }
            else
            {
                BuilderAction b;
                if (builders.TryGetValue(ctx.LastKey, out b))
                {
                    ctx.Builder = b.Builder;
                    if (b.RunInstantly)
                    {
                        ctx.Builder(ctx);
                    }
                    return(true);
                }
            }
            return(false);
        }
Beispiel #7
0
        static bool Replace(ViBuilderContext ctx)
        {
            ctx.RunAction ((ViEditor e) => e.SetMode (ViEditorMode.Replace));
            ctx.SuppressCompleted ();

            ctx.Builder = ViBuilders.InsertBuilder (insertActions);
            return true;
        }
Beispiel #8
0
 static bool OpenAbove(ViBuilderContext ctx)
 {
     // FIXME: this doesn't work correctly on the first line
     ctx.RunAction ((ViEditor e) => ViActions.Up (e.Data));
     return Open (ctx);
 }
Beispiel #9
0
 static bool Open(ViBuilderContext ctx)
 {
     ctx.RunAction ((ViEditor e) => MiscActions.InsertNewLineAtEnd (e.Data));
     return Insert (ctx);
 }
Beispiel #10
0
 static bool GotoLine(ViBuilderContext ctx)
 {
     ctx.RunAction ((ViEditor e) => ViEditorActions.CaretToLineNumber (ctx.Multiplier, e));
       ctx.RunAction ((ViEditor e) => CaretMoveActions.LineFirstNonWhitespace (e.Data));
       return true;
 }
Beispiel #11
0
 static bool GotoLine(ViBuilderContext ctx)
 {
     ctx.RunAction((ViEditor e) => ViEditorActions.CaretToLineNumber(ctx.Multiplier, e));
     ctx.RunAction((ViEditor e) => CaretMoveActions.LineFirstNonWhitespace(e.Data));
     return(true);
 }
Beispiel #12
0
 static bool OpenAbove(ViBuilderContext ctx)
 {
     // FIXME: this doesn't work correctly on the first line
     ctx.RunAction((ViEditor e) => ViActions.Up(e.Data));
     return(Open(ctx));
 }
Beispiel #13
0
 static bool Open(ViBuilderContext ctx)
 {
     ctx.RunAction((ViEditor e) => MiscActions.InsertNewLineAtEnd(e.Data));
     return(Insert(ctx));
 }
Beispiel #14
0
 public static bool ReplaceChar(ViBuilderContext ctx)
 {
     if (ctx.LastKey.Char != '\0')
         ctx.RunAction ((ViEditor ed) => ed.Data.Replace (ed.Data.Caret.Offset, 1, ctx.LastKey.Char.ToString ()));
     else
         ctx.SetError ("Expecting a character");
     return true;
 }
Beispiel #15
0
        public static bool Mark(ViBuilderContext ctx)
        {
            char c = ctx.LastKey.Char;
            if (!char.IsLetterOrDigit (c)) {
                ctx.SetError ("Invalid Mark");
                return true;
            }

            ctx.RunAction ((ViEditor ed) => {
                ViMark mark;
                if (!ed.Marks.TryGetValue (c, out mark))
                    ed.Marks [c] = mark = new ViMark (c);
                mark.SaveMark (ed.Data);
            });
            return true;
        }