1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-11-25 07:28:20 +00:00

allout.el: Summary - migrate to defining allout mode using

define-minor-mode instead of defun.  Significantly clean-up internal keymap
provisions, refactoring a bit and removing a lot of accumulated cruft.

allout-mode-map is now a keymap by virtue of being an defalias to
allout-mode-map-value, which contains the actual keymap structure.

(allout-mode): Use define-minor-mode rather than defun.  Remove
now-unnecessary minor-mode setup activities from the body.  Specify :keymap
as allout-mode-map so the minor-mode-map-alist entry will be
'(allout-mode . allout-mode-map) - see allout-mode-map-value, below.
Adjust docstring to track changes.
(allout-minor-mode): Remove this defalias, now that we're using
define-minor-mode.
(allout-mode-map): Set value to be 'allout-mode-map.  The actual keymap
is allout-mode-map-value, via defalias.
(allout-mode-map-value): The variable holding the actual mode keymap
structure, by virtue of defalias from allout-mode-map.
(allout-compose-and-institute-keymap): Renamed from allout-bind-keys, and
including the binding-composition functionality of the former
produce-allout-mode-map and allout-setup-mode-map.
(allout-institute-keymap): Take over the "setup" part of the former
allout-setup-mode-map.  Reassign allout-mode-map-value value and update the
defalias.
(allout-command-prefix) (allout-prefixed-keybindings)
(allout-unprefixed-keybindings): Use allout-compose-and-institute-keymap to
process the bindings.
(allout-unprefixed-keybindings): Remove extraneous '?' question marks.
(allout-prefixed-keybindings): Elide binding to (prefixed) \C-h - user can
customize if they want to use that binding.  Bind allout-copy-topic-as-kill
to (prefixed) \M-k.  Bind allout-up-current-level to (prefixed) \C-u.  (I
think i mistakenly elided that, previously, instead of the one for \C-h.)
(allout-hotspot-key-handler): Remove attempt to resolve the key through the
literal key-string lookup on allout-keybindings-list.  That probably hasn't
worked for a Long Time, and removal of allout-keybindings-list further
simplifies the keybindings situation.
(allout-pre-command-business): Use allout-mode-map-value instead of
allout-mode-map.
(allout-preempt-trailing-ctrl-h): Remove.  The user can customize the
bindings if they want to use a keybinding having a trailing \C-h.  No
deprecation needed since this feature was never in a release.
(allout-keybindings-list): Remove.  It's not been useful for a while.  (See
allout-hotspot-key-handler changes, above.)
(produce-allout-mode-map): Remove.  Consolidate into
allout-compose-and-institute-keymap.
(allout-mode-map-adjustments): Remove.  No longer necessary with removal of
allout-preempt-trailing-ctrl-h.
(allout-setup-mode-map): Remove.  Consolidate into
allout-compose-and-institute-keymap and allout-institute-keymap.
This commit is contained in:
Ken Manheimer 2011-01-20 13:13:30 -05:00
parent dbfb414e49
commit d3e51865cd
2 changed files with 157 additions and 200 deletions

View File

