jale/README.md

84 lines
1.9 KiB
Markdown
Raw Normal View History

2021-02-15 22:13:12 +01:00
# Just Another Line Editor
or jale.nim
# Note
This is a new (and very immature) alternative to other
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.
```
2021-02-15 22:51:42 +01:00
git clone https://github.com/japl-lang/jale
cd jale
2021-02-15 22:13:12 +01:00
nim c main
2021-02-15 22:51:42 +01:00
./main
2021-02-15 22:13:12 +01:00
```
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.
# Features
- multiline support
- easily add new keybindings (using templates)
- very customizable (even inserting characters is a keybinding that's optional)
2021-02-19 00:03:01 +01:00
- plugin system based
- history
2021-02-15 22:13:12 +01:00
# 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
2021-02-19 00:03:01 +01:00
import plugin/defaults
2021-02-15 22:13:12 +01:00
# 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
2021-02-19 00:03:01 +01:00
# very weird use case, but if ctrl+b is pressed during reading, don't
# print the output
2021-02-15 22:13:12 +01:00
e.bindKey("ctrl+b"):
printOutput = false
let input = e.read()
if printOutput:
echo "output:"
echo input
```
2021-02-19 00:03:01 +01:00
Also see examples folder if the above example does not suffice,
2021-02-15 22:13:12 +01:00
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.
# Missing features
Note: they won't be missing forever hopefully.
- No utf-8
2021-02-19 00:03:01 +01:00
- No tab autocompletion support
2021-02-15 22:13:12 +01:00
- No syntax highlighting support
2021-02-19 00:03:01 +01:00
- Windows keybindings not finished, windows was not tested yet
2021-02-15 22:13:12 +01:00