2009/01/28: Move modes into buffers and out of windows. This should reduce the memory footprint a little bit, as well as fixing some weird bugs and making some interfaces more consistent. 2008/09/21: Tab completion, paren matching, and scope detection should be done by one module (eventually, lexing should also, but for now having two isn't so bad). Also, all modules need to parse whitespace out rather than just having the null rule pick it up. 2008/05/23: Buffers should run in their own threads and/or processes and communicate with the main program through a series of locks and/or IPC calls. This will allow two different useful features: (1) user navigation while reparsing, (2) buffers representing pipes/sockets (e.g. shells, chat clients, tail -f, etc.) solving (2) with asyncore or other non-blocking IO would work, but (1) almost certainly requires seperate processes or threads. 2008/05/23: Semantic tab-completion via iperl/ipython buffers... after syntax check, the file will be read into an interactive buffer, which can then be hooked into in order to support tab completion! (mostly done!) 2008/05/11: perl/python "open-module-by-name" command (auto-completing?). python view help(time)-style documentation in buffer convert console to user colorbuffer tech step out of minibuffer support click on completion support 2008/05/03: use a error-buffer (pop up?) for reporting various errors. 2008/04/02: fix read-only warnings to seem less junky (e.g. catch the buffer.ReadOnlyError exception and write a graceful message everywhere applicable). 2008/03/18: finish arg documentation and review method documentation 2008/03/16: pdb/gdb/perldb buffer integration error/stack-trace buffer 2007/10/20: Tags for matching should be allowed to be multi-character, and should be a list of data/type pairs (rather than several lists). 2007/08/11: Instead of storing method state in the method objects (for mode callback stuff), we should probably store it in the buffer. AMENDED (2007/10/21): we should probably just store the entire mode in the buffer, rather than storing all this junk piecemeal. 2007/07/17: It would be nice to be able to toggle various lexing rules on/off, so that for instance text mode could make spell checking optional, or optionally highlight URLs/emails/etc. AMENDED (2008/03/20): in the case of spell-checking and other non-standard rules, we can do this with state variables in the mode. 2007/07/15: Vertical split would be awesome. Also, need more fine-grained controls for even horizontally split windows. 2007/07/15: Rename "lexing" to "parsing" since really we have moved way beyond a simple lexing/tokenization strategy.