@ -1,3 +1,61 @@
2011-01-20 Ken Manheimer <ken.manheimer@gmail.com>
* allout.el: Summary - migrate to defining allout mode using
define-minor-mode instead of defun. Significantly clean-up
internal keymap provisions, refactoring and, in the process,
removing a lot of accumulated cruft.
allout-mode-map is now a keymap by virtue of being a defalias to
allout-mode-map-value, which contains the actual keymap structure.
(allout-mode): Use define-minor-mode rather than defun. Remove
now-unnecessary minor-mode setup activities from the body.
Specify :keymap as allout-mode-map so the minor-mode-map-alist
entry will be '(allout-mode . allout-mode-map) - see
allout-mode-map-value, below. Adjust docstring to track changes.
(allout-minor-mode): Remove this defalias, now that we're using
define-minor-mode.
(allout-mode-map): Set value to be 'allout-mode-map. The actual
keymap is allout-mode-map-value, via defalias.
(allout-mode-map-value): The variable holding the actual mode
keymap structure, by virtue of defalias from allout-mode-map.
(allout-compose-and-institute-keymap): Renamed from
allout-bind-keys, and including the binding-composition
functionality of the former produce-allout-mode-map and
allout-setup-mode-map.
(allout-institute-keymap): Take over the "setup" part of the former
allout-setup-mode-map. Reassign allout-mode-map-value value and
update the defalias.
(allout-command-prefix) (allout-prefixed-keybindings)
(allout-unprefixed-keybindings): Use
allout-compose-and-institute-keymap to process the bindings.
(allout-unprefixed-keybindings): Remove extraneous '?' question
marks.
(allout-prefixed-keybindings): Elide binding to (prefixed) \C-h -
user can customize if they want to use that binding. Bind
allout-copy-topic-as-kill to (prefixed) \M-k. Bind
allout-up-current-level to (prefixed) \C-u. (I think i mistakenly
elided that, previously, instead of the one for \C-h.)
(allout-hotspot-key-handler): Remove attempt to resolve the key
through the literal key-string lookup on allout-keybindings-list.
That probably hasn't worked for a Long Time, and removal of
allout-keybindings-list further simplifies the keybindings
situation.
(allout-pre-command-business): Use allout-mode-map-value instead
of allout-mode-map.
(allout-preempt-trailing-ctrl-h): Remove. The user can customize
the bindings if they want to use a keybinding having a trailing
\C-h. No deprecation needed since this feature was never in a
release.
(allout-keybindings-list): Remove. It's not been useful for a
while. (See allout-hotspot-key-handler changes, above.)
(produce-allout-mode-map): Remove. Consolidate into
allout-compose-and-institute-keymap.
(allout-mode-map-adjustments): Remove. No longer necessary with
removal of allout-preempt-trailing-ctrl-h.
(allout-setup-mode-map): Remove. Consolidate into
allout-compose-and-institute-keymap and allout-institute-keymap.
2011-01-20 Glenn Morris <rgm@gnu.org>
* vc/vc-svn.el (vc-svn-after-dir-status): Tweak previous change.

View File

