update readme

This commit is contained in:
Productive2 2021-02-21 00:52:11 +01:00
parent 36b32c5a23
commit 8233c722b8
1 changed files with 27 additions and 49 deletions

View File

@ -9,21 +9,37 @@ line editors such as linenoise (see rdstdin in the nim
standard library) or nimline (https://github.com/h3rald/nimline). Currently you probably want to use either of
those because this is a wip.
# Building
Have nim (tested on 1.4.2, x86_64 gnu/linux) installed.
# Installation
```
git clone https://github.com/japl-lang/jale
cd jale
nim c main
./main
nimble install
```
You should enter a temporary testing prompt, which you
can quit with ctrl+c.
Pressing enter when the last line is empty submits
the output.
# Checking the examples out
Building the examples
```
nimble examples
```
Checking the sample editor out. Quit with ctrl+c, save with ctrl+s.
```
examples/editor <filename>
# or windows:
.\examples\editor.exe <filename>
```
Checking the interactive prompt out. Move between lines using ctrl+up/down. Create new lines with ctrl+down on the last line. ctrl+page up/down also works.
```
examples/interactive_history
# or windows:
.\examples\interactive_history.exe
```
# Features
@ -32,45 +48,7 @@ the output.
- very customizable (even inserting characters is a keybinding that's optional)
- plugin system based
- history
# Example usage
```nim
# for now, from the same directory where it's cloned
# import the line editor
import editor
# import the default keybindings for basic stuff
# like arrow key movement or inserting characters
import plugin/defaults
# import helper templates for adding custom key or
# event bindings
import templates
# create the line editor
let e = newLineEditor()
# set its prompt to something
e.prompt = "> "
# add the default keybindings
e.populateDefaults()
var printOutput = true
# very weird use case, but if ctrl+b is pressed during reading, don't
# print the output
e.bindKey("ctrl+b"):
printOutput = false
let input = e.read()
if printOutput:
echo "output:"
echo input
```
Also see examples folder if the above example does not suffice,
and look at defaults.nim for many binding examples.
Look at multiline.nim's procs and editor.nim's
LineEditor type for an "API". It's wip, docs will
improve if it ever gets more stable.
- horizontal scrolling
# Missing features
@ -79,5 +57,5 @@ Note: they won't be missing forever hopefully.
- No utf-8
- No tab autocompletion support
- No syntax highlighting support
- Windows keybindings not finished, windows was not tested yet
- Windows output still really unstable/untested in depth