Delete at the end of ;;; comment joins the next one
[lisp-parkour.git] / HACKING
blobdc894fcd0fe63dc320cd520d4c8c2e1aa0c27743
1 # Code structure
3 The plugin consists of a common and editor-specific part(s).
4 An editor-specific part is expected to provide the common part
5 with the following wrapper functions:
7  - read()
8  - insert()
9  - delete()
10  - seek()
11  - bol_at()
12  - eol_at()
14 and map the functions exported by the common part to appropriate keys.
15 The handler for self-inserting keys defined in `input.lua` is an exception,
16 it must be bound to an appropriate event.
18 `parser.lua` is the only module where the file buffer is read().
19 It parses the text incrementally (one top-level sexp at a time),
20 and maintains a parse tree, which the rest of the plugin relies on
21 for implementing the "business logic."
22 For the incremental parsing to function correctly, the higher-level code
23 that changes text is required to call rewind() to let the parser know
24 of the earliest file offset involved in a change.
26 `walker.lua` contains helper functions for finding various positions
27 in the parse tree maintained by `parser.lua`.
29 `edit.lua` contains functions for structure-aware editing actions.
31 `input.lua` contains the handler for self-inserting keys.