public void NewLine()
 {
     var startIter = Buffer.GetIterAtMark(promptStart);
     Buffer.InsertWithTagsByName(ref startIter, "\n", "history");
     Buffer.InsertWithTagsByName(ref startIter, "> ", "prompt");
     promptStart = Buffer.CreateMark(null, startIter, true);
     Buffer.PlaceCursor(startIter);
     this.sourceHighlighter = new IncrementalHighlighter(new GtkHighlighter(Buffer));
     column = 0;
 }
 static void AssertHighlights(IEnumerable<char> code, IEnumerable<Highlight> highlights)
 {
     using(var testHighlighter = new TestHighlighter(highlights)) {
         var highlighter = new IncrementalHighlighter(testHighlighter);
         var column = 0;
         foreach(var character in code) {
             highlighter.Tokenize(new Character(character, new Location(null, 0, column)));
             column++;
         }
     }
 }
        public ReadEvalPrintLoopView(Action<string> evaluator)
            : base(new TextBuffer(new TextTagTable()))
        {
            this.evaluator = evaluator;
            var startIter = Buffer.StartIter;
            promptStart = Buffer.CreateMark(null, startIter, true);
            Buffer.TagTable.Add(new TextTag("prompt") { Editable = false, Weight = Weight.Bold });
            Buffer.TagTable.Add(new TextTag("history") { Editable = false });
            Buffer.TagTable.Add(new TextTag("string") { Foreground ="red" });
            Buffer.TagTable.Add(new TextTag("number") { Foreground ="green" });

            Buffer.InsertWithTagsByName(ref startIter, "> ", "prompt");
            promptStart = Buffer.CreateMark(null, startIter, true);

            this.sourceHighlighter = new IncrementalHighlighter(new GtkHighlighter(Buffer));
        }