X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/872faefb07a9196a583fc8cbe146ab6a2ebc9c2b..dd92b5f5047931f6020045ce47360b62d1c2cb72:/lisp/allout.el diff --git a/lisp/allout.el b/lisp/allout.el index 9ca72514fd..49bdc06fbb 100644 --- a/lisp/allout.el +++ b/lisp/allout.el @@ -1,6 +1,6 @@ ;;; allout.el --- extensive outline mode for use alone and with other modes -;; Copyright (C) 1992-1994, 2001-2013 Free Software Foundation, Inc. +;; Copyright (C) 1992-1994, 2001-2016 Free Software Foundation, Inc. ;; Author: Ken Manheimer ;; Maintainer: Ken Manheimer @@ -74,14 +74,12 @@ ;;; Code: +(declare-function epa-passphrase-callback-function + "epa" (context key-id handback)) + ;;;_* Dependency loads (require 'overlay) (eval-when-compile - ;; Most of the requires here are for stuff covered by autoloads, which - ;; byte-compiling doesn't trigger. - (require 'epg) - (require 'epa) - (require 'overlay) ;; `cl' is required for `assert'. `assert' is not covered by a standard ;; autoload, but it is a macro, so that eval-when-compile is sufficient ;; to byte-compile it in, or to do the require when the buffer evalled. @@ -178,7 +176,7 @@ respective allout-mode keybinding variables, `allout-command-prefix', (defcustom allout-command-prefix "\C-c " "Key sequence to be used as prefix for outline mode command key bindings. -Default is '\C-c'; just '\C-c' is more short-and-sweet, if you're +Default is `\C-c'; just `\C-c' is more short-and-sweet, if you're willing to let allout use a bunch of \C-c keybindings." :type 'string :group 'allout-keybindings @@ -231,7 +229,7 @@ See `allout-unprefixed-keybindings' for the list of keybindings that are not prefixed. Use vector format for the keys: - - put literal keys after a '?' question mark, eg: '?a', '?.' + - put literal keys after a `?' question mark, eg: `?a', `?.' - enclose control, shift, or meta-modified keys as sequences within parentheses, with the literal key, as above, preceded by the name(s) of the modifiers, eg: [(control ?a)] @@ -259,7 +257,7 @@ This is in contrast to the majority of allout-mode bindings on preceding command key. Use vector format for the keys: - - put literal keys after a '?' question mark, eg: '?a', '?.' + - put literal keys after a `?' question mark, eg: `?a', `?.' - enclose control, shift, or meta-modified keys as sequences within parentheses, with the literal key, as above, preceded by the name(s) of the modifiers, eg: [(control ?a)] @@ -324,7 +322,7 @@ With value nil, inhibit any automatic allout-mode activation." "Default allout outline layout specification. This setting specifies the outline exposure to use when -`allout-layout' has the local value `t'. This docstring describes the +`allout-layout' has the local value t. This docstring describes the layout specifications. A list value specifies a default layout for the current buffer, @@ -612,7 +610,7 @@ strings." Allout outline mode will use the mode-specific `allout-mode-leaders' or comment-start string, if any, to lead the topic prefix string, so topic headers look like comments in the programming language. It will also use -the comment-start string, with an '_' appended, for `allout-primary-bullet'. +the comment-start string, with an `_' appended, for `allout-primary-bullet'. String values are used as literals, not regular expressions, so do not escape any regular-expression characters. @@ -799,9 +797,9 @@ numbers are always used." :group 'allout) ;;;_ - allout-title (defcustom allout-title '(or buffer-file-name (buffer-name)) - "Expression to be evaluated to determine the title for LaTeX -formatted copy." + "Expression to evaluate to determine the title for LaTeX formatted copy." :type 'sexp + :risky t :group 'allout) ;;;_ - allout-line-skip (defcustom allout-line-skip ".05cm" @@ -919,7 +917,7 @@ has been customized to enable this behavior), `allout-mode' will be automatically activated. The layout dictated by the value will be used to set the initial exposure when `allout-mode' is activated. -\*You should not setq-default this variable non-nil unless you want every +*You should not setq-default this variable non-nil unless you want every visited file to be treated as an allout file.* The value would typically be set by a file local variable. For @@ -935,7 +933,7 @@ followed by the equivalent of `(allout-expose-topic 0 : -1 -1 0)'. \(This is the layout used for the allout.el source file.) `allout-default-layout' describes the specification format. -`allout-layout' can additionally have the value `t', in which +`allout-layout' can additionally have the value t, in which case the value of `allout-default-layout' is used.") (make-variable-buffer-local 'allout-layout) ;;;###autoload @@ -1014,9 +1012,9 @@ determination of aberrance is according to the mistaken item being followed by a legitimate item of excessively greater depth. The classic example of a mistaken item, for a standard allout -outline configuration, is a body line that begins with an '...' +outline configuration, is a body line that begins with an `...' ellipsis. This happens to contain a legitimate depth-2 header -prefix, constituted by two '..' dots at the beginning of the +prefix, constituted by two `..' dots at the beginning of the line. The only thing that can distinguish it *in principle* from a legitimate one is if the following real header is at a depth that is discontinuous from the depth of 2 implied by the @@ -1328,20 +1326,20 @@ scope of the variable is restored along with its value. If it was a void buffer-local value, then it is left as nil on resumption. The pairs are lists whose car is the name of the variable and car of the -cdr is the new value: '(some-var some-value)'. The pairs can actually be +cdr is the new value: `(some-var some-value)'. The pairs can actually be triples, where the third element qualifies the disposition of the setting, as described further below. -If the optional third element is the symbol 'extend, then the new value +If the optional third element is the symbol `extend', then the new value created by `cons'ing the second element of the pair onto the front of the existing value. -If the optional third element is the symbol 'append, then the new value is +If the optional third element is the symbol `append', then the new value is extended from the existing one by `append'ing a list containing the second element of the pair onto the end of the existing value. Extension, and resumptions in general, should not be used for hook -functions -- use the 'local mode of `add-hook' for that, instead. +functions -- use the `local' mode of `add-hook' for that, instead. The settings are stored on `allout-mode-prior-settings'." (while pairs @@ -1514,7 +1512,7 @@ already associated with a file. It consists of an encrypted random string useful only to verify that a passphrase entered by the user is effective for decryption. The passphrase -itself is \*not* recorded in the file anywhere, and the encrypted contents +itself is *not* recorded in the file anywhere, and the encrypted contents are random binary characters to avoid exposing greater susceptibility to search attacks. @@ -1566,7 +1564,7 @@ Each value can be a regexp or a list with a regexp followed by a substitution string. If it's just a regexp, all its matches are removed before the text is encrypted. If it's a regexp and a substitution, the substitution is used against the regexp matches, a la `replace-match'.") -(make-variable-buffer-local 'allout-encryption-text-removal-regexps) +(make-variable-buffer-local 'allout-encryption-plaintext-sanitization-regexps) ;;;_ = allout-encryption-ciphertext-rejection-regexps (defvar allout-encryption-ciphertext-rejection-regexps nil "Variable for regexps matching plaintext to remove before encryption. @@ -1840,7 +1838,7 @@ M-x outlineify-sticky Activate outline mode for current buffer, buffer with name derived from derived from that of current buffer -- \"*BUFFERNAME exposed*\". \\[allout-flatten-exposed-to-buffer] `allout-flatten-exposed-to-buffer' - Like above 'copy-exposed', but convert topic + Like above `copy-exposed', but convert topic prefixes to section.subsection... numeric format. \\[customize-variable] allout-auto-activation @@ -1864,7 +1862,7 @@ symmetric decryption keys, preventing entry of the correct key on subsequent decryption attempts until the cache times-out. That can take several minutes. (Decryption of other entries is not affected.) Upgrade your EasyPG version, if you can, and you can -deliberately clear your gpg-agent's cache by sending it a '-HUP' +deliberately clear your gpg-agent's cache by sending it a `-HUP' signal. See `allout-toggle-current-subtree-encryption' function docstring @@ -2082,21 +2080,21 @@ OPEN: A TOPIC that is not CLOSED, though its OFFSPRING or BODY may be." use-layout (and (not (string= allout-auto-activation "activate")) (if (string= allout-auto-activation "ask") - (if (y-or-n-p (format "Expose %s with layout '%s'? " - (buffer-name) - use-layout)) + (if (y-or-n-p (format-message + "Expose %s with layout `%s'? " + (buffer-name) use-layout)) t (message "Skipped %s layout." (buffer-name)) nil) t))) (save-excursion - (message "Adjusting '%s' exposure..." (buffer-name)) + (message "Adjusting `%s' exposure..." (buffer-name)) (goto-char 0) (allout-this-or-next-heading) (condition-case err (progn (apply 'allout-expose-topic (list use-layout)) - (message "Adjusting '%s' exposure... done." + (message "Adjusting `%s' exposure... done." (buffer-name))) ;; Problem applying exposure -- notify user, but don't ;; interrupt, eg, file visit: @@ -2126,8 +2124,8 @@ OPEN: A TOPIC that is not CLOSED, though its OFFSPRING or BODY may be." ;;;_ > allout-overlay-insert-in-front-handler (ol after beg end ;;; &optional prelen) -(defun allout-overlay-insert-in-front-handler (ol after beg end - &optional prelen) +(defun allout-overlay-insert-in-front-handler (ol after beg _end + &optional _prelen) "Shift the overlay so stuff inserted in front of it is excluded." (if after ;; ??? Shouldn't moving the overlay should be unnecessary, if overlay @@ -2136,7 +2134,7 @@ OPEN: A TOPIC that is not CLOSED, though its OFFSPRING or BODY may be." ;;;_ > allout-overlay-interior-modification-handler (ol after beg end ;;; &optional prelen) (defun allout-overlay-interior-modification-handler (ol after beg end - &optional prelen) + &optional _prelen) "Get confirmation before making arbitrary changes to invisible text. We expose the invisible text and ask for confirmation. Refusal or @@ -2199,7 +2197,7 @@ See `allout-overlay-interior-modification-handler' for details." (allout-overlay-interior-modification-handler overlay nil beg end nil)))))) ;;;_ > allout-isearch-end-handler (&optional overlay) -(defun allout-isearch-end-handler (&optional overlay) +(defun allout-isearch-end-handler (&optional _overlay) "Reconcile allout outline exposure on arriving in hidden text after isearch. Optional OVERLAY parameter is for when this function is used by @@ -2738,7 +2736,7 @@ starting point, and PREV-DEPTH is depth of prior topic." ; and maybe not preferable. )) ;;;_ > allout-chart-siblings (&optional start end) -(defun allout-chart-siblings (&optional start end) +(defun allout-chart-siblings (&optional _start _end) "Produce a list of locations of this and succeeding sibling topics. Effectively a top-level chart of siblings. See `allout-chart-subtree' for an explanation of charts." @@ -3056,7 +3054,7 @@ Returning depth if successful, nil if not." nil)) ) ;;;_ > allout-up-current-level (arg) -(defun allout-up-current-level (arg) +(defun allout-up-current-level (_arg) "Move out ARG levels from current visible topic." (interactive "p") (let ((start-point (point))) @@ -3203,7 +3201,7 @@ Presumes point is at the start of a topic prefix." "Go back to the first sibling at this level, visible or not." (allout-end-of-level 'backward)) ;;;_ > allout-end-of-level (&optional backward) -(defun allout-end-of-level (&optional backward) +(defun allout-end-of-level (&optional _backward) "Go to the last sibling at this level, visible or not." (let ((depth (allout-depth))) @@ -3485,9 +3483,10 @@ Offer one suitable for current depth DEPTH as default." (save-excursion (goto-char (allout-current-bullet-pos)) (setq choice (solicit-char-in-string - (format "Select bullet: %s ('%s' default): " - sans-escapes - (allout-substring-no-properties default-bullet)) + (format-message + "Select bullet: %s (`%s' default): " + sans-escapes + (allout-substring-no-properties default-bullet)) sans-escapes t))) (message "") @@ -3722,7 +3721,7 @@ Nuances: (save-match-data (let* ((inhibit-field-text-motion t) (depth (+ (allout-current-depth) relative-depth)) - (opening-on-blank (if (looking-at "^\$") + (opening-on-blank (if (looking-at "^$") (not (setq before nil)))) ;; bunch o vars set while computing ref-topic opening-numbered @@ -3935,7 +3934,7 @@ Maintains outline hanging topic indentation if (if (or allout-former-auto-filler allout-use-hanging-indents) (funcall use-auto-fill-function))))) ;;;_ > allout-reindent-body (old-depth new-depth &optional number) -(defun allout-reindent-body (old-depth new-depth &optional number) +(defun allout-reindent-body (old-depth new-depth &optional _number) "Reindent body lines which were indented at OLD-DEPTH to NEW-DEPTH. Optional arg NUMBER indicates numbering is being added, and it must @@ -4564,7 +4563,7 @@ Topic exposure is marked with text-properties, to be used by (if next (goto-char next))))) (set-buffer-modified-p was-modified)))) ;;;_ > allout-yank-processing () -(defun allout-yank-processing (&optional arg) +(defun allout-yank-processing (&optional _arg) "Incidental allout-specific business to be done just after text yanks. @@ -5136,15 +5135,15 @@ Simple (numeric and null-list) specs are interpreted as follows: - - exposes the body of the corresponding topic. Examples: -\(allout-expose-topic '(-1 : 0)) +\(allout-expose-topic \\='(-1 : 0)) Close this and all following topics at current level, exposing only their immediate children, but close down the last topic at this current level completely. -\(allout-expose-topic '(-1 () : 1 0)) +\(allout-expose-topic \\='(-1 () : 1 0)) Close current topic so only the immediate subtopics are shown; show the children in the second to last topic, and completely close the last one. -\(allout-expose-topic '(-2 : -1 *)) +\(allout-expose-topic \\='(-2 : -1 *)) Expose children and grandchildren of all topics at current level except the last two; expose children of the second to last and completely open the last one." @@ -5347,7 +5346,7 @@ Optional arg CONTEXT indicates interior levels to include." (cons (make-string (1+ (truncate (if (zerop (car flat-index)) 1 - (log10 (car flat-index))))) + (log (car flat-index) 10)))) ? ) result))) (setq flat-index (cdr flat-index))) @@ -5387,7 +5386,7 @@ Optional arg CONTEXT indicates interior levels to include." (cons (make-string (1+ (truncate (if (zerop (car flat-index)) 1 - (log10 (car flat-index))))) + (log (car flat-index) 10)))) ? ) result))) (setq flat-index (cdr flat-index))) @@ -5526,7 +5525,7 @@ header and body. The elements of that list are: ;;_ > allout-process-exposed (&optional func from to frombuf ;;; tobuf format) (defun allout-process-exposed (&optional func from to frombuf tobuf - format start-num) + format _start-num) "Map function on exposed parts of current topic; results to another buffer. All args are options; default values itemized below. @@ -5563,9 +5562,8 @@ Defaults: ;; Specified but not a buffer -- get it: (let ((got (get-buffer frombuf))) (if (not got) - (error (concat "allout-process-exposed: source buffer " - frombuf - " not found.")) + (error "allout-process-exposed: source buffer %s not found." + frombuf) (setq frombuf got)))) ;; not specified -- default it: (setq frombuf (current-buffer))) @@ -5591,9 +5589,9 @@ Defaults: LISTIFIED is a list representing each topic header and body: - \`(depth prefix text)' + `(depth prefix text)' -or \`(depth prefix text bullet-plus)' +or `(depth prefix text bullet-plus)' If `bullet-plus' is specified, it is inserted just after the entire prefix." (setq listified (cdr listified)) @@ -5690,7 +5688,7 @@ used verbatim." ;;;_ - LaTeX formatting ;;;_ > allout-latex-verb-quote (string &optional flow) -(defun allout-latex-verb-quote (string &optional flow) +(defun allout-latex-verb-quote (string &optional _flow) "Return copy of STRING for literal reproduction across LaTeX processing. Expresses the original characters (including carriage returns) of the string across LaTeX processing." @@ -5711,7 +5709,7 @@ across LaTeX processing, within the context of a `verbatim' environment. Leaves point at the end of the line." (let ((inhibit-field-text-motion t)) (beginning-of-line) - (let ((beg (point)) + (let (;(beg (point)) (end (point-at-eol))) (save-match-data (while (re-search-forward "\\\\" @@ -5795,7 +5793,7 @@ environment. Leaves point at the end of the line." (set-buffer buffer) (insert "\n\\end{document}\n")) ;;;_ > allout-latexify-one-item (depth prefix bullet text) -(defun allout-latexify-one-item (depth prefix bullet text) +(defun allout-latexify-one-item (depth _prefix bullet text) "Insert LaTeX commands for formatting one outline item. Args are the topics numeric DEPTH, the header PREFIX lead string, the @@ -5880,7 +5878,7 @@ With repeat count, copy the exposed portions of entire buffer." (defun allout-toggle-current-subtree-encryption (&optional keymode-cue) "Encrypt clear or decrypt encoded topic text. -Allout uses Emacs 'epg' library to perform encryption. Symmetric +Allout uses Emacs `epg' library to perform encryption. Symmetric and keypair encryption are supported. All encryption is ascii armored. @@ -5910,7 +5908,7 @@ file with topics pending encryption is saved, topics pending encryption are encrypted. See `allout-encrypt-unencrypted-on-saves' for auto-encryption specifics. -\*NOTE WELL* that automatic encryption that happens during saves will +*NOTE WELL* that automatic encryption that happens during saves will default to symmetric encryption -- you must deliberately (re)encrypt key-pair encrypted topics if you want them to continue to use the key-pair cipher. @@ -5942,7 +5940,7 @@ associated with it. This can be used to dissociate any recipients with the file, by selecting no recipients in the dialog. -Encryption and decryption uses the Emacs 'epg' library. +Encryption and decryption uses the Emacs `epg' library. Encrypted text will be ascii-armored. @@ -6046,6 +6044,16 @@ See `allout-toggle-current-subtree-encryption' for more details." (run-hook-with-args 'allout-structure-added-functions bullet-pos subtree-end)))) + +(declare-function epg-context-set-passphrase-callback "epg" + (context passphrase-callback)) +(declare-function epg-list-keys "epg" (context &optional name mode)) +(declare-function epg-decrypt-string "epg" (context cipher)) +(declare-function epg-encrypt-string "epg" + (context plain recipients &optional sign always-trust)) +(declare-function epg-user-id-string "epg" (user-id) t) +(declare-function epg-key-user-id-list "epg" (key) t) + ;;;_ > allout-encrypt-string (text decrypt allout-buffer keymode-cue ;;; &optional rejected) (defun allout-encrypt-string (text decrypt allout-buffer keymode-cue @@ -6085,7 +6093,7 @@ symmetric decryption keys, preventing entry of the correct key on subsequent decryption attempts until the cache times-out. That can take several minutes. (Decryption of other entries is not affected.) Upgrade your EasyPG version, if you can, and you can -deliberately clear your gpg-agent's cache by sending it a '-HUP' +deliberately clear your gpg-agent's cache by sending it a `-HUP' signal." (require 'epg) @@ -6255,7 +6263,7 @@ the decryption." "Return the point of the next topic pending encryption, or nil if none. Such a topic has the `allout-topic-encryption-bullet' without an -immediately following '*' that would mark the topic as being encrypted. +immediately following `*' that would mark the topic as being encrypted. It must also have content." (let (done got content-beg) (save-match-data @@ -6354,7 +6362,7 @@ save. See `allout-encrypt-unencrypted-on-saves' for more info." ;;;###autoload (defalias 'outlinify-sticky 'outlineify-sticky) ;;;###autoload -(defun outlineify-sticky (&optional arg) +(defun outlineify-sticky (&optional _arg) "Activate outline mode and establish file var so it is started subsequently. See `allout-layout' and customization of `allout-auto-activation' @@ -6370,8 +6378,9 @@ for details on preparing Emacs for automatic allout activation." (if (allout-goto-prefix) t (allout-open-topic 2) - (insert (concat "Dummy outline topic header -- see" - "`allout-mode' docstring: `^Hm'.")) + (insert (substitute-command-keys + (concat "Dummy outline topic header -- see" + " `allout-mode' docstring: `\\[describe-mode]'."))) (allout-adjust-file-variable "allout-layout" (or allout-layout '(-1 : 0)))))) ;;;_ > allout-file-vars-section-data () @@ -6480,8 +6489,9 @@ not its value." got) (dolist (sym configvar-value) (if (not (boundp sym)) - (if (yes-or-no-p (format "%s entry `%s' is unbound -- remove it? " - configvar-name sym)) + (if (yes-or-no-p (format-message + "%s entry `%s' is unbound -- remove it? " + configvar-name sym)) (delq sym (symbol-value configvar-name))) (push (symbol-value sym) got))) (reverse got))) @@ -6535,7 +6545,7 @@ Optional arg DO-DEFAULTING indicates to accept empty input (CR)." (defun regexp-sans-escapes (regexp &optional successive-backslashes) "Return a copy of REGEXP with all character escapes stripped out. -Representations of actual backslashes -- '\\\\\\\\' -- are left as a +Representations of actual backslashes -- `\\\\\\\\' -- are left as a single backslash. Optional arg SUCCESSIVE-BACKSLASHES is used internally for recursion."