true if the current command involved collapsing of text. It's reset to
false at the beginning of the next command.
(allout-post-command-business): Move the cursor to the beginning of entry
if the cursor is hidden and collapsing activity just happened.
to signal undo activity.
(allout-post-command-business): Run allout-post-undo-hook if an undo just
occurred.
(allout-after-copy-or-kill-hook), (allout-mode): Minor docstring changes.
* allout-widgets.el (allout-widgets-after-undo-function): Ensure the
integrity of the current item's decoration after it has been in the
vicinity of an undo.
(allout-widgets-mode): Include allout-widgets-after-undo-function on the
new allout-post-undo-hook.
exception for current topic. Also note that auto-saves are handled
differently.
(allout-auto-save-temporarily-disabled), (allout-just-did-undo): State
variables for tracking auto-save inhibition situation.
(allout-write-contents-hook-handler): Rename from
'allout-write-file-hook-handler', and describe how it depends on
write-contents-functions sensitivity to non-nil value to prevent file
write.
(allout-auto-save-hook-handler): Remove. auto-save does not check this in
individual buffers, only in the starting buffer, so this is not the right
way for us to inhibit auto-save in a buffer according to its condition.
(allout-mode): Use new allout-write-contents-hook-handler, and only with
write-contents-functions. Remove auto-save provisions - they're
implemented elsewhere.
(allout-before-change-handler): If undo is in progress, note that for
attention of allout-post-command-business.
(allout-post-command-business): If the command we're following was an undo,
check for change in the status of encrypted items and adjust auto-save
inhibitions accordingly.
(allout-toggle-subtree-encryption): Adjust auto-save inhibition according
to whether there are or aren't any plain-text topics pending encryption.
(allout-inhibit-auto-save-info-for-decryption): Adjust buffer-saved-size
and some allout state to inhibit auto-saves if there are plain-text topics
pending encryption.
(allout-maybe-resume-auto-save-info-after-encryption): Adjust
buffer-saved-size and some allout state to not inhibit auto-saves if there
are no longer any plain-text topics pending encryption.
(allout-next-topic-pending-encryption), (allout-encrypt-decrypted): No
longer provide for exemption of the current topic.
bullet and non-whitespace character in first topic when pasting, ensuring
that the actual spacing in the pasted topic following the bullet char is
preserved. This extra space was causing pasted encrypted topics to get a
decrypted status even when the content was actually still encrypted. Now
the decryption status from before the paste is preserved.
(allout-flag-region): Set all allout overlays so they evaporate when
reduced to zero length (evanescent), to prevent overlay leakage.
possibility of overlay leakage by making them volatile.
* allout-widgets.el (allout-widgets-tally): Define as nil so the hash is
not shared between buffers. Mode initialization is responsible for giving
it a useful starting value.
(allout-item-span): Reduce possibility of overlay leakage by making them
volatile.
(allout-widgets-count-buttons-in-region): Add diagnostic function for
tracking down overlay leaks.
the existing header prefix, rebulleting it if necessary, rather than
replacing it. This is necessary for proper operation of cooperative addons
like allout-widgets.
(allout-make-topic-prefix) (allout-rebullet-heading): Change SOLICIT arg to
INSTEAD, and interpret additionally a string value as alternate bullet to
be used, instead of prompting the user for a bullet character.
(allout-widgets-icons-dark-subdir): Track relocations of icons
* lisp/allout.el: Remove commentary about remove encryption passphrase
mnemonic support and verification.
* etc/images/icons/allout-widgets/dark-bg,
etc/images/icons/allout-widgets/light-bg,
encrypted-locked.{xpm,png}, unlocked-encrypted.{xpm,png}: Reorganize icon
directories and files to reconcile against windows short-filename clashes.
(allout-abbreviate-flattened-numbering): Rename to
allout-flattened-numbering-abbreviation, and define-obsolete-variable-alias
the old name.
(allout-flattened-numbering-abbreviation): Rename from
allout-abbreviate-flattened-numbering.
(allout-mode-p): Include among autoloads, for use by other modes with impunity.
(allout-listify-exposed): Use allout-flattened-numbering-abbreviation.
(allout-encrypt-string): Use set-buffer-multibyte directly.
(allout-set-buffer-multibyte): Remove.
solely by customization `allout-auto-activation'.
(allout-auto-activation-helper) (allout-setup): New autoloads implement new
custom set procedure for allout-auto-activation. Also, explicitly invoke
(allout-setup) after allout-auto-activation is custom-defined, to effect
the settings in emacs sessions besides the few where allout-auto-activation
customization is donea.
(allout-auto-activation): Use allout-auto-activation-helper to :set.
Revise the docstring.
(allout-init): Reduce functionality to just customizing
allout-auto-activation, and mark obsolete.
(allout-mode): Respect string values for allout-auto-activation. Run
allout-after-copy-or-kill-hook without any args.
(allout-mode) (allout-layout) (allout-default-layout) (outlineify-sticky):
Adjust docstring for new scheme.
(allout-after-copy-or-kill-hook): No arguments - hook implementers should
concentrate on the kill ring.
processing of killed text.
(allout-mode): Include new allout-after-copy-or-kill-hook among mentioned
hooks.
(allout-kill-line) (allout-kill-topic): Ensure that processing after kill
happens even if barf-if-buffer-read-only is raised. Include new
allout-after-copy-or-kill-hook among that subsequent processing.
(allout-deannotate-hidden): Actually remove the annotation text properties.
allout-number-siblings, in keeping with what obtained due to (now-defunct)
allout-keybindings-list. Ditch repeat binding to (prefixed) ?i.
(allout-before-change-handler): Better expose spots affected by undo.
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.
containing topic, rather than a collapsed one.
(allout-view-change-hook): Remove hook that was deprecated long ago.
(allout-exposure-change-hook): Remove documentation remarks concerning
removed allout-view-change-hook.
(allout-flag-region): Remove invocation of and documentation remarks
concerning allout-view-change-hook.
that cross more than a single physical window line, ie when truncate-lines
is nil.
(allout-next-visible-heading): Provide for change in line-move behavior on
long lines when truncate-lines is nil. In that case, line-move can wind up
on the same textual line when it moves to the next window line, and moving
to the bullet position after the move yields zero advancement. Add logic
to detect and compensate for the lack of progress.
(allout-current-topic-collapsed-p): move-end-of-line respect for field
boundaries is different when operating with body lines shorter than window
width versus ones greater than window width, which can yield false
negatives in this function. Avoid difference by applying move-end-of-line
while field-text-motion is inhibited.
everything points back to allout-auto-fill.
(allout-mode-deactivate-hook): Declare obsolete, in favor of
standard-formed minor-mode deactivate hook, allout-mode-off-hook.
(allout-mode): Argument "toggle" => "force".
Refine the docstring.
Remove special provisions for reactivation, besides the 'force' argument.
Consolidate layout provisions coce directly into the activation condition
branch, now that we've removed those provisions.
(allout-unload-function): Explicitly activate the mode before deactivating,
if it's initially deactivated.
(allout-set-buffer-multibyte): Properly prevent byte-compiler warnings for
version of function used only where set-buffer-multibyte is unavailable.
obsolete, to epg library, which replaces pgg.
Due to the underlying GnuPG V2 restrictions on external handling of
passphrases (or epg's restrictions when working with GnuPG v2), we are
dropping allout's symmetric encryption passphrase hinting and verification.
This has the advantage that no emacs code has access to the passphrase,
leaving all passphrase handling in GnuPG, which is much more secure. This,
together with the reduction in allout code complexity and logistical
complications the user would have in arranging to use GnuPG v1, requires
dropping these features.
Keypair encryption gains features, with adoption of respect for epa-file's
'epa-file-encrypt-to'. This means that allout outlines can be associated
with recipients, and encryptions by default will be targeted to those
recipients.
The default encryption mode (whether to epa-file-encrypt-to recipients, if
any, or symmetric mode) is overridden by providing a universal argument
greater than 1 to the outline entry encryption command,
'allout-toggle-current-subtree-encryption'. The user is then prompted to
select keypair identities from their list of known GnuPG keypairs. If they
don't select any, then symmetric encryption is done. Otherwise, the
selected keypair identities are targeted. If the universal argument is
greater than 4 then the selected recipients (or none, if none were
selected) are associated with the outline using a file local variable, as
default recipients for subsequent encryptions.
This is a big merge from a private branch.
Code details:
(allout-toggle-current-subtree-encryption,
allout-toggle-subtree-encryption): Adjust docstrings to reflect defaulting
policy and other changes.
Change fetch-pass to keymode-cue, for simpler universal argument
interpretation.
(allout-toggle-subtree-encryption): Adjust docstring to describe
changed encryption provisions.
Change fetch-pass to keymode-cue, for simpler universal argument
interpretation.
Remove provisions for handling key type and identity - they'll all be
within allout-encrypt-string or epg/epg or even contained all the way in
gpg.
(allout-encrypt-string): Include keymode-cue, for optionally prompting for
keypair recipients (universal argument > 1) and, in addition, associating the
specified recipients with the outline (universal argument > 4) using a file
local variable setting for 'epa-file-encrypt-to'.
Require epa, for recipients handling.
Change how regexp filtering elements are named.
Describe the problem with caching of incorrect symmetric-decryption keys.
Use the epa-passphrase-callback-function, in case the user is using GnuPG
v1.
Support saving of the selected keypair recipients when invoked with a
keymode-cue > 4.
Remove obsolete arguments 'fetch-pass', 'target-cache-id', 'retried'.
Require 'epa.
Establish epg-context with armoring and default epg-protocol.
Remove all passphrase cache, verification, and hinting code.
(allout-passphrase-verifier-handling, allout-passphrase-hint-handling):
No longer used, delete.
(allout-mode): Adjust docstring to describe changed encryption provisions.
Describe the problem with caching of incorrect symmetric-decryption keys.
(allout-obtain-passphrase, allout-epg-passphrase-callback-function,
allout-make-passphrase-state, allout-passphrase-state-passphrase,
allout-encrypted-key-info, allout-update-passphrase-mnemonic-aids,
allout-get-encryption-passphrase-verifier, allout-verify-passphrase):
Obsolete, remove.
(allout-encrypted-key-info): replace pgg-gpg-symmetric-key-p with explicit
examination of the parsed armoring structure. pgg-gpg-symmetric-key-p
seems to have drifted, not recognizing parsed symmetric keys as being
symmetric.
adjusting the value (as a file local variable and an active buffer setting)
with the result of epa-select-keys.
note the problem with caching of incorrect symmetric decryption keys.
(allout-toggle-current-subtree-encryption),
(allout-toggle-subtree-encryption): Adjust docstrings to reflect defaulting
policy change.
(allout-encrypt-string): keymod-cue rather than keypair-mode, which is
interpreted here. Use the epa-passphrase-callback-function, in case the
user is using GnuPG v1. Support saving of the selected keypair recipients
when invoked with a keymode-cue > 4.
- remove passphrase verifier and hinting.
(allout-passphrase-verifier-handling), (allout-passphrase-hint-handling):
No longer used, delete.
(allout-epg-protocol): Never used and unnecessary, delete.
(allout-mode): Adjust docstring to describe changed encryption provisions.
(allout-toggle-current-subtree-encryption): Adjust docstring to describe
changed encryption provisions. Change fetch-pass to keymode-cue, for
simpler universal argument interpretation.
(allout-toggle-subtree-encryption): Adjust docstring to describe
changed encryption provisions. Change fetch-pass to keymode-cue, for
simpler universal argument interpretation. Remove provisions for handling
key type and identity - they'll all be within allout-encrypt-string or
epg/epg or even contained all the way in gpg.
(allout-encrypt-string): Include keypair-mode argument, for requesting
keypair encryption. Require epa, for recipients handling. Change how
regexp filtering elements are named.
(allout-obtain-passphrase), (allout-epg-passphrase-callback-function),
(allout-make-passphrase-state), (allout-passphrase-state-passphrase):
Remove, we're not providing passphrase verification and hinting because:
- gpg v1 is required for epg passphrase callback operation, on which
verification and hinting depends
- doing that handling exposes the passphrase to emacs code, which is much
much less secure than leaving all passphrase handling in gpg
- leaving all passphrase handling to gpg removes a lot of complexity from
allout code
- gpg v2 connection to gpg-agent requires no user provisions, so is simpler
and provides some convenience that makes up for the lack of hinting and
verification
(allout-encrypted-key-info), (allout-update-passphrase-mnemonic-aids),
(allout-get-encryption-passphrase-verifier), (allout-verify-passphrase):
Obsolete.
callback arrangements. several reasons to drop the special provisions:
- gpg v1 is required for passphrase callback operation - so allout
passphrase hinting and verification requires that
- exposes passphrase to emacs code, which is much much less secure than
sticking with gpg v2 and leaving all passphrase handling in gpg
- leaving all passphrase handling to gpg removes a lot of complexity from
allout code
- gpg v2 connection to gpg-agent requires no user provisions, so is simpler
and provides some convenience that makes up for the lack of hinting and
verification
this checkin includes a partially developed version of
allout-epg-passphrase-callback-function, with hinting and ready to
implement the passphrase verification. but there's a lot to go there, and
in working through the twisty flow to adjust the verifier and hint string,
etc. not worth it, considering the above trade-offs.
to EPA. Doing elisions with ";;PGG " so they can be found and removed when
i'm ready to finalize the transition.
(allout-toggle-current-subtree-encryption): Mark docstring references to
passphrase cache. (The marker is not effective as a comment within the
docstring, but they purpose is to be found and removed before release, so
tidiness is not necessary.)
Conform to changing allout-encrypt-string call signature.
(allout-encrypt-string): Remove fetch-pass argument from call signature.
Mark description for removal from docstring.
Require 'epa.
Establish not-yet-used epg-context with armoring.
Use epg-protocol as basis for the key description, instead of pgg-scheme or
pgg-default-scheme.
Elide all references to target-cache-id, and replace with value of for-key where
appropriate. Elide all uses of fetch-pass.
Elide all passphrase cache evictions.
(allout-obtain-passphrase): Remove passphrase-cache-related parameters -
cache-id and fetch-pass - from signature and from docstring.
Use for-key instead of cache-id in pgg-read-passphrase.
Elide all passphrase cache evictions.
Adjust for allout-encrypt-string call signature changes.
(allout-create-encryption-passphrase-verifier): Adjust for
allout-encrypt-string call signature changes.
(allout-verify-passphrase): Adjust for allout-encrypt-string call signature
changes.
mostly just fodder to confirm that my 'bzr unbind' will keep incremental
checkins in my local repository, until i'm ready to merge a coherent
collection of changes for release.)
allout-prefixed-keybindings, allout-unprefixed-keybindings,
allout-preempt-trailing-ctrl-h, allout-keybindings-list,
allout-mode-map-adjustments, (allout-setup-mode-map):
Establish allout-mode keymaps as user customizable settings, and also
establish a customizable setting which regulates whether or not a trailing
control-h is reserved for use with describe-prefix-bindings - and inihibit
it by default, so that control-h *is* reserved for
describe-prefix-bindings unless the user changes this setting.
(allout-hotspot-key-handler): Distinguish more explicitly and accurately
between modified and unmodified events, and handle modified events more
comprehensively.
(allout-substring-no-properties): Alias to use or provide version of
'substring-no-properties'.
(allout-solicit-alternate-bullet): Use 'allout-substring-no-properties'.
(allout-next-single-char-property-change): Alias to use or provide version
of 'next-single-char-property-change'.
(allout-annotate-hidden), (allout-hide-by-annotation): Use 'allout-next-single-char-property-change'.
(allout-select-safe-coding-system): Alias to use or provide version of
'select-safe-coding-system'.
(allout-toggle-subtree-encryption): Use 'allout-select-safe-coding-system'.
(allout-set-buffer-multibyte): Alias to use or provide version of
'set-buffer-multibyte'.
(allout-encrypt-string): Use 'allout-set-buffer-multibyte'.
(allout-called-interactively-p): Macro for using the different versions of
called-interactively-p identically, depending on the subroutine's argument
signature.
(allout-back-to-current-heading), (allout-beginning-of-current-entry)
- use '(interactive "p")' instead of '(called-interactively-p)'.
(allout-init), (allout-ascend), (allout-end-of-level),
(allout-previous-visible-heading), (allout-forward-current-level),
(allout-backward-current-level), (allout-show-children)
- use '(allout-called-interactively-p)' instead of '(called-interactively-p)'.
(allout-before-change-handler): Exempt edits to the (overlaid) character
after the allout outline bullet from edit confirmation prompt.
(allout-add-resumptions): Ensure that it respects correct buffer for
keybindings.
(allout-beginning-of-line): Use
'allout-previous-single-char-property-change' alias for the sake of diverse
compatibility.
(allout-end-of-line): Use 'allout-mark-active-p' to encapsulate respect
for mark activity.
substitute "???" for "XXX" for non-urgent comment remarks.