edward

An extensible POSIX-compatible implementation of the ed(1) text editor

git clone https://git.8pit.net/edward.git

 1# Library Interface
 2
 3* Introduce namespaces for command names
 4    * By making command names a list, e.g. `'(posix quit)`
 5    * POSIX namespace should be treated as reserved
 6* Documentation: Clarify interaction between `edward ed addr` and `edward ed editor`
 7* `(edward ed cli)`: Allow defining custom command-line options
 8* Provide dedicated types for addresses and ranges
 9* Add `(chicken type)` annotations for the public API to catch more
10  usage errors during compile-time instead of run-time.
11* Provide an `(edward)` meta-library which imports all sub-libraries.
12
13# Miscellaneous
14
15* Consider using Declarations and (chicken type) to enable more optimizations
16	* https://wiki.call-cc.org/programming-for-performance
17	* https://wiki.call-cc.org/man/5/Declarations
18	* https://wiki.call-cc.org/man/5/Foreign%20type%20specifiers
19* In append/insert/… command: Verify that the address is valid before
20  entering insert mode. For example, when performing `2a` on an empty
21  file the append will only error out after all text has been entered.
22* Figure out why edward is slower when compiled statically with eggs (linkage static)
23* Profile larger ed inputs (e.g. as generated by a fuzzer) with
24  chicken-profile and figure identify (parsing) procedures which
25  could be further optimized for performance
26* Improve parser error messages (mostly returns `failed char pred` currently)
27    * Consider prefixing parser errors with command parser name
28      (how should the `g` command be handled in this regard?)
29    * Consider adding column information to parser errors
30    * Add parse-with-failure-reason to more parser combinators
31* Refactor parse-line in a way that it can consume end-of-file.
32  Requires refactoring of parse-input-mode.
33* Allow input with spaces in interactive tests
34    * Probably requires rewriting the test runner in Python or something
35    * Would enable adding tests for edge cases like c0fe7d15700cc1ca03198c05d3762f7516f185fe