;; Copyright (C) 1992, 1993, 1994, 2001, 2002 Free Software Foundation, Inc.
-;; Author: Ken Manheimer <klm@python.org>
-;; Maintainer: Ken Manheimer <klm@python.org>
+;; Author: Ken Manheimer <klm@zope.com>
+;; Maintainer: Ken Manheimer <klm@zope.com>
;; Created: Dec 1991 - first release to usenet
-;; Version: $Id: allout.el,v 1.36 2002/12/16 00:26:22 rost Exp $||
;; Keywords: outlines mode wp languages
;; This file is part of GNU Emacs.
;; exposure. It also provides for syntax-sensitive text like
;; programming languages. (For an example, see the allout code
;; itself, which is organized in ;; an outline framework.)
-;;
+;;
;; In addition to outline navigation and exposure, allout includes:
-;;
+;;
;; - topic-oriented repositioning, cut, and paste
;; - integral outline exposure-layout
;; - incremental search with dynamic exposure and reconcealment of hidden text
;; - automatic topic-number maintenance
;; - "Hot-spot" operation, for single-keystroke maneuvering and
;; exposure control. (See the `allout-mode' docstring.)
-;;
+;;
;; and many other features.
-;;
+;;
;; The outline menubar additions provide quick reference to many of
;; the features, and see the docstring of the function `allout-init'
;; for instructions on priming your emacs session for automatic
;; activation of `allout-mode'.
-;;
+;;
;; See the docstring of the variables `allout-layout' and
;; `allout-auto-activation' for details on automatic activation of
;; allout `allout-mode' as a minor mode. (It has changed since allout
;; Note - the lines beginning with `;;;_' are outline topic headers.
;; Just `ESC-x eval-current-buffer' to give it a whirl.
-;; Ken Manheimer klm@python.org
+;; Ken Manheimer klm@zope.com
;;; Code:
variable `allout-layout' is non-nil, and whether or not the layout
dictated by `allout-layout' should be imposed on mode activation.
-With value `t', auto-mode-activation and auto-layout are enabled.
+With value t, auto-mode-activation and auto-layout are enabled.
\(This also depends on `allout-find-file-hook' being installed in
-`find-file-hooks', which is also done by `allout-init'.)
+`find-file-hook', which is also done by `allout-init'.)
With value `ask', auto-mode-activation is enabled, and endorsement for
performing auto-layout is asked of the user each time.
-With value `activate', only auto-mode-activation is enabled,
+With value `activate', only auto-mode-activation is enabled,
auto-layout is not.
-With value `nil', neither auto-mode-activation nor auto-layout are
+With value nil, neither auto-mode-activation nor auto-layout are
enabled.
See the docstring for `allout-init' for the proper interface to
These bullets are used to distinguish topics from the run-of-the-mill
ones. They are not used in the standard topic headers created by
-the topic-opening, shifting, and rebulleting \(eg, on topic shift,
+the topic-opening, shifting, and rebulleting \(eg, on topic shift,
topic paste, blanket rebulleting) routines, but are offered among the
choices for rebulleting. They are not altered by the above automatic
rebulleting, so they can be used to characterize topics, eg:
String values are used as they stand.
-Value `t' means to first check for assoc value in `allout-mode-leaders'
+Value t means to first check for assoc value in `allout-mode-leaders'
alist, then use comment-start string, if any, then use default \(`.').
\(See note about use of comment-start strings, below.)
Set to the symbol for either of `allout-mode-leaders' or
`comment-start' to use only one of them, respectively.
-Value `nil' means to always use the default \(`.').
+Value nil means to always use the default \(`.').
comment-start strings that do not end in spaces are tripled, and an
`_' underscore is tacked on the end, to distinguish them from regular
presumes that the space is for appearance, not comment syntax. You
can use `allout-mode-leaders' to override this behavior, when
incorrect.]"
- :type '(choice (const t) (const nil) string
+ :type '(choice (const t) (const nil) string
(const allout-mode-leaders)
(const comment-start))
:group 'allout)
their topic header are reindented to correspond with depth shifts of
the header.
-A value of `t' enables reindent in non-programming-code buffers, ie
+A value of t enables reindent in non-programming-code buffers, ie
those that do not have the variable `comment-start' set. A value of
`force' enables reindent whether or not `comment-start' is set."
:type '(choice (const nil) (const t) (const text) (const force))
;;;_ : Version
;;;_ = allout-version
(defvar allout-version
- (let ((rcs-rev "$Revision: 1.36 $"))
+ (let ((rcs-rev "$Revision: 1.48 $"))
(condition-case err
(save-match-data
(string-match "Revision: \\([0-9]+\\.[0-9]+\\)" rcs-rev)
(car (cdr cell)))))))
keymap-list)
map))
-;;;_ = allout-prior-bindings - being deprecated.
-(defvar allout-prior-bindings nil
- "Variable for use in V18, with `allout-added-bindings', for
-resurrecting, on mode deactivation, bindings that existed before
-activation. Being deprecated.")
-;;;_ = allout-added-bindings - being deprecated
-(defvar allout-added-bindings nil
- "Variable for use in V18, with `allout-prior-bindings', for
-resurrecting, on mode deactivation, bindings that existed before
-activation. Being deprecated.")
+
;;;_ : Menu bar
+(defvar allout-mode-exposure-menu)
+(defvar allout-mode-editing-menu)
+(defvar allout-mode-navigation-menu)
+(defvar allout-mode-misc-menu)
(defun produce-allout-mode-menubar-entries ()
(require 'easymenu)
(easy-menu-define allout-mode-exposure-menu
"----"
["Duplicate Exposed" allout-copy-exposed-to-buffer t]
["Duplicate Exposed, numbered"
- allout-flatten-exposed-to-buffer t]
+ allout-flatten-exposed-to-buffer t]
["Duplicate Exposed, indented"
- allout-indented-exposed-to-buffer t]
+ allout-indented-exposed-to-buffer t]
"----"
["Set Header Lead" allout-reset-header-lead t]
["Set New Exposure" allout-expose-topic t])))
(make-variable-buffer-local 'allout-override-protect)
;;;_ > allout-unprotected (expr)
(defmacro allout-unprotected (expr)
- "Evaluate EXPRESSION with `allout-override-protect' let-bound `t'."
+ "Evaluate EXPRESSION with `allout-override-protect' let-bound t."
`(let ((allout-override-protect t))
,expr))
;;;_ = allout-undo-aggregation
to track repeats.")
;;;_ > allout-write-file-hook ()
(defun allout-write-file-hook ()
- "In `allout-mode', run as a `local-write-file-hooks' activity.
+ "In `allout-mode', run as a `write-contents-functions' activity.
Currently just sets `allout-during-write-cue', so outline change-protection
knows to keep inactive during file write."
`allout-expose-topic' docstrings for more details on auto layout).
`allout-init' works by setting up (or removing)
-`allout-find-file-hook' in `find-file-hooks', and giving
+`allout-find-file-hook' in `find-file-hook', and giving
`allout-auto-activation' a suitable setting.
To prime your emacs session for full auto-outline operation, include
(curr-mode 'allout-auto-activation))
(cond ((not mode)
- (setq find-file-hooks (delq hook find-file-hooks))
+ (setq find-file-hook (delq hook find-file-hook))
(if (interactive-p)
(message "Allout outline mode auto-activation inhibited.")))
((eq mode 'report)
- (if (not (memq hook find-file-hooks))
- (allout-init nil)
- ;; Just punt and use the reports from each of the modes:
- (allout-init (symbol-value curr-mode))))
- (t (add-hook 'find-file-hooks hook)
+ (if (memq hook find-file-hook)
+ ;; Just punt and use the reports from each of the modes:
+ (allout-init (symbol-value curr-mode))
+ (allout-init nil)
+ (message "Allout outline mode auto-activation inhibited.")))
+ (t (add-hook 'find-file-hook hook)
(set curr-mode ; `set', not `setq'!
(cond ((eq mode 'activate)
(message
((message
"Outline mode auto-activation and -layout enabled.")
'full)))))))
-
+
;;;_ > allout-setup-menubar ()
(defun allout-setup-menubar ()
"Populate the current buffer's menubar with `allout-mode' stuff."
Below is a description of the bindings, and then explanation of
special `allout-mode' features and terminology. See also the outline
menubar additions for quick reference to many of the features, and see
-the docstring of the variable `allout-init' for instructions on
+the docstring of the function `allout-init' for instructions on
priming your emacs session for automatic activation of `allout-mode'.
C-c<CR> allout-rebullet-topic Reconcile bullets of topic and its offspring
- distinctive bullets are not changed, others
alternated according to nesting depth.
-C-c b allout-rebullet-current-heading Prompt for alternate bullet for
+C-c * allout-rebullet-current-heading Prompt for alternate bullet for
current topic.
C-c # allout-number-siblings Number bullets of topic and siblings - the
offspring are not affected. With repeat
; active state or *de*activation
; specifically requested:
(setq allout-explicitly-deactivated t)
- (if (string-match "^18\." emacs-version)
- ; Revoke those keys that remain
- ; as we set them:
- (let ((curr-loc (current-local-map)))
- (mapcar (function
- (lambda (cell)
- (if (eq (lookup-key curr-loc (car cell))
- (car (cdr cell)))
- (define-key curr-loc (car cell)
- (assq (car cell) allout-prior-bindings)))))
- allout-added-bindings)
- (allout-resumptions 'allout-added-bindings)
- (allout-resumptions 'allout-prior-bindings)))
(if allout-old-style-prefixes
(progn
(allout-resumptions 'selective-display)
(if (and (boundp 'before-change-functions) before-change-functions)
(allout-resumptions 'before-change-functions))
- (setq local-write-file-hooks
- (delq 'allout-write-file-hook
- local-write-file-hooks))
+ (setq write-contents-functions
+ (delq 'allout-write-file-hook
+ write-contents-functions))
(allout-resumptions 'paragraph-start)
(allout-resumptions 'paragraph-separate)
(allout-resumptions (if (string-match "^18" emacs-version)
(cons '(allout-mode . allout-mode-map)
minor-mode-map-alist))))
- ; V18 minor-mode key bindings:
- ; Stash record of added bindings
- ; for later revocation:
- (allout-resumptions 'allout-added-bindings
- (list allout-keybindings-list))
- (allout-resumptions 'allout-prior-bindings
- (list (current-local-map)))
; and add them:
(use-local-map (produce-allout-mode-map allout-keybindings-list
(current-local-map)))
; Temporarily set by any outline
; functions that can be trusted to
; deal properly with concealed text.
- (add-hook 'local-write-file-hooks 'allout-write-file-hook)
+ (add-hook 'write-contents-functions 'allout-write-file-hook)
; Custom auto-fill func, to support
; respect for topic headline,
; hanging-indents, etc:
;;;_ > allout-pre-command-business ()
(defun allout-pre-command-business ()
"Outline `pre-command-hook' function for outline buffers.
-Implements special behavior when cursor is on bullet char.
+Implements special behavior when cursor is on bullet character.
-Self-insert characters are reinterpreted control-character references
-into the `allout-mode-map'. The `allout-mode' `post-command-hook' will
-position a cursor that has moved as a result of such reinterpretation,
-on the destination topic's bullet, when the cursor wound up in the
+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.
The upshot is that you can get easy, single (ie, unmodified) key
outline maneuvering operations by positioning the cursor on the bullet
-char. You stay in this mode until you use some regular
-cursor-positioning command to relocate the cursor off of a bullet
-char."
-
+char. When in this mode you can use regular cursor-positioning
+command/keystrokes to relocate the cursor off of a bullet character to
+return to regular interpretation of self-insert characters."
(if (not (allout-mode-p))
;; Shouldn't be invoked if not in allout allout-mode, but just in case:
nil
(add-hook 'isearch-mode-end-hook 'allout-isearch-rectification)
(if (fboundp 'allout-real-isearch-abort)
- ;;
+ ;;
nil
; Ensure load of isearch-mode:
(if (or (and (fboundp 'isearch-mode)
(fboundp 'isearch-abort))
- (condition-case error
+ (condition-case error
(load-library "isearch-mode")
('file-error (message
"Skipping isearch-mode provisions - %s '%s'"
(setq allout-isearch-dynamic-expose nil))))
;; Isearch-mode loaded, encapsulate specific entry points for
;; outline dynamic-exposure business:
- (progn
+ (progn
;; stash crucial isearch-mode funcs under known, private
;; names, then register wrapper functions under the old
;; names, in their stead:
numbered form. It has effect only if `allout-numbered-bullet' is
non-nil and soliciting was not explicitly invoked (via first arg).
Its effect, numbering or denumbering, then depends on the setting
-of the forth arg, INDEX.
+of the fourth arg, INDEX.
-If NUMBER-CONTROL is non-nil and forth arg INDEX is nil, then the
+If NUMBER-CONTROL is non-nil and fourth arg INDEX is nil, then the
prefix of the topic is forced to be non-numbered. Null index and
non-nil NUMBER-CONTROL forces denumbering. Non-nil INDEX (and
non-nil NUMBER-CONTROL) forces a numbered-prefix form. If non-nil
Optional arg CONTEXT indicates interior levels to include."
(let ((delim ".")
- result
+ result
numstr
(context-depth (or (and context 2) 1)))
;; Take care of the explicit context:
(defun allout-stringify-flat-index-indented (flat-index)
"Convert list representing section/subsection/... to document string."
(let ((delim ".")
- result
+ result
numstr)
;; Take care of the explicit context:
(setq numstr (int-to-string (car flat-index))
(curr-line)
body-content bop)
; Do the head line:
- (insert (concat "\\OneHeadLine{\\verb\1 "
+ (insert (concat "\\OneHeadLine{\\verb\1 "
(allout-latex-verb-quote bullet)
"\1}{"
depth
GNU XEmacs takes two optional args, while mainline GNU Emacs does not,
so pass them along when appropriate."
- (if (string-match " XEmacs " emacs-version)
+ (if (featurep 'xemacs)
(mark-marker force buffer)
(mark-marker)))
;;;allout-layout: (0 : -1 -1 0)
;;;End:
+;;; arch-tag: cf38fbc3-c044-450f-8bff-afed8ba5681c
;;; allout.el ends here