@ -108,23 +108,39 @@
;;;_ + Layout, Mode, and Topic Header Configuration
(defvar allout-command-prefix) ; defined below
(defvar allout-mode-map)
;;;_ > allout-keybindings incidentals:
;;;_ > allout-bind-keys &optional varname value
(defun allout-bind-keys (&optional varname value)
"Rebuild the `allout-mode-map' according to the keybinding specs.
;;;_ : internal key binding stuff - in this section for load-order.
;;;_ = allout-mode-map
(defvar allout-mode-map 'allout-mode-map
"Keybindings place-holder for (allout) outline minor mode.
Useful standalone, to init the map, or in customizing the
Do NOT set the value of this variable. Instead, customize
`allout-command-prefix', `allout-prefixed-keybindings', and
`allout-unprefixed-keybindings'.")
;;;_ = allout-mode-map-value
(defvar allout-mode-map-value nil
"Keymap for allout outline minor mode.
Do NOT set the value of this variable. Instead, customize
`allout-command-prefix', `allout-prefixed-keybindings', and
`allout-unprefixed-keybindings'.")
;;;_ = make allout-mode-map-value an alias for allout-mode-map:
;; this needs to be revised when the value is changed, sigh.
(defalias 'allout-mode-map allout-mode-map-value)
;;;_ > allout-compose-and-institute-keymap (&optional varname value)
(defun allout-compose-and-institute-keymap (&optional varname value)
"Create the allout keymap according to the keybinding specs, and set it.
Useful standalone or to effect customizations of the
respective allout-mode keybinding variables, `allout-command-prefix',
`allout-prefixed-keybindings', and `allout-unprefixed-keybindings'"
;; Set the customization variable, if any:
(when varname
(set-default varname value))
(let ((map (make-sparse-keymap))
key)
(let ((map (make-sparse-keymap)))
(when (boundp 'allout-prefixed-keybindings)
;; Be tolerant of the moments when the variables are first being defined.
;; tolerate first definitions of the variables:
(dolist (entry allout-prefixed-keybindings)
(define-key map
;; XXX vector vs non-vector key descriptions?
@ -134,9 +150,33 @@ respective allout-mode keybinding variables, `allout-command-prefix',
(when (boundp 'allout-unprefixed-keybindings)
(dolist (entry allout-unprefixed-keybindings)
(define-key map (car (read-from-string (car entry))) (cadr entry))))
(setq allout-mode-map map)
map
))
(substitute-key-definition 'beginning-of-line 'allout-beginning-of-line
map global-map)
(substitute-key-definition 'move-beginning-of-line 'allout-beginning-of-line
map global-map)
(substitute-key-definition 'end-of-line 'allout-end-of-line
map global-map)
(substitute-key-definition 'move-end-of-line 'allout-end-of-line
map global-map)
(allout-institute-keymap map)))
;;;_ > allout-institute-keymap (map)
(defun allout-institute-keymap (map)
"Associate allout-mode bindings with allout as a minor mode."
;; Architecture:
;; allout-mode-map var is a keymap by virtue of being a defalias for
;; allout-mode-map-value, which has the actual keymap value.
;; allout-mode-map's symbol value is just 'allout-mode-map, so it can be
;; used in minor-mode-map-alist to indirect to the actual
;; allout-mode-map-var value, which can be adjusted and reassigned.
(setq allout-mode-map-value map)
;; The defalias reexecution is necessary when allout-mode-map-value is
;; changing from nil, and it doesn't hurt to do it every time, so:
(defalias 'allout-mode-map allout-mode-map-value))
;;;_ * intialize the mode map:
;; ensure that allout-mode-map has some setting even if allout-mode hasn't
;; been invoked:
(allout-compose-and-institute-keymap)
;;;_ = allout-command-prefix
(defcustom allout-command-prefix "\C-c "
"Key sequence to be used as prefix for outline mode command key bindings.
@ -145,7 +185,7 @@ Default is '\C-c<space>'; just '\C-c' is more short-and-sweet, if you're
willing to let allout use a bunch of \C-c keybindings."
:type 'string
:group 'allout-keybindings
:set 'allout-bind-keys)
:set 'allout-compose-and-institute-keymap)
;;;_ = allout-keybindings-binding
(define-widget 'allout-keybindings-binding 'lazy
"Structure of allout keybindings customization items."
@ -157,7 +197,7 @@ willing to let allout use a bunch of \C-c keybindings."
(defcustom allout-prefixed-keybindings
'(("[(control ?n)]" allout-next-visible-heading)
("[(control ?p)]" allout-previous-visible-heading)
;; ("[(control ?u)]" allout-up-current-level)
("[(control ?u)]" allout-up-current-level)
("[(control ?f)]" allout-forward-current-level)
("[(control ?b)]" allout-backward-current-level)
("[(control ?a)]" allout-beginning-of-current-entry)
@ -166,7 +206,8 @@ willing to let allout use a bunch of \C-c keybindings."
("[(control ?i)]" allout-show-children)
("[(control ?s)]" allout-show-current-subtree)
("[(control ?t)]" allout-toggle-current-subtree-exposure)
("[(control ?h)]" allout-hide-current-subtree)
;; Let user customize if they want to preempt describe-prefix-bindings ^h use.
;; ("[(control ?h)]" allout-hide-current-subtree)
("[?h]" allout-hide-current-subtree)
("[(control ?o)]" allout-show-current-entry)
("[?!]" allout-show-all)
@ -181,7 +222,7 @@ willing to let allout use a bunch of \C-c keybindings."
("[?*]" allout-rebullet-current-heading)
("[?']" allout-number-siblings)
("[(control ?k)]" allout-kill-topic)
("[??]" allout-copy-topic-as-kill)
("[(meta ?k)]" allout-copy-topic-as-kill)
("[?@]" allout-resolve-xref)
("[?=?c]" allout-copy-exposed-to-buffer)
("[?=?i]" allout-indented-exposed-to-buffer)
@ -205,14 +246,14 @@ multiple functions will not work - the last binding for a key
prevails."
:type 'allout-keybindings-binding
:group 'allout-keybindings
:set 'allout-bind-keys
:set 'allout-compose-and-institute-keymap
)
;;;_ = allout-unprefixed-keybindings
(defcustom allout-unprefixed-keybindings
'(("[(control ?k)]" allout-kill-line)
("[??(meta ?k)]" allout-copy-line-as-kill)
("[(meta ?k)]" allout-copy-line-as-kill)
("[(control ?y)]" allout-yank)
("[??(meta ?y)]" allout-yank-pop)
("[(meta ?y)]" allout-yank-pop)
)
"Allout-mode functions bound to keys without any added prefix.
@ -228,68 +269,9 @@ Use vector format for the keys:
See the existing keys for examples."
:type 'allout-keybindings-binding
:group 'allout-keybindings
:set 'allout-bind-keys
:set 'allout-compose-and-institute-keymap
)
;;;_ = allout-preempt-trailing-ctrl-h
(defcustom allout-preempt-trailing-ctrl-h nil
"Use <prefix>-\C-h, instead of leaving it for describe-prefix-bindings?"
:type 'boolean
:group 'allout)
;;;_ = allout-keybindings-list
;;; You have to reactivate allout-mode to change this var's current setting.
(defvar allout-keybindings-list ()
"*List of `allout-mode' key / function bindings, for `allout-mode-map'.
String or vector key will be prefaced with `allout-command-prefix',
unless optional third, non-nil element is present.")
(setq allout-keybindings-list
'(
; Motion commands:
("\C-n" allout-next-visible-heading)
("\C-p" allout-previous-visible-heading)
("\C-u" allout-up-current-level)
("\C-f" allout-forward-current-level)
("\C-b" allout-backward-current-level)
("\C-a" allout-beginning-of-current-entry)
("\C-e" allout-end-of-entry)
; Exposure commands:
([(control i)] allout-show-children) ; xemacs translates "\C-i" to tab
("\C-i" allout-show-children) ; but we still need this for hotspot
("\C-s" allout-show-current-subtree)
;; binding to \C-h is included if allout-preempt-trailing-ctrl-h,
;; so user controls whether or not to preempt the conventional ^H
;; binding to help-command.
("\C-h" allout-hide-current-subtree)
("\C-t" allout-toggle-current-subtree-exposure)
("h" allout-hide-current-subtree)
("\C-o" allout-show-current-entry)
("!" allout-show-all)
("x" allout-toggle-current-subtree-encryption)
; Alteration commands:
(" " allout-open-sibtopic)
("." allout-open-subtopic)
("," allout-open-supertopic)
("'" allout-shift-in)
(">" allout-shift-in)
("<" allout-shift-out)
("\C-m" allout-rebullet-topic)
("*" allout-rebullet-current-heading)
("#" allout-number-siblings)
("\C-k" allout-kill-line t)
([?\M-k] allout-copy-line-as-kill t)
("\C-y" allout-yank t)
([?\M-y] allout-yank-pop t)
("\C-k" allout-kill-topic)
([?\M-k] allout-copy-topic-as-kill)
; Miscellaneous commands:
;([?\C-\ ] allout-mark-topic)
("@" allout-resolve-xref)
("=c" allout-copy-exposed-to-buffer)
("=i" allout-indented-exposed-to-buffer)
("=t" allout-latexify-exposed)
("=p" allout-flatten-exposed-to-buffer)))
;;;_ = allout-auto-activation
(defcustom allout-auto-activation nil
"Regulates auto-activation modality of allout outlines -- see `allout-init'.
@ -1239,36 +1221,6 @@ Also refresh various data structures that hinge on the regexp."
"[^" allout-primary-bullet "]"))
"\\)"
))))
;;;_ : Key bindings
;;;_ = allout-mode-map
(defvar allout-mode-map nil "Keybindings for (allout) outline minor mode.")
;;;_ > produce-allout-mode-map (keymap-alist &optional base-map)
(defun produce-allout-mode-map (keymap-list &optional base-map)
"Produce keymap for use as `allout-mode-map', from KEYMAP-LIST.
Built on top of optional BASE-MAP, or empty sparse map if none specified.
See doc string for `allout-keybindings-list' for format of binding list."
(let ((map (or base-map (make-sparse-keymap)))
(pref (list allout-command-prefix)))
(mapc (function
(lambda (cell)
(let ((add-pref (null (cdr (cdr cell))))
(key-suff (list (car cell))))
(apply 'define-key
(list map
(apply 'vconcat (if add-pref
(append pref key-suff)
key-suff))
(car (cdr cell)))))))
keymap-list)
map))
;;;_ > allout-mode-map-adjustments (base-map)
(defun allout-mode-map-adjustments (base-map)
"Do conditional additions to specified base-map, like inclusion of \\C-h."
(if allout-preempt-trailing-ctrl-h
(cons '("\C-h" allout-hide-current-subtree) base-map)
base-map)
)
;;;_ : Menu bar
(defvar allout-mode-exposure-menu)
(defvar allout-mode-editing-menu)
@ -1277,7 +1229,7 @@ See doc string for `allout-keybindings-list' for format of binding list."
(defun produce-allout-mode-menubar-entries ()
(require 'easymenu)
(easy-menu-define allout-mode-exposure-menu
allout-mode-map
allout-mode-map-value
"Allout outline exposure menu."
'("Exposure"
["Show Entry" allout-show-current-entry t]
@ -1288,7 +1240,7 @@ See doc string for `allout-keybindings-list' for format of binding list."
"----"
["Show All" allout-show-all t]))
(easy-menu-define allout-mode-editing-menu
allout-mode-map
allout-mode-map-value
"Allout outline editing menu."
'("Headings"
["Open Sibling" allout-open-sibtopic t]
@ -1305,7 +1257,7 @@ See doc string for `allout-keybindings-list' for format of binding list."
allout-toggle-current-subtree-encryption
(> (allout-current-depth) 1)]))
(easy-menu-define allout-mode-navigation-menu
allout-mode-map
allout-mode-map-value
"Allout outline navigation menu."
'("Navigation"
["Next Visible Heading" allout-next-visible-heading t]
@ -1322,7 +1274,7 @@ See doc string for `allout-keybindings-list' for format of binding list."
["End of Entry" allout-end-of-entry t]
["End of Subtree" allout-end-of-current-subtree t]))
(easy-menu-define allout-mode-misc-menu
allout-mode-map
allout-mode-map-value
"Allout outlines miscellaneous bindings."
'("Misc"
["Version" allout-version t]
@ -1776,19 +1728,16 @@ the following two lines in your Emacs init file:
'(allout-overlay-insert-in-front-handler)))
(put 'allout-exposure-category 'modification-hooks
'(allout-overlay-interior-modification-handler)))
;;;_ > allout-mode (&optional force)
;;;_ > define-minor-mode allout-mode
;;;_ : Defun:
;;;###autoload
(defun allout-mode (&optional force)
(define-minor-mode allout-mode
;;;_ . Doc string:
"Toggle minor mode for controlling exposure and editing of text outlines.
\\<allout-mode-map>
\\<allout-mode-map-value>
Allout outline mode always runs as a minor mode.
Optional FORCE non-nil, or command with no universal argument,
means force activation.
Allout outline mode provides extensive outline oriented
formatting and manipulation. It enables structural editing of
outlines, as well as navigation and exposure. It also is
@ -1816,14 +1765,16 @@ features, and see the docstring of the function `allout-init' for
instructions on priming your emacs session for automatic
activation of `allout-mode'.
The bindings are dictated by the customizable `allout-keybindings-list'
variable. We recommend customizing `allout-command-prefix' to use just
`\\C-c' as the command prefix, if the allout bindings don't conflict with
any personal bindings you have on \\C-c. In any case, outline structure
navigation and authoring is simplified by positioning the cursor on an
item's bullet character, the \"hot-spot\" -- then you can invoke allout
commands with just the un-prefixed, un-control-shifted command letters.
This is described further in the HOT-SPOT Operation section.
The bindings are those listed in `allout-prefixed-keybindings'
and `allout-unprefixed-keybindings'. We recommend customizing
`allout-command-prefix' to use just `\\C-c' as the command
prefix, if the allout bindings don't conflict with any personal
bindings you have on \\C-c. In any case, outline structure
navigation and authoring is simplified by positioning the cursor
on an item's bullet character, the \"hot-spot\" -- then you can
invoke allout commands with just the un-prefixed,
un-control-shifted command letters. This is described further in
the HOT-SPOT Operation section.
Exposure Control:
----------------
@ -2043,7 +1994,8 @@ CONCEALED:
CLOSED: A TOPIC whose immediate OFFSPRING and body-text is CONCEALED.
OPEN: A TOPIC that is not CLOSED, though its OFFSPRING or BODY may be."
;;;_ . Code
(interactive "P")
:lighter " Allout"
:keymap 'allout-mode-map
(let ((write-file-hook-var-name (cond ((boundp 'write-file-functions)
'write-file-functions)
@ -2054,7 +2006,7 @@ OPEN: A TOPIC that is not CLOSED, though its OFFSPRING or BODY may be."
allout-layout
allout-default-layout)))
(if (and (allout-mode-p) (not force))
(if (not (allout-mode-p))
(progn
;; Deactivation:
@ -2069,18 +2021,14 @@ OPEN: A TOPIC that is not CLOSED, though its OFFSPRING or BODY may be."
(remove-hook 'post-command-hook 'allout-post-command-business t)
(remove-hook 'before-change-functions 'allout-before-change-handler t)
(remove-hook 'isearch-mode-end-hook 'allout-isearch-end-handler t)
(remove-hook write-file-hook-var-name 'allout-write-file-hook-handler
t)
(remove-hook write-file-hook-var-name
'allout-write-file-hook-handler t)
(remove-hook 'auto-save-hook 'allout-auto-save-hook-handler t)
(remove-overlays (point-min) (point-max)
'category 'allout-exposure-category)
'category 'allout-exposure-category))
(setq allout-mode nil)
(run-hooks 'allout-mode-deactivate-hook)
(run-hooks 'allout-mode-off-hook))
;; Activation:
;; Activating:
(if allout-old-style-prefixes
;; Inhibit all the fancy formatting:
(allout-add-resumptions '(allout-primary-bullet "*")))
@ -2098,17 +2046,9 @@ OPEN: A TOPIC that is not CLOSED, though its OFFSPRING or BODY may be."
allout-bob-regexp
extend))
;; Produce map from current version of allout-keybindings-list:
(allout-setup-mode-map)
(allout-compose-and-institute-keymap)
(produce-allout-mode-menubar-entries)
;; Include on minor-mode-map-alist, if not already there:
(if (not (member '(allout-mode . allout-mode-map)
minor-mode-map-alist))
(setq minor-mode-map-alist
(cons '(allout-mode . allout-mode-map)
minor-mode-map-alist)))
(add-to-invisibility-spec '(allout . t))
(allout-add-resumptions '(line-move-ignore-invisible t))
@ -2142,13 +2082,7 @@ OPEN: A TOPIC that is not CLOSED, though its OFFSPRING or BODY may be."
;; allout-auto-fill will use the stashed values and so forth.
(allout-add-resumptions '(auto-fill-function allout-auto-fill)))
(or (assq 'allout-mode minor-mode-alist)
(setq minor-mode-alist
(cons '(allout-mode " Allout") minor-mode-alist)))
(allout-setup-menubar)
(setq allout-mode t)
(run-hooks 'allout-mode-hook)
;; Do auto layout if warranted:
(when (and allout-layout
@ -2182,36 +2116,6 @@ OPEN: A TOPIC that is not CLOSED, though its OFFSPRING or BODY may be."
) ; define-minor-mode
;;;_ > allout-minor-mode alias
(defalias 'allout-minor-mode 'allout-mode)
;;;_ > allout-setup-mode-map ())
(defun allout-setup-mode-map ()
"Establish allout-mode bindings."
(setq-default allout-mode-map
(produce-allout-mode-map
(allout-mode-map-adjustments allout-keybindings-list)))
(setq allout-mode-map
(produce-allout-mode-map
(allout-mode-map-adjustments allout-keybindings-list)))
(substitute-key-definition 'beginning-of-line
'allout-beginning-of-line
allout-mode-map global-map)
(substitute-key-definition 'move-beginning-of-line
'allout-beginning-of-line
allout-mode-map global-map)
(substitute-key-definition 'end-of-line
'allout-end-of-line
allout-mode-map global-map)
(substitute-key-definition 'move-end-of-line
'allout-end-of-line
allout-mode-map global-map)
(fset 'allout-mode-map allout-mode-map))
;; ensure that allout-mode-map has some setting even if allout-mode hasn't
;; been invoked:
(allout-setup-mode-map)
;;;_ > allout-minor-mode
(defalias 'allout-minor-mode 'allout-mode)
;;;_ > allout-unload-function
(defun allout-unload-function ()
"Unload the allout outline library."
@ -3425,7 +3329,7 @@ When set, tells post-processing to reposition on topic bullet, and
then unset it. Set by `allout-pre-command-business' when implementing
hot-spot operation, where literal characters typed over a topic bullet
are mapped to the command of the corresponding control-key on the
`allout-mode-map'.")
`allout-mode-map-value'.")
(make-variable-buffer-local 'allout-post-goto-bullet)
;;;_ = allout-command-counter
(defvar allout-command-counter 0
@ -3464,11 +3368,12 @@ coordinating with allout activity.")
Among other things, implements special behavior when the cursor is on the
topic bullet character.
When the cursor is on the bullet character, self-insert characters are
reinterpreted as the corresponding control-character in the
`allout-mode-map'. The `allout-mode' `post-command-hook' insures that
the cursor which has moved as a result of such reinterpretation is
positioned on the bullet character of the destination topic.
When the cursor is on the bullet character, self-insert
characters are reinterpreted as the corresponding
control-character in the `allout-mode-map-value'. The
`allout-mode' `post-command-hook' insures that the cursor which
has moved as a result of such reinterpretation is positioned on
the bullet character of the destination topic.
The upshot is that you can get easy, single (ie, unmodified) key
outline maneuvering operations by positioning the cursor on the bullet
@ -3495,9 +3400,6 @@ this-command accordingly.
Returns the qualifying command, if any, else nil."
(interactive)
(let* ((modified (event-modifiers last-command-event))
(key-string (if (numberp last-command-event)
(char-to-string
(event-basic-type last-command-event))))
(key-num (cond ((numberp last-command-event) last-command-event)
;; for XEmacs character type:
((and (fboundp 'characterp)
@ -3514,16 +3416,13 @@ Returns the qualifying command, if any, else nil."
(not modified)
(<= 33 key-num)
(setq mapped-binding
(or (and (assoc key-string allout-keybindings-list)
;; translate literal membership on list:
(cadr (assoc key-string allout-keybindings-list)))
;; translate as a keybinding:
(key-binding (vconcat allout-command-prefix
(vector
(if (and (<= 97 key-num) ; "a"
(>= 122 key-num)) ; "z"
(- key-num 96) key-num)))
t))))
;; translate as a keybinding:
(key-binding (vconcat allout-command-prefix
(vector
(if (and (<= 97 key-num) ; "a"
(>= 122 key-num)) ; "z"
(- key-num 96) key-num)))
t)))
;; Qualified as an allout command -- do hot-spot operation.
(setq allout-post-goto-bullet t)
;; accept-defaults nil, or else we get allout-item-icon-key-handler.