From strandh at labri.fr Thu Jan 13 06:15:12 2005 From: strandh at labri.fr (Robert Strandh) Date: Thu, 13 Jan 2005 07:15:12 +0100 Subject: [climacs-announce] latest progress Message-ID: <16870.4592.862881.36840@serveur5.labri.fr> Hello, This message is mostly for those who do not read climacs-cvs and who do not participate in the #lisp IRC channel. More people are getting involved in Climacs development, which is good. I continue to take care of the basic stuff like redisplay and such, whereas others provide Emacs-like functionality. This is a good division of labor, because in order to provide new functionality, all you need to know is the buffer protocols which are well documented. Climacs now has the basic infrastructure for numeric arguments. One simple thing to work on would thus be to add &optional (n 1) to a number of functions such as the ones in base.lisp or buffer.lisp. If you do, first make sure the modification you introduce is backward compatible and also do not forget to update the documentation at the same time. Notice though, that this functionality requires a working unread-gesture, which was put into CVS McCLIM only a few days ago. Do not update your Climacs source before updating your McCLIM source. In order to have numeric arguments behave like in Emacs, we need to extend how CLIM handles numeric arguments. It is not enough to have a *numeric-argument-marker*, because Emacs can behave differently if no numeric argument was given and when a numeric argument of 1 was given. Adding that possibility to Climacs will require something like a *numeric-argument-flag* to indicate whether a numeric argument was given at all. Now that unread-gesture works, I am thinking of attacking incremental search next, though, if someone else feels like working on that, that would be fine as well. Recent improvements: * next-line and previous-line commands now follow columns just like Emacs does. * fixed a nasty problem in buffer.lisp (thanks to Matthieu Villeneuve) that was correct (but not great coding practice) but exposed a bug in CMUCL. * implemented an improved version of buffer-sequence according to a suggestion by Rudi Schlatte, as well as another minor style improvement, also from him. * implemented dynamic abbrev expansion (M-/) as suggested by Luigi Panzeri, and integrated his utility function into base.lisp. * fixed a bug in redisplay. * added numeric arguments. This feature requires a CVS version of McCLIM as of 2005-01-11. Only a few commands take numeric arguments at the moment such as forward-object, backward-object, delete-object, and backward-delete-object. There are more to come. * the cursor display problem has been "fixed" by drawing a rectangle rather than a line. This makes obsolete the hacky code for explicit rounding of cursor coordinates. Also made the cursor somewhat wider so that it is easier to find. * abbrevs work again (I am not sure when the got broken) * implemented a new command: load-file * probably some things I forgot. What is being worked on: * multi-buffer, multi-window (expect some partial commits soon) * upcase-region, downcase-region, capitalize-region (imminent) * probably some things I don't know about. Enjoy, -- Robert Strandh --------------------------------------------------------------------- Greenspun's Tenth Rule of Programming: any sufficiently complicated C or Fortran program contains an ad hoc informally-specified bug-ridden slow implementation of half of Common Lisp. --------------------------------------------------------------------- From strandh at labri.fr Wed Jan 19 05:41:13 2005 From: strandh at labri.fr (Robert Strandh) Date: Wed, 19 Jan 2005 06:41:13 +0100 Subject: [climacs-announce] progress report Message-ID: <16877.62201.398274.537746@serveur5.labri.fr> Dear list member, This message is mostly for people who are not members of the climacs-cvs mailing list and who do not follow the discussion on the #lisp IRC channel. This has been a fantastic week for Climacs in terms of progress. Many people have implemented new functionality, factored existing code, or proposed bug fixes. On the downside, it appears that only one out of three student projects was taken (Common Lisp syntax). On the other hand, if this is confirmed, that leaves the implementation of the undo protocol and of the new buffer representation to some of you that are eager to get these functionalities working. Here is a list of the past week's accomplishments: * overwrite mode. (thanks to Alexandar Bakic) * new functionality: {downcase,upcase-capitilze}-region. (thanks to Matthieu Villeneuve) * new in the buffer protocol (setf buffer-object). (thanks to Matthieu Villeneuve) * code factoring in the form of a do-buffer-region macro. (thanks to Matthieu Villeneuve) * did a major overhaul of the syntax facility. The previous functionality is now divided into three parts: the first one is the real syntax, associated with the buffer instead of with the pane. The second part is the cache management, now associated with the pane instead of with the syntax. The third part is a CLIM view, associated with the pane, which determines presentation parameters such as highlighting. * tabify and untabify region commands. (thanks to Matthieu Villeneuve) * implemented beginning-of-paragraph and end-of-paragraph, the first commands to exploit a syntax, in this case text-syntax. * minor fixes in buffer.lisp and addition of a framework for regression testing of the buffer implementation. (thanks to Aleksandar Bakic) * new command: delete-indentation. (thanks to Matthieu Villeneuve) * implemented full-redisplay (C-l). * implemented multi-buffer support, with C-x b bound to the command switch-to-buffer. Buffer completion works as expected. * implemented preliminary multi-window support. C-x 2 splits the window vertically, C-x splits horizontally. C-x 0 deletes the current window. This is still preliminary code. One annoying problem is that the entire frame gets resized whenever a new window is added or deleted. * code factoring in text-syntax.lisp (thanks to Rudi Schlatte) * new commands (bound to TAB and C-j) for indenting lines according to the syntax. (thanks to Matthieu Villeneuve) * a key sequence such as ESC now works the same way as they keystroke M-. (thanks to Ignas Mikalajunas) * delete-region now works independently of the order between the two marks. (thanks to Rudi Schlatte and Aleksandar Bakic) * find-file does not create the file if it does not exist. (thanks to Lawrence Mitchell) -- Robert Strandh --------------------------------------------------------------------- Greenspun's Tenth Rule of Programming: any sufficiently complicated C or Fortran program contains an ad hoc informally-specified bug-ridden slow implementation of half of Common Lisp. --------------------------------------------------------------------- From strandh at labri.fr Wed Jan 26 05:37:35 2005 From: strandh at labri.fr (Robert Strandh) Date: Wed, 26 Jan 2005 06:37:35 +0100 Subject: [climacs-announce] latest progress Message-ID: <16887.11423.795816.75304@serveur5.labri.fr> Dear mailing list member, We have had another amazing week of Climacs development. I keep telling myself that it will slow down very soon now, but that has not happened yet. At some point, though, we shall run out of fairly easy Emacs-like functionality to add, and we probably cannot expect this rate of progress anymore. When that will happen, I don't know. Here is a list of the progress that has been made this week: * Implemented keyboard macros * Auto-fill mode (thanks to Matthieu Villeneuve) * Test for climacs-base (thanks to Aleksandar Bakic) * Box ajuster gadget for changing size of windows [the code is in there but not enabled due to a problem that we cannot seem to find] (thanks to Nicolas Lamirault) * Kill-buffer command (thanks to Lawrence Mitchell) * Improved on the quit command so that Climacs asks to save buffers that need saving * Incremental search (thanks to Matthieu Villeneuve) * Implemented undo and redo Again, if someone feels like contributing, patches are welcome. Contributions can be of different kinds such as added functionality (probably the most gratifying), bug fixes (less so), code factoring, improvements to the architecture, contributions to the internals documentation, etc. There are still some major things to implement. Lawrence Mitchell is looking into using regular expressions, and my student project concerning Common Lisp syntax will soon start. Aleksandar Bakic is about to commit an alternative implementation of the buffer protocol based on so-called persistent data structures (in this context, "persistent" means that all previous states of the structure are automatically maintained) . This is interesting because given that the buffer protocol is fairly well defined, drop-in replacements should be possible. It might even be possible to have several different implementations in parallel, and to choose the one that is best suited to the editing task at hand. Take care, -- Robert Strandh --------------------------------------------------------------------- Greenspun's Tenth Rule of Programming: any sufficiently complicated C or Fortran program contains an ad hoc informally-specified bug-ridden slow implementation of half of Common Lisp. ---------------------------------------------------------------------