Hi all,

John C and I had been working on a revised indentation engine for
matlab-mode back in March.  After a month of testing (which John has been
working on) we think is ready for more general testing and integration into
the mainline.

The new engine fixes a wide range of bugs and includes massive performance
improvements enabling large M files that used to take multiple hours to
indent to now fully indent in less than a minute.

You can access the new version on the 'hairyblocks' branch on sourceforge;
named for some rather challenging block indentation problems we solved.

Here are a few highlights of what is in the new branch:
* Comments and strings are now handled via syntax tables.  This means:
    * Faster font lock & indentation
    * Standard navigation & edit commands now works w/ strings & comments
    * Standard tools that operate on strings & comments now work w/ matlab
mode
    * More font lock color options for various types of strings and comments
    * List navigation (via (), [], or {}) via std commands now works.
* Argument, Properties, Methods, Events blocks now detect and indent
correctly.  This means:
    * matlab-mode detects 'arguments' and other keywords as a variable or
keyword depending on context
    * faster forward/backward block navigation.
    * electric indent for block keywords.
* Tested the indentation engine against a huge corpus of M code.  This
means:
    * Lots of indentation bug fixes for random edge cases.
    * Focused performance improvements for large files and classes.
    * Improved local test suite to keep things working.
* Mode overrides for sexp & defun detection.  This means:
    * special keybindings for forward/back sexp no longer needed
    * special keybindings for begin/end defun no longer needed
    * tools that use sexp navigation (kill, mark, etc) now work.
    * tools that use defun navigation (mark, narrow, etc) now work.
* Improved file end-type detection.  This means:
    * shows end-type of the file in mode line
    * auto-detects on save w/ fewer questions.
    * mlint will add 'end' in the correct place if an end is missing.
* Removed keybindings for 'return'.  This means:
    * global settings for behavior of RET now also apply to matlab-mode.
    * blank lines will have no trailing spaces after RET or during indent
region.
* Modernized font-lock by using newer font lock faces
* Update the version #

There are some downsides, however.  Several chunks of compatibility code
for Emacs version 19, 20, and probably XEmacs were removed along the way,
mostly because I don't have any versions of Emacs that old so had no way to
verify it continued to work as I updated the code.

For anyone who has the interest, give it a try and let us know how it
goes.  If all goes well, I propose this be merged into the master branch.

Thanks
Eric & John
_______________________________________________
Matlab-emacs-discuss mailing list
Matlab-emacs-discuss@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/matlab-emacs-discuss

Reply via email to