i have new patch for allout.el. it fixes a few things:
- hooks and mode-specific variable settings are properly set to be local,
and properly cleaned up on mode deactivation
- auto-fill is not forced active if it wasn't already active when the mode
was initiated.
- hotspot key handling is modularized, for consistent use everywhere.
- a new hook variable, `allout-mode-deactivation-hook', provides a
complement to `allout-mode-hook'.
the settings cleanup is implemented with an improved settings
suspension/resumption mechanism, accompanied by some much needed unit
tests. the unit tests are run after the file is loaded if a new
customization option, `allout-run-unit-tests-after-load', is true.
the idea is that allout code developers set this to true, and are
warned quickly about regressions.
the change-log is included below and also attached. the patch and a
new version of the NEWS file are also attached. I'm hoping someone
with commit privileges will have a moment to install these changes.
--
ken
address@hidden
http://myriadicity.net
2006-07-08 Ken Manheimer <address@hidden>
* allout.el: Require 'cl.
(allout-mode-deactivate-hook): New hook, is run when allout mode
deactivates.
(allout-developer): New allout customization subgroup.
(allout-run-unit-tests-after-load): New allout-developer
customization variable, when true allout unit tests are run after
file load.
(allout-inhibit-auto-fill): Disable auto-fill activity even during
auto-fill-mode.
(allout-resumptions): Removed, to be replaced by...
(allout-add-resumptions): Register variable settings to be
reinstated by `allout-do-resumptions'. The settings are made
buffer-local, but the locality/globality of the suspended setting
is restored on resumption.
(allout-do-resumptions): Reinstate all settings suspended using
`allout-add-resumptions'.
(allout-test-resumptions): Unit tests (and intermediate variables)
for resumptions.
(allout-tests-globally-unbound, allout-tests-globally-true)
(allout-tests-locally-true): Intermediate variables for
resumptions unit tests.
(allout-overlay-preparations): Replaces `allout-set-overlay-category'.
(allout-exposure-category): Replaces 'allout-overlay-category variable.
(allout-mode): Use `allout-add-resumptions' and `allout-do-resumptions'
instead of retired `allout-resumptions'. For hook functions, use
`local' parameter so hook settings are created and removed as
buffer-local settings. Revise (resumptions) setting
auto-fill-function so it is set only if already active. (The
related fill-function settings are all made in either case, so
that activating auto-fill-mode activity will have the custom
allout-mode behaviors (hanging indent on topics, if configured for
it). Also, remove all allout-exposure-category overlays on mode
deactivation.
(allout-hotspot-key-handler): New function extracted from
`allout-pre-command-business', so the functionality can be used
for other purposes, eg as a binding in an overlay.
(allout-pre-command-business): Use new `allout-hotspot-key-handler'.
(allout-auto-fill): Respect new `allout-inhibit-auto-fill'
customization variable.
(allout-run-unit-tests): Run the (currently quite small)
repertoire of unit tests. Called from an eval-after-load statement
if user has customized `allout-run-unit-tests-after-load' non-nil.