summaryrefslogtreecommitdiff
path: root/README.md
blob: 98009643425dc0704e30ca942c770bd892844b69 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# `par` text editor

`par` is written in R7RS Scheme. Testing is done on top of `chibi-scheme` but
we are also trying to support `guile` when that's not a lot of effort.

## Context

`par` is a text editor which has a simple set of ideas behind:

- Be simple
- Be extensible
- Don't overreach

`par` only relies in R7RS, and all it's core is only based on it. That's an
attempt to make it easily portable to other environments, where the constructs
we are used to simply don't exist.

## Code structure

`par` is defined in three levels of abstraction. Par itself, how it interacts
with the World around it and how it interacts with others. That's reflected in
it's code structure:

- `/par`: the internal functionality of the text editor that doesn't require
  from standard libraries and should just work with R7RS (it's context and
  system independent): Examples: internal piece-table, basic functionality...
- `/world`: the interaction with the system where it runs. This may include
  standard libraries of the scheme `par` is running on top of, and extra
  libraries and extensions to support the system interaction. Examples: UI
  definition, how to interact with the screen, network, etc.
- `/others`: the interaction with the context where it runs: `editorconfig`
  support, language parsing, etc.