#syntax-highlighting #shell #repl #fish #color #line #command-line-tool

synterm

A Rust library for making beautiful REPLs and Shells with fish like as you type syntax highlighting

13 releases

0.3.1 Apr 21, 2020
0.3.0 Apr 21, 2020
0.2.11 Mar 27, 2020
0.1.121 Mar 27, 2020

#267 in Text editors

MIT license

15KB
261 lines

SynTerm

Gitpod Ready-to-Code

A Rust library for making beautiful REPLs and Shells with fish like as you type syntax highlighting

Quick Start

use std::process::exit;
use synterm::{gen_lexer, gen_parse, syntax_highlight_gen, Color, CommandLineTool};

struct MyTool;

impl CommandLineTool for MyTool {
    fn evaluator_function(line: &String) -> String {
        match line.as_str() {
            "exit" => {
                exit(0);
            }
            _ => format!("Line: {}", line),
        }
    }
    fn syntax_highlight(string: &str) {
        syntax_highlight_gen!(
            TheLexer,
            parser,
            (Foo, Color::Red, "foo"),
            (Bar, Color::Green, "bar"),
            (Baz, Color::Blue, "baz")
        );
        parser(TheLexer::lexer(string));
    }
}

fn main() {
    MyTool.start();
}

Getting Started

Add the following to your Cargo.toml's dependency section

synterm = "0.2.11"
logos = "0.9.7"

Examples

Contributing

See TODO.md for ways to contribute

Open it in Gitpod everything is all ready for you!

Open in Gitpod

Dependencies

~3.5MB
~38K SLoC