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