GithubHelp home page GithubHelp logo

aa32555 / xterm-readline Goto Github PK

View Code? Open in Web Editor NEW

This project forked from strtok/xterm-readline

0.0 0.0 0.0 60 KB

a library for building command-line interfaces with XtermJS

License: MIT License

JavaScript 0.52% TypeScript 99.48%

xterm-readline's Introduction

Xterm.js Readline

node ci

This is an xterm-js addon that provides a readline like capability to xterm-js. It allows the creation of cli or repl like interfaces on top of xterm-js.

Large parts of this source are inspired / derived / ported from the MIT licensed rustyline project.

Features

  • Multi-line prompt and input
  • Extendable syntax highlighting
  • Unicode / multi column-width character support

Example

This is a multi-line example that treats any line ending with '&&' as a continuation.

import "xterm/css/xterm.css";
import { Terminal } from 'xterm';
import { Readline } from "xterm-readline";

const term = new Terminal({
  theme: {
        background: "#191A19",
        foreground: "#F5F2E7",
  },
  cursorBlink: true,
  cursorStyle: "block"
});

const rl = new Readline();

term.loadAddon(rl);
term.open(document.getElementById('terminal'));
term.focus();

rl.setCheckHandler((text) => {
  let trimmedText = text.trimEnd();
  if (trimmedText.endsWith("&&")) {
    return false;
  }
  return true;
});

function readLine() {
  rl.read(">")
    .then(processLine);
}

function processLine(text) {
  rl.println("you entered: " + text);
  setTimeout(readLine);
}

readLine();

Keyboard Shortcuts

Key Action
Home Move cursor to the beginning of line
End Move cursor to end of line
Left Move cursor one character left
Right Move cursor one character right
Up Move cursor up (multi-line edit)
Down Move cursor down (multi-line edit)
Ctrl-C Cancel line in progress (additionally call ctrl-c callback if registered)
Ctrl-D, Del Delete the character under the cursor
Enter Apply the line, or begin a new line in multiline mode
Alt/Shift Enter Force add \n to the input
Ctrl-U Clear line
Ctrl-K Delete text from cursor to end of line

Real World Uses

License Agreement

If you contribute code to this project, you implicitly allow your code to be distributed under the MIT license.

xterm-readline's People

Contributors

strtok avatar wch avatar jamhed avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.