2005-09-30 Ken Manheimer * allout.el: omnibus changes - new subsystem supporting easy gpg topic encryption/decryption. salient features: - both public- and symmetric-key modes are supported. - encryption being on a per-topic basis means you can intersperse encrypted and clear-text data in a single file to your heart's content. - user-provided symmetric-key hints, with consistency verification to help user avoid confusion - time-limited key reuse, a la (and using) mailcrypt's mc-passwd-timeout - write-file-hook and auto-save-hook activities to support auto encryption of pending topics on save; provision to skip currently-edited topic to avoid editing disturbance topic encryption functionality depends on both mailcrypt and crypt++ packages. (non-encryption allout functionality is not disrupted if either mailcrypt or crypt++ are absent.) docstring for `allout-toggle-current-subtree-encryption' and customization variables provide detailed description. code changes: new autoloads of crypt++ and mailcrypt routines, all for encryption functionality. 'allout customization subgroup now positioned in 'outlines group (instead of prior 'editing group) central topic-encryption entry point: (outline-toggle-current-subtree-encryption) other new encryption routines: (allout-encrypt-string, allout-encryption-produce-work-buffer, allout-encrypted-topic-p, allout-encrypted-text-type, allout-mc-activate-passwd, allout-create-encryption-key-verifier, allout-situate-encryption-key-verifier, allout-get-encryption-key-verifier, allout-verify-key, allout-next-topic-pending-encryption, allout-encrypt-decrypted, allout-encrypted-type-prefix) new customization variables: (outline-topic-encryption-bullet, outline-default-encryption-scheme, outline-key-verifier-handling, outline-key-hint-handling, outline-encrypt-unencrypted-on-saves) new operational variables: (allout-file-key-verifier-string, allout-encryption-scheme, allout-key-verifier-string, allout-key-hint-string, allout-after-save-decrypt) new hook functions for auto-encryption of pending topics: (allout-write-file-hook-handler, allout-auto-save-hook-handler, allout-after-saves-handler) (allout-post-command-business): do allout-after-save-decrypt - added mechanism for adding and adjusting settings of Emacs file variables. (allout-enable-file-variable-adjustment): custom var to enable mechanism (allout-adjust-file-variable, allout-file-vars-section-data): mechanism implementation (outlineify-sticky): use file vars mechanism - replaced broken mechanism for inhibition of concealed-text edits using read-only text instead of before-change-functions, because the latter can no longer veto the changes without being disabled. read-only text is more suitable and less complicated, anyway. (it also noticably slows massive exposure changes, but i consider the performance acceptable. eg, i have blanket auto-exposure set for my daily-notes log, which has real-world intricacy in a 1.1 Mb, 7000 topic outline, and have no problems working with it on a 200 MhZ windows laptop.) (allout-inhibit-protection, allout-during-write-cue, allout-override-protect, allout-before-change-protect): removed (allout-flag-region, allout-open-topic): revised to adjust read-only text (allout-open-line-not-read-only): added to facilitate read-only text based protection (allout-kill-line): revised to adjust read-only text, clue the user about the inhibition - (allout-unprotected): robustified with an unwind-protect - disallow manually shifting a topic deeper than the offspring depth of the previous topic - avoiding confusing "containment discontinuities" (allout-shift-in, allout-shift-out) - fixed retention of body relative hanging indent during promotion of collapsed bodies (allout-reindent-bodies) - made it easy to open new topic with same bullet as current topic - topic creation functions provided with any universal argument provokes now prompt for bullet, defaulting to the bullet of the previous topic. very ergonomic. (allout-open-topic) - (allout-plain-bullets-string, allout-distinctive-bullets-string): plain bullet alternates '.' period and ',' comma only. all other bullets are relegated to special status (but customizable) - (allout-end-of-entry): renamed from 'allout-end-of-current-entry since it actually operates w.r.t. most immediately containing entry, visible or not (allout-hide-current-entry, allout-show-current-entry): use the revised version - (allout-old-expose-topic): solidify deprecation. - (allout-end-of-subtree): added, so we can span concealed as well as visible topics. (allout-end-of-current-subtree): use `allout-end-of-subtree'. - (allout-end-of-current-heading): tweaked to just respect the first line - (allout-get-body-text): added - (allout-ascend-to-depth, allout-ascend): position at end of prefix when invoked interactively - (allout-up-current-level): use `interactive-p' - (allout-mode, allout-init): miscellaneous docstring and operational refinements, as well as hookups of new encryption stuff - comments and routine names better distinguish between: - topic body - the text contained after a header - topic header - the first line, before the body - topic entry - the header, body, and offspring - (allout-beginning-of-current-entry): now works as advertised - (allout-end-of-current-entry): relieved of superfluous allout-show-entry - (allout-isearch-rectification): refine condition for isearching (allout-isearch-abort, allout-enwrap-isearch) - reconciled with distributed allout.el 1.61 (current CVS version as of 09/30/2005), including interactive-p fixes, typo and coding style fixes, change of function prefix to "allout-", etc, and fixed problem created in outline yanking due to the interactive-p fixes - relocated some macros (allout-flag-region, my-region-active-p) - refined many docstrings, including anything from correcting typos to conceptual clarification and correction - (allout-title): fallback title is '(buffer-name)', not non-existing '(current-buffer-name)' - (subst-char-in-string): define if absent (for some xemacs versions) - corrected commentary 'keywords' to legitimate ones - updated comentary author info (using my current email address, obscurified)