aboutsummaryrefslogtreecommitdiffstats
path: root/lisp
diff options
context:
space:
mode:
authorKim F. Storm2006-12-03 21:37:33 +0000
committerKim F. Storm2006-12-03 21:37:33 +0000
commitc07583cdcf5f82d70e3cfbdc4e8d1e7402a40583 (patch)
tree6b202855ba5ecea8700ad3f17467e6b2c748438e /lisp
parentf9f46d8dd6567ff7a0600dd53e4bc62528983ae0 (diff)
downloademacs-c07583cdcf5f82d70e3cfbdc4e8d1e7402a40583.tar.gz
emacs-c07583cdcf5f82d70e3cfbdc4e8d1e7402a40583.zip
Ken Manheimer <ken.manheimer@gmail.com>:
(allout-ascend): Add an optional argument to preserve original position of point when unsuccessful. Also, fix a docstring error. (allout-yank-processing): Fix depth shift of multiple-topic so yanks work again, using allout-ascend's new option. (allout-setup-mode-map): Extracted from allout-mode to initialize allout-mode-map. Call it on file load, so the mode docstring substitutions work even if allout mode has not yet been invoked. (allout-mode): Use new allout-setup-mode-map to track any keybinding customizations since the map was last processed. Also, refine the docstring so it's ship-shape for release. (allout-default-layout, allout-beginning-of-line-cycles) (allout-distinctive-bullets-string, allout-use-mode-specific-leader) (allout-encrypt-unencrypted-on-saves, allout-inhibit-auto-fill) (allout-version, allout-layout, allout-infer-body-reindent) (allout-infer-header-lead-and-primary-bullet, allout-view-change-hook) (allout-init, allout-mode, allout-next-heading, allout-chart-subtree) (allout-previous-heading, allout-goto-prefix-doublechecked) (allout-current-bullet-pos, allout-next-sibling-leap) (allout-pre-command-business, allout-encrypted-type-prefix) (allout-make-topic-prefix, allout-open-topic, allout-rebullet-heading) (allout-rebullet-topic, allout-rebullet-topic-grunt) (allout-flag-region, allout-expose-topic, allout-expose-topic) (allout-old-expose-topic, allout-listify-exposed) (allout-process-exposed, allout-latex-verb-quote) (allout-latex-verbatim-quote-curr-line, allout-adjust-file-variable) (allout-toggle-current-subtree-encryption) (allout-toggle-subtree-encryption, allout-bullet-isearch): Remove extraneous open-paren and close paren string escapes.
Diffstat (limited to 'lisp')
-rw-r--r--lisp/allout.el506
1 files changed, 288 insertions, 218 deletions
diff --git a/lisp/allout.el b/lisp/allout.el
index 74d87a00edf..954faa40232 100644
--- a/lisp/allout.el
+++ b/lisp/allout.el
@@ -162,7 +162,7 @@ The types of elements in the layout specification are:
162 : - repeat spec - apply the preceeding element to all siblings at 162 : - repeat spec - apply the preceeding element to all siblings at
163 current level, *up to* those siblings that would be covered by specs 163 current level, *up to* those siblings that would be covered by specs
164 following the `:' on the list. Ie, apply to all topics at level but 164 following the `:' on the list. Ie, apply to all topics at level but
165 trailing ones accounted for by trailing specs. \(Only the first of 165 trailing ones accounted for by trailing specs. (Only the first of
166 multiple colons at the same level is honored - later ones are ignored.) 166 multiple colons at the same level is honored - later ones are ignored.)
167 * - completely exposes the topic, including bodies 167 * - completely exposes the topic, including bodies
168 + - exposes all subtopics, but not the bodies 168 + - exposes all subtopics, but not the bodies
@@ -230,9 +230,9 @@ advance as follows:
230 - if the cursor is on the headline and not the start of the headline: 230 - if the cursor is on the headline and not the start of the headline:
231 then it goes to the start of the headline 231 then it goes to the start of the headline
232 - if the cursor is on the start of the headline: 232 - if the cursor is on the start of the headline:
233 then it goes to the bullet character \(for hotspot navigation\) 233 then it goes to the bullet character (for hotspot navigation)
234 - if the cursor is on the bullet character: 234 - if the cursor is on the bullet character:
235 then it goes to the first column of that line \(the headline\) 235 then it goes to the first column of that line (the headline)
236 - if the cursor is on the first column of the headline: 236 - if the cursor is on the first column of the headline:
237 then it goes to the start of the headline within the item body. 237 then it goes to the start of the headline within the item body.
238 238
@@ -324,14 +324,14 @@ of this var to take effect."
324 324
325These bullets are used to distinguish topics from the run-of-the-mill 325These bullets are used to distinguish topics from the run-of-the-mill
326ones. They are not used in the standard topic headers created by 326ones. They are not used in the standard topic headers created by
327the topic-opening, shifting, and rebulleting \(eg, on topic shift, 327the topic-opening, shifting, and rebulleting (eg, on topic shift,
328topic paste, blanket rebulleting) routines, but are offered among the 328topic paste, blanket rebulleting) routines, but are offered among the
329choices for rebulleting. They are not altered by the above automatic 329choices for rebulleting. They are not altered by the above automatic
330rebulleting, so they can be used to characterize topics, eg: 330rebulleting, so they can be used to characterize topics, eg:
331 331
332 `?' question topics 332 `?' question topics
333 `\(' parenthetic comment \(with a matching close paren inside) 333 `(' parenthetic comment (with a matching close paren inside)
334 `[' meta-note \(with a matching close ] inside) 334 `[' meta-note (with a matching close ] inside)
335 `\"' a quotation 335 `\"' a quotation
336 `=' value settings 336 `=' value settings
337 `~' \"more or less\" 337 `~' \"more or less\"
@@ -367,13 +367,13 @@ String values are used as literals, not regular expressions, so
367do not escape any regulare-expression characters. 367do not escape any regulare-expression characters.
368 368
369Value t means to first check for assoc value in `allout-mode-leaders' 369Value t means to first check for assoc value in `allout-mode-leaders'
370alist, then use comment-start string, if any, then use default \(`.'). 370alist, then use comment-start string, if any, then use default (`.').
371\(See note about use of comment-start strings, below.) 371\(See note about use of comment-start strings, below.)
372 372
373Set to the symbol for either of `allout-mode-leaders' or 373Set to the symbol for either of `allout-mode-leaders' or
374`comment-start' to use only one of them, respectively. 374`comment-start' to use only one of them, respectively.
375 375
376Value nil means to always use the default \(`.') and leave 376Value nil means to always use the default (`.') and leave
377`allout-primary-bullet' unaltered. 377`allout-primary-bullet' unaltered.
378 378
379comment-start strings that do not end in spaces are tripled in 379comment-start strings that do not end in spaces are tripled in
@@ -605,7 +605,7 @@ The idea is to prevent file-system exposure of any un-encrypted stuff, and
605mostly covers both deliberate file writes and auto-saves. 605mostly covers both deliberate file writes and auto-saves.
606 606
607 - Yes: encrypt all topics pending encryption, even if it's the one 607 - Yes: encrypt all topics pending encryption, even if it's the one
608 currently being edited. \(In that case, the currently edited topic 608 currently being edited. (In that case, the currently edited topic
609 will be automatically decrypted before any user interaction, so they 609 will be automatically decrypted before any user interaction, so they
610 can continue editing but the copy on the file system will be 610 can continue editing but the copy on the file system will be
611 encrypted.) 611 encrypted.)
@@ -619,7 +619,7 @@ mostly covers both deliberate file writes and auto-saves.
619 - No: leave it to the user to encrypt any unencrypted topics. 619 - No: leave it to the user to encrypt any unencrypted topics.
620 620
621For practical reasons, auto-saves always use the 'except-current policy 621For practical reasons, auto-saves always use the 'except-current policy
622when auto-encryption is enabled. \(Otherwise, spurious passphrase prompts 622when auto-encryption is enabled. (Otherwise, spurious passphrase prompts
623and unavoidable timing collisions are too disruptive.) If security for a 623and unavoidable timing collisions are too disruptive.) If security for a
624file requires that even the current topic is never auto-saved in the clear, 624file requires that even the current topic is never auto-saved in the clear,
625disable auto-saves for that file." 625disable auto-saves for that file."
@@ -717,8 +717,8 @@ unless optional third, non-nil element is present.")
717 717
718You can customize this setting to set it for all allout buffers, or set it 718You can customize this setting to set it for all allout buffers, or set it
719in individual buffers if you want to inhibit auto-fill only in particular 719in individual buffers if you want to inhibit auto-fill only in particular
720buffers. \(You could use a function on `allout-mode-hook' to inhibit 720buffers. (You could use a function on `allout-mode-hook' to inhibit
721auto-fill according, eg, to the major mode.\) 721auto-fill according, eg, to the major mode.)
722 722
723If you don't set this and auto-fill-mode is enabled, allout will use the 723If you don't set this and auto-fill-mode is enabled, allout will use the
724value that `normal-auto-fill-function', if any, when allout mode starts, or 724value that `normal-auto-fill-function', if any, when allout mode starts, or
@@ -783,7 +783,7 @@ For details, see `allout-toggle-current-subtree-encryption's docstring."
783;;;_ : Version 783;;;_ : Version
784;;;_ = allout-version 784;;;_ = allout-version
785(defvar allout-version "2.2.1" 785(defvar allout-version "2.2.1"
786 "Version of currently loaded outline package. \(allout.el)") 786 "Version of currently loaded outline package. (allout.el)")
787;;;_ > allout-version 787;;;_ > allout-version
788(defun allout-version (&optional here) 788(defun allout-version (&optional here)
789 "Return string describing the loaded outline version." 789 "Return string describing the loaded outline version."
@@ -800,7 +800,7 @@ For details, see `allout-toggle-current-subtree-encryption's docstring."
800(defvar allout-layout nil ; LEAVE GLOBAL VALUE NIL - see docstring. 800(defvar allout-layout nil ; LEAVE GLOBAL VALUE NIL - see docstring.
801 "Buffer-specific setting for allout layout. 801 "Buffer-specific setting for allout layout.
802 802
803In buffers where this is non-nil \(and if `allout-init' has been run, to 803In buffers where this is non-nil (and if `allout-init' has been run, to
804enable this behavior), `allout-mode' will be automatically activated. The 804enable this behavior), `allout-mode' will be automatically activated. The
805layout dictated by the value will be used to set the initial exposure when 805layout dictated by the value will be used to set the initial exposure when
806`allout-mode' is activated. 806`allout-mode' is activated.
@@ -812,12 +812,12 @@ The value would typically be set by a file local variable. For
812example, the following lines at the bottom of an Emacs Lisp file: 812example, the following lines at the bottom of an Emacs Lisp file:
813 813
814;;;Local variables: 814;;;Local variables:
815;;;allout-layout: \(0 : -1 -1 0) 815;;;allout-layout: (0 : -1 -1 0)
816;;;End: 816;;;End:
817 817
818dictate activation of `allout-mode' mode when the file is visited 818dictate activation of `allout-mode' mode when the file is visited
819\(presuming allout-init was already run), followed by the 819\(presuming allout-init was already run), followed by the
820equivalent of `\(allout-expose-topic 0 : -1 -1 0)'. \(This is 820equivalent of `(allout-expose-topic 0 : -1 -1 0)'. (This is
821the layout used for the allout.el source file.) 821the layout used for the allout.el source file.)
822 822
823`allout-default-layout' describes the specification format. 823`allout-default-layout' describes the specification format.
@@ -930,7 +930,7 @@ Works according to settings of:
930 `allout-use-mode-specific-leader' 930 `allout-use-mode-specific-leader'
931and `allout-mode-leaders'. 931and `allout-mode-leaders'.
932 932
933Apply this via \(re)activation of `allout-mode', rather than 933Apply this via (re)activation of `allout-mode', rather than
934invoking it directly." 934invoking it directly."
935 (let* ((use-leader (and (boundp 'allout-use-mode-specific-leader) 935 (let* ((use-leader (and (boundp 'allout-use-mode-specific-leader)
936 (if (or (stringp allout-use-mode-specific-leader) 936 (if (or (stringp allout-use-mode-specific-leader)
@@ -977,7 +977,7 @@ invoking it directly."
977(defun allout-infer-body-reindent () 977(defun allout-infer-body-reindent ()
978 "Determine proper setting for `allout-reindent-bodies'. 978 "Determine proper setting for `allout-reindent-bodies'.
979 979
980Depends on default setting of `allout-reindent-bodies' \(which see) 980Depends on default setting of `allout-reindent-bodies' (which see)
981and presence of setting for `comment-start', to tell whether the 981and presence of setting for `comment-start', to tell whether the
982file is programming code." 982file is programming code."
983 (if (and allout-reindent-bodies 983 (if (and allout-reindent-bodies
@@ -1295,7 +1295,7 @@ their settings before allout-mode was started."
1295 "Symbol for use as allout invisible-text overlay category.") 1295 "Symbol for use as allout invisible-text overlay category.")
1296;;;_ x allout-view-change-hook 1296;;;_ x allout-view-change-hook
1297(defvar allout-view-change-hook nil 1297(defvar allout-view-change-hook nil
1298 "*\(Deprecated\) A hook run after allout outline exposure changes. 1298 "*(Deprecated) A hook run after allout outline exposure changes.
1299 1299
1300Switch to using `allout-exposure-change-hook' instead. Both hooks are 1300Switch to using `allout-exposure-change-hook' instead. Both hooks are
1301currently respected, but the other conveys the details of the exposure 1301currently respected, but the other conveys the details of the exposure
@@ -1531,12 +1531,12 @@ So `allout-post-command-business' should not reactivate it...")
1531 1531
1532MODE is one of the following symbols: 1532MODE is one of the following symbols:
1533 1533
1534 - nil \(or no argument) deactivate auto-activation/layout; 1534 - nil (or no argument) deactivate auto-activation/layout;
1535 - `activate', enable auto-activation only; 1535 - `activate', enable auto-activation only;
1536 - `ask', enable auto-activation, and enable auto-layout but with 1536 - `ask', enable auto-activation, and enable auto-layout but with
1537 confirmation for layout operation solicited from user each time; 1537 confirmation for layout operation solicited from user each time;
1538 - `report', just report and return the current auto-activation state; 1538 - `report', just report and return the current auto-activation state;
1539 - anything else \(eg, t) for auto-activation and auto-layout, without 1539 - anything else (eg, t) for auto-activation and auto-layout, without
1540 any confirmation check. 1540 any confirmation check.
1541 1541
1542Use this function to setup your Emacs session for automatic activation 1542Use this function to setup your Emacs session for automatic activation
@@ -1598,7 +1598,7 @@ the following two lines in your Emacs init file:
1598 ((eq mode 'ask) 1598 ((eq mode 'ask)
1599 (message 1599 (message
1600 (concat "Outline mode auto-activation and " 1600 (concat "Outline mode auto-activation and "
1601 "-layout \(upon confirmation) enabled.")) 1601 "-layout (upon confirmation) enabled."))
1602 'ask) 1602 'ask)
1603 ((message 1603 ((message
1604 "Outline mode auto-activation and -layout enabled.") 1604 "Outline mode auto-activation and -layout enabled.")
@@ -1649,92 +1649,111 @@ symbol. Allout outline mode always runs as a minor mode.
1649Allout outline mode provides extensive outline oriented formatting and 1649Allout outline mode provides extensive outline oriented formatting and
1650manipulation. It enables structural editing of outlines, as well as 1650manipulation. It enables structural editing of outlines, as well as
1651navigation and exposure. It also is specifically aimed at 1651navigation and exposure. It also is specifically aimed at
1652accommodating syntax-sensitive text like programming languages. \(For 1652accommodating syntax-sensitive text like programming languages. (For
1653an example, see the allout code itself, which is organized as an allout 1653an example, see the allout code itself, which is organized as an allout
1654outline.) 1654outline.)
1655 1655
1656In addition to outline navigation and exposure, allout includes: 1656In addition to typical outline navigation and exposure, allout includes:
1657 1657
1658 - topic-oriented repositioning, promotion/demotion, cut, and paste 1658 - topic-oriented authoring, including keystroke-based topic creation,
1659 - integral outline exposure-layout 1659 repositioning, promotion/demotion, cut, and paste
1660 - incremental search with dynamic exposure and reconcealment of hidden text 1660 - incremental search with dynamic exposure and reconcealment of hidden text
1661 - automatic topic-number maintenance 1661 - adjustable format, so programming code can be developed in outline-structure
1662 - easy topic encryption and decryption 1662 - easy topic encryption and decryption
1663 - \"Hot-spot\" operation, for single-keystroke maneuvering and 1663 - \"Hot-spot\" operation, for single-keystroke maneuvering and exposure control
1664 exposure control. \(See the allout-mode docstring.) 1664 - integral outline layout, for automatic initial exposure when visiting a file
1665 - independent extensibility, using comprehensive exposure and authoring hooks
1665 1666
1666and many other features. 1667and many other features.
1667 1668
1668Below is a description of the bindings, and then explanation of 1669Below is a description of the key bindings, and then explanation of
1669special `allout-mode' features and terminology. See also the outline 1670special `allout-mode' features and terminology. See also the outline
1670menubar additions for quick reference to many of the features, and see 1671menubar additions for quick reference to many of the features, and see
1671the docstring of the function `allout-init' for instructions on 1672the docstring of the function `allout-init' for instructions on
1672priming your emacs session for automatic activation of `allout-mode'. 1673priming your emacs session for automatic activation of `allout-mode'.
1673 1674
1674 1675The bindings are dictated by the customizable `allout-keybindings-list'
1675The bindings are dictated by the `allout-keybindings-list' and 1676variable. We recommend customizing `allout-command-prefix' to use just
1676`allout-command-prefix' variables. 1677`\\C-c' as the command prefix, if the allout bindings don't conflict with
1677 1678any personal bindings you have on \\C-c. In any case, outline structure
1678 Navigation: Exposure Control: 1679navigation and authoring is simplified by positioning the cursor on an
1679 ---------- ---------------- 1680item's bullet character, the \"hot-spot\" - then you can invoke allout
1680\\[allout-next-visible-heading] allout-next-visible-heading | \\[allout-hide-current-subtree] allout-hide-current-subtree 1681commands with just the un-prefixed, un-control-shifted command letters.
1681\\[allout-previous-visible-heading] allout-previous-visible-heading | \\[allout-show-children] allout-show-children 1682This is described further in the HOT-SPOT Operation section.
1682\\[allout-up-current-level] allout-up-current-level | \\[allout-show-current-subtree] allout-show-current-subtree 1683
1683\\[allout-forward-current-level] allout-forward-current-level | \\[allout-show-current-entry] allout-show-current-entry 1684 Exposure Control:
1684\\[allout-backward-current-level] allout-backward-current-level | \\[allout-show-all] allout-show-all 1685 ----------------
1685\\[allout-end-of-entry] allout-end-of-entry 1686\\[allout-hide-current-subtree] `allout-hide-current-subtree'
1686\\[allout-beginning-of-current-entry] allout-beginning-of-current-entry, alternately, goes to hot-spot 1687\\[allout-show-children] `allout-show-children'
1687 1688\\[allout-show-current-subtree] `allout-show-current-subtree'
1688 Topic Header Production: 1689\\[allout-show-current-entry] `allout-show-current-entry'
1689 ----------------------- 1690\\[allout-show-all] `allout-show-all'
1690\\[allout-open-sibtopic] allout-open-sibtopic Create a new sibling after current topic. 1691
1691\\[allout-open-subtopic] allout-open-subtopic ... an offspring of current topic. 1692 Navigation:
1692\\[allout-open-supertopic] allout-open-supertopic ... a sibling of the current topic's parent. 1693 ----------
1693 1694\\[allout-next-visible-heading] `allout-next-visible-heading'
1694 Topic Level and Prefix Adjustment: 1695\\[allout-previous-visible-heading] `allout-previous-visible-heading'
1695 --------------------------------- 1696\\[allout-up-current-level] `allout-up-current-level'
1696\\[allout-shift-in] allout-shift-in Shift current topic and all offspring deeper. 1697\\[allout-forward-current-level] `allout-forward-current-level'
1697\\[allout-shift-out] allout-shift-out ... less deep. 1698\\[allout-backward-current-level] `allout-backward-current-level'
1698\\[allout-rebullet-current-heading] allout-rebullet-current-heading Prompt for alternate bullet for 1699\\[allout-end-of-entry] `allout-end-of-entry'
1699 current topic. 1700\\[allout-beginning-of-current-entry] `allout-beginning-of-current-entry' (alternately, goes to hot-spot)
1700\\[allout-rebullet-topic] allout-rebullet-topic Reconcile bullets of topic and its offspring 1701\\[allout-beginning-of-line] `allout-beginning-of-line' - like regular beginning-of-line, but
1701 - distinctive bullets are not changed, others 1702 if immediately repeated cycles to the beginning of the current item
1702 alternated according to nesting depth. 1703 and then to the hot-spot (if `allout-beginning-of-line-cycles' is set).
1703\\[allout-number-siblings] allout-number-siblings Number bullets of topic and siblings - the 1704
1704 offspring are not affected. With repeat 1705
1705 count, revoke numbering. 1706 Topic Header Production:
1706 1707 -----------------------
1707 Topic-oriented Killing and Yanking: 1708\\[allout-open-sibtopic] `allout-open-sibtopic' Create a new sibling after current topic.
1708 ---------------------------------- 1709\\[allout-open-subtopic] `allout-open-subtopic' ... an offspring of current topic.
1709\\[allout-kill-topic] allout-kill-topic Kill current topic, including offspring. 1710\\[allout-open-supertopic] `allout-open-supertopic' ... a sibling of the current topic's parent.
1710\\[allout-copy-topic-as-kill] allout-copy-topic-as-kill Copy current topic, including offspring. 1711
1711\\[allout-kill-line] allout-kill-line kill-line, attending to outline structure. 1712 Topic Level and Prefix Adjustment:
1712\\[allout-copy-line-as-kill] allout-copy-line-as-kill Copy line but don't delete it. 1713 ---------------------------------
1713\\[allout-yank] allout-yank Yank, adjusting depth of yanked topic to 1714\\[allout-shift-in] `allout-shift-in' Shift current topic and all offspring deeper
1714 depth of heading if yanking into bare topic 1715\\[allout-shift-out] `allout-shift-out' ... less deep
1715 heading (ie, prefix sans text). 1716\\[allout-rebullet-current-heading] `allout-rebullet-current-heading' Prompt for alternate bullet for
1716\\[allout-yank-pop] allout-yank-pop Is to allout-yank as yank-pop is to yank 1717 current topic
1717 1718\\[allout-rebullet-topic] `allout-rebullet-topic' Reconcile bullets of topic and
1718 Topic-oriented Encryption: 1719 its' offspring - distinctive bullets are not changed, others
1719 ------------------------- 1720 are alternated according to nesting depth.
1720\\[allout-toggle-current-subtree-encryption] allout-toggle-current-subtree-encryption Encrypt/Decrypt topic content 1721\\[allout-number-siblings] `allout-number-siblings' Number bullets of topic and siblings -
1721 1722 the offspring are not affected.
1722 Misc commands: 1723 With repeat count, revoke numbering.
1723 ------------- 1724
1724M-x outlineify-sticky Activate outline mode for current buffer, 1725 Topic-oriented Killing and Yanking:
1725 and establish a default file-var setting 1726 ----------------------------------
1726 for `allout-layout'. 1727\\[allout-kill-topic] `allout-kill-topic' Kill current topic, including offspring.
1727\\[allout-mark-topic] allout-mark-topic 1728\\[allout-copy-topic-as-kill] `allout-copy-topic-as-kill' Copy current topic, including offspring.
1728\\[allout-copy-exposed-to-buffer] allout-copy-exposed-to-buffer 1729\\[allout-kill-line] `allout-kill-line' kill-line, attending to outline structure.
1729 Duplicate outline, sans concealed text, to 1730\\[allout-copy-line-as-kill] `allout-copy-line-as-kill' Copy line but don't delete it.
1730 buffer with name derived from derived from that 1731\\[allout-yank] `allout-yank' Yank, adjusting depth of yanked topic to
1731 of current buffer - \"*BUFFERNAME exposed*\". 1732 depth of heading if yanking into bare topic
1732\\[allout-flatten-exposed-to-buffer] allout-flatten-exposed-to-buffer 1733 heading (ie, prefix sans text).
1733 Like above 'copy-exposed', but convert topic 1734\\[allout-yank-pop] `allout-yank-pop' Is to allout-yank as yank-pop is to yank
1734 prefixes to section.subsection... numeric 1735
1735 format. 1736 Topic-oriented Encryption:
1736\\[eval-expression] (allout-init t) Setup Emacs session for outline mode 1737 -------------------------
1737 auto-activation. 1738\\[allout-toggle-current-subtree-encryption] `allout-toggle-current-subtree-encryption'
1739 Encrypt/Decrypt topic content
1740
1741 Misc commands:
1742 -------------
1743M-x outlineify-sticky Activate outline mode for current buffer,
1744 and establish a default file-var setting
1745 for `allout-layout'.
1746\\[allout-mark-topic] `allout-mark-topic'
1747\\[allout-copy-exposed-to-buffer] `allout-copy-exposed-to-buffer'
1748 Duplicate outline, sans concealed text, to
1749 buffer with name derived from derived from that
1750 of current buffer - \"*BUFFERNAME exposed*\".
1751\\[allout-flatten-exposed-to-buffer] `allout-flatten-exposed-to-buffer'
1752 Like above 'copy-exposed', but convert topic
1753 prefixes to section.subsection... numeric
1754 format.
1755\\[eval-expression] (allout-init t) Setup Emacs session for outline mode
1756 auto-activation.
1738 1757
1739 Topic Encryption 1758 Topic Encryption
1740 1759
@@ -1742,17 +1761,22 @@ Outline mode supports gpg encryption of topics, with support for
1742symmetric and key-pair modes, passphrase timeout, passphrase 1761symmetric and key-pair modes, passphrase timeout, passphrase
1743consistency checking, user-provided hinting for symmetric key 1762consistency checking, user-provided hinting for symmetric key
1744mode, and auto-encryption of topics pending encryption on save. 1763mode, and auto-encryption of topics pending encryption on save.
1745\(Topics pending encryption are, by default, automatically
1746encrypted during file saves; if you're editing the contents of
1747such a topic, it is automatically decrypted for continued
1748editing.) The aim is reliable topic privacy while preventing
1749accidents like neglected encryption before saves, forgetting
1750which passphrase was used, and other practical pitfalls.
1751 1764
1752See `allout-toggle-current-subtree-encryption' function docstring and 1765Topics pending encryption are, by default, automatically
1753`allout-encrypt-unencrypted-on-saves' customization variable for details. 1766encrypted during file saves. If the contents of the topic
1767containing the cursor was encrypted for a save, it is
1768automatically decrypted for continued editing.
1769
1770The aim of these measures is reliable topic privacy while
1771preventing accidents like neglected encryption before saves,
1772forgetting which passphrase was used, and other practical
1773pitfalls.
1774
1775See `allout-toggle-current-subtree-encryption' function docstring
1776and `allout-encrypt-unencrypted-on-saves' customization variable
1777for details.
1754 1778
1755 HOT-SPOT Operation 1779 HOT-SPOT Operation
1756 1780
1757Hot-spot operation provides a means for easy, single-keystroke outline 1781Hot-spot operation provides a means for easy, single-keystroke outline
1758navigation and exposure control. 1782navigation and exposure control.
@@ -1765,85 +1789,108 @@ would invoke the command typically bound to \"C-c<space>C-f\"
1765 1789
1766Thus, by positioning the cursor on a topic bullet, you can 1790Thus, by positioning the cursor on a topic bullet, you can
1767execute the outline navigation and manipulation commands with a 1791execute the outline navigation and manipulation commands with a
1768single keystroke. Regular navigation keys (eg, \\[forward-char], \\[next-line]) never get 1792single keystroke. Regular navigation keys (eg, \\[forward-char], \\[next-line]) don't get
1769this special translation, so you can use them to get out of the 1793this special translation, so you can use them to get out of the
1770hot-spot and back to normal operation. 1794hot-spot and back to normal editing operation.
1795
1796In allout-mode, the normal beginning-of-line command (\\[allout-beginning-of-line]]) is
1797replaced with one that makes it easy to get to the hot-spot. If you
1798repeat it immediately it cycles (if `allout-beginning-of-line-cycles'
1799is set) to the beginning of the item and then, if you hit it again
1800immediately, to the hot-spot. Similarly, `allout-beginning-of-current-entry'
1801\(\\[allout-beginning-of-current-entry]) moves to the hot-spot when the cursor is already located
1802at the beginning of the current entry.
1803
1804 Extending Allout
1771 1805
1772Note that the command `allout-beginning-of-current-entry' \(\\[allout-beginning-of-current-entry]\) 1806Allout exposure and authoring activites all have associated
1773will move to the hot-spot when the cursor is already located at the 1807hooks, by which independent code can cooperate with allout
1774beginning of the current entry, so you usually can hit \\[allout-beginning-of-current-entry] 1808without changes to the allout core. Here are key ones:
1775twice in a row to get to the hot-spot.
1776 1809
1777 Terminology 1810`allout-mode-hook'
1811`allout-mode-deactivate-hook'
1812`allout-exposure-change-hook'
1813`allout-structure-added-hook'
1814`allout-structure-deleted-hook'
1815`allout-structure-shifted-hook'
1816
1817 Terminology
1778 1818
1779Topic hierarchy constituents - TOPICS and SUBTOPICS: 1819Topic hierarchy constituents - TOPICS and SUBTOPICS:
1780 1820
1781TOPIC: A basic, coherent component of an Emacs outline. It can 1821ITEM: A unitary outline element, including the HEADER and ENTRY text.
1782 contain and be contained by other topics. 1822TOPIC: An ITEM and any ITEMs contained within it, ie having greater DEPTH
1783CURRENT topic: 1823 and with no intervening items of lower DEPTH than the container.
1784 The visible topic most immediately containing the cursor. 1824CURRENT ITEM:
1785DEPTH: The degree of nesting of a topic; it increases with 1825 The visible ITEM most immediately containing the cursor.
1786 containment. Also called the: 1826DEPTH: The degree of nesting of an ITEM; it increases with containment.
1787LEVEL: The same as DEPTH. 1827 The DEPTH is determined by the HEADER PREFIX. The DEPTH is also
1828 called the:
1829LEVEL: The same as DEPTH.
1788 1830
1789ANCESTORS: 1831ANCESTORS:
1790 The topics that contain a topic. 1832 Those ITEMs whose TOPICs contain an ITEM.
1791PARENT: A topic's immediate ancestor. It has a depth one less than 1833PARENT: An ITEM's immediate ANCESTOR. It has a DEPTH one less than that
1792 the topic. 1834 of the ITEM.
1793OFFSPRING: 1835OFFSPRING:
1794 The topics contained by a topic; 1836 The ITEMs contained within an ITEM's TOPIC.
1795SUBTOPIC: 1837SUBTOPIC:
1796 An immediate offspring of a topic; 1838 An OFFSPRING of its ANCESTOR TOPICs.
1797CHILDREN: 1839CHILD:
1798 The immediate offspring of a topic. 1840 An immediate SUBTOPIC of its PARENT.
1799SIBLINGS: 1841SIBLINGS:
1800 Topics having the same parent and depth. 1842 TOPICs having the same PARENT and DEPTH.
1801 1843
1802Topic text constituents: 1844Topic text constituents:
1803 1845
1804HEADER: The first line of a topic, include the topic PREFIX and header 1846HEADER: The first line of an ITEM, include the ITEM PREFIX and HEADER
1805 text. 1847 text.
1806PREFIX: The leading text of a topic which distinguishes it from normal 1848ENTRY: The text content of an ITEM, before any OFFSPRING, but including
1807 text. It has a strict form, which consists of a prefix-lead 1849 the HEADER text and distinct from the ITEM PREFIX.
1808 string, padding, and a bullet. The bullet may be followed by a 1850BODY: Same as ENTRY.
1851PREFIX: The leading text of an ITEM which distinguishes it from normal
1852 ENTRY text. Allout recognizes the outline structure according
1853 to the strict PREFIX format. It consists of a PREFIX-LEAD string,
1854 PREFIX-PADDING, and a BULLET. The BULLET might be followed by a
1809 number, indicating the ordinal number of the topic among its 1855 number, indicating the ordinal number of the topic among its
1810 siblings, a space, and then the header text. 1856 siblings, or an asterisk indicating encryption, plus an optional
1857 space. After that is the ITEM HEADER text, which is not part of
1858 the PREFIX.
1811 1859
1812 The relative length of the PREFIX determines the nesting depth 1860 The relative length of the PREFIX determines the nesting DEPTH
1813 of the topic. 1861 of the ITEM.
1814PREFIX-LEAD: 1862PREFIX-LEAD:
1815 The string at the beginning of a topic prefix, normally a `.'. 1863 The string at the beginning of a HEADER PREFIX, by default a `.'.
1816 It can be customized by changing the setting of 1864 It can be customized by changing the setting of
1817 `allout-header-prefix' and then reinitializing `allout-mode'. 1865 `allout-header-prefix' and then reinitializing `allout-mode'.
1818 1866
1819 By setting the prefix-lead to the comment-string of a 1867 When the PREFIX-LEAD is set to the comment-string of a
1820 programming language, you can embed outline structuring in 1868 programming language, outline structuring can be embedded in
1821 program code without interfering with the language processing 1869 program code without interfering with processing of the text
1822 of that code. See `allout-use-mode-specific-leader' 1870 (by emacs or the language processor) as program code. This
1823 docstring for more detail. 1871 setting happens automatically when allout mode is used in
1872 programming-mode buffers. See `allout-use-mode-specific-leader'
1873 docstring for more detail.
1824PREFIX-PADDING: 1874PREFIX-PADDING:
1825 Spaces or asterisks which separate the prefix-lead and the 1875 Spaces or asterisks which separate the PREFIX-LEAD and the
1826 bullet, determining the depth of the topic. 1876 bullet, determining the ITEM's DEPTH.
1827BULLET: A character at the end of the topic prefix, it must be one of 1877BULLET: A character at the end of the ITEM PREFIX, it must be one of
1828 the characters listed on `allout-plain-bullets-string' or 1878 the characters listed on `allout-plain-bullets-string' or
1829 `allout-distinctive-bullets-string'. (See the documentation 1879 `allout-distinctive-bullets-string'. (See the documentation
1830 for these variables for more details.) The default choice of 1880 for these variables for more details.) The default choice of
1831 bullet when generating topics varies in a cycle with the depth of 1881 BULLET when generating ITEMs varies in a cycle with the DEPTH of
1832 the topic. 1882 the ITEM.
1833ENTRY: The text contained in a topic before any offspring.
1834BODY: Same as ENTRY.
1835
1836 1883
1837EXPOSURE: 1884EXPOSURE:
1838 The state of a topic which determines the on-screen visibility 1885 The state of a TOPIC which determines the on-screen visibility
1839 of its offspring and contained text. 1886 of its OFFSPRING and contained ENTRY text.
1840CONCEALED: 1887CONCEALED:
1841 Topics and entry text whose display is inhibited. Contiguous 1888 TOPICs and ENTRY text whose EXPOSURE is inhibited. Concealed
1842 units of concealed text is represented by `...' ellipses. 1889 text is represented by \"...\" ellipses.
1843 1890
1844 Concealed topics are effectively collapsed within an ancestor. 1891 CONCEALED TOPICs are effectively collapsed within an ANCESTOR.
1845CLOSED: A topic whose immediate offspring and body-text is concealed. 1892CLOSED: A TOPIC whose immediate OFFSPRING and body-text is CONCEALED.
1846OPEN: A topic that is not closed, though its offspring or body may be." 1893OPEN: A TOPIC that is not CLOSED, though its OFFSPRING or BODY may be."
1847;;;_ . Code 1894;;;_ . Code
1848 (interactive "P") 1895 (interactive "P")
1849 1896
@@ -1934,22 +1981,8 @@ OPEN: A topic that is not closed, though its offspring or body may be."
1934 extend)) 1981 extend))
1935 1982
1936 ;; Produce map from current version of allout-keybindings-list: 1983 ;; Produce map from current version of allout-keybindings-list:
1937 (setq allout-mode-map 1984 (allout-setup-mode-map)
1938 (produce-allout-mode-map allout-keybindings-list))
1939 (substitute-key-definition 'beginning-of-line
1940 'allout-beginning-of-line
1941 allout-mode-map global-map)
1942 (substitute-key-definition 'move-beginning-of-line
1943 'allout-beginning-of-line
1944 allout-mode-map global-map)
1945 (substitute-key-definition 'end-of-line
1946 'allout-end-of-line
1947 allout-mode-map global-map)
1948 (substitute-key-definition 'move-end-of-line
1949 'allout-end-of-line
1950 allout-mode-map global-map)
1951 (produce-allout-mode-menubar-entries) 1985 (produce-allout-mode-menubar-entries)
1952 (fset 'allout-mode-map allout-mode-map)
1953 1986
1954 ;; Include on minor-mode-map-alist, if not already there: 1987 ;; Include on minor-mode-map-alist, if not already there:
1955 (if (not (member '(allout-mode . allout-mode-map) 1988 (if (not (member '(allout-mode . allout-mode-map)
@@ -2039,6 +2072,31 @@ OPEN: A topic that is not closed, though its offspring or body may be."
2039 allout-mode 2072 allout-mode
2040 ) ; let* 2073 ) ; let*
2041 ) ; defun 2074 ) ; defun
2075
2076(defun allout-setup-mode-map ()
2077 "Establish allout-mode bindings."
2078 (setq-default allout-mode-map
2079 (produce-allout-mode-map allout-keybindings-list))
2080 (setq allout-mode-map
2081 (produce-allout-mode-map allout-keybindings-list))
2082 (substitute-key-definition 'beginning-of-line
2083 'allout-beginning-of-line
2084 allout-mode-map global-map)
2085 (substitute-key-definition 'move-beginning-of-line
2086 'allout-beginning-of-line
2087 allout-mode-map global-map)
2088 (substitute-key-definition 'end-of-line
2089 'allout-end-of-line
2090 allout-mode-map global-map)
2091 (substitute-key-definition 'move-end-of-line
2092 'allout-end-of-line
2093 allout-mode-map global-map)
2094 (fset 'allout-mode-map allout-mode-map))
2095
2096;; ensure that allout-mode-map has some setting even if allout-mode hasn't
2097;; been invoked:
2098(allout-setup-mode-map)
2099
2042;;;_ > allout-minor-mode 2100;;;_ > allout-minor-mode
2043(defalias 'allout-minor-mode 'allout-mode) 2101(defalias 'allout-minor-mode 'allout-mode)
2044 2102
@@ -2453,7 +2511,7 @@ Outermost is first."
2453 (t (allout-end-of-entry)))))) 2511 (t (allout-end-of-entry))))))
2454;;;_ > allout-next-heading () 2512;;;_ > allout-next-heading ()
2455(defsubst allout-next-heading () 2513(defsubst allout-next-heading ()
2456 "Move to the heading for the topic \(possibly invisible) after this one. 2514 "Move to the heading for the topic (possibly invisible) after this one.
2457 2515
2458Returns the location of the heading, or nil if none found. 2516Returns the location of the heading, or nil if none found.
2459 2517
@@ -2476,7 +2534,7 @@ We skip anomolous low-level topics, a la `allout-aberrant-container-p'."
2476 (if (not (allout-goto-prefix-doublechecked)) (allout-next-heading))) 2534 (if (not (allout-goto-prefix-doublechecked)) (allout-next-heading)))
2477;;;_ > allout-previous-heading () 2535;;;_ > allout-previous-heading ()
2478(defun allout-previous-heading () 2536(defun allout-previous-heading ()
2479 "Move to the prior \(possibly invisible) heading line. 2537 "Move to the prior (possibly invisible) heading line.
2480 2538
2481Return the location of the beginning of the heading, or nil if not found. 2539Return the location of the beginning of the heading, or nil if not found.
2482 2540
@@ -2526,7 +2584,7 @@ We skip anomolous low-level topics, a la `allout-aberrant-container-p'."
2526(defun allout-chart-subtree (&optional levels visible orig-depth prev-depth) 2584(defun allout-chart-subtree (&optional levels visible orig-depth prev-depth)
2527 "Produce a location \"chart\" of subtopics of the containing topic. 2585 "Produce a location \"chart\" of subtopics of the containing topic.
2528 2586
2529Optional argument LEVELS specifies a depth limit \(relative to start 2587Optional argument LEVELS specifies a depth limit (relative to start
2530depth) for the chart. Null LEVELS means no limit. 2588depth) for the chart. Null LEVELS means no limit.
2531 2589
2532When optional argument VISIBLE is non-nil, the chart includes 2590When optional argument VISIBLE is non-nil, the chart includes
@@ -2663,7 +2721,7 @@ start point."
2663 result)) 2721 result))
2664;;;_ X allout-chart-spec (chart spec &optional exposing) 2722;;;_ X allout-chart-spec (chart spec &optional exposing)
2665;; (defun allout-chart-spec (chart spec &optional exposing) 2723;; (defun allout-chart-spec (chart spec &optional exposing)
2666;; "Not yet \(if ever) implemented. 2724;; "Not yet (if ever) implemented.
2667 2725
2668;; Produce exposure directives given topic/subtree CHART and an exposure SPEC. 2726;; Produce exposure directives given topic/subtree CHART and an exposure SPEC.
2669 2727
@@ -2684,7 +2742,7 @@ start point."
2684;; - bare positive values indicate that this topic header should be 2742;; - bare positive values indicate that this topic header should be
2685;; opened. 2743;; opened.
2686;; - Lists signify the beginning and end points of regions that should 2744;; - Lists signify the beginning and end points of regions that should
2687;; be flagged, and the flag to employ. (For concealment: `\(\?r\)', and 2745;; be flagged, and the flag to employ. (For concealment: `(\?r)', and
2688;; exposure:" 2746;; exposure:"
2689;; (while spec 2747;; (while spec
2690;; (cond ((listp spec) 2748;; (cond ((listp spec)
@@ -2721,7 +2779,7 @@ Returns the point at the beginning of the prefix, or nil if none."
2721(defun allout-goto-prefix-doublechecked () 2779(defun allout-goto-prefix-doublechecked ()
2722 "Put point at beginning of immediately containing outline topic. 2780 "Put point at beginning of immediately containing outline topic.
2723 2781
2724Like `allout-goto-prefix', but shallow topics \(according to 2782Like `allout-goto-prefix', but shallow topics (according to
2725`allout-doublecheck-at-and-shallower') are checked and 2783`allout-doublecheck-at-and-shallower') are checked and
2726disqualified for child containment discontinuity, according to 2784disqualified for child containment discontinuity, according to
2727`allout-aberrant-container-p'." 2785`allout-aberrant-container-p'."
@@ -2749,7 +2807,7 @@ otherwise skip white space between bullet and ensuing text."
2749 (allout-current-depth))) 2807 (allout-current-depth)))
2750;;;_ > allout-current-bullet-pos () 2808;;;_ > allout-current-bullet-pos ()
2751(defun allout-current-bullet-pos () 2809(defun allout-current-bullet-pos ()
2752 "Return position of current \(visible) topic's bullet." 2810 "Return position of current (visible) topic's bullet."
2753 2811
2754 (if (not (allout-current-depth)) 2812 (if (not (allout-current-depth))
2755 nil 2813 nil
@@ -2887,19 +2945,31 @@ collapsed."
2887 (if (interactive-p) (allout-end-of-prefix)) 2945 (if (interactive-p) (allout-end-of-prefix))
2888 (and last-ascended allout-recent-depth)))) 2946 (and last-ascended allout-recent-depth))))
2889;;;_ > allout-ascend () 2947;;;_ > allout-ascend ()
2890(defun allout-ascend () 2948(defun allout-ascend (&optional dont-move-if-unsuccessful)
2891 "Ascend one level, returning t if successful, nil if not." 2949 "Ascend one level, returning resulting depth if successful, nil if not.
2950
2951Point is left at the beginning of the level whether or not
2952successful, unless optional DONT-MOVE-IF-UNSUCCESSFUL is set, in
2953which case point is returned to its original starting location."
2954 (if dont-move-if-unsuccessful
2955 (setq dont-move-if-unsuccessful (point)))
2892 (prog1 2956 (prog1
2893 (if (allout-beginning-of-level) 2957 (if (allout-beginning-of-level)
2894 (let ((bolevel (point)) 2958 (let ((bolevel (point))
2895 (bolevel-depth allout-recent-depth)) 2959 (bolevel-depth allout-recent-depth))
2896 (allout-previous-heading) 2960 (allout-previous-heading)
2897 (if (< allout-recent-depth bolevel-depth) 2961 (cond ((< allout-recent-depth bolevel-depth)
2898 allout-recent-depth 2962 allout-recent-depth)
2899 ;; some topic after file's first is at lower depth than first: 2963 ((= allout-recent-depth bolevel-depth)
2900 (goto-char bolevel) 2964 (if dont-move-if-unsuccessful
2901 (allout-depth) 2965 (goto-char dont-move-if-unsuccessful))
2902 nil))) 2966 (allout-depth)
2967 nil)
2968 (t
2969 ;; some topic after very first is lower depth than first:
2970 (goto-char bolevel)
2971 (allout-depth)
2972 nil))))
2903 (if (interactive-p) (allout-end-of-prefix)))) 2973 (if (interactive-p) (allout-end-of-prefix))))
2904;;;_ > allout-descend-to-depth (depth) 2974;;;_ > allout-descend-to-depth (depth)
2905(defun allout-descend-to-depth (depth) 2975(defun allout-descend-to-depth (depth)
@@ -2990,7 +3060,7 @@ Return the start point of the new topic if successful, nil otherwise.
2990 3060
2991Costs more than regular `allout-next-sibling' for short traversals: 3061Costs more than regular `allout-next-sibling' for short traversals:
2992 3062
2993 - we have to check the prior \(next, if travelling backwards) 3063 - we have to check the prior (next, if travelling backwards)
2994 item to confirm connectivity with the prior topic, and 3064 item to confirm connectivity with the prior topic, and
2995 - if confirmed, we have to reestablish the allout-recent-* settings with 3065 - if confirmed, we have to reestablish the allout-recent-* settings with
2996 some extra navigation 3066 some extra navigation
@@ -3219,7 +3289,7 @@ reinterpreted as the corresponding control-character in the
3219the cursor which has moved as a result of such reinterpretation is 3289the cursor which has moved as a result of such reinterpretation is
3220positioned on the bullet character of the destination topic. 3290positioned on the bullet character of the destination topic.
3221 3291
3222The upshot is that you can get easy, single \(ie, unmodified\) key 3292The upshot is that you can get easy, single (ie, unmodified) key
3223outline maneuvering operations by positioning the cursor on the bullet 3293outline maneuvering operations by positioning the cursor on the bullet
3224char. When in this mode you can use regular cursor-positioning 3294char. When in this mode you can use regular cursor-positioning
3225command/keystrokes to relocate the cursor off of a bullet character to 3295command/keystrokes to relocate the cursor off of a bullet character to
@@ -3329,7 +3399,7 @@ Offer one suitable for current depth DEPTH as default."
3329 (allout-get-bullet))))) 3399 (allout-get-bullet)))))
3330;;;_ > allout-encrypted-type-prefix (&optional prefix) 3400;;;_ > allout-encrypted-type-prefix (&optional prefix)
3331(defun allout-encrypted-type-prefix (&optional prefix) 3401(defun allout-encrypted-type-prefix (&optional prefix)
3332 "True if current header prefix bullet is for an encrypted entry \(body)." 3402 "True if current header prefix bullet is for an encrypted entry (body)."
3333 (and allout-topic-encryption-bullet 3403 (and allout-topic-encryption-bullet
3334 (string= allout-topic-encryption-bullet 3404 (string= allout-topic-encryption-bullet
3335 (if prefix 3405 (if prefix
@@ -3380,8 +3450,8 @@ the current topics' depth.
3380 3450
3381If SOLICIT is non-nil, then the choice of bullet is solicited from 3451If SOLICIT is non-nil, then the choice of bullet is solicited from
3382user. If it's a character, then that character is offered as the 3452user. If it's a character, then that character is offered as the
3383default, otherwise the one suited to the context \(according to 3453default, otherwise the one suited to the context (according to
3384distinction or depth) is offered. \(This overrides other options, 3454distinction or depth) is offered. (This overrides other options,
3385including, eg, a distinctive PRIOR-BULLET.) If non-nil, then the 3455including, eg, a distinctive PRIOR-BULLET.) If non-nil, then the
3386context-specific bullet is used. 3456context-specific bullet is used.
3387 3457
@@ -3505,7 +3575,7 @@ whitespace - in which case open is done on the current line.
3505 3575
3506When adding an offspring, it will be added immediately after the parent if 3576When adding an offspring, it will be added immediately after the parent if
3507the other offspring are exposed, or after the last child if the offspring 3577the other offspring are exposed, or after the last child if the offspring
3508are hidden. \(The intervening offspring will be exposed in the latter 3578are hidden. (The intervening offspring will be exposed in the latter
3509case.) 3579case.)
3510 3580
3511If OFFER-RECENT-BULLET is true, offer to use the bullet of the prior sibling. 3581If OFFER-RECENT-BULLET is true, offer to use the bullet of the prior sibling.
@@ -3823,7 +3893,7 @@ All args are optional.
3823 3893
3824If SOLICIT is non-nil, then the choice of bullet is solicited from 3894If SOLICIT is non-nil, then the choice of bullet is solicited from
3825user. If it's a character, then that character is offered as the 3895user. If it's a character, then that character is offered as the
3826default, otherwise the one suited to the context \(according to 3896default, otherwise the one suited to the context (according to
3827distinction or depth) is offered. If non-nil, then the 3897distinction or depth) is offered. If non-nil, then the
3828context-specific bullet is just used. 3898context-specific bullet is just used.
3829 3899
@@ -3921,7 +3991,7 @@ this function."
3921Descends into invisible as well as visible topics, however. 3991Descends into invisible as well as visible topics, however.
3922 3992
3923When optional sans-offspring is non-nil, subtopics are not 3993When optional sans-offspring is non-nil, subtopics are not
3924shifted. \(Shifting a topic outwards without shifting its 3994shifted. (Shifting a topic outwards without shifting its
3925offspring is disallowed, since this would create a \"containment 3995offspring is disallowed, since this would create a \"containment
3926discontinuity\", where the depth difference between a topic and 3996discontinuity\", where the depth difference between a topic and
3927its immediate offspring is greater than one.) 3997its immediate offspring is greater than one.)
@@ -3962,7 +4032,7 @@ Several subsequent args are for internal recursive use by the function
3962itself: STARTING-DEPTH, STARTING-POINT, and INDEX. 4032itself: STARTING-DEPTH, STARTING-POINT, and INDEX.
3963 4033
3964Finally, if optional SANS-OFFSPRING is non-nil then the offspring 4034Finally, if optional SANS-OFFSPRING is non-nil then the offspring
3965are not shifted. \(Shifting a topic outwards without shifting 4035are not shifted. (Shifting a topic outwards without shifting
3966its offspring is disallowed, since this would create a 4036its offspring is disallowed, since this would create a
3967\"containment discontinuity\", where the depth difference between 4037\"containment discontinuity\", where the depth difference between
3968a topic and its immediate offspring is greater than one..)" 4038a topic and its immediate offspring is greater than one..)"
@@ -4445,7 +4515,7 @@ however, are left exactly like normal, non-allout-specific yanks."
4445 (while more 4515 (while more
4446 (allout-back-to-current-heading) 4516 (allout-back-to-current-heading)
4447 ; go as high as we can in each bunch: 4517 ; go as high as we can in each bunch:
4448 (while (allout-ascend)) 4518 (while (allout-ascend t))
4449 (save-excursion 4519 (save-excursion
4450 (allout-unprotected 4520 (allout-unprotected
4451 (allout-rebullet-topic-grunt (- adjust-to-depth 4521 (allout-rebullet-topic-grunt (- adjust-to-depth
@@ -4598,9 +4668,9 @@ by pops to non-distinctive yanks. Bug..."
4598 "Conceal text between FROM and TO if FLAG is non-nil, else reveal it. 4668 "Conceal text between FROM and TO if FLAG is non-nil, else reveal it.
4599 4669
4600Exposure-change hook `allout-exposure-change-hook' is run with the same 4670Exposure-change hook `allout-exposure-change-hook' is run with the same
4601arguments as this function, after the exposure changes are made. \(The old 4671arguments as this function, after the exposure changes are made. (The old
4602`allout-view-change-hook' is being deprecated, and eventually will not be 4672`allout-view-change-hook' is being deprecated, and eventually will not be
4603invoked.\)" 4673invoked.)"
4604 4674
4605 ;; We use outline invisibility spec. 4675 ;; We use outline invisibility spec.
4606 (remove-overlays from to 'category 'allout-exposure-category) 4676 (remove-overlays from to 'category 'allout-exposure-category)
@@ -4900,7 +4970,7 @@ SPEC is either a number or a list.
4900 4970
4901Successive specs on a list are applied to successive sibling topics. 4971Successive specs on a list are applied to successive sibling topics.
4902 4972
4903A simple spec \(either a number, one of a few symbols, or the null 4973A simple spec (either a number, one of a few symbols, or the null
4904list) dictates the exposure for the corresponding topic. 4974list) dictates the exposure for the corresponding topic.
4905 4975
4906Non-null lists recursively designate exposure specs for respective 4976Non-null lists recursively designate exposure specs for respective
@@ -4923,7 +4993,7 @@ Simple (numeric and null-list) specs are interpreted as follows:
4923 apply prior element to all siblings at current level, *up to* 4993 apply prior element to all siblings at current level, *up to*
4924 those siblings that would be covered by specs following the `:' 4994 those siblings that would be covered by specs following the `:'
4925 on the list. Ie, apply to all topics at level but the last 4995 on the list. Ie, apply to all topics at level but the last
4926 ones. \(Only first of multiple colons at same level is 4996 ones. (Only first of multiple colons at same level is
4927 respected - subsequent ones are discarded.) 4997 respected - subsequent ones are discarded.)
4928 * - completely opens the topic, including bodies. 4998 * - completely opens the topic, including bodies.
4929 + - shows all the sub headers, but not the bodies 4999 + - shows all the sub headers, but not the bodies
@@ -5006,7 +5076,7 @@ Examples:
5006;;;_ > allout-old-expose-topic (spec &rest followers) 5076;;;_ > allout-old-expose-topic (spec &rest followers)
5007(defun allout-old-expose-topic (spec &rest followers) 5077(defun allout-old-expose-topic (spec &rest followers)
5008 5078
5009 "Deprecated. Use `allout-expose-topic' \(with different schema 5079 "Deprecated. Use `allout-expose-topic' (with different schema
5010format) instead. 5080format) instead.
5011 5081
5012Dictate wholesale exposure scheme for current topic, according to SPEC. 5082Dictate wholesale exposure scheme for current topic, according to SPEC.
@@ -5203,7 +5273,7 @@ the prefix:
5203 5273
5204 list - Present prefix as numeric section.subsection..., starting with 5274 list - Present prefix as numeric section.subsection..., starting with
5205 section indicated by the list, innermost nesting first. 5275 section indicated by the list, innermost nesting first.
5206 `indent' \(symbol) - Convert header prefixes to all white space, 5276 `indent' (symbol) - Convert header prefixes to all white space,
5207 except for distinctive bullets. 5277 except for distinctive bullets.
5208 5278
5209The elements of the list produced are lists that represents a topic 5279The elements of the list produced are lists that represents a topic
@@ -5332,7 +5402,7 @@ alternate presentation form:
5332 X`flat-indented' - Prefix is like `flat' for first topic at each 5402 X`flat-indented' - Prefix is like `flat' for first topic at each
5333 X level, but subsequent topics have only leaf topic 5403 X level, but subsequent topics have only leaf topic
5334 X number, padded with blanks to line up with first. 5404 X number, padded with blanks to line up with first.
5335 `indent' \(symbol) - Convert header prefixes to all white space, 5405 `indent' (symbol) - Convert header prefixes to all white space,
5336 except for distinctive bullets. 5406 except for distinctive bullets.
5337 5407
5338Defaults: 5408Defaults:
@@ -5484,7 +5554,7 @@ used verbatim."
5484;;;_ > allout-latex-verb-quote (string &optional flow) 5554;;;_ > allout-latex-verb-quote (string &optional flow)
5485(defun allout-latex-verb-quote (string &optional flow) 5555(defun allout-latex-verb-quote (string &optional flow)
5486 "Return copy of STRING for literal reproduction across LaTeX processing. 5556 "Return copy of STRING for literal reproduction across LaTeX processing.
5487Expresses the original characters \(including carriage returns) of the 5557Expresses the original characters (including carriage returns) of the
5488string across LaTeX processing." 5558string across LaTeX processing."
5489 (mapconcat (function 5559 (mapconcat (function
5490 (lambda (char) 5560 (lambda (char)
@@ -5496,9 +5566,9 @@ string across LaTeX processing."
5496 "")) 5566 ""))
5497;;;_ > allout-latex-verbatim-quote-curr-line () 5567;;;_ > allout-latex-verbatim-quote-curr-line ()
5498(defun allout-latex-verbatim-quote-curr-line () 5568(defun allout-latex-verbatim-quote-curr-line ()
5499 "Express line for exact \(literal) representation across LaTeX processing. 5569 "Express line for exact (literal) representation across LaTeX processing.
5500 5570
5501Adjust line contents so it is unaltered \(from the original line) 5571Adjust line contents so it is unaltered (from the original line)
5502across LaTeX processing, within the context of a `verbatim' 5572across LaTeX processing, within the context of a `verbatim'
5503environment. Leaves point at the end of the line." 5573environment. Leaves point at the end of the line."
5504 (let ((inhibit-field-text-motion t)) 5574 (let ((inhibit-field-text-motion t))
@@ -5673,7 +5743,7 @@ With repeat count, copy the exposed portions of entire buffer."
5673 "Encrypt clear or decrypt encoded text of visibly-containing topic's contents. 5743 "Encrypt clear or decrypt encoded text of visibly-containing topic's contents.
5674 5744
5675Optional FETCH-PASS universal argument provokes key-pair encryption with 5745Optional FETCH-PASS universal argument provokes key-pair encryption with
5676single universal argument. With doubled universal argument \(value = 16), 5746single universal argument. With doubled universal argument (value = 16),
5677it forces prompting for the passphrase regardless of availability from the 5747it forces prompting for the passphrase regardless of availability from the
5678passphrase cache. With no universal argument, the appropriate passphrase 5748passphrase cache. With no universal argument, the appropriate passphrase
5679is obtained from the cache, if available, else from the user. 5749is obtained from the cache, if available, else from the user.
@@ -5684,10 +5754,10 @@ Currently only GnuPG encryption is supported.
5684encryption, include the option ``armor'' in your ~/.gnupg/gpg.conf file. 5754encryption, include the option ``armor'' in your ~/.gnupg/gpg.conf file.
5685 5755
5686Both symmetric-key and key-pair encryption is implemented. Symmetric is 5756Both symmetric-key and key-pair encryption is implemented. Symmetric is
5687the default, use a single \(x4) universal argument for keypair mode. 5757the default, use a single (x4) universal argument for keypair mode.
5688 5758
5689Encrypted topic's bullet is set to a `~' to signal that the contents of the 5759Encrypted topic's bullet is set to a `~' to signal that the contents of the
5690topic \(body and subtopics, but not heading) is pending encryption or 5760topic (body and subtopics, but not heading) is pending encryption or
5691encrypted. `*' asterisk immediately after the bullet signals that the body 5761encrypted. `*' asterisk immediately after the bullet signals that the body
5692is encrypted, its' absence means the topic is meant to be encrypted but is 5762is encrypted, its' absence means the topic is meant to be encrypted but is
5693not. When a file with topics pending encryption is saved, topics pending 5763not. When a file with topics pending encryption is saved, topics pending
@@ -5695,7 +5765,7 @@ encryption are encrypted. See allout-encrypt-unencrypted-on-saves for
5695auto-encryption specifics. 5765auto-encryption specifics.
5696 5766
5697\**NOTE WELL** that automatic encryption that happens during saves will 5767\**NOTE WELL** that automatic encryption that happens during saves will
5698default to symmetric encryption - you must manually \(re)encrypt key-pair 5768default to symmetric encryption - you must manually (re)encrypt key-pair
5699encrypted topics if you want them to continue to use the key-pair cipher. 5769encrypted topics if you want them to continue to use the key-pair cipher.
5700 5770
5701Level-one topics, with prefix consisting solely of an `*' asterisk, cannot be 5771Level-one topics, with prefix consisting solely of an `*' asterisk, cannot be
@@ -5708,7 +5778,7 @@ The encryption passphrase is solicited if not currently available in the
5708passphrase cache from a recent encryption action. 5778passphrase cache from a recent encryption action.
5709 5779
5710The solicited passphrase is retained for reuse in a buffer-specific cache 5780The solicited passphrase is retained for reuse in a buffer-specific cache
5711for some set period of time \(default, 60 seconds), after which the string 5781for some set period of time (default, 60 seconds), after which the string
5712is nulled. The passphrase cache timeout is customized by setting 5782is nulled. The passphrase cache timeout is customized by setting
5713`pgg-passphrase-cache-expiry'. 5783`pgg-passphrase-cache-expiry'.
5714 5784
@@ -5731,7 +5801,7 @@ verifier across Emacs sessions.
5731Similarly, `allout-passphrase-hint-string' stores a user-provided reminder 5801Similarly, `allout-passphrase-hint-string' stores a user-provided reminder
5732about their passphrase, and `allout-passphrase-hint-handling' specifies 5802about their passphrase, and `allout-passphrase-hint-handling' specifies
5733when the hint is presented, or if passphrase hints are disabled. If 5803when the hint is presented, or if passphrase hints are disabled. If
5734enabled \(see the `allout-passphrase-hint-handling' docstring for details), 5804enabled (see the `allout-passphrase-hint-handling' docstring for details),
5735the hint string is stored in the local-variables section of the file, and 5805the hint string is stored in the local-variables section of the file, and
5736solicited whenever the passphrase is changed." 5806solicited whenever the passphrase is changed."
5737 (interactive "P") 5807 (interactive "P")
@@ -5742,10 +5812,10 @@ solicited whenever the passphrase is changed."
5742 ) 5812 )
5743;;;_ > allout-toggle-subtree-encryption (&optional fetch-pass) 5813;;;_ > allout-toggle-subtree-encryption (&optional fetch-pass)
5744(defun allout-toggle-subtree-encryption (&optional fetch-pass) 5814(defun allout-toggle-subtree-encryption (&optional fetch-pass)
5745 "Encrypt clear text or decrypt encoded topic contents \(body and subtopics.) 5815 "Encrypt clear text or decrypt encoded topic contents (body and subtopics.)
5746 5816
5747Optional FETCH-PASS universal argument provokes key-pair encryption with 5817Optional FETCH-PASS universal argument provokes key-pair encryption with
5748single universal argument. With doubled universal argument \(value = 16), 5818single universal argument. With doubled universal argument (value = 16),
5749it forces prompting for the passphrase regardless of availability from the 5819it forces prompting for the passphrase regardless of availability from the
5750passphrase cache. With no universal argument, the appropriate passphrase 5820passphrase cache. With no universal argument, the appropriate passphrase
5751is obtained from the cache, if available, else from the user. 5821is obtained from the cache, if available, else from the user.
@@ -6489,7 +6559,7 @@ This activity is inhibited if either `enable-local-variables'
6489When enabled, an entry for the variable is created if not already present, 6559When enabled, an entry for the variable is created if not already present,
6490or changed if established with a different value. The section for the file 6560or changed if established with a different value. The section for the file
6491variables, itself, is created if not already present. When created, the 6561variables, itself, is created if not already present. When created, the
6492section lines \(including the section line) exist as second-level topics in 6562section lines (including the section line) exist as second-level topics in
6493a top-level topic at the end of the file. 6563a top-level topic at the end of the file.
6494 6564
6495`enable-local-variables' must be true for any of this to happen." 6565`enable-local-variables' must be true for any of this to happen."
@@ -6818,7 +6888,7 @@ To ignore intangibility, bind `inhibit-point-motion-hooks' to t."
6818;;;_ #10 Unfinished 6888;;;_ #10 Unfinished
6819;;;_ > allout-bullet-isearch (&optional bullet) 6889;;;_ > allout-bullet-isearch (&optional bullet)
6820(defun allout-bullet-isearch (&optional bullet) 6890(defun allout-bullet-isearch (&optional bullet)
6821 "Isearch \(regexp) for topic with bullet BULLET." 6891 "Isearch (regexp) for topic with bullet BULLET."
6822 (interactive) 6892 (interactive)
6823 (if (not bullet) 6893 (if (not bullet)
6824 (setq bullet (solicit-char-in-string 6894 (setq bullet (solicit-char-in-string