annotate lisp/mh-e/mh-utils.el @ 68465:37d03b3298bf

The Great Cleanup Remove circular dependencies. mh-e.el now includes few require statements and stands alone. Other files should need to require mh-e.el, which requires mh-loaddefs.el, plus variable-only files such as mh-scan.el. Remove unneeded require statements. Remove unneeded load statements, or replace them with non-fatal require statements. Break out components into their own files that were often spread between many files. As a result, many functions that are now only used within a single file no longer need to be autoloaded. Rearrange and provide consistent headings. Untabify. * mh-acros.el: Update commentary to reflect current usage. Add autoload cookies to all macros. (mh-require-cl): Merge docstring and comment. (mh-do-in-xemacs): Fix typo in docstring. (assoc-string): Move to new file mh-compat.el. (with-mh-folder-updating, mh-in-show-buffer) (mh-do-at-event-location, mh-seq-msgs): Move here from mh-utils.el. (mh-iterate-on-messages-in-region, mh-iterate-on-range): Move here from mh-seq.el. * mh-alias.el (mh-address-mail-regexp) (mh-goto-address-find-address-at-point): Move here from mh-utils.el. (mh-folder-line-matches-show-buffer-p): Move here from mh-e.el. * mh-buffers.el: Update descriptive text. * mh-comp.el (mh-note-repl, mh-note-forw, mh-note-dist): Move to new file mh-scan.el. (mh-yank-hooks, mh-to-field-choices, mh-position-on-field) (mh-letter-menu, mh-letter-mode-help-messages) (mh-letter-buttons-init-flag, mh-letter-mode) (mh-font-lock-field-data, mh-letter-header-end) (mh-auto-fill-for-letter, mh-to-field, mh-to-fcc) (mh-file-is-vcard-p, mh-insert-signature, mh-check-whom) (mh-insert-letter, mh-extract-from-attribution, mh-yank-cur-msg) (mh-filter-out-non-text, mh-insert-prefix-string) (mh-current-fill-prefix, mh-open-line, mh-complete-word) (mh-folder-expand-at-point, mh-letter-complete-function-alist) (mh-letter-complete, mh-letter-complete-or-space) (mh-letter-confirm-address, mh-letter-header-field-at-point) (mh-letter-next-header-field-or-indent) (mh-letter-next-header-field, mh-letter-previous-header-field) (mh-letter-skipped-header-field-p) (mh-letter-skip-leading-whitespace-in-header-field) (mh-hidden-header-keymap) (mh-letter-toggle-header-field-display-button) (mh-letter-toggle-header-field-display) (mh-letter-truncate-header-field, mh-letter-mode-map): Move to new file mh-letter.el. (mh-letter-mode-map, mh-sent-from-folder, mh-send-args) (mh-pgp-support-flag, mh-x-mailer-string) (mh-letter-header-field-regexp): Move to mh-e.el. (mh-goto-header-field, mh-goto-header-end) (mh-extract-from-header-value, mh-beginning-of-word): Move to mh-utils.el. (mh-insert-header-separator): Move to mh-comp.el. (mh-display-completion-list-compat): Move to new file mh-compat.el. * mh-compat.el: New file. (assoc-string): Move here from mh-acros.el. (mh-display-completion-list): Move here from mh-comp.el. * mh-customize.el: Move content into mh-e.el and remove. * mh-e.el (mh-folder-mode-map, mh-folder-seq-tool-bar-map) (mh-folder-tool-bar-map, mh-inc-spool-map, mh-letter-mode-map) (mh-letter-tool-bar-map, mh-search-mode-map, mh-show-mode-map) (mh-show-seq-tool-bar-map, mh-show-tool-bar-map): All maps now declared here so that they can be used in docstrings. (mh-sent-from-folder, mh-sent-from-msg) (mh-letter-header-field-regexp, mh-pgp-support-flag) (mh-x-mailer-string): Move here from mh-comp.el. (mh-folder-line-matches-show-buffer-p): Move to mh-alias.el. (mh-thread-scan-line-map, mh-thread-scan-line-map-stack): Move here from mh-seq.el. (mh-draft-folder, mh-inbox, mh-user-path, mh-current-folder) (mh-previous-window-config, mh-seen-list, mh-seq-list) (mh-show-buffer, mh-showing-mode, mh-globals-hash) (mh-show-folder-buffer, mh-mail-header-separator) (mh-unseen-seq, mh-previous-seq, mh-page-to-next-msg-flag) (mh-signature-separator, mh-signature-separator-regexp) (mh-list-to-string, mh-list-to-string-1): Move here from mh-utils.el. (mh-index-max-cmdline-args, mh-xargs, mh-quote-for-shell) (mh-exec-cmd, mh-exec-cmd-error, mh-exec-cmd-daemon) (mh-exec-cmd-env-daemon, mh-process-daemon, mh-exec-cmd-quiet) (mh-exec-cmd-output) (mh-exchange-point-and-mark-preserving-active-mark) (mh-exec-lib-cmd-output, mh-handle-process-error): Move here from deprecated file mh-exec.el. (mh-path): Move here from deprecated file mh-customize.el. (mh-sys-path, mh-variants, mh-variant-in-use, mh-progs, mh-lib) (mh-flists-present-flag, mh-variants, mh-variant-mh-info) (mh-variant-mu-mh-info, mh-variant-nmh-info, mh-file-command-p) (mh-variant-set-variant, mh-variant-p, mh-profile-component) (mh-profile-component-value, mh-defface-compat): Move here from deprecated file mh-init.el. (mh-goto-next-button, mh-folder-mime-action) (mh-folder-toggle-mime-part, mh-folder-inline-mime-part) (mh-folder-save-mime-part, mh-toggle-mime-buttons): Move to to mh-mime.el. (mh-scan-format-mh, mh-scan-format-nmh, mh-note-deleted) (mh-note-refiled, mh-note-cur, mh-scan-good-msg-regexp) (mh-scan-deleted-msg-regexp, mh-scan-refiled-msg-regexp) (mh-scan-valid-regexp, mh-scan-cur-msg-number-regexp) (mh-scan-date-regexp, mh-scan-rcpt-regexp, mh-scan-body-regexp) (mh-scan-subject-regexp, mh-scan-sent-to-me-sender-regexp) (mh-scan-cmd-note-width, mh-scan-destination-width) (mh-scan-date-width, mh-scan-date-flag-width) (mh-scan-from-mbox-width, mh-scan-from-mbox-sep-width) (mh-scan-field-destination-offset) (mh-scan-field-from-start-offset, mh-scan-field-from-end-offset) (mh-scan-field-subject-start-offset, mh-scan-format) (mh-msg-num-width-to-column, mh-set-cmd-note): Move to new file mh-scan.el. (mh-partial-folder-mode-line-annotation) (mh-folder-font-lock-keywords, mh-folder-font-lock-subject) (mh-generate-sequence-font-lock, mh-last-destination) (mh-last-destination-write, mh-first-msg-num, mh-last-msg-num) (mh-rmail, mh-nmail, mh-delete-msg, mh-delete-msg-no-motion) (mh-execute-commands, mh-first-msg, mh-header-display) (mh-inc-folder, mh-last-msg, mh-next-undeleted-msg) (mh-folder-from-address, mh-prompt-for-refile-folder) (mh-refile-msg, mh-refile-or-write-again, mh-quit, mh-page-msg) (mh-previous-page, mh-previous-undeleted-msg) (mh-previous-unread-msg, mh-next-button, mh-prev-button) (mh-reset-threads-and-narrowing, mh-rescan-folder) (mh-write-msg-to-file, mh-toggle-showing, mh-undo) (mh-visit-folder, mh-update-sequences, mh-delete-a-msg) (mh-refile-a-msg, mh-next-msg, mh-next-unread-msg) (mh-set-scan-mode, mh-undo-msg, mh-make-folder) (mh-folder-sequence-menu, mh-folder-message-menu) (mh-folder-folder-menu, mh-remove-xemacs-horizontal-scrollbar) (mh-write-file-functions-compat, mh-folder-mode) (mh-restore-desktop-buffer, mh-scan-folder) (mh-regenerate-headers, mh-generate-new-cmd-note) (mh-get-new-mail, mh-make-folder-mode-line, mh-goto-cur-msg) (mh-process-or-undo-commands, mh-process-commands) (mh-update-unseen, mh-delete-scan-msgs) (mh-outstanding-commands-p): Move to new file mh-folder.el. (mh-mapc, mh-colors-available-p, mh-colors-in-use-p) (mh-make-local-vars, mh-coalesce-msg-list, mh-greaterp) (mh-lessp): Move to mh-utils.el. (mh-parse-flist-output-line, mh-folder-size-folder) (mh-folder-size-flist, mh-folder-size, mh-add-sequence-notation) (mh-remove-sequence-notation, mh-remove-cur-notation) (mh-remove-all-notation, mh-delete-seq-locally) (mh-read-folder-sequences, mh-read-msg-list) (mh-notate-user-sequences, mh-internal-seqs, mh-internal-seq) (mh-valid-seq-p, mh-delete-msg-from-seq, mh-catchup) (mh-delete-a-msg-from-seq, mh-undefine-sequence) (mh-define-sequence, mh-seq-containing-msg): Move to mh-seq.el. (mh-xemacs-flag) (mh-customize, mh-e, mh-alias, mh-folder, mh-folder-selection) (mh-identity, mh-inc, mh-junk, mh-letter, mh-ranges) (mh-scan-line-formats, mh-search, mh-sending-mail, mh-sequences) (mh-show, mh-speedbar, mh-thread, mh-tool-bar, mh-hooks) (mh-faces, mh-alias-completion-ignore-case-flag) (mh-alias-expand-aliases-flag, mh-alias-flash-on-comma) (mh-alias-insert-file, mh-alias-insertion-location) (mh-alias-local-users, mh-alias-local-users-prefix) (mh-alias-passwd-gecos-comma-separator-flag) (mh-new-messages-folders, mh-ticked-messages-folders) (mh-large-folder, mh-recenter-summary-flag) (mh-recursive-folders-flag, mh-sortm-args) (mh-default-folder-for-message-function, mh-default-folder-list) (mh-default-folder-must-exist-flag, mh-default-folder-prefix) (mh-identity-list, mh-auto-fields-list) (mh-auto-fields-prompt-flag, mh-identity-default) (mh-identity-handlers, mh-inc-prog, mh-inc-spool-list) (mh-junk-choice, mh-junk-function-alist, mh-junk-choose) (mh-junk-background, mh-junk-disposition, mh-junk-program) (mh-compose-insertion, mh-compose-skipped-header-fields) (mh-compose-space-does-completion-flag) (mh-delete-yanked-msg-window-flag) (mh-extract-from-attribution-verb, mh-ins-buf-prefix) (mh-letter-complete-function, mh-letter-fill-column) (mh-mml-method-default, mh-signature-file-name) (mh-signature-separator-flag, mh-x-face-file, mh-yank-behavior) (mh-interpret-number-as-range-flag, mh-adaptive-cmd-note-flag) (mh-scan-format-file-check, mh-scan-format-file) (mh-adaptive-cmd-note-flag-check, mh-scan-prog) (mh-search-program, mh-compose-forward-as-mime-flag) (mh-compose-letter-function, mh-compose-prompt-flag) (mh-forward-subject-format, mh-insert-x-mailer-flag) (mh-redist-full-contents-flag, mh-reply-default-reply-to) (mh-reply-show-message-flag, mh-refile-preserves-sequences-flag) (mh-tick-seq, mh-update-sequences-after-mh-show-flag) (mh-bury-show-buffer-flag, mh-clean-message-header-flag) (mh-decode-mime-flag, mh-display-buttons-for-alternatives-flag) (mh-display-buttons-for-inline-parts-flag) (mh-do-not-confirm-flag, mh-fetch-x-image-url) (mh-graphical-smileys-flag, mh-graphical-emphasis-flag) (mh-highlight-citation-style) (mh-invisible-header-fields-internal) (mh-delay-invisible-header-generation-flag) (mh-invisible-header-fields, mh-invisible-header-fields-default) (mh-invisible-header-fields-compiled, mh-invisible-headers) (mh-lpr-command-format, mh-max-inline-image-height) (mh-max-inline-image-width, mh-mhl-format-file) (mh-mime-save-parts-default-directory, mh-print-background-flag) (mh-show-maximum-size, mh-show-use-goto-addr-flag) (mh-show-use-xface-flag, mh-store-default-directory) (mh-summary-height, mh-speed-update-interval) (mh-show-threads-flag, mh-tool-bar-search-function) (mh-after-commands-processed-hook, mh-alias-reloaded-hook) (mh-before-commands-processed-hook, mh-before-quit-hook) (mh-before-send-letter-hook, mh-delete-msg-hook) (mh-find-path-hook, mh-folder-mode-hook, mh-forward-hook) (mh-inc-folder-hook, mh-insert-signature-hook) (mh-kill-folder-suppress-prompt-hooks, mh-letter-mode-hook) (mh-mh-to-mime-hook, mh-search-mode-hook, mh-quit-hook) (mh-refile-msg-hook, mh-show-hook, mh-show-mode-hook) (mh-unseen-updated-hook, mh-min-colors-defined-flag) (mh-folder-address, mh-folder-body) (mh-folder-cur-msg-number, mh-folder-date, mh-folder-deleted) (mh-folder-followup, mh-folder-msg-number, mh-folder-refiled) (mh-folder-sent-to-me-hint, mh-folder-sent-to-me-sender) (mh-folder-subject, mh-folder-tick, mh-folder-to) (mh-search-folder, mh-letter-header-field, mh-show-cc) (mh-show-date, mh-show-from, mh-show-header, mh-show-pgg-bad) (mh-show-pgg-good, mh-show-pgg-unknown, mh-show-signature) (mh-show-subject, mh-show-to, mh-show-xface, mh-speedbar-folder) (mh-speedbar-folder-with-unseen-messages) (mh-speedbar-selected-folder) (mh-speedbar-selected-folder-with-unseen-messages): Move here from deprecated file mh-customize.el. * mh-exec.el: Move content into mh-e.el and remove. * mh-folder.el: New file. Contains mh-folder-mode from mh-e.el * mh-funcs.el (mh-note-copied, mh-note-printed): Move to new file mh-scan.el. (mh-ephem-message, mh-help, mh-prefix-help): Move to mh-utils.el. * mh-gnus.el (mm-uu-dissect-text-parts): Add. (mh-mail-abbrev-make-syntax-table): Move to mh-utils.el and rename to mail-abbrev-make-syntax-table. * mh-identity.el (mh-identity-menu): New variable for existing menu. (mh-identity-make-menu-no-autoload): New alias for mh-identity-make-menu which can be called from mh-e.el. (mh-identity-list-set): Move to mh-e.el. (mh-identity-add-menu): New function (mh-insert-identity): Add optional argument maybe-insert so that local variable mh-identity-local does not have to be visible. (mh-identity-handler-default): * mh-inc.el (mh-inc-spool-map): Move declaration to mh-e.el (with rest of keymaps). Update key binding for ? to call mh-help with help messages in new argument. (mh-inc-spool-make-no-autoload): New alias for mh-inc-spool-make which can be called from mh-e.el. (mh-inc-spool-list-set): Simplify update of mh-inc-spool-map-help. * mh-init.el: Move content into mh-e.el and remove. * mh-junk.el: Update requires, untabify, and add mh-autoload cookies. * mh-letter.el: New file. Contains mh-letter-mode from mh-comp.el. * mh-limit.el: New file. Contains display limit commands from mh-mime.el. * mh-mime.el: Rearrange for consistency with other files. (mh-buffer-data, mh-mm-inline-media-tests): Move here from mh-utils.el. (mh-folder-inline-mime-part, mh-folder-save-mime-part) (mh-folder-toggle-mime-part, mh-toggle-mime-buttons) (mh-goto-next-button): Move here from mh-e.el. * mh-print.el: Rearrange for consistency with other files. * mh-scan.el: New file. Contains scan line constants and utilities from XXX, mh-funcs, mh-utils.el. * mh-search.el: Rearrange for consistency with other files. (mh-search-mode-map): Drop C-c C-f {dr} bindings since these fields which don't exist in the saved header. Replace C-c C-f f with C-c C-f m per mail-mode consistency. (mh-search-mode): Use mh-set-help instead of setting mh-help-messages. * mh-seq.el (mh-thread-message, mh-thread-container) (mh-thread-id-hash, mh-thread-subject-hash, mh-thread-id-table) (mh-thread-id-index-map, mh-thread-index-id-map) (mh-thread-scan-line-map, mh-thread-scan-line-map-stack) (mh-thread-subject-container-hash, mh-thread-duplicates) (mh-thread-history, mh-thread-body-width) (mh-thread-find-msg-subject mh-thread-initialize-hash) (mh-thread-initialize, mh-thread-id-container) (mh-thread-remove-parent-link, mh-thread-add-link) (mh-thread-ancestor-p, mh-thread-get-message-container) (mh-thread-get-message, mh-thread-canonicalize-id) (mh-thread-prune-subject, mh-thread-container-subject) (mh-thread-rewind-pruning, mh-thread-prune-containers) (mh-thread-sort-containers, mh-thread-group-by-subject) (mh-thread-process-in-reply-to, mh-thread-set-tables) (mh-thread-update-id-index-maps, mh-thread-generate) (mh-thread-inc, mh-thread-generate-scan-lines) (mh-thread-parse-scan-line, mh-thread-update-scan-line-map) (mh-thread-add-spaces, mh-thread-print-scan-lines) (mh-thread-folder, mh-toggle-threads, mh-thread-forget-message) (mh-thread-current-indentation-level, mh-thread-next-sibling) (mh-thread-previous-sibling, mh-thread-immediate-ancestor) (mh-thread-ancestor, mh-thread-find-children) (mh-message-id-regexp, mh-thread-delete, mh-thread-refile): Move to new file mh-thread.el. (mh-subject-to-sequence, mh-subject-to-sequence-unthreaded) (mh-subject-to-sequence-threaded, mh-edit-pick-expr) (mh-pick-args-list, mh-narrow-to-subject, mh-narrow-to-from) (mh-narrow-to-cc, mh-narrow-to-to, mh-narrow-to-header-field) (mh-current-message-header-field, mh-narrow-to-range) (mh-delete-subject, mh-delete-subject-or-thread): Move to new file mh-limit.el. (mh-iterate-on-messages-in-region, mh-iterate-on-range): Move to mh-acros.el. (mh-internal-seqs, mh-catchup, mh-delete-msg-from-seq) (mh-internal-seq, mh-valid-seq-p, mh-seq-containing-msg) (mh-define-sequence, mh-undefine-sequence) (mh-delete-a-msg-from-seq, mh-delete-seq-locally) (mh-folder-size, mh-folder-size-flist, mh-folder-size-folder) (mh-parse-flist-output-line, mh-read-folder-sequences) (mh-read-msg-list, mh-notate-user-sequences) (mh-remove-cur-notation, mh-add-sequence-notation) (mh-remove-sequence-notation, mh-remove-all-notation): Move here from mh-e.el. (mh-make-seq, mh-seq-name, mh-find-seq, mh-seq-to-msgs) (mh-add-msgs-to-seq, mh-notate): Move here from mh-utils.el. * mh-show.el: New file. Contains mh-show-mode from mh-utils.el. * mh-speed.el: Rearrange for consistency with other files. * mh-thread.el: New file. Contains threading code from mh-seq.el. * mh-tool-bar.el: New file. Contains tool bar creation code from deprecated file mh-customize.el. * mh-utils.el (recursive-load-depth-limit): Remove setting. No longer needed. (mh-scan-msg-number-regexp, mh-scan-msg-overflow-regexp) (mh-scan-msg-format-regexp, mh-scan-msg-format-string) (mh-scan-msg-search-regexp, mh-cmd-note, mh-note-seq) (mh-update-scan-format, mh-msg-num-width): Move to new file mh-scan.el. (mh-show-buffer-mode-line-buffer-id, mh-letter-header-font-lock) (mh-header-field-font-lock, mh-header-to-font-lock) (mh-header-cc-font-lock, mh-header-subject-font-lock) (mh-show-font-lock-keywords) (mh-show-font-lock-keywords-with-cite) (mh-show-font-lock-fontify-region) (mh-gnus-article-highlight-citation, mh-showing-with-headers) (mh-start-of-uncleaned-message, mh-invalidate-show-buffer) (mh-unvisit-file, mh-defun-show-buffer, mh-show-mode-map) (mh-show-sequence-menu, mh-show-message-menu) (mh-show-folder-menu, mh-show-mode, mh-show-addr) (mh-maybe-show, mh-show, mh-show-msg, mh-show-unquote-From) (mh-msg-folder, mh-display-msg, mh-clean-msg-header): Move to new file mh-show.el. (mh-mail-header-separator, mh-signature-separator-regexp) (mh-signature-separator, mh-globals-hash, mh-user-path) (mh-draft-folder, mh-unseen-seq, mh-previous-seq, mh-inbox) (mh-previous-window-config, mh-current-folder mh-show-buffer) (mh-showing-mode, mh-show-mode-map, mh-show-folder-buffer) (mh-showing-mode, mh-seq-list, mh-seen-list, mh-summary-height) (mh-list-to-string, mh-list-to-string-1): Move to mh-e.el. (mh-buffer-data, mh-mm-inline-media-tests): Move to mh-mime.el. (mh-address-mail-regexp, mh-goto-address-find-address-at-point): Move to mh-alias.el. (mh-letter-font-lock-keywords): Move to new file mh-letter.el. (mh-folder-filename, mh-msg-count, mh-recenter, mh-msg-filename) (mh-show-mouse, mh-modify, mh-goto-msg, mh-set-folder-modified-p): Move to new file mh-folder.el. (with-mh-folder-updating, mh-in-show-buffer) (mh-do-at-event-location, mh-seq-msgs): Moved to mh-acros.el. (mh-make-seq, mh-seq-name, mh-notate, mh-find-seq) (mh-seq-to-msgs, mh-add-msgs-to-seq, mh-canonicalize-sequence): Moved to mh-seq.el. (mh-show-xface-function, mh-uncompface-executable, mh-face-to-png) (mh-uncompface, mh-icontopbm, mh-face-foreground-compat) (mh-face-background-compat, mh-face-display-function) (mh-show-xface, mh-picon-directory-list) (mh-picon-existing-directory-list) (mh-picon-cache, mh-picon-image-types) (mh-picon-set-directory-list, mh-picon-get-image) (mh-picon-file-contents, mh-picon-generate-path) (mh-x-image-cache-directory, mh-x-image-scaling-function) (mh-wget-executable, mh-wget-choice, mh-wget-option) (mh-x-image-temp-file, mh-x-image-url, mh-x-image-marker) (mh-x-image-url-cache-file, mh-x-image-scale-with-pnm) (mh-x-image-scale-with-convert) (url-unreserved-chars, url-hexify-string) (mh-x-image-url-cache-canonicalize) (mh-x-image-set-download-state, mh-x-image-get-download-state) (mh-x-image-url-fetch-image, mh-x-image-display) (mh-x-image-scale-and-display, mh-x-image-url-sane-p) (mh-x-image-url-display): Move to new file mh-xface.el. (mh-logo-display): Call mh-image-load-path. (mh-find-path-run, mh-find-path): Move here from deprecated file mh-init.el. (mh-help-messages): Now an alist of modes to an alist of messages. (mh-set-help): New function used to set mh-help-messages (mh-help): Adjust for new format of mh-help-messages. Add help-messages argument. (mh-prefix-help): Refactor to use mh-help. (mh-coalesce-msg-list, mh-greaterp, mh-lessp): Move here from mh-e.el. (mh-clear-sub-folders-cache): New function added to avoid exposing mh-sub-folders-cache variable. * mh-xface.el: New file. Contains X-Face and Face header field display routines from mh-utils.el.
author Bill Wohler <wohler@newt.com>
date Sun, 29 Jan 2006 19:34:57 +0000
parents 1052cc7b7d7f
children 0f44616074ba
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
68465
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
1 ;;; mh-utils.el --- MH-E general utilities
49459
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
2
62847
aa8c2e12ee24 Upgraded to MH-E version 7.84.
Bill Wohler <wohler@newt.com>
parents: 62767
diff changeset
3 ;; Copyright (C) 1993, 1995, 1997,
67988
7882fc7df359 * mh-alias.el (mh-alias-grab-from-field): Remove leading * from
Bill Wohler <wohler@newt.com>
parents: 67969
diff changeset
4 ;; 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
49459
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
5
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
6 ;; Author: Bill Wohler <wohler@newt.com>
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
7 ;; Maintainer: Bill Wohler <wohler@newt.com>
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
8 ;; Keywords: mail
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
9 ;; See: mh-e.el
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
10
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
11 ;; This file is part of GNU Emacs.
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
12
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
13 ;; GNU Emacs is free software; you can redistribute it and/or modify
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
14 ;; it under the terms of the GNU General Public License as published by
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
15 ;; the Free Software Foundation; either version 2, or (at your option)
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
16 ;; any later version.
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
17
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
18 ;; GNU Emacs is distributed in the hope that it will be useful,
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
19 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
20 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
21 ;; GNU General Public License for more details.
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
22
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
23 ;; You should have received a copy of the GNU General Public License
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
24 ;; along with GNU Emacs; see the file COPYING. If not, write to the
64085
18a818a2ee7c Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 63531
diff changeset
25 ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18a818a2ee7c Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 63531
diff changeset
26 ;; Boston, MA 02110-1301, USA.
49459
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
27
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
28 ;;; Commentary:
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
29
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
30 ;;; Change Log:
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
31
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
32 ;;; Code:
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
33
68465
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
34 (require 'mh-e)
56406
d36b00b98db0 Upgraded to MH-E version 7.4.4.
Bill Wohler <wohler@newt.com>
parents: 52401
diff changeset
35 (mh-require-cl)
68096
57c4e7929f99 * mh-alias.el (mh-alias-gecos-name): Use replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents: 68013
diff changeset
36
49459
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
37 (require 'font-lock)
67681
3a8785724cca * mh-acros.el:
Bill Wohler <wohler@newt.com>
parents: 67656
diff changeset
38
49459
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
39 ;;; CL Replacements
67681
3a8785724cca * mh-acros.el:
Bill Wohler <wohler@newt.com>
parents: 67656
diff changeset
40
68465
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
41 ;;;###mh-autoload
49459
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
42 (defun mh-search-from-end (char string)
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
43 "Return the position of last occurrence of CHAR in STRING.
67758
6b063593fdad Follow Emacs coding conventions. Use default setting of
Bill Wohler <wohler@newt.com>
parents: 67756
diff changeset
44 If CHAR is not present in STRING then return nil. The function is
6b063593fdad Follow Emacs coding conventions. Use default setting of
Bill Wohler <wohler@newt.com>
parents: 67756
diff changeset
45 used in lieu of `search' in the CL package."
49459
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
46 (loop for index from (1- (length string)) downto 0
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
47 when (equal (aref string index) char) return index
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
48 finally return nil))
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
49
56673
e9a6cbc8ca5e Upgraded to MH-E version 7.4.80.
Bill Wohler <wohler@newt.com>
parents: 56406
diff changeset
50
67681
3a8785724cca * mh-acros.el:
Bill Wohler <wohler@newt.com>
parents: 67656
diff changeset
51
68465
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
52 ;;; General Utilities
67758
6b063593fdad Follow Emacs coding conventions. Use default setting of
Bill Wohler <wohler@newt.com>
parents: 67756
diff changeset
53
68465
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
54 (require 'mailabbrev nil t)
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
55 (mh-defun-compat mail-abbrev-make-syntax-table ()
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
56 "Emacs 21 and XEmacs don't have this function."
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
57 nil)
49459
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
58
68465
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
59 ;;;###mh-autoload
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
60 (defun mh-beginning-of-word (&optional n)
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
61 "Return position of the N th word backwards."
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
62 (unless n (setq n 1))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
63 (let ((syntax-table (syntax-table)))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
64 (unwind-protect
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
65 (save-excursion
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
66 (mail-abbrev-make-syntax-table)
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
67 (set-syntax-table mail-abbrev-syntax-table)
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
68 (backward-word n)
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
69 (point))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
70 (set-syntax-table syntax-table))))
67758
6b063593fdad Follow Emacs coding conventions. Use default setting of
Bill Wohler <wohler@newt.com>
parents: 67756
diff changeset
71
68465
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
72 ;;;###mh-autoload
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
73 (defun mh-colors-available-p ()
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
74 "Check if colors are available in the Emacs being used."
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
75 (or mh-xemacs-flag
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
76 (let ((color-cells (display-color-cells)))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
77 (and (numberp color-cells) (>= color-cells 8)))))
49459
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
78
68465
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
79 ;;;###mh-autoload
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
80 (defun mh-colors-in-use-p ()
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
81 "Check if colors are being used in the folder buffer."
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
82 (and mh-colors-available-flag font-lock-mode))
67758
6b063593fdad Follow Emacs coding conventions. Use default setting of
Bill Wohler <wohler@newt.com>
parents: 67756
diff changeset
83
68465
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
84 ;;;###mh-autoload
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
85 (defun mh-delete-line (lines)
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
86 "Delete the next LINES lines."
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
87 (delete-region (point) (progn (forward-line lines) (point))))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
88
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
89 (defvar mh-image-load-path-called-flag nil)
49459
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
90
68465
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
91 ;;;###mh-autoload
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
92 (defun mh-image-load-path ()
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
93 "Ensure that the MH-E images are accessible by `find-image'.
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
94 Images for MH-E are found in ../../etc/images relative to the
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
95 files in \"lisp/mh-e\". If `image-load-path' exists (since Emacs
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
96 22), then the images directory is added to it if isn't already
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
97 there. Otherwise, the images directory is added to the
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
98 `load-path' if it isn't already there."
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
99 (unless mh-image-load-path-called-flag
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
100 (let (mh-library-name mh-image-load-path)
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
101 ;; First, find mh-e in the load-path.
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
102 (setq mh-library-name (locate-library "mh-e"))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
103 (if (not mh-library-name)
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
104 (error "Can not find MH-E in load-path"))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
105 (setq mh-image-load-path
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
106 (expand-file-name (concat (file-name-directory mh-library-name)
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
107 "../../etc/images")))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
108 (if (not (file-exists-p mh-image-load-path))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
109 (error "Can not find image directory %s" mh-image-load-path))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
110 (if (boundp 'image-load-path)
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
111 (add-to-list 'image-load-path mh-image-load-path)
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
112 (add-to-list 'load-path mh-image-load-path)))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
113 (setq mh-image-load-path-called-flag t)))
66477
117f8e71b37a * mh-customize.el (mh-adaptive-cmd-note-flag)
Bill Wohler <wohler@newt.com>
parents: 66354
diff changeset
114
68465
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
115 ;;;###mh-autoload
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
116 (defun mh-make-local-vars (&rest pairs)
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
117 "Initialize local variables according to the variable-value PAIRS."
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
118 (while pairs
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
119 (set (make-local-variable (car pairs)) (car (cdr pairs)))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
120 (setq pairs (cdr (cdr pairs)))))
67758
6b063593fdad Follow Emacs coding conventions. Use default setting of
Bill Wohler <wohler@newt.com>
parents: 67756
diff changeset
121
68465
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
122 ;;;###mh-autoload
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
123 (defun mh-mapc (function list)
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
124 "Apply FUNCTION to each element of LIST for side effects only."
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
125 (while list
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
126 (funcall function (car list))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
127 (setq list (cdr list))))
49459
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
128
68465
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
129 ;;;###mh-autoload
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
130 (defun mh-replace-string (old new)
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
131 "Replace all occurrences of OLD with NEW in the current buffer.
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
132 Ignores case when searching for OLD."
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
133 (goto-char (point-min))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
134 (let ((case-fold-search t))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
135 (while (search-forward old nil t)
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
136 (replace-match new t t))))
49459
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
137
56673
e9a6cbc8ca5e Upgraded to MH-E version 7.4.80.
Bill Wohler <wohler@newt.com>
parents: 56406
diff changeset
138
49459
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
139
68465
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
140 ;;; Logo Display
49459
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
141
49578
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
142 (defvar mh-logo-cache nil)
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
143
68465
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
144 ;;;###mh-autoload
49578
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
145 (defun mh-logo-display ()
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
146 "Modify mode line to display MH-E logo."
68465
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
147 (mh-image-load-path)
50702
7dd3d5eae9c7 Upgraded to MH-E version 7.3.
Bill Wohler <wohler@newt.com>
parents: 49598
diff changeset
148 (mh-do-in-gnu-emacs
7dd3d5eae9c7 Upgraded to MH-E version 7.3.
Bill Wohler <wohler@newt.com>
parents: 49598
diff changeset
149 (add-text-properties
7dd3d5eae9c7 Upgraded to MH-E version 7.3.
Bill Wohler <wohler@newt.com>
parents: 49598
diff changeset
150 0 2
7dd3d5eae9c7 Upgraded to MH-E version 7.3.
Bill Wohler <wohler@newt.com>
parents: 49598
diff changeset
151 `(display ,(or mh-logo-cache
7dd3d5eae9c7 Upgraded to MH-E version 7.3.
Bill Wohler <wohler@newt.com>
parents: 49598
diff changeset
152 (setq mh-logo-cache
7dd3d5eae9c7 Upgraded to MH-E version 7.3.
Bill Wohler <wohler@newt.com>
parents: 49598
diff changeset
153 (mh-funcall-if-exists
7dd3d5eae9c7 Upgraded to MH-E version 7.3.
Bill Wohler <wohler@newt.com>
parents: 49598
diff changeset
154 find-image '((:type xpm :ascent center
7dd3d5eae9c7 Upgraded to MH-E version 7.3.
Bill Wohler <wohler@newt.com>
parents: 49598
diff changeset
155 :file "mh-logo.xpm"))))))
7dd3d5eae9c7 Upgraded to MH-E version 7.3.
Bill Wohler <wohler@newt.com>
parents: 49598
diff changeset
156 (car mode-line-buffer-identification)))
7dd3d5eae9c7 Upgraded to MH-E version 7.3.
Bill Wohler <wohler@newt.com>
parents: 49598
diff changeset
157 (mh-do-in-xemacs
7dd3d5eae9c7 Upgraded to MH-E version 7.3.
Bill Wohler <wohler@newt.com>
parents: 49598
diff changeset
158 (setq modeline-buffer-identification
7dd3d5eae9c7 Upgraded to MH-E version 7.3.
Bill Wohler <wohler@newt.com>
parents: 49598
diff changeset
159 (list
7dd3d5eae9c7 Upgraded to MH-E version 7.3.
Bill Wohler <wohler@newt.com>
parents: 49598
diff changeset
160 (if mh-modeline-glyph
7dd3d5eae9c7 Upgraded to MH-E version 7.3.
Bill Wohler <wohler@newt.com>
parents: 49598
diff changeset
161 (cons modeline-buffer-id-left-extent mh-modeline-glyph)
7dd3d5eae9c7 Upgraded to MH-E version 7.3.
Bill Wohler <wohler@newt.com>
parents: 49598
diff changeset
162 (cons modeline-buffer-id-left-extent "XEmacs%N:"))
7dd3d5eae9c7 Upgraded to MH-E version 7.3.
Bill Wohler <wohler@newt.com>
parents: 49598
diff changeset
163 (cons modeline-buffer-id-right-extent " %17b")))))
7dd3d5eae9c7 Upgraded to MH-E version 7.3.
Bill Wohler <wohler@newt.com>
parents: 49598
diff changeset
164
68465
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
165
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
166
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
167 ;;; Read MH Profile
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
168
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
169 (defvar mh-find-path-run nil
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
170 "Non-nil if `mh-find-path' has been run already.
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
171 Do not access this variable; `mh-find-path' already uses it to
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
172 avoid running more than once.")
67756
7ff92ad99326 * mh-alias.el (mh-alias-reload): Sync docstrings with manual.
Bill Wohler <wohler@newt.com>
parents: 67681
diff changeset
173
68465
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
174 ;;;###mh-autoload
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
175 (defun mh-find-path ()
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
176 "Set variables from user's MH profile.
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
177
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
178 This function sets `mh-user-path' from your \"Path:\" MH profile
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
179 component (but defaults to \"Mail\" if one isn't present),
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
180 `mh-draft-folder' from \"Draft-Folder:\", `mh-unseen-seq' from
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
181 \"Unseen-Sequence:\", `mh-previous-seq' from
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
182 \"Previous-Sequence:\", and `mh-inbox' from \"Inbox:\" (defaults
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
183 to \"+inbox\").
49459
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
184
68465
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
185 The hook `mh-find-path-hook' is run after these variables have
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
186 been set. This hook can be used the change the value of these
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
187 variables if you need to run with different values between MH and
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
188 MH-E."
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
189 (unless mh-find-path-run
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
190 ;; Sanity checks.
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
191 (if (and (getenv "MH")
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
192 (not (file-readable-p (getenv "MH"))))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
193 (error "MH environment variable contains unreadable file %s"
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
194 (getenv "MH")))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
195 (if (null (mh-variants))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
196 (error "Install MH and run install-mh before running MH-E"))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
197 (let ((profile "~/.mh_profile"))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
198 (if (not (file-readable-p profile))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
199 (error "Run install-mh before running MH-E")))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
200 ;; Read MH profile.
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
201 (setq mh-user-path (mh-profile-component "Path"))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
202 (if (not mh-user-path)
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
203 (setq mh-user-path "Mail"))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
204 (setq mh-user-path
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
205 (file-name-as-directory
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
206 (expand-file-name mh-user-path (expand-file-name "~"))))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
207 (mh-set-x-image-cache-directory (expand-file-name ".mhe-x-image-cache"
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
208 mh-user-path))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
209 (setq mh-draft-folder (mh-profile-component "Draft-Folder"))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
210 (if mh-draft-folder
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
211 (progn
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
212 (if (not (mh-folder-name-p mh-draft-folder))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
213 (setq mh-draft-folder (format "+%s" mh-draft-folder)))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
214 (if (not (file-exists-p (mh-expand-file-name mh-draft-folder)))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
215 (error
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
216 "Draft folder \"%s\" not found; create it and try again"
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
217 (mh-expand-file-name mh-draft-folder)))))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
218 (setq mh-inbox (mh-profile-component "Inbox"))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
219 (cond ((not mh-inbox)
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
220 (setq mh-inbox "+inbox"))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
221 ((not (mh-folder-name-p mh-inbox))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
222 (setq mh-inbox (format "+%s" mh-inbox))))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
223 (setq mh-unseen-seq (mh-profile-component "Unseen-Sequence"))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
224 (if mh-unseen-seq
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
225 (setq mh-unseen-seq (intern mh-unseen-seq))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
226 (setq mh-unseen-seq 'unseen)) ;old MH default?
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
227 (setq mh-previous-seq (mh-profile-component "Previous-Sequence"))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
228 (if mh-previous-seq
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
229 (setq mh-previous-seq (intern mh-previous-seq)))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
230 (run-hooks 'mh-find-path-hook)
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
231 (mh-collect-folder-names)
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
232 (setq mh-find-path-run t)))
49459
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
233
67681
3a8785724cca * mh-acros.el:
Bill Wohler <wohler@newt.com>
parents: 67656
diff changeset
234
3a8785724cca * mh-acros.el:
Bill Wohler <wohler@newt.com>
parents: 67656
diff changeset
235
68465
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
236 ;;; Help Functions
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
237
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
238 ;;;###mh-autoload
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
239 (defun mh-ephem-message (string)
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
240 "Display STRING in the minibuffer momentarily."
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
241 (message "%s" string)
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
242 (sit-for 5)
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
243 (message ""))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
244
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
245 (defvar mh-help-default nil
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
246 "Mode to use if messages are not present for the current mode.")
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
247
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
248 (defvar mh-help-messages nil
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
249 "Help messages for all modes.
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
250 This is an alist of alists. The primary key is a symbol
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
251 representing the mode; the value is described in `mh-set-help'.")
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
252
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
253 ;;;###mh-autoload
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
254 (defun mh-set-help (messages &optional default)
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
255 "Set help messages.
49459
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
256
68465
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
257 The MESSAGES are assumed to be an associative array. It is used
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
258 to show help for the most common commands in the current mode.
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
259 The key is a prefix char. The value is one or more strings which
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
260 are concatenated together and displayed in a help buffer if ? is
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
261 pressed after the prefix character. The special key nil is used
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
262 to display the non-prefixed commands.
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
263
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
264 The substitutions described in `substitute-command-keys' are performed as
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
265 well.
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
266
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
267 If optional argument DEFAULT is non-nil, then these messages will
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
268 be used if help is asked for an unknown mode."
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
269 (add-to-list 'mh-help-messages (cons major-mode messages))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
270 (if default
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
271 (setq mh-help-default major-mode)))
49459
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
272
68465
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
273 ;;;###mh-autoload
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
274 (defun mh-help (&optional help-messages)
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
275 "Display cheat sheet for the MH-E commands.
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
276 See `mh-set-help' for setting the help messages.
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
277 HELP-MESSAGES are used instead if given.
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
278 This is a list of one or more strings which are concatenated together
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
279 and displayed in a help buffer."
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
280 (interactive)
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
281 (let* ((help (or help-messages
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
282 (cdr (assoc nil (assoc major-mode mh-help-messages)))))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
283 (text (substitute-command-keys (mapconcat 'identity help ""))))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
284 (with-electric-help
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
285 (function
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
286 (lambda ()
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
287 (insert text)))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
288 mh-help-buffer)))
49459
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
289
68465
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
290 ;;;###mh-autoload
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
291 (defun mh-prefix-help ()
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
292 "Display cheat sheet for the commands of the current prefix in minibuffer."
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
293 (interactive)
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
294 ;; We got here because the user pressed a "?", but he pressed a prefix key
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
295 ;; before that. Since the the key vector starts at index 0, the index of the
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
296 ;; last keystroke is length-1 and thus the second to last keystroke is at
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
297 ;; length-2. We use that information to obtain a suitable prefix character
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
298 ;; from the recent keys.
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
299 (let* ((keys (recent-keys))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
300 (prefix-char (elt keys (- (length keys) 2)))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
301 (help (cdr (assoc prefix-char (assoc major-mode mh-help-messages)))))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
302 (mh-help help)))
56406
d36b00b98db0 Upgraded to MH-E version 7.4.4.
Bill Wohler <wohler@newt.com>
parents: 52401
diff changeset
303
68465
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
304
49459
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
305
68465
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
306 ;;; Message Number Utilities
49459
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
307
68465
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
308 ;;;###mh-autoload
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
309 (defun mh-coalesce-msg-list (messages)
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
310 "Given a list of MESSAGES, return a list of message number ranges.
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
311 This is the inverse of `mh-read-msg-list', which expands ranges.
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
312 Message lists passed to MH programs should be processed by this
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
313 function to avoid exceeding system command line argument limits."
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
314 (let ((msgs (sort (copy-sequence messages) 'mh-greaterp))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
315 (range-high nil)
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
316 (prev -1)
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
317 (ranges nil))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
318 (while prev
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
319 (if range-high
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
320 (if (or (not (numberp prev))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
321 (not (equal (car msgs) (1- prev))))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
322 (progn ;non-sequential, flush old range
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
323 (if (eq prev range-high)
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
324 (setq ranges (cons range-high ranges))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
325 (setq ranges (cons (format "%s-%s" prev range-high) ranges)))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
326 (setq range-high nil))))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
327 (or range-high
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
328 (setq range-high (car msgs))) ;start new or first range
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
329 (setq prev (car msgs))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
330 (setq msgs (cdr msgs)))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
331 ranges))
49459
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
332
68465
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
333 (defun mh-greaterp (msg1 msg2)
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
334 "Return the greater of two message indicators MSG1 and MSG2.
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
335 Strings are \"smaller\" than numbers.
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
336 Valid values are things like \"cur\", \"last\", 1, and 1820."
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
337 (if (numberp msg1)
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
338 (if (numberp msg2)
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
339 (> msg1 msg2)
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
340 t)
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
341 (if (numberp msg2)
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
342 nil
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
343 (string-lessp msg2 msg1))))
49459
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
344
68465
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
345 ;;;###mh-autoload
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
346 (defun mh-lessp (msg1 msg2)
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
347 "Return the lesser of two message indicators MSG1 and MSG2.
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
348 Strings are \"smaller\" than numbers.
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
349 Valid values are things like \"cur\", \"last\", 1, and 1820."
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
350 (not (mh-greaterp msg1 msg2)))
49459
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
351
68465
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
352 ;;;###mh-autoload
49459
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
353 (defun mh-get-msg-num (error-if-no-message)
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
354 "Return the message number of the displayed message.
67758
6b063593fdad Follow Emacs coding conventions. Use default setting of
Bill Wohler <wohler@newt.com>
parents: 67756
diff changeset
355 If the argument ERROR-IF-NO-MESSAGE is non-nil, then complain if
6b063593fdad Follow Emacs coding conventions. Use default setting of
Bill Wohler <wohler@newt.com>
parents: 67756
diff changeset
356 the cursor is not pointing to a message."
49459
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
357 (save-excursion
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
358 (beginning-of-line)
68465
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
359 (cond ((looking-at (mh-scan-msg-number-regexp))
62847
aa8c2e12ee24 Upgraded to MH-E version 7.84.
Bill Wohler <wohler@newt.com>
parents: 62767
diff changeset
360 (string-to-number (buffer-substring (match-beginning 1)
aa8c2e12ee24 Upgraded to MH-E version 7.84.
Bill Wohler <wohler@newt.com>
parents: 62767
diff changeset
361 (match-end 1))))
49459
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
362 (error-if-no-message
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
363 (error "Cursor not pointing to message"))
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
364 (t nil))))
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
365
68465
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
366 (add-to-list 'debug-ignored-errors "^Cursor not pointing to message$")
49459
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
367
50702
7dd3d5eae9c7 Upgraded to MH-E version 7.3.
Bill Wohler <wohler@newt.com>
parents: 49598
diff changeset
368
7dd3d5eae9c7 Upgraded to MH-E version 7.3.
Bill Wohler <wohler@newt.com>
parents: 49598
diff changeset
369
68465
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
370 ;;; Folder Cache and Access
49459
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
371
49578
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
372 (defvar mh-sub-folders-cache (make-hash-table :test #'equal))
50702
7dd3d5eae9c7 Upgraded to MH-E version 7.3.
Bill Wohler <wohler@newt.com>
parents: 49598
diff changeset
373 (defvar mh-current-folder-name nil)
56406
d36b00b98db0 Upgraded to MH-E version 7.4.4.
Bill Wohler <wohler@newt.com>
parents: 52401
diff changeset
374 (defvar mh-flists-partial-line "")
d36b00b98db0 Upgraded to MH-E version 7.4.4.
Bill Wohler <wohler@newt.com>
parents: 52401
diff changeset
375 (defvar mh-flists-process nil)
d36b00b98db0 Upgraded to MH-E version 7.4.4.
Bill Wohler <wohler@newt.com>
parents: 52401
diff changeset
376
68465
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
377 ;;;###mh-autoload
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
378 (defun mh-clear-sub-folders-cache ()
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
379 "Clear `mh-sub-folders-cache'."
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
380 (clrhash mh-sub-folders-cache))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
381
56406
d36b00b98db0 Upgraded to MH-E version 7.4.4.
Bill Wohler <wohler@newt.com>
parents: 52401
diff changeset
382 ;; Initialize mh-sub-folders-cache...
d36b00b98db0 Upgraded to MH-E version 7.4.4.
Bill Wohler <wohler@newt.com>
parents: 52401
diff changeset
383 (defun mh-collect-folder-names ()
68188
dcf226991252 * mh-search.el (mh-index-next-result-function): Add format to
Bill Wohler <wohler@newt.com>
parents: 68163
diff changeset
384 "Collect folder names by running \"folders\"."
56406
d36b00b98db0 Upgraded to MH-E version 7.4.4.
Bill Wohler <wohler@newt.com>
parents: 52401
diff changeset
385 (unless mh-flists-process
d36b00b98db0 Upgraded to MH-E version 7.4.4.
Bill Wohler <wohler@newt.com>
parents: 52401
diff changeset
386 (setq mh-flists-process
d36b00b98db0 Upgraded to MH-E version 7.4.4.
Bill Wohler <wohler@newt.com>
parents: 52401
diff changeset
387 (mh-exec-cmd-daemon "folders" 'mh-collect-folder-names-filter
d36b00b98db0 Upgraded to MH-E version 7.4.4.
Bill Wohler <wohler@newt.com>
parents: 52401
diff changeset
388 "-recurse" "-fast"))))
d36b00b98db0 Upgraded to MH-E version 7.4.4.
Bill Wohler <wohler@newt.com>
parents: 52401
diff changeset
389
d36b00b98db0 Upgraded to MH-E version 7.4.4.
Bill Wohler <wohler@newt.com>
parents: 52401
diff changeset
390 (defun mh-collect-folder-names-filter (process output)
d36b00b98db0 Upgraded to MH-E version 7.4.4.
Bill Wohler <wohler@newt.com>
parents: 52401
diff changeset
391 "Read folder names.
67758
6b063593fdad Follow Emacs coding conventions. Use default setting of
Bill Wohler <wohler@newt.com>
parents: 67756
diff changeset
392 PROCESS is the flists process that was run to collect folder
6b063593fdad Follow Emacs coding conventions. Use default setting of
Bill Wohler <wohler@newt.com>
parents: 67756
diff changeset
393 names and the function is called when OUTPUT is available."
56406
d36b00b98db0 Upgraded to MH-E version 7.4.4.
Bill Wohler <wohler@newt.com>
parents: 52401
diff changeset
394 (let ((position 0)
68465
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
395 (prevailing-match-data (match-data))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
396 line-end folder)
56406
d36b00b98db0 Upgraded to MH-E version 7.4.4.
Bill Wohler <wohler@newt.com>
parents: 52401
diff changeset
397 (unwind-protect
68465
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
398 (while (setq line-end (string-match "\n" output position))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
399 (setq folder (format "+%s%s"
56406
d36b00b98db0 Upgraded to MH-E version 7.4.4.
Bill Wohler <wohler@newt.com>
parents: 52401
diff changeset
400 mh-flists-partial-line
d36b00b98db0 Upgraded to MH-E version 7.4.4.
Bill Wohler <wohler@newt.com>
parents: 52401
diff changeset
401 (substring output position line-end)))
68465
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
402 (setq mh-flists-partial-line "")
56406
d36b00b98db0 Upgraded to MH-E version 7.4.4.
Bill Wohler <wohler@newt.com>
parents: 52401
diff changeset
403 (unless (equal (aref folder 1) ?.)
d36b00b98db0 Upgraded to MH-E version 7.4.4.
Bill Wohler <wohler@newt.com>
parents: 52401
diff changeset
404 (mh-populate-sub-folders-cache folder))
68465
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
405 (setq position (1+ line-end)))
56406
d36b00b98db0 Upgraded to MH-E version 7.4.4.
Bill Wohler <wohler@newt.com>
parents: 52401
diff changeset
406 (set-match-data prevailing-match-data))
d36b00b98db0 Upgraded to MH-E version 7.4.4.
Bill Wohler <wohler@newt.com>
parents: 52401
diff changeset
407 (setq mh-flists-partial-line (substring output position))))
d36b00b98db0 Upgraded to MH-E version 7.4.4.
Bill Wohler <wohler@newt.com>
parents: 52401
diff changeset
408
d36b00b98db0 Upgraded to MH-E version 7.4.4.
Bill Wohler <wohler@newt.com>
parents: 52401
diff changeset
409 (defun mh-populate-sub-folders-cache (folder)
d36b00b98db0 Upgraded to MH-E version 7.4.4.
Bill Wohler <wohler@newt.com>
parents: 52401
diff changeset
410 "Tell `mh-sub-folders-cache' about FOLDER."
d36b00b98db0 Upgraded to MH-E version 7.4.4.
Bill Wohler <wohler@newt.com>
parents: 52401
diff changeset
411 (let* ((last-slash (mh-search-from-end ?/ folder))
d36b00b98db0 Upgraded to MH-E version 7.4.4.
Bill Wohler <wohler@newt.com>
parents: 52401
diff changeset
412 (child1 (substring folder (1+ (or last-slash 0))))
d36b00b98db0 Upgraded to MH-E version 7.4.4.
Bill Wohler <wohler@newt.com>
parents: 52401
diff changeset
413 (parent (and last-slash (substring folder 0 last-slash)))
d36b00b98db0 Upgraded to MH-E version 7.4.4.
Bill Wohler <wohler@newt.com>
parents: 52401
diff changeset
414 (parent-slash (and parent (mh-search-from-end ?/ parent)))
d36b00b98db0 Upgraded to MH-E version 7.4.4.
Bill Wohler <wohler@newt.com>
parents: 52401
diff changeset
415 (child2 (and parent (substring parent (1+ (or parent-slash 0)))))
d36b00b98db0 Upgraded to MH-E version 7.4.4.
Bill Wohler <wohler@newt.com>
parents: 52401
diff changeset
416 (grand-parent (and parent-slash (substring parent 0 parent-slash)))
d36b00b98db0 Upgraded to MH-E version 7.4.4.
Bill Wohler <wohler@newt.com>
parents: 52401
diff changeset
417 (cache-entry (gethash parent mh-sub-folders-cache)))
d36b00b98db0 Upgraded to MH-E version 7.4.4.
Bill Wohler <wohler@newt.com>
parents: 52401
diff changeset
418 (unless (loop for x in cache-entry when (equal (car x) child1) return t
d36b00b98db0 Upgraded to MH-E version 7.4.4.
Bill Wohler <wohler@newt.com>
parents: 52401
diff changeset
419 finally return nil)
d36b00b98db0 Upgraded to MH-E version 7.4.4.
Bill Wohler <wohler@newt.com>
parents: 52401
diff changeset
420 (push (list child1) cache-entry)
d36b00b98db0 Upgraded to MH-E version 7.4.4.
Bill Wohler <wohler@newt.com>
parents: 52401
diff changeset
421 (setf (gethash parent mh-sub-folders-cache)
d36b00b98db0 Upgraded to MH-E version 7.4.4.
Bill Wohler <wohler@newt.com>
parents: 52401
diff changeset
422 (sort cache-entry (lambda (x y) (string< (car x) (car y)))))
d36b00b98db0 Upgraded to MH-E version 7.4.4.
Bill Wohler <wohler@newt.com>
parents: 52401
diff changeset
423 (when parent
d36b00b98db0 Upgraded to MH-E version 7.4.4.
Bill Wohler <wohler@newt.com>
parents: 52401
diff changeset
424 (loop for x in (gethash grand-parent mh-sub-folders-cache)
d36b00b98db0 Upgraded to MH-E version 7.4.4.
Bill Wohler <wohler@newt.com>
parents: 52401
diff changeset
425 when (equal (car x) child2)
d36b00b98db0 Upgraded to MH-E version 7.4.4.
Bill Wohler <wohler@newt.com>
parents: 52401
diff changeset
426 do (progn (setf (cdr x) t) (return)))))))
49578
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
427
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
428 (defun mh-normalize-folder-name (folder &optional empty-string-okay
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
429 dont-remove-trailing-slash)
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
430 "Normalizes FOLDER name.
67758
6b063593fdad Follow Emacs coding conventions. Use default setting of
Bill Wohler <wohler@newt.com>
parents: 67756
diff changeset
431
6b063593fdad Follow Emacs coding conventions. Use default setting of
Bill Wohler <wohler@newt.com>
parents: 67756
diff changeset
432 Makes sure that two '/' characters never occur next to each
6b063593fdad Follow Emacs coding conventions. Use default setting of
Bill Wohler <wohler@newt.com>
parents: 67756
diff changeset
433 other. Also all occurrences of \"..\" and \".\" are suitably
6b063593fdad Follow Emacs coding conventions. Use default setting of
Bill Wohler <wohler@newt.com>
parents: 67756
diff changeset
434 processed. So \"+inbox/../news\" will be normalized to \"+news\".
49578
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
435
67758
6b063593fdad Follow Emacs coding conventions. Use default setting of
Bill Wohler <wohler@newt.com>
parents: 67756
diff changeset
436 If optional argument EMPTY-STRING-OKAY is nil then a '+' is added
6b063593fdad Follow Emacs coding conventions. Use default setting of
Bill Wohler <wohler@newt.com>
parents: 67756
diff changeset
437 at the front if FOLDER lacks one. If non-nil and FOLDER is the
6b063593fdad Follow Emacs coding conventions. Use default setting of
Bill Wohler <wohler@newt.com>
parents: 67756
diff changeset
438 empty string then nothing is added.
49578
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
439
67758
6b063593fdad Follow Emacs coding conventions. Use default setting of
Bill Wohler <wohler@newt.com>
parents: 67756
diff changeset
440 If optional argument DONT-REMOVE-TRAILING-SLASH is non-nil then a
6b063593fdad Follow Emacs coding conventions. Use default setting of
Bill Wohler <wohler@newt.com>
parents: 67756
diff changeset
441 trailing '/' if present is retained (if present), otherwise it is
6b063593fdad Follow Emacs coding conventions. Use default setting of
Bill Wohler <wohler@newt.com>
parents: 67756
diff changeset
442 removed."
49578
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
443 (when (stringp folder)
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
444 ;; Replace two or more consecutive '/' characters with a single '/'
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
445 (while (string-match "//" folder)
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
446 (setq folder (replace-match "/" nil t folder)))
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
447 (let* ((length (length folder))
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
448 (trailing-slash-present (and (> length 0)
50702
7dd3d5eae9c7 Upgraded to MH-E version 7.3.
Bill Wohler <wohler@newt.com>
parents: 49598
diff changeset
449 (equal (aref folder (1- length)) ?/)))
7dd3d5eae9c7 Upgraded to MH-E version 7.3.
Bill Wohler <wohler@newt.com>
parents: 49598
diff changeset
450 (leading-slash-present (and (> length 0)
7dd3d5eae9c7 Upgraded to MH-E version 7.3.
Bill Wohler <wohler@newt.com>
parents: 49598
diff changeset
451 (equal (aref folder 0) ?/))))
7dd3d5eae9c7 Upgraded to MH-E version 7.3.
Bill Wohler <wohler@newt.com>
parents: 49598
diff changeset
452 (when (and (> length 0) (equal (aref folder 0) ?@)
7dd3d5eae9c7 Upgraded to MH-E version 7.3.
Bill Wohler <wohler@newt.com>
parents: 49598
diff changeset
453 (stringp mh-current-folder-name))
7dd3d5eae9c7 Upgraded to MH-E version 7.3.
Bill Wohler <wohler@newt.com>
parents: 49598
diff changeset
454 (setq folder (format "%s/%s/" mh-current-folder-name
7dd3d5eae9c7 Upgraded to MH-E version 7.3.
Bill Wohler <wohler@newt.com>
parents: 49598
diff changeset
455 (substring folder 1))))
7dd3d5eae9c7 Upgraded to MH-E version 7.3.
Bill Wohler <wohler@newt.com>
parents: 49598
diff changeset
456 ;; XXX: Purge empty strings from the list that split-string returns. In
7dd3d5eae9c7 Upgraded to MH-E version 7.3.
Bill Wohler <wohler@newt.com>
parents: 49598
diff changeset
457 ;; XEmacs, (split-string "+foo/" "/") returns ("+foo" "") while in GNU
7dd3d5eae9c7 Upgraded to MH-E version 7.3.
Bill Wohler <wohler@newt.com>
parents: 49598
diff changeset
458 ;; Emacs it returns ("+foo"). In the code it is assumed that the
7dd3d5eae9c7 Upgraded to MH-E version 7.3.
Bill Wohler <wohler@newt.com>
parents: 49598
diff changeset
459 ;; components list has no empty strings.
7dd3d5eae9c7 Upgraded to MH-E version 7.3.
Bill Wohler <wohler@newt.com>
parents: 49598
diff changeset
460 (let ((components (delete "" (split-string folder "/")))
49578
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
461 (result ()))
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
462 ;; Remove .. and . from the pathname.
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
463 (dolist (component components)
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
464 (cond ((and (equal component "..") result)
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
465 (pop result))
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
466 ((equal component ".."))
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
467 ((equal component "."))
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
468 (t (push component result))))
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
469 (setq folder "")
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
470 (dolist (component result)
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
471 (setq folder (concat component "/" folder)))
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
472 ;; Remove trailing '/' if needed.
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
473 (unless (and trailing-slash-present dont-remove-trailing-slash)
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
474 (when (not (equal folder ""))
50702
7dd3d5eae9c7 Upgraded to MH-E version 7.3.
Bill Wohler <wohler@newt.com>
parents: 49598
diff changeset
475 (setq folder (substring folder 0 (1- (length folder))))))
7dd3d5eae9c7 Upgraded to MH-E version 7.3.
Bill Wohler <wohler@newt.com>
parents: 49598
diff changeset
476 (when leading-slash-present
7dd3d5eae9c7 Upgraded to MH-E version 7.3.
Bill Wohler <wohler@newt.com>
parents: 49598
diff changeset
477 (setq folder (concat "/" folder)))))
49578
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
478 (cond ((and empty-string-okay (equal folder "")))
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
479 ((equal folder "") (setq folder "+"))
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
480 ((not (equal (aref folder 0) ?+)) (setq folder (concat "+" folder)))))
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
481 folder)
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
482
68188
dcf226991252 * mh-search.el (mh-index-next-result-function): Add format to
Bill Wohler <wohler@newt.com>
parents: 68163
diff changeset
483 (defmacro mh-children-p (folder)
dcf226991252 * mh-search.el (mh-index-next-result-function): Add format to
Bill Wohler <wohler@newt.com>
parents: 68163
diff changeset
484 "Return t if FOLDER from sub-folders cache has children.
dcf226991252 * mh-search.el (mh-index-next-result-function): Add format to
Bill Wohler <wohler@newt.com>
parents: 68163
diff changeset
485 The car of folder is the name, and the cdr is either t or some
dcf226991252 * mh-search.el (mh-index-next-result-function): Add format to
Bill Wohler <wohler@newt.com>
parents: 68163
diff changeset
486 sort of count that I do not understand. It's too small to be the
dcf226991252 * mh-search.el (mh-index-next-result-function): Add format to
Bill Wohler <wohler@newt.com>
parents: 68163
diff changeset
487 number of messages in the sub-folders and too large to be the
dcf226991252 * mh-search.el (mh-index-next-result-function): Add format to
Bill Wohler <wohler@newt.com>
parents: 68163
diff changeset
488 number of sub-folders. XXX"
dcf226991252 * mh-search.el (mh-index-next-result-function): Add format to
Bill Wohler <wohler@newt.com>
parents: 68163
diff changeset
489 `(if (cdr ,folder)
dcf226991252 * mh-search.el (mh-index-next-result-function): Add format to
Bill Wohler <wohler@newt.com>
parents: 68163
diff changeset
490 t
dcf226991252 * mh-search.el (mh-index-next-result-function): Add format to
Bill Wohler <wohler@newt.com>
parents: 68163
diff changeset
491 nil))
dcf226991252 * mh-search.el (mh-index-next-result-function): Add format to
Bill Wohler <wohler@newt.com>
parents: 68163
diff changeset
492
68465
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
493 ;;;###mh-autoload
68188
dcf226991252 * mh-search.el (mh-index-next-result-function): Add format to
Bill Wohler <wohler@newt.com>
parents: 68163
diff changeset
494 (defun mh-folder-list (folder)
dcf226991252 * mh-search.el (mh-index-next-result-function): Add format to
Bill Wohler <wohler@newt.com>
parents: 68163
diff changeset
495 "Return FOLDER and its descendents.
dcf226991252 * mh-search.el (mh-index-next-result-function): Add format to
Bill Wohler <wohler@newt.com>
parents: 68163
diff changeset
496 Returns a list of strings. For example,
dcf226991252 * mh-search.el (mh-index-next-result-function): Add format to
Bill Wohler <wohler@newt.com>
parents: 68163
diff changeset
497
dcf226991252 * mh-search.el (mh-index-next-result-function): Add format to
Bill Wohler <wohler@newt.com>
parents: 68163
diff changeset
498 '(\"inbox\" \"lists\" \"lists/mh-e\").
dcf226991252 * mh-search.el (mh-index-next-result-function): Add format to
Bill Wohler <wohler@newt.com>
parents: 68163
diff changeset
499
dcf226991252 * mh-search.el (mh-index-next-result-function): Add format to
Bill Wohler <wohler@newt.com>
parents: 68163
diff changeset
500 If folder is nil, then all folders are considered. Respects the
dcf226991252 * mh-search.el (mh-index-next-result-function): Add format to
Bill Wohler <wohler@newt.com>
parents: 68163
diff changeset
501 value of `mh-recursive-folders-flag'. If this flag is nil, and
dcf226991252 * mh-search.el (mh-index-next-result-function): Add format to
Bill Wohler <wohler@newt.com>
parents: 68163
diff changeset
502 the sub-folders have not been explicitly viewed, then they will
dcf226991252 * mh-search.el (mh-index-next-result-function): Add format to
Bill Wohler <wohler@newt.com>
parents: 68163
diff changeset
503 not be returned."
dcf226991252 * mh-search.el (mh-index-next-result-function): Add format to
Bill Wohler <wohler@newt.com>
parents: 68163
diff changeset
504 (let ((folder-list))
dcf226991252 * mh-search.el (mh-index-next-result-function): Add format to
Bill Wohler <wohler@newt.com>
parents: 68163
diff changeset
505 ;; Normalize folder. Strip leading +. Add trailing slash. If no
dcf226991252 * mh-search.el (mh-index-next-result-function): Add format to
Bill Wohler <wohler@newt.com>
parents: 68163
diff changeset
506 ;; folder is specified, ensure it is nil to ensure we get the
dcf226991252 * mh-search.el (mh-index-next-result-function): Add format to
Bill Wohler <wohler@newt.com>
parents: 68163
diff changeset
507 ;; top-level folders; otherwise mh-sub-folders returns all the
dcf226991252 * mh-search.el (mh-index-next-result-function): Add format to
Bill Wohler <wohler@newt.com>
parents: 68163
diff changeset
508 ;; files in / if given an empty string or +.
dcf226991252 * mh-search.el (mh-index-next-result-function): Add format to
Bill Wohler <wohler@newt.com>
parents: 68163
diff changeset
509 (when folder
dcf226991252 * mh-search.el (mh-index-next-result-function): Add format to
Bill Wohler <wohler@newt.com>
parents: 68163
diff changeset
510 (setq folder (replace-regexp-in-string "^\+" "" folder))
dcf226991252 * mh-search.el (mh-index-next-result-function): Add format to
Bill Wohler <wohler@newt.com>
parents: 68163
diff changeset
511 (setq folder (replace-regexp-in-string "/*$" "/" folder))
dcf226991252 * mh-search.el (mh-index-next-result-function): Add format to
Bill Wohler <wohler@newt.com>
parents: 68163
diff changeset
512 (if (equal folder "")
dcf226991252 * mh-search.el (mh-index-next-result-function): Add format to
Bill Wohler <wohler@newt.com>
parents: 68163
diff changeset
513 (setq folder nil)))
dcf226991252 * mh-search.el (mh-index-next-result-function): Add format to
Bill Wohler <wohler@newt.com>
parents: 68163
diff changeset
514 (loop for f in (mh-sub-folders folder) do
dcf226991252 * mh-search.el (mh-index-next-result-function): Add format to
Bill Wohler <wohler@newt.com>
parents: 68163
diff changeset
515 (setq folder-list (append folder-list (list (concat folder (car f)))))
dcf226991252 * mh-search.el (mh-index-next-result-function): Add format to
Bill Wohler <wohler@newt.com>
parents: 68163
diff changeset
516 (if (mh-children-p f)
dcf226991252 * mh-search.el (mh-index-next-result-function): Add format to
Bill Wohler <wohler@newt.com>
parents: 68163
diff changeset
517 (setq folder-list
dcf226991252 * mh-search.el (mh-index-next-result-function): Add format to
Bill Wohler <wohler@newt.com>
parents: 68163
diff changeset
518 (append folder-list
dcf226991252 * mh-search.el (mh-index-next-result-function): Add format to
Bill Wohler <wohler@newt.com>
parents: 68163
diff changeset
519 (mh-folder-list (concat folder (car f)))))))
dcf226991252 * mh-search.el (mh-index-next-result-function): Add format to
Bill Wohler <wohler@newt.com>
parents: 68163
diff changeset
520 folder-list))
dcf226991252 * mh-search.el (mh-index-next-result-function): Add format to
Bill Wohler <wohler@newt.com>
parents: 68163
diff changeset
521
68465
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
522 ;;;###mh-autoload
49578
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
523 (defun mh-sub-folders (folder &optional add-trailing-slash-flag)
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
524 "Find the subfolders of FOLDER.
67758
6b063593fdad Follow Emacs coding conventions. Use default setting of
Bill Wohler <wohler@newt.com>
parents: 67756
diff changeset
525 The function avoids running folders unnecessarily by caching the
6b063593fdad Follow Emacs coding conventions. Use default setting of
Bill Wohler <wohler@newt.com>
parents: 67756
diff changeset
526 results of the actual folders call.
49578
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
527
67758
6b063593fdad Follow Emacs coding conventions. Use default setting of
Bill Wohler <wohler@newt.com>
parents: 67756
diff changeset
528 If optional argument ADD-TRAILING-SLASH-FLAG is non-nil then a
6b063593fdad Follow Emacs coding conventions. Use default setting of
Bill Wohler <wohler@newt.com>
parents: 67756
diff changeset
529 slash is added to each of the sub-folder names that may have
6b063593fdad Follow Emacs coding conventions. Use default setting of
Bill Wohler <wohler@newt.com>
parents: 67756
diff changeset
530 nested folders within them."
49578
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
531 (let* ((folder (mh-normalize-folder-name folder))
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
532 (match (gethash folder mh-sub-folders-cache 'no-result))
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
533 (sub-folders (cond ((eq match 'no-result)
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
534 (setf (gethash folder mh-sub-folders-cache)
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
535 (mh-sub-folders-actual folder)))
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
536 (t match))))
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
537 (if add-trailing-slash-flag
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
538 (mapcar #'(lambda (x)
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
539 (if (cdr x) (cons (concat (car x) "/") (cdr x)) x))
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
540 sub-folders)
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
541 sub-folders)))
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
542
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
543 (defun mh-sub-folders-actual (folder)
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
544 "Execute the command folders to return the sub-folders of FOLDER.
67758
6b063593fdad Follow Emacs coding conventions. Use default setting of
Bill Wohler <wohler@newt.com>
parents: 67756
diff changeset
545 Filters out the folder names that start with \".\" so that
6b063593fdad Follow Emacs coding conventions. Use default setting of
Bill Wohler <wohler@newt.com>
parents: 67756
diff changeset
546 directories that aren't usually mail folders are hidden."
49578
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
547 (let ((arg-list `(,(expand-file-name "folders" mh-progs)
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
548 nil (t nil) nil "-noheader" "-norecurse" "-nototal"
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
549 ,@(if (stringp folder) (list folder) ())))
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
550 (results ())
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
551 (current-folder (concat
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
552 (with-temp-buffer
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
553 (call-process (expand-file-name "folder" mh-progs)
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
554 nil '(t nil) nil "-fast")
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
555 (buffer-substring (point-min) (1- (point-max))))
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
556 "+")))
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
557 (with-temp-buffer
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
558 (apply #'call-process arg-list)
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
559 (goto-char (point-min))
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
560 (while (not (and (eolp) (bolp)))
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
561 (goto-char (line-end-position))
56673
e9a6cbc8ca5e Upgraded to MH-E version 7.4.80.
Bill Wohler <wohler@newt.com>
parents: 56406
diff changeset
562 (let ((start-pos (line-beginning-position))
e9a6cbc8ca5e Upgraded to MH-E version 7.4.80.
Bill Wohler <wohler@newt.com>
parents: 56406
diff changeset
563 (has-pos (search-backward " has " (line-beginning-position) t)))
49578
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
564 (when (integerp has-pos)
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
565 (while (equal (char-after has-pos) ? )
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
566 (decf has-pos))
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
567 (incf has-pos)
56673
e9a6cbc8ca5e Upgraded to MH-E version 7.4.80.
Bill Wohler <wohler@newt.com>
parents: 56406
diff changeset
568 (while (equal (char-after start-pos) ? )
e9a6cbc8ca5e Upgraded to MH-E version 7.4.80.
Bill Wohler <wohler@newt.com>
parents: 56406
diff changeset
569 (incf start-pos))
e9a6cbc8ca5e Upgraded to MH-E version 7.4.80.
Bill Wohler <wohler@newt.com>
parents: 56406
diff changeset
570 (let* ((name (buffer-substring start-pos has-pos))
49578
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
571 (first-char (aref name 0))
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
572 (last-char (aref name (1- (length name)))))
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
573 (unless (member first-char '(?. ?# ?,))
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
574 (when (and (equal last-char ?+) (equal name current-folder))
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
575 (setq name (substring name 0 (1- (length name)))))
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
576 (push
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
577 (cons name
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
578 (search-forward "(others)" (line-end-position) t))
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
579 results))))
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
580 (forward-line 1))))
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
581 (setq results (nreverse results))
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
582 (when (stringp folder)
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
583 (setq results (cdr results))
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
584 (let ((folder-name-len (length (format "%s/" (substring folder 1)))))
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
585 (setq results (mapcar (lambda (f)
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
586 (cons (substring (car f) folder-name-len)
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
587 (cdr f)))
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
588 results))))
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
589 results))
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
590
68465
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
591 ;;;###mh-autoload
49578
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
592 (defun mh-remove-from-sub-folders-cache (folder)
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
593 "Remove FOLDER and its parent from `mh-sub-folders-cache'.
67758
6b063593fdad Follow Emacs coding conventions. Use default setting of
Bill Wohler <wohler@newt.com>
parents: 67756
diff changeset
594 FOLDER should be unconditionally removed from the cache. Also the
6b063593fdad Follow Emacs coding conventions. Use default setting of
Bill Wohler <wohler@newt.com>
parents: 67756
diff changeset
595 last ancestor of FOLDER present in the cache must be removed as
6b063593fdad Follow Emacs coding conventions. Use default setting of
Bill Wohler <wohler@newt.com>
parents: 67756
diff changeset
596 well.
49578
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
597
67758
6b063593fdad Follow Emacs coding conventions. Use default setting of
Bill Wohler <wohler@newt.com>
parents: 67756
diff changeset
598 To see why this is needed assume we have a folder +foo which has
6b063593fdad Follow Emacs coding conventions. Use default setting of
Bill Wohler <wohler@newt.com>
parents: 67756
diff changeset
599 a single sub-folder qux. Now we create the folder +foo/bar/baz.
6b063593fdad Follow Emacs coding conventions. Use default setting of
Bill Wohler <wohler@newt.com>
parents: 67756
diff changeset
600 Here we will need to invalidate the cached sub-folders of +foo,
6b063593fdad Follow Emacs coding conventions. Use default setting of
Bill Wohler <wohler@newt.com>
parents: 67756
diff changeset
601 otherwise completion on +foo won't tell us about the option
6b063593fdad Follow Emacs coding conventions. Use default setting of
Bill Wohler <wohler@newt.com>
parents: 67756
diff changeset
602 +foo/bar!"
49578
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
603 (remhash folder mh-sub-folders-cache)
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
604 (block ancestor-found
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
605 (let ((parent folder)
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
606 (one-ancestor-found nil)
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
607 last-slash)
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
608 (while (setq last-slash (mh-search-from-end ?/ parent))
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
609 (setq parent (substring parent 0 last-slash))
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
610 (unless (eq (gethash parent mh-sub-folders-cache 'none) 'none)
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
611 (remhash parent mh-sub-folders-cache)
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
612 (if one-ancestor-found
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
613 (return-from ancestor-found)
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
614 (setq one-ancestor-found t))))
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
615 (remhash nil mh-sub-folders-cache))))
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
616
68465
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
617
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
618
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
619 ;;; Folder Utilities
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
620
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
621 ;;;###mh-autoload
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
622 (defun mh-folder-name-p (name)
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
623 "Return non-nil if NAME is the name of a folder.
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
624 A name (a string or symbol) can be a folder name if it begins
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
625 with \"+\"."
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
626 (if (symbolp name)
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
627 (eq (aref (symbol-name name) 0) ?+)
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
628 (and (> (length name) 0)
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
629 (eq (aref name 0) ?+))))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
630
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
631 ;;;###mh-autoload
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
632 (defun mh-expand-file-name (filename &optional default)
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
633 "Expand FILENAME like `expand-file-name', but also handle MH folder names.
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
634 Any filename that starts with '+' is treated as a folder name.
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
635 See `expand-file-name' for description of DEFAULT."
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
636 (if (mh-folder-name-p filename)
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
637 (expand-file-name (substring filename 1) mh-user-path)
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
638 (expand-file-name filename default)))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
639
49459
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
640 (defvar mh-folder-hist nil)
68096
57c4e7929f99 * mh-alias.el (mh-alias-gecos-name): Use replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents: 68013
diff changeset
641
57c4e7929f99 * mh-alias.el (mh-alias-gecos-name): Use replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents: 68013
diff changeset
642 ;; Shush compiler.
68465
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
643 (eval-when-compile (defvar mh-speed-flists-cache))
50702
7dd3d5eae9c7 Upgraded to MH-E version 7.3.
Bill Wohler <wohler@newt.com>
parents: 49598
diff changeset
644
7dd3d5eae9c7 Upgraded to MH-E version 7.3.
Bill Wohler <wohler@newt.com>
parents: 49598
diff changeset
645 (defvar mh-allow-root-folder-flag nil
7dd3d5eae9c7 Upgraded to MH-E version 7.3.
Bill Wohler <wohler@newt.com>
parents: 49598
diff changeset
646 "Non-nil means \"+\" is an acceptable folder name.
67758
6b063593fdad Follow Emacs coding conventions. Use default setting of
Bill Wohler <wohler@newt.com>
parents: 67756
diff changeset
647 This variable is used to communicate with
6b063593fdad Follow Emacs coding conventions. Use default setting of
Bill Wohler <wohler@newt.com>
parents: 67756
diff changeset
648 `mh-folder-completion-function'. That function can have exactly
6b063593fdad Follow Emacs coding conventions. Use default setting of
Bill Wohler <wohler@newt.com>
parents: 67756
diff changeset
649 three arguments so we bind this variable to t or nil.
50702
7dd3d5eae9c7 Upgraded to MH-E version 7.3.
Bill Wohler <wohler@newt.com>
parents: 49598
diff changeset
650
7dd3d5eae9c7 Upgraded to MH-E version 7.3.
Bill Wohler <wohler@newt.com>
parents: 49598
diff changeset
651 This variable should never be set.")
7dd3d5eae9c7 Upgraded to MH-E version 7.3.
Bill Wohler <wohler@newt.com>
parents: 49598
diff changeset
652
49578
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
653 (defvar mh-folder-completion-map (copy-keymap minibuffer-local-completion-map))
67852
5b7ceef33307 (mh-process-daemon): Don't change buffer in proc-filter.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67760
diff changeset
654 (define-key mh-folder-completion-map " " 'minibuffer-complete) ;Why???
49578
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
655
56406
d36b00b98db0 Upgraded to MH-E version 7.4.4.
Bill Wohler <wohler@newt.com>
parents: 52401
diff changeset
656 (defvar mh-speed-flists-inhibit-flag nil)
d36b00b98db0 Upgraded to MH-E version 7.4.4.
Bill Wohler <wohler@newt.com>
parents: 52401
diff changeset
657
68465
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
658 ;;;###mh-autoload
50702
7dd3d5eae9c7 Upgraded to MH-E version 7.3.
Bill Wohler <wohler@newt.com>
parents: 49598
diff changeset
659 (defun mh-speed-flists-active-p ()
7dd3d5eae9c7 Upgraded to MH-E version 7.3.
Bill Wohler <wohler@newt.com>
parents: 49598
diff changeset
660 "Check if speedbar is running with message counts enabled."
7dd3d5eae9c7 Upgraded to MH-E version 7.3.
Bill Wohler <wohler@newt.com>
parents: 49598
diff changeset
661 (and (featurep 'mh-speed)
56406
d36b00b98db0 Upgraded to MH-E version 7.4.4.
Bill Wohler <wohler@newt.com>
parents: 52401
diff changeset
662 (not mh-speed-flists-inhibit-flag)
50702
7dd3d5eae9c7 Upgraded to MH-E version 7.3.
Bill Wohler <wohler@newt.com>
parents: 49598
diff changeset
663 (> (hash-table-count mh-speed-flists-cache) 0)))
7dd3d5eae9c7 Upgraded to MH-E version 7.3.
Bill Wohler <wohler@newt.com>
parents: 49598
diff changeset
664
68465
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
665 ;;;###mh-autoload
49578
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
666 (defun mh-folder-completion-function (name predicate flag)
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
667 "Programmable completion for folder names.
67758
6b063593fdad Follow Emacs coding conventions. Use default setting of
Bill Wohler <wohler@newt.com>
parents: 67756
diff changeset
668 NAME is the partial folder name that has been input. PREDICATE if
6b063593fdad Follow Emacs coding conventions. Use default setting of
Bill Wohler <wohler@newt.com>
parents: 67756
diff changeset
669 non-nil is a function that is used to filter the possible choices
6b063593fdad Follow Emacs coding conventions. Use default setting of
Bill Wohler <wohler@newt.com>
parents: 67756
diff changeset
670 and FLAG determines whether the completion is over."
49578
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
671 (let* ((orig-name name)
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
672 (name (mh-normalize-folder-name name nil t))
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
673 (last-slash (mh-search-from-end ?/ name))
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
674 (last-complete (if last-slash (substring name 0 last-slash) nil))
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
675 (remainder (cond (last-complete (substring name (1+ last-slash)))
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
676 ((and (> (length name) 0) (equal (aref name 0) ?+))
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
677 (substring name 1))
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
678 (t ""))))
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
679 (cond ((eq flag nil)
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
680 (let ((try-res (try-completion
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
681 name
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
682 (mapcar (lambda (x)
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
683 (cons (if (not last-complete)
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
684 (concat "+" (car x))
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
685 (concat last-complete "/" (car x)))
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
686 (cdr x)))
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
687 (mh-sub-folders last-complete t))
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
688 predicate)))
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
689 (cond ((eq try-res nil) nil)
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
690 ((and (eq try-res t) (equal name orig-name)) t)
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
691 ((eq try-res t) name)
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
692 (t try-res))))
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
693 ((eq flag t)
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
694 (all-completions
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
695 remainder (mh-sub-folders last-complete t) predicate))
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
696 ((eq flag 'lambda)
50702
7dd3d5eae9c7 Upgraded to MH-E version 7.3.
Bill Wohler <wohler@newt.com>
parents: 49598
diff changeset
697 (let ((path (concat mh-user-path
7dd3d5eae9c7 Upgraded to MH-E version 7.3.
Bill Wohler <wohler@newt.com>
parents: 49598
diff changeset
698 (substring (mh-normalize-folder-name name) 1))))
7dd3d5eae9c7 Upgraded to MH-E version 7.3.
Bill Wohler <wohler@newt.com>
parents: 49598
diff changeset
699 (cond (mh-allow-root-folder-flag (file-exists-p path))
7dd3d5eae9c7 Upgraded to MH-E version 7.3.
Bill Wohler <wohler@newt.com>
parents: 49598
diff changeset
700 ((equal path mh-user-path) nil)
7dd3d5eae9c7 Upgraded to MH-E version 7.3.
Bill Wohler <wohler@newt.com>
parents: 49598
diff changeset
701 (t (file-exists-p path))))))))
49578
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
702
68465
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
703 ;; Shush compiler.
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
704 (eval-when-compile
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
705 (mh-do-in-xemacs
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
706 (defvar completion-root-regexp)
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
707 (defvar minibuffer-completing-file-name)))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
708
50702
7dd3d5eae9c7 Upgraded to MH-E version 7.3.
Bill Wohler <wohler@newt.com>
parents: 49598
diff changeset
709 (defun mh-folder-completing-read (prompt default allow-root-folder-flag)
7dd3d5eae9c7 Upgraded to MH-E version 7.3.
Bill Wohler <wohler@newt.com>
parents: 49598
diff changeset
710 "Read folder name with PROMPT and default result DEFAULT.
67758
6b063593fdad Follow Emacs coding conventions. Use default setting of
Bill Wohler <wohler@newt.com>
parents: 67756
diff changeset
711 If ALLOW-ROOT-FOLDER-FLAG is non-nil then \"+\" is allowed to be
6b063593fdad Follow Emacs coding conventions. Use default setting of
Bill Wohler <wohler@newt.com>
parents: 67756
diff changeset
712 a folder name corresponding to `mh-user-path'."
49578
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
713 (mh-normalize-folder-name
56673
e9a6cbc8ca5e Upgraded to MH-E version 7.4.80.
Bill Wohler <wohler@newt.com>
parents: 56406
diff changeset
714 (let ((minibuffer-completing-file-name t)
e9a6cbc8ca5e Upgraded to MH-E version 7.4.80.
Bill Wohler <wohler@newt.com>
parents: 56406
diff changeset
715 (completion-root-regexp "^[+/]")
e9a6cbc8ca5e Upgraded to MH-E version 7.4.80.
Bill Wohler <wohler@newt.com>
parents: 56406
diff changeset
716 (minibuffer-local-completion-map mh-folder-completion-map)
50702
7dd3d5eae9c7 Upgraded to MH-E version 7.3.
Bill Wohler <wohler@newt.com>
parents: 49598
diff changeset
717 (mh-allow-root-folder-flag allow-root-folder-flag))
49578
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
718 (completing-read prompt 'mh-folder-completion-function nil nil nil
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
719 'mh-folder-hist default))
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
720 t))
49459
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
721
68465
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
722 ;;;###mh-autoload
49459
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
723 (defun mh-prompt-for-folder (prompt default can-create
49578
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
724 &optional default-string allow-root-folder-flag)
49459
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
725 "Prompt for a folder name with PROMPT.
67758
6b063593fdad Follow Emacs coding conventions. Use default setting of
Bill Wohler <wohler@newt.com>
parents: 67756
diff changeset
726 Returns the folder's name as a string. DEFAULT is used if the
6b063593fdad Follow Emacs coding conventions. Use default setting of
Bill Wohler <wohler@newt.com>
parents: 67756
diff changeset
727 folder exists and the user types return. If the CAN-CREATE flag
6b063593fdad Follow Emacs coding conventions. Use default setting of
Bill Wohler <wohler@newt.com>
parents: 67756
diff changeset
728 is t, then a folder is created if it doesn't already exist. If
6b063593fdad Follow Emacs coding conventions. Use default setting of
Bill Wohler <wohler@newt.com>
parents: 67756
diff changeset
729 optional argument DEFAULT-STRING is non-nil, use it in the prompt
6b063593fdad Follow Emacs coding conventions. Use default setting of
Bill Wohler <wohler@newt.com>
parents: 67756
diff changeset
730 instead of DEFAULT. If ALLOW-ROOT-FOLDER-FLAG is non-nil then the
6b063593fdad Follow Emacs coding conventions. Use default setting of
Bill Wohler <wohler@newt.com>
parents: 67756
diff changeset
731 function will accept the folder +, which means all folders when
6b063593fdad Follow Emacs coding conventions. Use default setting of
Bill Wohler <wohler@newt.com>
parents: 67756
diff changeset
732 used in searching."
49459
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
733 (if (null default)
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
734 (setq default ""))
65681
4312387e37c8 2005-09-24 Emilio C. Lopes <eclig@gmx.net>
Romain Francoise <romain@orebokech.com>
parents: 64085
diff changeset
735 (let* ((default-string (cond (default-string (format " (default %s)" default-string))
56673
e9a6cbc8ca5e Upgraded to MH-E version 7.4.80.
Bill Wohler <wohler@newt.com>
parents: 56406
diff changeset
736 ((equal "" default) "")
65681
4312387e37c8 2005-09-24 Emilio C. Lopes <eclig@gmx.net>
Romain Francoise <romain@orebokech.com>
parents: 64085
diff changeset
737 (t (format " (default %s)" default))))
4312387e37c8 2005-09-24 Emilio C. Lopes <eclig@gmx.net>
Romain Francoise <romain@orebokech.com>
parents: 64085
diff changeset
738 (prompt (format "%s folder%s: " prompt default-string))
50702
7dd3d5eae9c7 Upgraded to MH-E version 7.3.
Bill Wohler <wohler@newt.com>
parents: 49598
diff changeset
739 (mh-current-folder-name mh-current-folder)
49459
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
740 read-name folder-name)
50702
7dd3d5eae9c7 Upgraded to MH-E version 7.3.
Bill Wohler <wohler@newt.com>
parents: 49598
diff changeset
741 (while (and (setq read-name (mh-folder-completing-read
7dd3d5eae9c7 Upgraded to MH-E version 7.3.
Bill Wohler <wohler@newt.com>
parents: 49598
diff changeset
742 prompt default allow-root-folder-flag))
49459
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
743 (equal read-name "")
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
744 (equal default "")))
49578
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
745 (cond ((or (equal read-name "")
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
746 (and (equal read-name "+") (not allow-root-folder-flag)))
49459
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
747 (setq read-name default))
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
748 ((not (mh-folder-name-p read-name))
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
749 (setq read-name (format "+%s" read-name))))
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
750 (if (or (not read-name) (equal "" read-name))
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
751 (error "No folder specified"))
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
752 (setq folder-name read-name)
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
753 (cond ((and (> (length folder-name) 0)
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
754 (eq (aref folder-name (1- (length folder-name))) ?/))
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
755 (setq folder-name (substring folder-name 0 -1))))
50702
7dd3d5eae9c7 Upgraded to MH-E version 7.3.
Bill Wohler <wohler@newt.com>
parents: 49598
diff changeset
756 (let* ((last-slash (mh-search-from-end ?/ folder-name))
7dd3d5eae9c7 Upgraded to MH-E version 7.3.
Bill Wohler <wohler@newt.com>
parents: 49598
diff changeset
757 (parent (and last-slash (substring folder-name 0 last-slash)))
7dd3d5eae9c7 Upgraded to MH-E version 7.3.
Bill Wohler <wohler@newt.com>
parents: 49598
diff changeset
758 (child (if last-slash
7dd3d5eae9c7 Upgraded to MH-E version 7.3.
Bill Wohler <wohler@newt.com>
parents: 49598
diff changeset
759 (substring folder-name (1+ last-slash))
7dd3d5eae9c7 Upgraded to MH-E version 7.3.
Bill Wohler <wohler@newt.com>
parents: 49598
diff changeset
760 (substring folder-name 1))))
7dd3d5eae9c7 Upgraded to MH-E version 7.3.
Bill Wohler <wohler@newt.com>
parents: 49598
diff changeset
761 (unless (member child
7dd3d5eae9c7 Upgraded to MH-E version 7.3.
Bill Wohler <wohler@newt.com>
parents: 49598
diff changeset
762 (mapcar #'car (gethash parent mh-sub-folders-cache)))
7dd3d5eae9c7 Upgraded to MH-E version 7.3.
Bill Wohler <wohler@newt.com>
parents: 49598
diff changeset
763 (mh-remove-from-sub-folders-cache folder-name)))
49459
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
764 (let ((new-file-flag
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
765 (not (file-exists-p (mh-expand-file-name folder-name)))))
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
766 (cond ((and new-file-flag
67857
226904e7d40b (mh-prompt-for-folder): Use can-create argument to suppress creation
Bill Wohler <wohler@newt.com>
parents: 67852
diff changeset
767 can-create
49459
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
768 (y-or-n-p
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
769 (format "Folder %s does not exist. Create it? "
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
770 folder-name)))
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
771 (message "Creating %s" folder-name)
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
772 (mh-exec-cmd-error nil "folder" folder-name)
49578
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
773 (mh-remove-from-sub-folders-cache folder-name)
49459
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
774 (when (boundp 'mh-speed-folder-map)
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
775 (mh-speed-add-folder folder-name))
49578
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
776 (message "Creating %s...done" folder-name))
49459
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
777 (new-file-flag
67857
226904e7d40b (mh-prompt-for-folder): Use can-create argument to suppress creation
Bill Wohler <wohler@newt.com>
parents: 67852
diff changeset
778 (error "Folder %s does not exist" folder-name))
49459
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
779 ((not (file-directory-p (mh-expand-file-name folder-name)))
68013
bbc0e52abce5 * mh-alias.el (mh-alias-add-alias): Grand message and error string
Bill Wohler <wohler@newt.com>
parents: 67988
diff changeset
780 (error "%s is not a directory"
49578
b35587af8747 Upgraded to MH-E version 7.2.
Bill Wohler <wohler@newt.com>
parents: 49459
diff changeset
781 (mh-expand-file-name folder-name)))))
49459
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
782 folder-name))
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
783
67681
3a8785724cca * mh-acros.el:
Bill Wohler <wohler@newt.com>
parents: 67656
diff changeset
784
3a8785724cca * mh-acros.el:
Bill Wohler <wohler@newt.com>
parents: 67656
diff changeset
785
68465
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
786 ;;; Message Utilities
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
787
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
788 ;; Functions that would ordinarily be in mh-letter.el that are needed
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
789 ;; by mh-show.el are found here in order to prevent the loading of
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
790 ;; mh-letter.el until a message is actually composed.
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
791
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
792 ;;;###mh-autoload
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
793 (defun mh-in-header-p ()
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
794 "Return non-nil if the point is in the header of a draft message."
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
795 (< (point) (mh-mail-header-end)))
68163
3b7532a82079 * mh-search.el: New file containing contents of mh-index.el and
Bill Wohler <wohler@newt.com>
parents: 68137
diff changeset
796
68465
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
797 ;;;###mh-autoload
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
798 (defun mh-extract-from-header-value ()
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
799 "Extract From: string from header."
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
800 (save-excursion
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
801 (if (not (mh-goto-header-field "From:"))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
802 nil
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
803 (skip-chars-forward " \t")
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
804 (buffer-substring-no-properties
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
805 (point) (progn (mh-header-field-end)(point))))))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
806
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
807 ;;;###mh-autoload
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
808 (defun mh-goto-header-field (field)
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
809 "Move to FIELD in the message header.
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
810 Move to the end of the FIELD name, which should end in a colon.
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
811 Returns t if found, nil if not."
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
812 (goto-char (point-min))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
813 (let ((case-fold-search t)
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
814 (headers-end (save-excursion
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
815 (mh-goto-header-end 0)
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
816 (point))))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
817 (re-search-forward (format "^%s" field) headers-end t)))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
818
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
819 ;;;###mh-autoload
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
820 (defun mh-goto-header-end (arg)
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
821 "Move the cursor ARG lines after the header."
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
822 (if (re-search-forward "^-*$" nil nil)
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
823 (forward-line arg)))
49459
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
824
68465
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
825 ;;;###mh-autoload
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
826 (defun mh-mail-header-end ()
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
827 "Substitute for `mail-header-end' that doesn't widen the buffer.
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
828
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
829 In MH-E we frequently need to find the end of headers in nested
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
830 messages, where the buffer has been narrowed. This function works
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
831 in this situation."
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
832 (save-excursion
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
833 ;; XXX: The following replaces a call to rfc822-goto-eoh. Occasionally,
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
834 ;; mail headers that MH-E has to read contains lines of the form:
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
835 ;; From xxx@yyy Mon May 10 11:48:07 2004
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
836 ;; In this situation, rfc822-goto-eoh doesn't go to the end of the
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
837 ;; header. The replacement allows From_ lines in the mail header.
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
838 (goto-char (point-min))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
839 (loop for p = (re-search-forward
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
840 "^\\([:\n]\\|[^: \t\n]+[ \t\n]\\)" nil 'move)
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
841 do (cond ((null p) (return))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
842 (t (goto-char (match-beginning 0))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
843 (unless (looking-at "From ") (return))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
844 (goto-char p))))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
845 (point)))
49459
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
846
68465
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
847 ;;;###mh-autoload
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
848 (defun mh-header-field-beginning ()
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
849 "Move to the beginning of the current header field.
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
850 Handles RFC 822 continuation lines."
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
851 (beginning-of-line)
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
852 (while (looking-at "^[ \t]")
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
853 (forward-line -1)))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
854
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
855 ;;;###mh-autoload
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
856 (defun mh-header-field-end ()
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
857 "Move to the end of the current header field.
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
858 Handles RFC 822 continuation lines."
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
859 (forward-line 1)
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
860 (while (looking-at "^[ \t]")
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
861 (forward-line 1))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
862 (backward-char 1)) ;to end of previous line
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
863
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
864 ;;;###mh-autoload
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
865 (defun mh-signature-separator-p ()
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
866 "Return non-nil if buffer includes \"^-- $\"."
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
867 (save-excursion
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
868 (goto-char (point-min))
37d03b3298bf The Great Cleanup
Bill Wohler <wohler@newt.com>
parents: 68206
diff changeset
869 (re-search-forward mh-signature-separator-regexp nil t)))
56673
e9a6cbc8ca5e Upgraded to MH-E version 7.4.80.
Bill Wohler <wohler@newt.com>
parents: 56406
diff changeset
870
49459
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
871 (provide 'mh-utils)
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
872
67681
3a8785724cca * mh-acros.el:
Bill Wohler <wohler@newt.com>
parents: 67656
diff changeset
873 ;; Local Variables:
3a8785724cca * mh-acros.el:
Bill Wohler <wohler@newt.com>
parents: 67656
diff changeset
874 ;; indent-tabs-mode: nil
3a8785724cca * mh-acros.el:
Bill Wohler <wohler@newt.com>
parents: 67656
diff changeset
875 ;; sentence-end-double-space: nil
3a8785724cca * mh-acros.el:
Bill Wohler <wohler@newt.com>
parents: 67656
diff changeset
876 ;; End:
49459
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
877
67681
3a8785724cca * mh-acros.el:
Bill Wohler <wohler@newt.com>
parents: 67656
diff changeset
878 ;; arch-tag: 1af39fdf-f66f-4b06-9b48-18a7656c8e36
49459
06b77df47802 * mh-e: Created directory. ChangeLog will appear in a week when we
Bill Wohler <wohler@newt.com>
parents:
diff changeset
879 ;;; mh-utils.el ends here