Dear mailing list member,
The past week, Aleksandar Bakic has been working on making it possible for several buffer implementations to co-exist, so that an adequate buffer implementation can be selected at runtime based on the contents that it is supposed to hold. Aleksandar has been implementing the buffer protocol as a persistent data structure, which essentially means that all previous versions are kept around, making things like undo very easy.
I have been working on the syntax framework. The HTML syntax module now uses the Earley parser, and it is plenty fast. This probably means that the CL syntax module can use an Earley parser as well. The main problem right now is figuring out what the protocol for interacting with an Earley parser is supposed to look like. Expect some interesting progress in the near future.
Here is an itemized list of what happened since the last progress report:
* Climacs now has better error handling. More conditions have been added that are now handled by the command loop or by individual commands, and the command loop no longer handles all error conditions, making it a bit easier to debug new code.
* Optimized the code of clone-mark to use constant class names. Also adapted the code to the new buffer organization.
* Updated persistent buffer and buffer tests to reflect changes in the buffer organization. (thanks to Aleksandar Bakic)
* Improved on performance of incremental lexer for CL syntax by having a single mark and a length in each stack entry. Also, made line comments into single stack entries to cut down on number of stack entries. Eliminated whitespace as a stack entry.
* Introduced a delegating buffer which is now what all Climacs buffers should be. The delegating buffer contains a real buffer which can have different possible implementations. Fixed up a lot of code that made assumptions that are no longer valid for a delegating buffer. (thanks to Aleksandar Bakic)
* Updated documentation to reflect changes in buffer organization.
* Documented buffer-line-number and buffer-column-number (thanks to Aleksandar Bakic)
* Improved on HTML syntax. It is not yet usable, but serves as a good example of how to write grammars for syntax module.
* Added a section in the documentation on incremental parsing. This section is still incomplete, as I am discovering how to interface with the Early parser.