From 4e8cb3117c9ef3b79f0bb08256b1a2e6ea78be1d Mon Sep 17 00:00:00 2001 From: David Ponce Date: Fri, 7 Oct 2005 07:52:58 +0000 Subject: [PATCH 001/168] (recentf-menu-open-all-flag): New option. (recentf-digit-shortcut-command-name): New function. (recentf--shortcuts-keymap): New variable. (recentf-menu-shortcuts): New variable. (recentf-make-menu-items): Initialize it. Replace the "More..." menu item by "All...", if `recentf-menu-open-all-flag' is non-nil. (recentf-menu-value-shortcut): New function. (recentf-make-menu-item): Use it. No more in-lined. (recentf-dialog-mode-map): Base on `recentf--shortcuts-keymap'. (recentf-open-most-recent-file): Rename from `recentf-open-file-with-key'. Don't depend on key binding. (recentf-mode-map): New variable. (recentf-mode): Use it. --- lisp/ChangeLog | 16 ++++++ lisp/recentf.el | 133 ++++++++++++++++++++++++++++++++++-------------- 2 files changed, 111 insertions(+), 38 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 922c33df8f1..2c41db93141 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,19 @@ +2005-10-07 David Ponce + + * recentf.el (recentf-menu-open-all-flag): New option. + (recentf-digit-shortcut-command-name): New function. + (recentf--shortcuts-keymap): New variable. + (recentf-menu-shortcuts): New variable. + (recentf-make-menu-items): Initialize it. Replace the "More..." + menu item by "All...", if `recentf-menu-open-all-flag' is non-nil. + (recentf-menu-value-shortcut): New function. + (recentf-make-menu-item): Use it. No more in-lined. + (recentf-dialog-mode-map): Base on `recentf--shortcuts-keymap'. + (recentf-open-most-recent-file): Rename from + `recentf-open-file-with-key'. Don't depend on key binding. + (recentf-mode-map): New variable. + (recentf-mode): Use it. + 2005-10-06 Bill Wohler * mh-e/mh-loaddefs.el: Removed. Now generated automatically. diff --git a/lisp/recentf.el b/lisp/recentf.el index a2392fb852c..dee7a8d438d 100644 --- a/lisp/recentf.el +++ b/lisp/recentf.el @@ -206,6 +206,13 @@ elements (see `recentf-make-menu-element' for menu element form)." function) :set 'recentf-menu-customization-changed) +(defcustom recentf-menu-open-all-flag nil + "*Non-nil means to show an \"All...\" item in the menu. +This item will replace the \"More...\" item." + :group 'recentf + :type 'boolean + :set 'recentf-menu-customization-changed) + (defcustom recentf-menu-append-commands-flag t "*Non-nil means to append command items to the menu." :group 'recentf @@ -278,7 +285,6 @@ If non-nil, `recentf-open-files' will show labels for keys that can be used as shortcuts to open the Nth file." :group 'recentf :type 'boolean) - ;;; Utilities ;; @@ -448,6 +454,25 @@ Return non-nil if F1 is less than F2." ;;; Menu building ;; +(defsubst recentf-digit-shortcut-command-name (n) + "Return a command name to open the Nth most recent file. +See also the command `recentf-open-most-recent-file'." + (intern (format "recentf-open-most-recent-file-%d" n))) + +(defvar recentf--shortcuts-keymap + (let ((km (make-sparse-keymap))) + (dolist (k '(0 9 8 7 6 5 4 3 2 1)) + (let ((cmd (recentf-digit-shortcut-command-name k))) + ;; Define a shortcut command. + (defalias cmd + `(lambda () + (interactive) + (recentf-open-most-recent-file ,k))) + ;; Bind it to a digit key. + (define-key km (vector (+ k ?0)) cmd))) + km) + "Digit shortcuts keymap.") + (defvar recentf-menu-items-for-commands (list ["Cleanup list" @@ -548,21 +573,29 @@ menu-elements (no sub-menu)." (nconc l others)) l)) +;; Count the number of assigned menu shortcuts. +(defvar recentf-menu-shortcuts) + (defun recentf-make-menu-items () "Make menu items from the recent list." (setq recentf-menu-filter-commands nil) - (let ((file-items - (mapcar 'recentf-make-menu-item - (recentf-apply-menu-filter - recentf-menu-filter - (recentf-menu-elements recentf-max-menu-items))))) + (let* ((recentf-menu-shortcuts 0) + (file-items + (mapcar 'recentf-make-menu-item + (recentf-apply-menu-filter + recentf-menu-filter + (recentf-menu-elements recentf-max-menu-items))))) (append (or file-items (list ["No files" t :help "No recent file to open" :active nil])) - (and (< recentf-max-menu-items (length recentf-list)) - (list ["More..." recentf-open-more-files - :help "Open files that are not in the menu" - :active t])) + (if recentf-menu-open-all-flag + (list ["All..." recentf-open-files + :help "Open recent files through a dialog" + :active t]) + (and (< recentf-max-menu-items (length recentf-list)) + (list ["More..." recentf-open-more-files + :help "Open files not in the menu through a dialog" + :active t]))) (and recentf-menu-filter-commands (cons "---" recentf-menu-filter-commands)) @@ -570,15 +603,37 @@ menu-elements (no sub-menu)." (cons "---" recentf-menu-items-for-commands))))) -(defsubst recentf-make-menu-item (elt) +(defun recentf-menu-value-shortcut (name) + "Return a shorcut digit for file NAME. +Return nil if file NAME is not one of the ten more recent." + (let ((i 0) k) + (while (and (not k) (< i 10)) + (if (string-equal name (nth i recentf-list)) + (progn + (setq recentf-menu-shortcuts (1+ recentf-menu-shortcuts)) + (setq k (% (1+ i) 10))) + (setq i (1+ i)))) + k)) + +(defun recentf-make-menu-item (elt) "Make a menu item from menu element ELT." (let ((item (recentf-menu-element-item elt)) (value (recentf-menu-element-value elt))) (if (recentf-sub-menu-element-p elt) (cons item (mapcar 'recentf-make-menu-item value)) - (vector item (list recentf-menu-action value) - :help (concat "Open " value) - :active t)))) + (let ((k (and (< recentf-menu-shortcuts 10) + (recentf-menu-value-shortcut value)))) + (vector item + ;; If the file name is one of the ten more recent, use + ;; a digit shortcut command to open it, else use an + ;; anonymous command. + (if k + (recentf-digit-shortcut-command-name k) + `(lambda () + (interactive) + (,recentf-menu-action ,value))) + :help (concat "Open " value) + :active t))))) (defsubst recentf-menu-bar () "Return the keymap of the global menu bar." @@ -953,13 +1008,10 @@ Go to the beginning of buffer if not found." (goto-char (point-min)))) (defvar recentf-dialog-mode-map - (let ((km (make-sparse-keymap))) + (let ((km (copy-keymap recentf--shortcuts-keymap))) (set-keymap-parent km widget-keymap) (define-key km "q" 'recentf-cancel-dialog) (define-key km [down-mouse-1] 'widget-button-click) - ;; Keys in reverse order of appearence in help. - (dolist (k '("0" "9" "8" "7" "6" "5" "4" "3" "2" "1")) - (define-key km k 'recentf-open-file-with-key)) km) "Keymap used in recentf dialogs.") @@ -1081,7 +1133,7 @@ Click on Cancel or type `q' to cancel.\n") 'push-button :notify 'recentf-edit-list-validate :help-echo "Delete selected files from the recent list" - "Ok") + "Ok") (widget-insert " ") (widget-create 'push-button @@ -1178,30 +1230,29 @@ use for the dialog. It defaults to \"*`recentf-menu-title'*\"." "Cancel") (recentf-dialog-goto-first 'link))) -(defun recentf-open-file-with-key (n) - "Open the recent file with the shortcut numeric key N. -N must be a valid digit. -`1' opens the first file, `2' the second file, ... `9' the ninth file. -`0' opens the tenth file." - (interactive - (list - (let ((n (string-to-number (this-command-keys)))) - (cond - ((zerop n) 10) - ((and (> n 0) (< n 10)) n) - ((error "Invalid digit key %d" n)))))) - (when recentf--files-with-key - (let ((file (nth (1- n) recentf--files-with-key))) - (unless file (error "Not that many recent files")) - (kill-buffer (current-buffer)) - (funcall recentf-menu-action file)))) - (defun recentf-open-more-files () "Show a dialog to open a recent file that is not in the menu." (interactive) (recentf-open-files (nthcdr recentf-max-menu-items recentf-list) (format "*%s - More*" recentf-menu-title))) +(defun recentf-open-most-recent-file (&optional n) + "Open the Nth most recent file. +Optional argument N must be a valid digit number. It defaults to 1. +1 opens the most recent file, 2 the second most recent one, etc.. +0 opens the tenth most recent file." + (interactive "p") + (cond + ((zerop n) (setq n 10)) + ((and (> n 0) (< n 10))) + ((error "Recent file number out of range [0-9], %d" n))) + (let ((file (nth (1- n) (or recentf--files-with-key recentf-list)))) + (unless file (error "Not that many recent files")) + ;; Close the open files dialog. + (when recentf--files-with-key + (kill-buffer (current-buffer))) + (funcall recentf-menu-action file))) + ;;; Save/load/cleanup the recent list ;; (defconst recentf-save-file-header @@ -1266,6 +1317,9 @@ That is, remove duplicates, non-kept, and excluded files." (message "Cleaning up the recentf list...done (%d removed)" n) (setq recentf-list (nreverse newlist)))) +(defvar recentf-mode-map (make-sparse-keymap) + "Keymap to use in recentf mode.") + ;;;###autoload (define-minor-mode recentf-mode "Toggle recentf mode. @@ -1273,9 +1327,12 @@ With prefix argument ARG, turn on if positive, otherwise off. Returns non-nil if the new state is enabled. When recentf mode is enabled, it maintains a menu for visiting files -that were operated on recently." +that were operated on recently. + +\\{recentf-mode-map}" :global t :group 'recentf + :keymap recentf-mode-map (unless (and recentf-mode (recentf-enabled-p)) (if recentf-mode (recentf-load-list) From 4fe3f297118c63a3da00034e7c4a51a59c188db8 Mon Sep 17 00:00:00 2001 From: Romain Francoise Date: Fri, 7 Oct 2005 12:43:57 +0000 Subject: [PATCH 002/168] * ibuf-ext.el (ibuffer-do-shell-command-pipe) (ibuffer-do-shell-command-pipe-replace) (ibuffer-do-shell-command-file, ibuffer-do-eval) (ibuffer-do-view-and-eval, ibuffer-do-rename-uniquely) (ibuffer-do-revert, ibuffer-do-replace-regexp) (ibuffer-do-query-replace, ibuffer-do-query-replace-regexp) (ibuffer-do-print, ibuffer-filter-by-mode, ibuffer-filter-by-used-mode) (ibuffer-filter-by-name, ibuffer-filter-by-filename) (ibuffer-filter-by-size-gt, ibuffer-filter-by-size-lt) (ibuffer-filter-by-content, ibuffer-filter-by-predicate (ibuffer-do-sort-by-major-mode, ibuffer-do-sort-by-mode-name) (ibuffer-do-sort-by-alphabetic, ibuffer-do-sort-by-size): Autoload file sans suffix. * emulation/cua-base.el (cua-toggle-global-mark): Likewise. --- lisp/ChangeLog | 20 ++++++++++++++++- lisp/emulation/cua-base.el | 2 +- lisp/ibuf-ext.el | 46 +++++++++++++++++++------------------- 3 files changed, 43 insertions(+), 25 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 2c41db93141..dd1f1c82212 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,21 @@ +2005-10-07 Romain Francoise + + * ibuf-ext.el (ibuffer-do-shell-command-pipe) + (ibuffer-do-shell-command-pipe-replace) + (ibuffer-do-shell-command-file, ibuffer-do-eval) + (ibuffer-do-view-and-eval, ibuffer-do-rename-uniquely) + (ibuffer-do-revert, ibuffer-do-replace-regexp) + (ibuffer-do-query-replace, ibuffer-do-query-replace-regexp) + (ibuffer-do-print, ibuffer-filter-by-mode, ibuffer-filter-by-used-mode) + (ibuffer-filter-by-name, ibuffer-filter-by-filename) + (ibuffer-filter-by-size-gt, ibuffer-filter-by-size-lt) + (ibuffer-filter-by-content, ibuffer-filter-by-predicate + (ibuffer-do-sort-by-major-mode, ibuffer-do-sort-by-mode-name) + (ibuffer-do-sort-by-alphabetic, ibuffer-do-sort-by-size): + Autoload file sans suffix. + + * emulation/cua-base.el (cua-toggle-global-mark): Likewise. + 2005-10-07 David Ponce * recentf.el (recentf-menu-open-all-flag): New option. @@ -25,7 +43,7 @@ (compile, recompile, bootstrap): Depend on mh-autoloads. 2005-10-07 Nick Roberts - + * progmodes/gud.el (gud-menu-map): Only display un-intuitive gud-break and gud-remove icons when the fringe is not available. diff --git a/lisp/emulation/cua-base.el b/lisp/emulation/cua-base.el index dc335a2eb82..b9ed8166d68 100644 --- a/lisp/emulation/cua-base.el +++ b/lisp/emulation/cua-base.el @@ -548,7 +548,7 @@ a cons (TYPE . COLOR), then both properties are affected." ;;; Global Mark support is in cua-gmrk.el -(autoload 'cua-toggle-global-mark "cua-gmrk.el" nil t nil) +(autoload 'cua-toggle-global-mark "cua-gmrk" nil t nil) ;; Stub definitions until cua-gmrk.el is loaded diff --git a/lisp/ibuf-ext.el b/lisp/ibuf-ext.el index e6fc1d67b8e..8ab984cd61b 100644 --- a/lisp/ibuf-ext.el +++ b/lisp/ibuf-ext.el @@ -329,7 +329,7 @@ With numeric ARG, enable auto-update if and only if ARG is positive." (ibuffer-backward-filter-group 1)) (ibuffer-forward-line 0)) -;;;###autoload (autoload 'ibuffer-do-shell-command-pipe "ibuf-ext.el") +;;;###autoload (autoload 'ibuffer-do-shell-command-pipe "ibuf-ext") (define-ibuffer-op shell-command-pipe (command) "Pipe the contents of each marked buffer to shell command COMMAND." (:interactive "sPipe to shell command: " @@ -339,7 +339,7 @@ With numeric ARG, enable auto-update if and only if ARG is positive." (point-min) (point-max) command (get-buffer-create "* ibuffer-shell-output*"))) -;;;###autoload (autoload 'ibuffer-do-shell-command-pipe-replace "ibuf-ext.el") +;;;###autoload (autoload 'ibuffer-do-shell-command-pipe-replace "ibuf-ext") (define-ibuffer-op shell-command-pipe-replace (command) "Replace the contents of marked buffers with output of pipe to COMMAND." (:interactive "sPipe to shell command (replace): " @@ -351,7 +351,7 @@ With numeric ARG, enable auto-update if and only if ARG is positive." (shell-command-on-region (point-min) (point-max) command nil t))) -;;;###autoload (autoload 'ibuffer-do-shell-command-file "ibuf-ext.el") +;;;###autoload (autoload 'ibuffer-do-shell-command-file "ibuf-ext") (define-ibuffer-op shell-command-file (command) "Run shell command COMMAND separately on files of marked buffers." (:interactive "sShell command on buffer's file: " @@ -364,7 +364,7 @@ With numeric ARG, enable auto-update if and only if ARG is positive." (make-temp-file (substring (buffer-name) 0 (min 10 (length (buffer-name)))))))))) -;;;###autoload (autoload 'ibuffer-do-eval "ibuf-ext.el") +;;;###autoload (autoload 'ibuffer-do-eval "ibuf-ext") (define-ibuffer-op eval (form) "Evaluate FORM in each of the buffers. Does not display the buffer during evaluation. See @@ -374,7 +374,7 @@ Does not display the buffer during evaluation. See :modifier-p :maybe) (eval form)) -;;;###autoload (autoload 'ibuffer-do-view-and-eval "ibuf-ext.el") +;;;###autoload (autoload 'ibuffer-do-view-and-eval "ibuf-ext") (define-ibuffer-op view-and-eval (form) "Evaluate FORM while displaying each of the marked buffers. To evaluate a form without viewing the buffer, see `ibuffer-do-eval'." @@ -389,14 +389,14 @@ To evaluate a form without viewing the buffer, see `ibuffer-do-eval'." (eval form)) (switch-to-buffer ibuffer-buf)))) -;;;###autoload (autoload 'ibuffer-do-rename-uniquely "ibuf-ext.el") +;;;###autoload (autoload 'ibuffer-do-rename-uniquely "ibuf-ext") (define-ibuffer-op rename-uniquely () "Rename marked buffers as with `rename-uniquely'." (:opstring "renamed" :modifier-p t) (rename-uniquely)) -;;;###autoload (autoload 'ibuffer-do-revert "ibuf-ext.el") +;;;###autoload (autoload 'ibuffer-do-revert "ibuf-ext") (define-ibuffer-op revert () "Revert marked buffers as with `revert-buffer'." (:dangerous t @@ -405,7 +405,7 @@ To evaluate a form without viewing the buffer, see `ibuffer-do-eval'." :modifier-p :maybe) (revert-buffer t t)) -;;;###autoload (autoload 'ibuffer-do-replace-regexp "ibuf-ext.el") +;;;###autoload (autoload 'ibuffer-do-replace-regexp "ibuf-ext") (define-ibuffer-op replace-regexp (from-str to-str) "Perform a `replace-regexp' in marked buffers." (:interactive @@ -425,7 +425,7 @@ To evaluate a form without viewing the buffer, see `ibuffer-do-eval'." (replace-match to-str)))) t)) -;;;###autoload (autoload 'ibuffer-do-query-replace "ibuf-ext.el") +;;;###autoload (autoload 'ibuffer-do-query-replace "ibuf-ext") (define-ibuffer-op query-replace (&rest args) "Perform a `query-replace' in marked buffers." (:interactive @@ -441,7 +441,7 @@ To evaluate a form without viewing the buffer, see `ibuffer-do-eval'." (apply #'query-replace args))) t)) -;;;###autoload (autoload 'ibuffer-do-query-replace-regexp "ibuf-ext.el") +;;;###autoload (autoload 'ibuffer-do-query-replace-regexp "ibuf-ext") (define-ibuffer-op query-replace-regexp (&rest args) "Perform a `query-replace-regexp' in marked buffers." (:interactive @@ -457,7 +457,7 @@ To evaluate a form without viewing the buffer, see `ibuffer-do-eval'." (apply #'query-replace-regexp args))) t)) -;;;###autoload (autoload 'ibuffer-do-print "ibuf-ext.el") +;;;###autoload (autoload 'ibuffer-do-print "ibuf-ext") (define-ibuffer-op print () "Print marked buffers as with `print-buffer'." (:opstring "printed" @@ -969,7 +969,7 @@ The list returned will be of the form (\"MODE-NAME\" . MODE-SYMBOL)." ;;; Extra operation definitions -;;;###autoload (autoload 'ibuffer-filter-by-mode "ibuf-ext.el") +;;;###autoload (autoload 'ibuffer-filter-by-mode "ibuf-ext") (define-ibuffer-filter mode "Toggle current view to buffers with major mode QUALIFIER." (:description "major mode" @@ -987,7 +987,7 @@ The list returned will be of the form (\"MODE-NAME\" . MODE-SYMBOL)." ""))))) (eq qualifier (with-current-buffer buf major-mode))) -;;;###autoload (autoload 'ibuffer-filter-by-used-mode "ibuf-ext.el") +;;;###autoload (autoload 'ibuffer-filter-by-used-mode "ibuf-ext") (define-ibuffer-filter used-mode "Toggle current view to buffers with major mode QUALIFIER. Called interactively, this function allows selection of modes @@ -1006,14 +1006,14 @@ currently used by buffers." ""))))) (eq qualifier (with-current-buffer buf major-mode))) -;;;###autoload (autoload 'ibuffer-filter-by-name "ibuf-ext.el") +;;;###autoload (autoload 'ibuffer-filter-by-name "ibuf-ext") (define-ibuffer-filter name "Toggle current view to buffers with name matching QUALIFIER." (:description "buffer name" :reader (read-from-minibuffer "Filter by name (regexp): ")) (string-match qualifier (buffer-name buf))) -;;;###autoload (autoload 'ibuffer-filter-by-filename "ibuf-ext.el") +;;;###autoload (autoload 'ibuffer-filter-by-filename "ibuf-ext") (define-ibuffer-filter filename "Toggle current view to buffers with filename matching QUALIFIER." (:description "filename" @@ -1027,7 +1027,7 @@ currently used by buffers." (expand-file-name dired-directory)))) (string-match qualifier it))) -;;;###autoload (autoload 'ibuffer-filter-by-size-gt "ibuf-ext.el") +;;;###autoload (autoload 'ibuffer-filter-by-size-gt "ibuf-ext") (define-ibuffer-filter size-gt "Toggle current view to buffers with size greater than QUALIFIER." (:description "size greater than" @@ -1036,7 +1036,7 @@ currently used by buffers." (> (with-current-buffer buf (buffer-size)) qualifier)) -;;;###autoload (autoload 'ibuffer-filter-by-size-lt "ibuf-ext.el") +;;;###autoload (autoload 'ibuffer-filter-by-size-lt "ibuf-ext") (define-ibuffer-filter size-lt "Toggle current view to buffers with size less than QUALIFIER." (:description "size less than" @@ -1045,7 +1045,7 @@ currently used by buffers." (< (with-current-buffer buf (buffer-size)) qualifier)) -;;;###autoload (autoload 'ibuffer-filter-by-content "ibuf-ext.el") +;;;###autoload (autoload 'ibuffer-filter-by-content "ibuf-ext") (define-ibuffer-filter content "Toggle current view to buffers whose contents match QUALIFIER." (:description "content" @@ -1055,7 +1055,7 @@ currently used by buffers." (goto-char (point-min)) (re-search-forward qualifier nil t)))) -;;;###autoload (autoload 'ibuffer-filter-by-predicate "ibuf-ext.el") +;;;###autoload (autoload 'ibuffer-filter-by-predicate "ibuf-ext") (define-ibuffer-filter predicate "Toggle current view to buffers for which QUALIFIER returns non-nil." (:description "predicate" @@ -1094,7 +1094,7 @@ Default sorting modes are: "normal")) (ibuffer-redisplay t)) -;;;###autoload (autoload 'ibuffer-do-sort-by-major-mode "ibuf-ext.el") +;;;###autoload (autoload 'ibuffer-do-sort-by-major-mode "ibuf-ext") (define-ibuffer-sorter major-mode "Sort the buffers by major modes. Ordering is lexicographic." @@ -1108,7 +1108,7 @@ Ordering is lexicographic." (car b) major-mode))))) -;;;###autoload (autoload 'ibuffer-do-sort-by-mode-name "ibuf-ext.el") +;;;###autoload (autoload 'ibuffer-do-sort-by-mode-name "ibuf-ext") (define-ibuffer-sorter mode-name "Sort the buffers by their mode name. Ordering is lexicographic." @@ -1122,7 +1122,7 @@ Ordering is lexicographic." (car b) mode-name)))) -;;;###autoload (autoload 'ibuffer-do-sort-by-alphabetic "ibuf-ext.el") +;;;###autoload (autoload 'ibuffer-do-sort-by-alphabetic "ibuf-ext") (define-ibuffer-sorter alphabetic "Sort the buffers by their names. Ordering is lexicographic." @@ -1131,7 +1131,7 @@ Ordering is lexicographic." (buffer-name (car a)) (buffer-name (car b)))) -;;;###autoload (autoload 'ibuffer-do-sort-by-size "ibuf-ext.el") +;;;###autoload (autoload 'ibuffer-do-sort-by-size "ibuf-ext") (define-ibuffer-sorter size "Sort the buffers by their size." (:description "size") From e773efb7002758382208270dcc3c1c404f8e9ab1 Mon Sep 17 00:00:00 2001 From: Andreas Schwab Date: Fri, 7 Oct 2005 13:59:20 +0000 Subject: [PATCH 003/168] Fix encoding. --- lisp/ChangeLog.11 | 69 +++++++++++++++++++++++------------------------ 1 file changed, 34 insertions(+), 35 deletions(-) diff --git a/lisp/ChangeLog.11 b/lisp/ChangeLog.11 index 424c63c6311..8b00b539e69 100644 --- a/lisp/ChangeLog.11 +++ b/lisp/ChangeLog.11 @@ -1,4 +1,3 @@ - 2004-12-31 Jay Belanger * calc/calc-store.el (calcVar-digit, calcVar-oper): Remove the need @@ -673,7 +672,7 @@ 2004-12-13 Stefan Monnier * vc-svn.el (vc-svn-repository-hostname): Adjust to new format. - Reported by Ville Skyttä . + Reported by Ville Skytt,Ad(B . (vc-svn-annotate-current-time, vc-svn-annotate-time-of-rev) (vc-svn-annotate-time, vc-svn-annotate-extract-revision-at-line) (vc-svn-annotate-command, vc-svn-annotate-re): Support for svn @@ -1238,7 +1237,7 @@ (sc-recite-region): Handle the case where sc-recite-frame-alist is a symbol. -2004-11-27 Arne Jørgensen (tiny change) +2004-11-27 Arne J,Ax(Brgensen (tiny change) * wid-edit.el (widget-narrow-to-field): New function. (widget-complete): Use it. @@ -1714,7 +1713,7 @@ Replace variables comp-highlight, comp-buf, comp-base, comp-height, comp-tag, comp-hpos and comp-vpos by declared variables. -2004-11-23 Jan Djärv +2004-11-23 Jan Dj,Ad(Brv * cus-start.el (all): Add x-use-old-gtk-file-dialog. @@ -2613,7 +2612,7 @@ (display-call-tree, byte-compile-arglist-warn): Handle t returned by byte-compile-fdefinition. -2004-11-09 Jan Djärv +2004-11-09 Jan Dj,Ad(Brv * Makefile.in (maintainer-clean): Depend on distclean. @@ -2807,7 +2806,7 @@ * files.el (set-auto-mode): Don't get error after setting -*-mode-*-. -2004-11-04 Jan Djärv +2004-11-04 Jan Dj,Ad(Brv * dired.el (dired-read-dir-and-switches): Call read-directory-name if a dialog will be used, read-file-name otherwise. @@ -2903,7 +2902,7 @@ * emacs-lisp/advice.el (ad-make-advised-definition): Use called-interactively-p. -2004-11-02 Jan Djärv +2004-11-02 Jan Dj,Ad(Brv * files.el (find-file-existing): New function. @@ -2978,7 +2977,7 @@ * calc/calc-frac.el (calc-over-notation): Replace `completing-read' with `interactive "s"'. -2004-11-01 Jan Djärv +2004-11-01 Jan Dj,Ad(Brv * mouse.el (mouse-yank-at-click, mouse-yank-secondary): Revert change from 2004-10-16. '*' checks the current buffer, but the @@ -3096,7 +3095,7 @@ (bibtex-complete): Do not use bibtex-choose-completion-string. (bibtex-url): Simplify. -2004-10-31 Jan Djärv +2004-10-31 Jan Dj,Ad(Brv * x-dnd.el (x-dnd-test-function, x-dnd-protocol-alist) (x-dnd-types-alist, x-dnd-open-file-other-window) @@ -3192,7 +3191,7 @@ (grep-mode-font-lock-keywords): Delete grep markers instead of making them invisible. -2004-10-28 Jan Djärv +2004-10-28 Jan Dj,Ad(Brv * mail/emacsbug.el (report-emacs-bug): Insert x-server-vendor and x-server-version in bug report. @@ -4109,7 +4108,7 @@ (enriched-mode): Make sure that enabling and disabling the mode is a no-op. Doc fix. -2004-09-23 Håkon Malmedal (tiny change) +2004-09-23 H,Ae(Bkon Malmedal (tiny change) * calendar/holidays.el (holiday-advent): Report on a specified day offset from advent, not just advent. @@ -4819,7 +4818,7 @@ lines that begin in the region, rather than on all complete lines in the region. -2004-08-31 Jan Djärv +2004-08-31 Jan Dj,Ad(Brv * x-dnd.el (x-dnd-protocol-alist): Document update. (x-dnd-known-types): Defcustom it. @@ -6049,7 +6048,7 @@ * progmodes/python.el (python-open-block-statement-p): Fix indentation after a block opening that contains a comment. -2004-06-12 Jérôme Marant (tiny change) +2004-06-12 J,Ai(Br,At(Bme Marant (tiny change) * bindings.el (completion-ignored-extensions): Add file extensions of Python byte-compiled files. @@ -6177,7 +6176,7 @@ * replace.el (perform-replace): Use `limit' to terminate the while-loop explicitly. -2004-06-09 Jan Djärv +2004-06-09 Jan Dj,Ad(Brv * toolbar/tool-bar.el (tool-bar-add-item, tool-bar-local-item): Use lc-*.xpm as prefix instead of *-locol.xpm. @@ -6231,7 +6230,7 @@ (compilation-error-regexp-alist-alist): Recognize {standard input} GNU messages (for gcc --pipe) and more kinds of Oracle messages. -2004-06-08 Jan Djärv +2004-06-08 Jan Dj,Ad(Brv * toolbar/copy-locol.xpm, toolbar/cut-locol.xpm * toolbar/help-locol.xpm, toolbar/home-locol.xpm @@ -6292,7 +6291,7 @@ * help-fns.el (help-argument-name): Inherit from italic face only if the frame supports it. -2004-06-06 Jan Djärv +2004-06-06 Jan Dj,Ad(Brv * toolbar/alias.pbm, toolbar/close.pbm, toolbar/copy.pbm * toolbar/cut.pbm, toolbar/help.pbm, toolbar/home.pbm @@ -7048,7 +7047,7 @@ * progmodes/compile.el (compilation-warning-face) (compilation-info-face): Use min-colors. -2004-05-15 Jan Djärv +2004-05-15 Jan Dj,Ad(Brv * toolbar/close.pbm, toolbar/close.xpm, toolbar/copy.pbm * toolbar/copy.xpm, toolbar/cut.pbm, toolbar/cut.xpm @@ -7138,7 +7137,7 @@ * progmodes/compile.el (compilation-set-window-height): Use save-excursion to protect against misplaced marker. -2004-05-12 Jan Djärv +2004-05-12 Jan Dj,Ad(Brv * custom.el (defface): Document that type can have value gtk. @@ -7600,12 +7599,12 @@ * select.el (xselect-convert-to-string): Move comment to intended line. -2004-05-03 Jan Djärv +2004-05-03 Jan Dj,Ad(Brv * toolbar/tool-bar.el (tool-bar-setup): Use lookup-key for cut/copy/paste in case menu-bar-enable-clipboard is in effect. -2004-05-03 Jan Djärv +2004-05-03 Jan Dj,Ad(Brv * term/x-win.el (x-clipboard-yank): Don't exit on error from x-get-selection. @@ -8174,7 +8173,7 @@ * info-look.el: Add support for cfengine-mode. (info-lookup-setup-mode): Use dolist. -2004-04-23 Juan León Lahoz García +2004-04-23 Juan Le,As(Bn Lahoz Garc,Am(Ba * wdired.el: New file. @@ -8452,7 +8451,7 @@ (rmail-decode-region): Use -dos variety of `coding', to remove any ^M characters left after qp or base64 decoding. -2004-04-19 Jan Djärv +2004-04-19 Jan Dj,Ad(Brv * x-dnd.el (x-dnd-open-local-file, x-dnd-open-file): Improve error messages. @@ -9090,7 +9089,7 @@ * dired.el (dired-font-lock-keywords): Fix permission regexps. -2004-04-02 Jan Djärv +2004-04-02 Jan Dj,Ad(Brv * x-dnd.el (x-dnd-handle-moz-url, x-dnd-insert-utf16-text): Use utf-16le on little endian machines and utf-16be otherwise. @@ -9151,7 +9150,7 @@ * dired-x.el (dired-mark-sexp): Replace hard-coded month names by `dired-move-to-filename-regexp'. -2004-03-31 Håkan Granath (tiny change) +2004-03-31 H,Ae(Bkan Granath (tiny change) * dired.el (dired-move-to-filename-regexp): Add `.' to HH:MM. @@ -9226,7 +9225,7 @@ 2004-03-28 Stefan Monnier * vc-hooks.el (vc-file-not-found-hook): Fix typo. - From lorentey@elte.hu (Lőrentey Károly). + From lorentey@elte.hu (L$,1 q(Brentey K,Aa(Broly). 2004-03-27 Luc Teirlinck @@ -10569,7 +10568,7 @@ * progmodes/grep.el (grep-compute-defaults): Fix typos. -2004-02-15 Jan Djärv +2004-02-15 Jan Dj,Ad(Brv * x-dnd.el: Mention support for Motif in commentary. (x-dnd-handle-drag-n-drop-event): Ditto. @@ -10628,7 +10627,7 @@ Use listp instead of consp to avoid putting a nil arg. (diff): Add a revert-buffer function. -2004-02-10 Jan Djärv +2004-02-10 Jan Dj,Ad(Brv * x-dnd.el (x-dnd-types-alist): Add COMPOUND_TEXT, FILE_NAME handled by x-dnd-handle-file-name. @@ -10793,7 +10792,7 @@ * view.el (view-mode-enable): Add view-mode-map to minor-mode-overriding-map-alist. -2004-02-05 Jan Djärv +2004-02-05 Jan Dj,Ad(Brv * x-dnd.el (x-dnd-get-local-file-name): Fix byte compiler warning @@ -10817,7 +10816,7 @@ * files.el (auto-mode-alist): Fix .scm, .stk, .ss, .sch entry. -2004-02-03 Jan Djärv +2004-02-03 Jan Dj,Ad(Brv * x-dnd.el: New file for drag and drop. @@ -11049,7 +11048,7 @@ * vc.el (vc-annotate-mode): Inherit from fundamental-mode and activate view-mode explicitly. -2004-01-21 Jan Djärv +2004-01-21 Jan Dj,Ad(Brv * term/x-win.el (x-clipboard-yank, menu-bar-edit-menu): Call menu-bar-enable-clipboard and make Paste use clipboard first. @@ -11798,7 +11797,7 @@ (gdb-var-update-handler, gdb-var-delete): Add server prefix to the gdb commands that use mi to keep them out of the command history. -2003-11-29 Jan Djärv +2003-11-29 Jan Dj,Ad(Brv * cus-start.el (all): Add use-file-dialog. @@ -12217,10 +12216,10 @@ (octave-blink-matching-block-open, octave-auto-fill): Use line-(beginning|end)-position instead. -2003-10-23 Francesco Potortì +2003-10-23 Francesco Potort,Al(B * emacs-lisp/authors.el (authors-aliases): Add correct realname - for Francesco Potortì. + for Francesco Potort,Al(B. 2003-10-23 Dave Love @@ -13236,7 +13235,7 @@ * international/utf-16.el: Add mime-text-unsuitable coding system properties. - * international/latin1-disp.el (latin1-display): Add ?•. + * international/latin1-disp.el (latin1-display): Add ?$,1s"(B. * cus-edit.el: Add some :links. (bib): Remove. @@ -13811,7 +13810,7 @@ * progmodes/sh-script.el (sh-mode-syntax-table): Change syntax of ?, to "_". -2003-07-20 Kai Großjohann +2003-07-20 Kai Gro,A_(Bjohann Version 2.0.36 of Tramp released. * net/tramp.el (tramp-default-password-end-of-line): Rename from From 36eaa68f561969b6173c235e5d180d64e6a54bb6 Mon Sep 17 00:00:00 2001 From: Romain Francoise Date: Fri, 7 Oct 2005 14:55:55 +0000 Subject: [PATCH 004/168] Add etc/images/ezimage and etc/images/mail directories. Install images in etc/images. --- ChangeLog | 5 +++++ make-dist | 14 ++++++++++++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 1a81cd1d6be..5decdb3bf86 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2005-10-07 Romain Francoise + + * make-dist: Add etc/images/ezimage and etc/images/mail + directories. Install images in etc/images. + 2005-10-04 YAMAMOTO Mitsuharu * configure.in: Prefer Carbon if --enable-carbon-app or diff --git a/make-dist b/make-dist index 3381ee770eb..80c219b87ee 100755 --- a/make-dist +++ b/make-dist @@ -322,6 +322,7 @@ for subdir in lisp site-lisp lispref lispintro \ src src/m src/s src/bitmaps lib-src oldXMenu lwlib \ nt nt/inc nt/inc/sys nt/inc/arpa nt/inc/netinet nt/icons \ etc etc/e etc/images etc/images/gnus etc/images/smilies \ + etc/images/mail etc/images/ezimage \ etc/tree-widget etc/tree-widget/default etc/tree-widget/folder \ info man m4 msdos vms mac mac/inc mac/inc/sys \ mac/src mac/Emacs.app mac/Emacs.app/Contents \ @@ -599,8 +600,17 @@ echo "Making links to \`etc/e'" cd ../../${tempdir}/etc/e rm -f *~ \#*\# *,v =* core) -for dir in etc/images/gnus etc/images/smilies \ - etc/tree-widget/default etc/tree-widget/folder ; do +echo "Making links to \`etc/images'" +(cd etc/images + for img in [a-zA-Z]*.xpm [a-zA-Z]*.xbm [a-zA-Z]*.pbm; do + if [ -f $img ]; then + ln $img ../../${tempdir}/etc/images + fi + done) + +for dir in etc/images/gnus etc/images/smilies etc/images/mail \ + etc/images/ezimage etc/tree-widget/default \ + etc/tree-widget/folder ; do echo "Making links to \`${dir}'" (cd ${dir} ln `ls -d * | grep -v CVS | grep -v RCS` ../../../${tempdir}/${dir} From 05d2820548fdca099a7b1eaddeda70d1849618b0 Mon Sep 17 00:00:00 2001 From: Jay Belanger Date: Fri, 7 Oct 2005 21:15:19 +0000 Subject: [PATCH 005/168] (math-known-square-matrixp): New function. (math-pow-fancy): Check for matrices before distributing exponent across products. --- lisp/calc/calc-arith.el | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/lisp/calc/calc-arith.el b/lisp/calc/calc-arith.el index 25ccfc48019..9d4d04a5758 100644 --- a/lisp/calc/calc-arith.el +++ b/lisp/calc/calc-arith.el @@ -305,6 +305,17 @@ (and (not (Math-scalarp a)) (not (math-known-scalarp a t)))) +(defun math-known-square-matrixp (a) + (if (eq (car-safe a) '^) + (math-known-square-matrixp (nth 1 a)) + (and (math-known-matrixp a) + (or (math-square-matrixp a) + (and (or + (integerp calc-matrix-mode) + (eq calc-matrix-mode 'square)) + (eq (car-safe a) 'var) + (not (math-const-var a))))))) + ;;; Try to prove that A is a scalar (i.e., a non-vector). (defun math-check-known-scalarp (a) (cond ((Math-objectp a) t) @@ -1869,6 +1880,21 @@ (cond ((and math-simplify-only (not (equal a math-simplify-only))) (list '^ a b)) + ((and (eq (car-safe a) '*) + (or + (and + (math-known-matrixp (nth 1 a)) + (math-known-matrixp (nth 2 a))) + (and + calc-matrix-mode + (not (eq calc-matrix-mode 'scalar)) + (and (not (math-known-scalarp (nth 1 a))) + (not (math-known-scalarp (nth 2 a))))))) + (if (and (= b -1) + (math-known-square-matrixp (nth 1 a)) + (math-known-square-matrixp (nth 2 a))) + (list '* (list '^ (nth 2 a) -1) (list '^ (nth 1 a) -1)) + (list '^ a b))) ((and (eq (car-safe a) '*) (or (math-known-num-integerp b) (math-known-nonnegp (nth 1 a)) From 3f2f0fb736191cbd331241641157ce0c8412bd49 Mon Sep 17 00:00:00 2001 From: Jay Belanger Date: Fri, 7 Oct 2005 21:15:52 +0000 Subject: [PATCH 006/168] (calc-do-keypad): Widen keypad window for fullscreen keypad. Suggested by Luc Teirlinck. (calc-keypad-show-input): Add space for formatting. --- lisp/calc/calc-keypd.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lisp/calc/calc-keypd.el b/lisp/calc/calc-keypd.el index f3034bdd4b3..475592c8ab6 100644 --- a/lisp/calc/calc-keypd.el +++ b/lisp/calc/calc-keypd.el @@ -296,7 +296,7 @@ (set-window-buffer old-win (calc-trail-buffer)) (set-window-buffer win calc-keypad-buffer) (set-window-start win 1) - (setq win (split-window win (+ width 3) t)) + (setq win (split-window win (+ width 7) t)) (set-window-buffer win calcbuf)) (if (or t ; left-side keypad not yet fully implemented (< (save-excursion @@ -384,7 +384,7 @@ (delete-region (point-min) (point)) (if calc-keypad-input (insert "Calc: " calc-keypad-input "\n") - (insert "----+-----Calc " calc-version "-----+----" + (insert "----+-----Calc " calc-version " -----+----" (int-to-string (1+ calc-keypad-menu)) "\n"))))) (setq calc-keypad-prev-input calc-keypad-input)) From d7b79b09b1dc1bc5e58772bd099f4324d93182c9 Mon Sep 17 00:00:00 2001 From: Jay Belanger Date: Fri, 7 Oct 2005 21:18:01 +0000 Subject: [PATCH 007/168] (calc-matrix-mode, math-get-modes-vec): Add square matrix option. --- lisp/calc/calc-mode.el | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/lisp/calc/calc-mode.el b/lisp/calc/calc-mode.el index 41b346ebd5a..7782b7a1f83 100644 --- a/lisp/calc/calc-mode.el +++ b/lisp/calc/calc-mode.el @@ -352,6 +352,7 @@ (if (eq calc-complex-mode 'polar) 1 0) (cond ((eq calc-matrix-mode 'scalar) 0) ((eq calc-matrix-mode 'matrix) -2) + ((eq calc-matrix-mode 'square) -3) (calc-matrix-mode) (t -1)) (cond ((eq calc-simplify-mode 'none) -1) @@ -476,7 +477,9 @@ (cond ((eq arg 0) 'scalar) ((< (prefix-numeric-value arg) 1) (and (< (prefix-numeric-value arg) -1) 'matrix)) - (arg (prefix-numeric-value arg)) + (arg + (if (consp arg) 'square + (prefix-numeric-value arg))) ((eq calc-matrix-mode 'matrix) 'scalar) ((eq calc-matrix-mode 'scalar) nil) (t 'matrix))) @@ -485,9 +488,11 @@ calc-matrix-mode calc-matrix-mode) (message (if (eq calc-matrix-mode 'matrix) "Variables are assumed to be matrices" - (if calc-matrix-mode - "Variables are assumed to be scalars (non-matrices)" - "Variables are not assumed to be matrix or scalar")))))) + (if (eq calc-matrix-mode 'square) + "Variables are assumed to be square matrices" + (if calc-matrix-mode + "Variables are assumed to be scalars (non-matrices)" + "Variables are not assumed to be matrix or scalar"))))))) (defun calc-set-simplify-mode (mode arg msg) (calc-change-mode 'calc-simplify-mode From 8fc5f8233b811bf2fe08cb641a4d00538c654030 Mon Sep 17 00:00:00 2001 From: Jay Belanger Date: Fri, 7 Oct 2005 21:18:22 +0000 Subject: [PATCH 008/168] (math-expand-term): Check for matrices instead of checking calc-matrix-mode when deciding how to expand. --- lisp/calc/calc-poly.el | 25 +++++++++---------------- 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/lisp/calc/calc-poly.el b/lisp/calc/calc-poly.el index e27705de98a..4714b2f7d38 100644 --- a/lisp/calc/calc-poly.el +++ b/lisp/calc/calc-poly.el @@ -1069,25 +1069,18 @@ (math-add-or-sub (list '/ (nth 1 (nth 1 expr)) (nth 2 expr)) (list '/ (nth 2 (nth 1 expr)) (nth 2 expr)) nil (eq (car (nth 1 expr)) '-))) - ((and (eq calc-matrix-mode 'matrix) - (eq (car-safe expr) '^) - (natnump (nth 2 expr)) - (> (nth 2 expr) 1) - (memq (car-safe (nth 1 expr)) '(+ -))) - (if (= (nth 2 expr) 2) - (math-add-or-sub (list '* (nth 1 (nth 1 expr)) (nth 1 expr)) - (list '* (nth 2 (nth 1 expr)) (nth 1 expr)) - nil (eq (car (nth 1 expr)) '-)) - (math-add-or-sub (list '* (nth 1 (nth 1 expr)) (list '^ (nth 1 expr) - (1- (nth 2 expr)))) - (list '* (nth 2 (nth 1 expr)) (list '^ (nth 1 expr) - (1- (nth 2 expr)))) - nil (eq (car (nth 1 expr)) '-)))) ((and (eq (car-safe expr) '^) (memq (car-safe (nth 1 expr)) '(+ -)) (integerp (nth 2 expr)) - (if (and (eq calc-matrix-mode 'matrix) - (> (nth 2 expr) 1)) + (if (and + (or (math-known-matrixp (nth 1 (nth 1 expr))) + (math-known-matrixp (nth 2 (nth 1 expr))) + (and + calc-matrix-mode + (not (eq calc-matrix-mode 'scalar)) + (not (and (math-known-scalarp (nth 1 (nth 1 expr))) + (math-known-scalarp (nth 2 (nth 1 expr))))))) + (> (nth 2 expr) 1)) (if (= (nth 2 expr) 2) (math-add-or-sub (list '* (nth 1 (nth 1 expr)) (nth 1 expr)) (list '* (nth 2 (nth 1 expr)) (nth 1 expr)) From 8868c48e5a318283d6bd873d12922d21cd758d0c Mon Sep 17 00:00:00 2001 From: Jay Belanger Date: Fri, 7 Oct 2005 21:18:47 +0000 Subject: [PATCH 009/168] (calc-set-mode-line): Add square matrix option. --- lisp/calc/calc.el | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lisp/calc/calc.el b/lisp/calc/calc.el index c53e7971956..2220376904f 100644 --- a/lisp/calc/calc.el +++ b/lisp/calc/calc.el @@ -654,6 +654,7 @@ If nil, computations on numbers always yield numbers where possible.") (defcalcmodevar calc-matrix-mode nil "If `matrix', variables are assumed to be matrix-valued. If a number, variables are assumed to be NxN matrices. +If `square', variables are assumed to be square matrices of an unspecified size. If `scalar', variables are assumed to be scalar-valued. If nil, symbolic math routines make no assumptions about variables.") @@ -1551,6 +1552,7 @@ See calc-keypad for details." (cond ((eq calc-matrix-mode 'matrix) "Matrix ") ((integerp calc-matrix-mode) (format "Matrix%d " calc-matrix-mode)) + ((eq calc-matrix-mode 'square) "SqMatrix ") ((eq calc-matrix-mode 'scalar) "Scalar ") (t "")) (if (eq calc-complex-mode 'polar) "Polar " "") From f1010549551eb7a4311b3dd31b7f1c965a0dbec9 Mon Sep 17 00:00:00 2001 From: "Kim F. Storm" Date: Fri, 7 Oct 2005 21:47:18 +0000 Subject: [PATCH 010/168] *** empty log message *** --- src/ChangeLog | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index deb3ca4fbe9..74635e6df75 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,9 @@ +2005-10-07 Kim F. Storm + + * dispnew.c (redraw_overlapped_rows, redraw_overlapping_rows) + [!HAVE_WINDOW_SYSTEM]: Don't declare them... + (update_window) [!HAVE_WINDOW_SYSTEM]: ...and don't call them. + 2005-10-07 YAMAMOTO Mitsuharu * dispextern.h (struct glyph_string): Rename member for_overlaps_p @@ -15,19 +21,17 @@ * xdisp.c: Rename member for_overlaps_p in struct glyph_string to for_overlaps. (get_glyph_string_clip_rects): New function created from - get_glyph_string_clip_rect. Set clipping rectangles according to - the value of for_overlaps. Enable to store multiple clipping - rectangles. + get_glyph_string_clip_rect. Set clipping rectangles according to the + value of for_overlaps. Enable to store multiple clipping rectangles. (get_glyph_string_clip_rect): Use get_glyph_string_clip_rects. (fill_composite_glyph_string, fill_glyph_string, draw_glyphs): Rename argument OVERLAPS_P to OVERLAPS. All uses in macros changed. (x_fix_overlapping_area): Add OVERLAPS arg. Pass it to draw_glyphs. (draw_phys_cursor_glyph): Set width of erased cursor to use it for - calculating clipping rectangles later. Call - x_fix_overlapping_area with new OVERLAPS arg to draw only erased - cursor area. - (expose_overlaps): Call x_fix_overlapping_area with new - OVERLAPS arg to draw overlaps in both preceding and succeeding rows. + calculating clipping rectangles later. Call x_fix_overlapping_area + with new OVERLAPS arg to draw only erased cursor area. + (expose_overlaps): Call x_fix_overlapping_area with new OVERLAPS arg + to draw overlaps in both preceding and succeeding rows. * xterm.c, w32term.c, macterm.c: Rename member for_overlaps_p in struct glyph_string to for_overlaps. From 93e023fcee6863f22cebaf51dfe140a187f9eadc Mon Sep 17 00:00:00 2001 From: "Kim F. Storm" Date: Fri, 7 Oct 2005 21:47:49 +0000 Subject: [PATCH 011/168] (redraw_overlapped_rows, redraw_overlapping_rows) [!HAVE_WINDOW_SYSTEM]: Don't declare them... (update_window) [!HAVE_WINDOW_SYSTEM]: ...and don't call them. --- src/dispnew.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/dispnew.c b/src/dispnew.c index 43cfd46da39..09a957b6dce 100644 --- a/src/dispnew.c +++ b/src/dispnew.c @@ -3963,6 +3963,7 @@ update_single_window (w, force_p) } } +#ifdef HAVE_WINDOW_SYSTEM /* Redraw lines from the current matrix of window W that are overlapped by other rows. YB is bottom-most y-position in W. */ @@ -4069,6 +4070,8 @@ redraw_overlapping_rows (w, yb) } } +#endif /* HAVE_WINDOW_SYSTEM */ + #ifdef GLYPH_DEBUG @@ -4229,11 +4232,13 @@ update_window (w, force_p) /* Fix the appearance of overlapping/overlapped rows. */ if (!paused_p && !w->pseudo_window_p) { +#ifdef HAVE_WINDOW_SYSTEM if (changed_p && rif->fix_overlapping_area) { redraw_overlapped_rows (w, yb); redraw_overlapping_rows (w, yb); } +#endif /* Make cursor visible at cursor position of W. */ set_window_cursor_after_update (w); From 8781c4d14eda87872a0b5d526479de09ebb062e6 Mon Sep 17 00:00:00 2001 From: "Kim F. Storm" Date: Fri, 7 Oct 2005 22:12:40 +0000 Subject: [PATCH 012/168] (Window Tree): Rename window-split-tree to window-tree. Rename manual section accordingly. --- lispref/windows.texi | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/lispref/windows.texi b/lispref/windows.texi index c806577c4b8..0ca7d69c9f9 100644 --- a/lispref/windows.texi +++ b/lispref/windows.texi @@ -30,7 +30,7 @@ displayed in windows. * Size of Window:: Accessing the size of a window. * Resizing Windows:: Changing the size of a window. * Coordinates and Windows:: Converting coordinates to windows. -* Window Split Tree:: The layout and sizes of all windows in a frame. +* Window Tree:: The layout and sizes of all windows in a frame. * Window Configurations:: Saving and restoring the state of the screen. * Window Hooks:: Hooks for scrolling, window size changes, redisplay going past a certain point, @@ -2168,19 +2168,19 @@ The function @code{coordinates-in-window-p} does not require a frame as argument because it always uses the frame that @var{window} is on. @end defun -@node Window Split Tree -@section The Window Split Tree -@cindex window split tree +@node Window Tree +@section The Window Tree +@cindex window tree - A @dfn{window split tree} specifies the layout, size, and relationship + A @dfn{window tree} specifies the layout, size, and relationship between all windows in one frame. -@defun split-window-tree &optional frame -This function returns the window split tree for frame @var{frame}. +@defun window-tree &optional frame +This function returns the window tree for frame @var{frame}. If @var{frame} is omitted, the selected frame is used. The return value is a list of the form @code{(@var{root} @var{mini})}, -where @var{root} represents the window split tree of the frame's +where @var{root} represents the window tree of the frame's root window, and @var{mini} is the frame's minibuffer window. If the root window is not split, @var{root} is the root window itself. From ef1b4c9ecd7ad3896a7ef1bdd7f24aeb47359ead Mon Sep 17 00:00:00 2001 From: "Kim F. Storm" Date: Fri, 7 Oct 2005 22:16:46 +0000 Subject: [PATCH 013/168] *** empty log message *** --- lispref/ChangeLog | 5 +++++ src/ChangeLog | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/lispref/ChangeLog b/lispref/ChangeLog index c07a955b1c9..897d4a0aec2 100644 --- a/lispref/ChangeLog +++ b/lispref/ChangeLog @@ -1,3 +1,8 @@ +2005-10-08 Kim F. Storm + + * windows.texi (Window Tree): Rename window-split-tree to window-tree. + Rename manual section accordingly. + 2005-10-04 Kim F. Storm * windows.texi (Window Split Tree): New section describing diff --git a/src/ChangeLog b/src/ChangeLog index 74635e6df75..74244702feb 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,7 @@ +2005-10-08 Kim F. Storm + + * window.c (window_tree, Fwindow_tree): Rename fns added 2005-10-04. + 2005-10-07 Kim F. Storm * dispnew.c (redraw_overlapped_rows, redraw_overlapping_rows) From c16e1cc347476e4995c2eac6e99d2781688e8fc5 Mon Sep 17 00:00:00 2001 From: "Kim F. Storm" Date: Fri, 7 Oct 2005 22:17:05 +0000 Subject: [PATCH 014/168] (window_tree, Fwindow_tree): Rename fns added 2005-10-04. --- src/window.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/window.c b/src/window.c index d282c2dd3f4..3e9354a7ba8 100644 --- a/src/window.c +++ b/src/window.c @@ -6232,7 +6232,7 @@ usage: (save-window-excursion BODY ...) */) ***********************************************************************/ static Lisp_Object -window_split_tree (w) +window_tree (w) struct window *w; { Lisp_Object tail = Qnil; @@ -6245,10 +6245,10 @@ window_split_tree (w) XSETWINDOW (wn, w); if (!NILP (w->hchild)) wn = Fcons (Qnil, Fcons (Fwindow_edges (wn), - window_split_tree (XWINDOW (w->hchild)))); + window_tree (XWINDOW (w->hchild)))); else if (!NILP (w->vchild)) wn = Fcons (Qt, Fcons (Fwindow_edges (wn), - window_split_tree (XWINDOW (w->vchild)))); + window_tree (XWINDOW (w->vchild)))); if (NILP (result)) { @@ -6268,12 +6268,12 @@ window_split_tree (w) -DEFUN ("window-split-tree", Fwindow_split_tree, Swindow_split_tree, +DEFUN ("window-tree", Fwindow_tree, Swindow_tree, 0, 1, 0, - doc: /* Return the window split tree for frame FRAME. + doc: /* Return the window tree for frame FRAME. The return value is a list of the form (ROOT MINI), where ROOT -represents the window split tree of the frame's root window, and MINI +represents the window tree of the frame's root window, and MINI is the frame's minibuffer window. If the root window is not split, ROOT is the root window itself. @@ -6301,7 +6301,7 @@ selected frame. */) if (!FRAME_LIVE_P (f)) return Qnil; - return window_split_tree (XWINDOW (FRAME_ROOT_WINDOW (f))); + return window_tree (XWINDOW (FRAME_ROOT_WINDOW (f))); } @@ -7110,7 +7110,7 @@ The selected frame is the one whose configuration has changed. */); defsubr (&Sset_window_configuration); defsubr (&Scurrent_window_configuration); defsubr (&Ssave_window_excursion); - defsubr (&Swindow_split_tree); + defsubr (&Swindow_tree); defsubr (&Sset_window_margins); defsubr (&Swindow_margins); defsubr (&Sset_window_fringes); From 2be96ef8f959ced275347ce76c34094451c65ced Mon Sep 17 00:00:00 2001 From: YAMAMOTO Mitsuharu Date: Sat, 8 Oct 2005 02:27:47 +0000 Subject: [PATCH 015/168] (MAX_CLIP_RECTS): New define. (struct _XGC): New member clip_region. (struct _XGC) [MAC_OSX && USE_ATSUI]: New members n_clip_rects and clip_rects. --- src/macgui.h | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/macgui.h b/src/macgui.h index 378dbcd9e5c..6e2adb092c6 100644 --- a/src/macgui.h +++ b/src/macgui.h @@ -192,6 +192,19 @@ typedef struct _XGC /* QuickDraw background color. */ RGBColor back_color; + +#define MAX_CLIP_RECTS 2 + /* QuickDraw clipping region. */ + RgnHandle clip_region; + +#if defined (MAC_OSX) && USE_ATSUI + /* Number of clipping rectangles used in Quartz 2D drawing. */ + int n_clip_rects; + + /* Clipping rectangles used in Quartz 2D drawing. The y-coordinate + is in QuickDraw's. */ + CGRect clip_rects[MAX_CLIP_RECTS]; +#endif } *GC; #define GCForeground (1L<<2) From 1c4ac540607ae99e769fa04064c0a179720afa40 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Mitsuharu Date: Sat, 8 Oct 2005 02:28:09 +0000 Subject: [PATCH 016/168] (GC_CLIP_REGION): New macro. (saved_port_clip_region): New variable. (mac_begin_clip, mac_end_clip): New functions. (XDrawLine, mac_erase_rectangle, mac_draw_bitmap, XFillRectangle) (mac_draw_rectangle, mac_draw_string_common, mac_copy_area) (mac_copy_area_with_mask, mac_scroll_area): Use them. (mac_set_clip_rectangle, mac_reset_clipping): Remove functions. [USE_ATSUI] (atsu_get_text_layout_with_text_ptr) [MAC_OS_X_VERSION_MAX_ALLOWED < 1020]: Specify kATSLineFractDisable. (mac_draw_string_common) [MAC_OSX && USE_ATSUI]: Clip to clipping rectangles stored in gc. (XFreeGC): Dispose clipping region. (mac_set_clip_rectangles, mac_reset_clip_rectangles): New functions. (x_draw_fringe_bitmap, x_set_glyph_string_clipping) (x_draw_relief_rect, x_draw_box_rect, x_draw_stretch_glyph_string) (x_draw_glyph_string, x_clip_to_row, x_draw_hollow_cursor) (x_draw_bar_cursor): Use them. (x_set_glyph_string_clipping): Use get_glyph_string_clip_rects to get multiple clipping rectangles. --- src/macterm.c | 208 +++++++++++++++++++++++++++++++++++--------------- 1 file changed, 145 insertions(+), 63 deletions(-) diff --git a/src/macterm.c b/src/macterm.c index 94a2c4d5434..7d75e962e9c 100644 --- a/src/macterm.c +++ b/src/macterm.c @@ -270,8 +270,38 @@ extern void menubar_selection_callback (FRAME_PTR, int); #define GC_FORE_COLOR(gc) (&(gc)->fore_color) #define GC_BACK_COLOR(gc) (&(gc)->back_color) #define GC_FONT(gc) ((gc)->xgcv.font) +#define GC_CLIP_REGION(gc) ((gc)->clip_region) #define MAC_WINDOW_NORMAL_GC(w) (((mac_output *) GetWRefCon (w))->normal_gc) +static RgnHandle saved_port_clip_region = NULL; + +static void +mac_begin_clip (region) + RgnHandle region; +{ + static RgnHandle new_region = NULL; + + if (saved_port_clip_region == NULL) + saved_port_clip_region = NewRgn (); + if (new_region == NULL) + new_region = NewRgn (); + + if (region) + { + GetClip (saved_port_clip_region); + SectRgn (saved_port_clip_region, region, new_region); + SetClip (new_region); + } +} + +static void +mac_end_clip (region) + RgnHandle region; +{ + if (region) + SetClip (saved_port_clip_region); +} + /* X display function emulation */ @@ -297,8 +327,10 @@ XDrawLine (display, w, gc, x1, y1, x2, y2) RGBForeColor (GC_FORE_COLOR (gc)); + mac_begin_clip (GC_CLIP_REGION (gc)); MoveTo (x1, y1); LineTo (x2, y2); + mac_end_clip (GC_CLIP_REGION (gc)); } void @@ -339,7 +371,9 @@ mac_erase_rectangle (w, gc, x, y, width, height) RGBBackColor (GC_BACK_COLOR (gc)); SetRect (&r, x, y, x + width, y + height); + mac_begin_clip (GC_CLIP_REGION (gc)); EraseRect (&r); + mac_end_clip (GC_CLIP_REGION (gc)); RGBBackColor (GC_BACK_COLOR (MAC_WINDOW_NORMAL_GC (w))); } @@ -406,6 +440,7 @@ mac_draw_bitmap (display, w, gc, x, y, width, height, bits, overlay_p) RGBBackColor (GC_BACK_COLOR (gc)); SetRect (&r, x, y, x + width, y + height); + mac_begin_clip (GC_CLIP_REGION (gc)); #if TARGET_API_MAC_CARBON LockPortBits (GetWindowPort (w)); CopyBits (&bitmap, GetPortBitMapForCopyBits (GetWindowPort (w)), @@ -415,41 +450,12 @@ mac_draw_bitmap (display, w, gc, x, y, width, height, bits, overlay_p) CopyBits (&bitmap, &(w->portBits), &(bitmap.bounds), &r, overlay_p ? srcOr : srcCopy, 0); #endif /* not TARGET_API_MAC_CARBON */ + mac_end_clip (GC_CLIP_REGION (gc)); RGBBackColor (GC_BACK_COLOR (MAC_WINDOW_NORMAL_GC (w))); } -/* Mac replacement for XSetClipRectangles. */ - -static void -mac_set_clip_rectangle (display, w, r) - Display *display; - WindowPtr w; - Rect *r; -{ - SetPortWindowPort (w); - - ClipRect (r); -} - - -/* Mac replacement for XSetClipMask. */ - -static void -mac_reset_clipping (display, w) - Display *display; - WindowPtr w; -{ - Rect r; - - SetPortWindowPort (w); - - SetRect (&r, -32767, -32767, 32767, 32767); - ClipRect (&r); -} - - /* Mac replacement for XCreateBitmapFromBitmapData. */ static void @@ -577,7 +583,9 @@ XFillRectangle (display, w, gc, x, y, width, height) RGBForeColor (GC_FORE_COLOR (gc)); SetRect (&r, x, y, x + width, y + height); + mac_begin_clip (GC_CLIP_REGION (gc)); PaintRect (&r); /* using foreground color of gc */ + mac_end_clip (GC_CLIP_REGION (gc)); } @@ -625,7 +633,9 @@ mac_draw_rectangle (display, w, gc, x, y, width, height) RGBForeColor (GC_FORE_COLOR (gc)); SetRect (&r, x, y, x + width + 1, y + height + 1); + mac_begin_clip (GC_CLIP_REGION (gc)); FrameRect (&r); /* using foreground color of gc */ + mac_end_clip (GC_CLIP_REGION (gc)); } @@ -678,7 +688,7 @@ atsu_get_text_layout_with_text_ptr (text, text_length, style, text_layout) #if MAC_OS_X_VERSION_MAX_ALLOWED >= 1020 kATSLineDisableAllLayoutOperations | kATSLineUseDeviceMetrics #else - kATSLineIsDisplayOnly + kATSLineIsDisplayOnly | kATSLineFractDisable #endif ; ATSUAttributeValuePtr values[] = {&line_layout}; @@ -782,10 +792,12 @@ mac_draw_string_common (display, w, gc, x, y, buf, nchars, mode, if (NILP (Vmac_use_core_graphics)) { #endif + mac_begin_clip (GC_CLIP_REGION (gc)); MoveTo (x, y); ATSUDrawText (text_layout, kATSUFromTextBeginning, kATSUToTextEnd, kATSUUseGrafPortPenLoc, kATSUUseGrafPortPenLoc); + mac_end_clip (GC_CLIP_REGION (gc)); #ifdef MAC_OSX } else @@ -793,7 +805,6 @@ mac_draw_string_common (display, w, gc, x, y, buf, nchars, mode, CGrafPtr port; CGContextRef context; Rect rect; - RgnHandle region = NewRgn (); float port_height; ATSUAttributeTag tags[] = {kATSUCGContextTag}; ByteCount sizes[] = {sizeof (CGContextRef)}; @@ -803,16 +814,15 @@ mac_draw_string_common (display, w, gc, x, y, buf, nchars, mode, QDBeginCGContext (port, &context); GetPortBounds (port, &rect); port_height = rect.bottom - rect.top; - GetClip (region); - GetRegionBounds (region, &rect); - /* XXX: This is not correct if the clip region is not a - simple rectangle. */ - CGContextClipToRect (context, - CGRectMake (rect.left, - port_height - rect.bottom, - rect.right - rect.left, - rect.bottom - rect.top)); - DisposeRgn (region); + if (gc->n_clip_rects) + { + CGContextTranslateCTM (context, 0, port_height); + CGContextScaleCTM (context, 1, -1); + CGContextClipToRects (context, gc->clip_rects, + gc->n_clip_rects); + CGContextScaleCTM (context, 1, -1); + CGContextTranslateCTM (context, 0, -port_height); + } CGContextSetRGBFillColor (context, RED_FROM_ULONG (gc->xgcv.foreground) / 255.0, @@ -843,8 +853,10 @@ mac_draw_string_common (display, w, gc, x, y, buf, nchars, mode, TextFace (GC_FONT (gc)->mac_fontface); TextMode (mode); + mac_begin_clip (GC_CLIP_REGION (gc)); MoveTo (x, y); DrawText (buf, 0, nchars * bytes_per_char); + mac_end_clip (GC_CLIP_REGION (gc)); #if USE_ATSUI } #endif @@ -943,6 +955,7 @@ mac_copy_area (display, src, dest, gc, src_x, src_y, width, height, dest_x, ForeColor (blackColor); BackColor (whiteColor); + mac_begin_clip (GC_CLIP_REGION (gc)); LockPixels (GetGWorldPixMap (src)); #if TARGET_API_MAC_CARBON LockPortBits (GetWindowPort (dest)); @@ -955,6 +968,7 @@ mac_copy_area (display, src, dest, gc, src_x, src_y, width, height, dest_x, &src_r, &dest_r, srcCopy, 0); #endif /* not TARGET_API_MAC_CARBON */ UnlockPixels (GetGWorldPixMap (src)); + mac_end_clip (GC_CLIP_REGION (gc)); RGBBackColor (GC_BACK_COLOR (MAC_WINDOW_NORMAL_GC (dest))); } @@ -981,6 +995,7 @@ mac_copy_area_with_mask (display, src, mask, dest, gc, src_x, src_y, ForeColor (blackColor); BackColor (whiteColor); + mac_begin_clip (GC_CLIP_REGION (gc)); LockPixels (GetGWorldPixMap (src)); LockPixels (GetGWorldPixMap (mask)); #if TARGET_API_MAC_CARBON @@ -995,6 +1010,7 @@ mac_copy_area_with_mask (display, src, mask, dest, gc, src_x, src_y, #endif /* not TARGET_API_MAC_CARBON */ UnlockPixels (GetGWorldPixMap (mask)); UnlockPixels (GetGWorldPixMap (src)); + mac_end_clip (GC_CLIP_REGION (gc)); RGBBackColor (GC_BACK_COLOR (MAC_WINDOW_NORMAL_GC (dest))); } @@ -1031,7 +1047,9 @@ mac_scroll_area (display, w, gc, src_x, src_y, width, height, dest_x, dest_y) color mapping in CopyBits. Otherwise, it will be slow. */ ForeColor (blackColor); BackColor (whiteColor); + mac_begin_clip (GC_CLIP_REGION (gc)); CopyBits (&(w->portBits), &(w->portBits), &src_r, &dest_r, srcCopy, 0); + mac_end_clip (GC_CLIP_REGION (gc)); RGBBackColor (GC_BACK_COLOR (MAC_WINDOW_NORMAL_GC (w))); #endif /* not TARGET_API_MAC_CARBON */ @@ -1166,6 +1184,8 @@ XFreeGC (display, gc) Display *display; GC gc; { + if (gc->clip_region) + DisposeRgn (gc->clip_region); xfree (gc); } @@ -1236,6 +1256,70 @@ XSetFont (display, gc, font) } +/* Mac replacement for XSetClipRectangles. */ + +static void +mac_set_clip_rectangles (display, gc, rectangles, n) + Display *display; + GC gc; + Rect *rectangles; + int n; +{ + int i; + + if (n < 0 || n > MAX_CLIP_RECTS) + abort (); + if (n == 0) + { + if (gc->clip_region) + { + DisposeRgn (gc->clip_region); + gc->clip_region = NULL; + } + } + else + { + if (gc->clip_region == NULL) + gc->clip_region = NewRgn (); + RectRgn (gc->clip_region, rectangles); + if (n > 1) + { + RgnHandle region = NewRgn (); + + for (i = 1; i < n; i++) + { + RectRgn (region, rectangles + i); + UnionRgn (gc->clip_region, region, gc->clip_region); + } + DisposeRgn (region); + } + } +#if defined (MAC_OSX) && USE_ATSUI + gc->n_clip_rects = n; + + for (i = 0; i < n; i++) + { + Rect *rect = rectangles + i; + + gc->clip_rects[i] = CGRectMake (rect->left, rect->top, + rect->right - rect->left, + rect->bottom - rect->top); + } +#endif +} + + +/* Mac replacement for XSetClipMask. */ + +static INLINE void +mac_reset_clip_rectangles (display, gc) + Display *display; + GC gc; +{ + mac_set_clip_rectangles (display, gc, NULL, 0); +} + + /* Mac replacement for XSetWindowBackground. */ void @@ -1647,7 +1731,7 @@ x_draw_fringe_bitmap (w, row, p) XSetForeground (display, face->gc, gcv.foreground); } - mac_reset_clipping (display, window); + mac_reset_clip_rectangles (display, gc); } @@ -2122,9 +2206,11 @@ static INLINE void x_set_glyph_string_clipping (s) struct glyph_string *s; { - Rect r; - get_glyph_string_clip_rect (s, &r); - mac_set_clip_rectangle (s->display, s->window, &r); + Rect rects[MAX_CLIP_RECTS]; + int n; + + n = get_glyph_string_clip_rects (s, rects, MAX_CLIP_RECTS); + mac_set_clip_rectangles (s->display, s->gc, rects, n); } @@ -2341,7 +2427,7 @@ x_draw_glyph_string_foreground (s) { if (s->two_byte_p) XDrawImageString16 (s->display, s->window, s->gc, x, - s->ybase - boff, s->char2b, s->nchars); + s->ybase - boff, s->char2b, s->nchars); else XDrawImageString (s->display, s->window, s->gc, x, s->ybase - boff, char1b, s->nchars); @@ -2749,7 +2835,7 @@ x_draw_relief_rect (f, left_x, top_y, right_x, bottom_y, width, gc = f->output_data.mac->white_relief.gc; else gc = f->output_data.mac->black_relief.gc; - mac_set_clip_rectangle (dpy, window, clip_rect); + mac_set_clip_rectangles (dpy, gc, clip_rect, 1); /* Top. */ if (top_p) @@ -2764,13 +2850,12 @@ x_draw_relief_rect (f, left_x, top_y, right_x, bottom_y, width, XDrawLine (dpy, window, gc, left_x + i, top_y + i, left_x + i, bottom_y - i); - mac_reset_clipping (dpy, window); + mac_reset_clip_rectangles (dpy, gc); if (raised_p) gc = f->output_data.mac->black_relief.gc; else gc = f->output_data.mac->white_relief.gc; - mac_set_clip_rectangle (dpy, window, - clip_rect); + mac_set_clip_rectangles (dpy, gc, clip_rect, 1); /* Bottom. */ if (bot_p) @@ -2785,7 +2870,7 @@ x_draw_relief_rect (f, left_x, top_y, right_x, bottom_y, width, XDrawLine (dpy, window, gc, right_x - i, top_y + i + 1, right_x - i, bottom_y - i - 1); - mac_reset_clipping (dpy, window); + mac_reset_clip_rectangles (dpy, gc); } @@ -2807,7 +2892,7 @@ x_draw_box_rect (s, left_x, top_y, right_x, bottom_y, width, XGetGCValues (s->display, s->gc, GCForeground, &xgcv); XSetForeground (s->display, s->gc, s->face->box_color); - mac_set_clip_rectangle (s->display, s->window, clip_rect); + mac_set_clip_rectangles (s->display, s->gc, clip_rect, 1); /* Top. */ XFillRectangle (s->display, s->window, s->gc, @@ -2828,7 +2913,7 @@ x_draw_box_rect (s, left_x, top_y, right_x, bottom_y, width, right_x - width + 1, top_y, width, bottom_y - top_y + 1); XSetForeground (s->display, s->gc, xgcv.foreground); - mac_reset_clipping (s->display, s->window); + mac_reset_clip_rectangles (s->display, s->gc); } @@ -3182,7 +3267,6 @@ x_draw_image_glyph_string (s) x_set_glyph_string_clipping (s); mac_copy_area (s->display, pixmap, s->window, s->gc, 0, 0, s->background_width, s->height, s->x, s->y); - mac_reset_clipping (s->display, s->window); XFreePixmap (s->display, pixmap); } else @@ -3234,7 +3318,7 @@ x_draw_stretch_glyph_string (s) gc = s->face->gc; get_glyph_string_clip_rect (s, &r); - mac_set_clip_rectangle (s->display, s->window, &r); + mac_set_clip_rectangles (s->display, gc, &r, 1); #if 0 /* MAC_TODO: stipple */ if (s->face->stipple) @@ -3247,8 +3331,6 @@ x_draw_stretch_glyph_string (s) else #endif /* MAC_TODO */ mac_erase_rectangle (s->window, gc, x, y, w, h); - - mac_reset_clipping (s->display, s->window); } } else if (!s->background_filled_p) @@ -3397,7 +3479,7 @@ x_draw_glyph_string (s) } /* Reset clipping. */ - mac_reset_clipping (s->display, s->window); + mac_reset_clip_rectangles (s->display, s->gc); } /* Shift display to make room for inserted glyphs. */ @@ -5270,7 +5352,7 @@ x_clip_to_row (w, row, area, gc) clip_rect.right = clip_rect.left + window_width; clip_rect.bottom = clip_rect.top + row->visible_height; - mac_set_clip_rectangle (FRAME_MAC_DISPLAY (f), FRAME_MAC_WINDOW (f), &clip_rect); + mac_set_clip_rectangles (FRAME_MAC_DISPLAY (f), gc, &clip_rect, 1); } @@ -5313,7 +5395,7 @@ x_draw_hollow_cursor (w, row) /* Set clipping, draw the rectangle, and reset clipping again. */ x_clip_to_row (w, row, TEXT_AREA, gc); mac_draw_rectangle (dpy, FRAME_MAC_WINDOW (f), gc, x, y, wd, h); - mac_reset_clipping (dpy, FRAME_MAC_WINDOW (f)); + mac_reset_clip_rectangles (dpy, gc); } @@ -5397,7 +5479,7 @@ x_draw_bar_cursor (w, row, width, kind) cursor_glyph->pixel_width, width); - mac_reset_clipping (dpy, FRAME_MAC_WINDOW (f)); + mac_reset_clip_rectangles (dpy, gc); } } @@ -7610,7 +7692,7 @@ XLoadQueryFont (Display *dpy, char *fontname) ATSUFontFeatureType types[] = {kAllTypographicFeaturesType}; ATSUFontFeatureSelector selectors[] = {kAllTypeFeaturesOffSelector}; Lisp_Object font_id_cons; - + font_id_cons = Fgethash (Fdowncase (make_unibyte_string (mfontname, strlen (mfontname))), From 9dc9af1b8bcc976818b84bff133d9f5dd0d3ce0f Mon Sep 17 00:00:00 2001 From: YAMAMOTO Mitsuharu Date: Sat, 8 Oct 2005 02:28:37 +0000 Subject: [PATCH 017/168] (mac_term_init): Add types to extern. (struct mac_output): Remove members mWP and pending_menu_activation. Put members scroll_bar_foreground_pixel and scroll_bar_background_pixel in #if 0. (FRAME_MAC_WINDOW, FRAME_X_WINDOW): Use window_desc. --- src/macterm.h | 84 +++++++++------------------------------------------ 1 file changed, 14 insertions(+), 70 deletions(-) diff --git a/src/macterm.h b/src/macterm.h index b3855f142c6..e7a5fc2450e 100644 --- a/src/macterm.h +++ b/src/macterm.h @@ -39,8 +39,8 @@ Boston, MA 02110-1301, USA. */ #define BLACK_PIX_DEFAULT(f) RGB_TO_ULONG(0,0,0) #define WHITE_PIX_DEFAULT(f) RGB_TO_ULONG(255,255,255) -#define FONT_WIDTH(f) ((f)->max_bounds.width) -#define FONT_HEIGHT(f) ((f)->ascent + (f)->descent) +#define FONT_WIDTH(f) ((f)->max_bounds.width) +#define FONT_HEIGHT(f) ((f)->ascent + (f)->descent) #define FONT_BASE(f) ((f)->ascent) #define FONT_DESCENT(f) ((f)->descent) @@ -82,16 +82,8 @@ struct mac_display_info /* Whether the screen supports color */ int color_p; -#if 0 - /* Number of bits per pixel on this screen. */ - int n_cbits; -#endif - /* Dimensions of this screen. */ int height, width; -#if 0 - int height_in,width_in; -#endif /* Mask of things that cause the mouse to be grabbed. */ int grabbed; @@ -111,33 +103,12 @@ struct mac_display_info /* Resource data base */ XrmDatabase xrdb; -#if 0 - /* color palette information. */ - int has_palette; - struct w32_palette_entry * color_list; - unsigned num_colors; - HPALETTE palette; - - /* deferred action flags checked when starting frame update. */ - int regen_palette; - - /* Keystroke that has been faked by Emacs and will be ignored when - received; value is reset after key is received. */ - int faked_key; - -#endif - /* A table of all the fonts we have already loaded. */ struct font_info *font_table; /* The current capacity of font_table. */ int font_table_size; - /* The number of fonts actually stored in the font table. - font_table[n] is used and valid iff 0 <= n < n_fonts. 0 <= - n_fonts <= font_table_size. and font_table[i].name != 0. */ - int n_fonts; - /* Minimum width over all characters in all fonts in font_table. */ int smallest_char_width; @@ -148,7 +119,7 @@ struct mac_display_info GC scratch_cursor_gc; /* These variables describe the range of text currently shown in its - mouse-face, together with the window they apply to. As long as + mouse-face, together with the window they apply to. As long as the mouse stays within this range, we need not redraw anything on its account. Rows and columns are glyph matrix positions in MOUSE_FACE_WINDOW. */ @@ -168,7 +139,6 @@ struct mac_display_info /* FRAME and X, Y position of mouse when last checked for highlighting. X and Y can be negative or out of range for the frame. */ struct frame *mouse_face_mouse_frame; - int mouse_face_mouse_x, mouse_face_mouse_y; /* Nonzero means defer mouse-motion highlighting. */ @@ -181,6 +151,11 @@ struct mac_display_info char *mac_id_name; + /* The number of fonts actually stored in the font table. + font_table[n] is used and valid iff 0 <= n < n_fonts. 0 <= + n_fonts <= font_table_size and font_table[i].name != 0. */ + int n_fonts; + /* Pointer to bitmap records. */ struct mac_bitmap_record *bitmaps; @@ -237,7 +212,7 @@ extern int unibyte_display_via_language_environment; extern struct x_display_info *x_display_info_for_display P_ ((Display *)); extern struct x_display_info *x_display_info_for_name P_ ((Lisp_Object)); -extern struct mac_display_info *mac_term_init (); +extern struct mac_display_info *mac_term_init P_ ((Lisp_Object, char *, char *)); extern Lisp_Object x_list_fonts P_ ((struct frame *, Lisp_Object, int, int)); extern struct font_info *x_get_font_info P_ ((struct frame *f, int)); @@ -262,33 +237,8 @@ struct mac_output { /* Menubar "widget" handle. */ int menubar_widget; - Window mWP; /* pointer to QuickDraw window */ FRAME_PTR mFP; /* points back to the frame struct */ -#if 0 - int mNumCols; /* number of characters per column */ - int mNumRows; /* number of characters per row */ - int mLineHeight; /* height of one line of text in pixels */ - int mCharWidth; /* width of one character in pixels */ - int mHomeX; /* X pixel coordinate of lower left - corner of character at (0, 0) */ - int mHomeY; /* Y pixel coordinate of lower left - corner of character at (0, 0) */ - int mHighlight; /* current highlight state (0 = off). */ - int mTermWinSize; /* num of lines from top of window - affected by ins_del_lines; set by - set_terminal_window. */ -#endif /* 0 */ - -#if 0 - /* stuffs used by xfaces.c */ - struct face **param_faces; - int n_param_faces; - struct face **computed_faces; - int n_computed_faces; - int size_computed_faces; -#endif - /* Here are the Graphics Contexts for the default font. */ GC normal_gc; /* Normal video */ GC reverse_gc; /* Reverse video */ @@ -322,6 +272,7 @@ struct mac_output { unsigned long mouse_pixel; unsigned long cursor_foreground_pixel; +#if 0 /* Foreground color for scroll bars. A value of -1 means use the default (black for non-toolkit scroll bars). */ unsigned long scroll_bar_foreground_pixel; @@ -330,6 +281,7 @@ struct mac_output { default (background color of the frame for non-toolkit scroll bars). */ unsigned long scroll_bar_background_pixel; +#endif /* Descriptor for the cursor in use for this window. */ Cursor text_cursor; @@ -357,10 +309,6 @@ struct mac_output { ControlRef hourglass_control; #endif -#if 0 - DWORD dwStyle; -#endif - /* This is the Emacs structure for the display this frame is on. */ /* struct w32_display_info *display_info; */ @@ -377,10 +325,6 @@ struct mac_output { /* Nonzero means a menu command is being processed. */ char menu_command_in_progress; - /* Nonzero means menubar is about to become active, but should be - brought up to date first. */ - volatile char pending_menu_activation; - /* Relief GCs, colors etc. */ struct relief { @@ -404,8 +348,8 @@ typedef struct mac_output mac_output; #define FRAME_X_OUTPUT(f) ((f)->output_data.mac) /* Return the Mac window used for displaying data in frame F. */ -#define FRAME_MAC_WINDOW(f) ((f)->output_data.mac->mWP) -#define FRAME_X_WINDOW(f) ((f)->output_data.mac->mWP) +#define FRAME_MAC_WINDOW(f) ((f)->output_data.mac->window_desc) +#define FRAME_X_WINDOW(f) ((f)->output_data.mac->window_desc) #define FRAME_FOREGROUND_PIXEL(f) ((f)->output_data.x->foreground_pixel) #define FRAME_BACKGROUND_PIXEL(f) ((f)->output_data.x->background_pixel) @@ -531,7 +475,7 @@ struct scroll_bar { /* Return the inside width of a vertical scroll bar, given the outside width. */ -#define VERTICAL_SCROLL_BAR_INSIDE_WIDTH(f,width) \ +#define VERTICAL_SCROLL_BAR_INSIDE_WIDTH(f, width) \ ((width) \ - VERTICAL_SCROLL_BAR_LEFT_BORDER \ - VERTICAL_SCROLL_BAR_RIGHT_BORDER \ From 61e62f5f738f8a195c11daf061ba165f9adf2d0b Mon Sep 17 00:00:00 2001 From: YAMAMOTO Mitsuharu Date: Sat, 8 Oct 2005 02:29:25 +0000 Subject: [PATCH 018/168] (x_create_gc, x_free_gc) [MAC_OS]: Add BLOCK_INPUT. Add debug code. --- src/ChangeLog | 36 ++++++++++++++++++++++++++++++++++++ src/xfaces.c | 6 ++++++ 2 files changed, 42 insertions(+) diff --git a/src/ChangeLog b/src/ChangeLog index 74244702feb..d466f5d3bf2 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,39 @@ +2005-10-08 YAMAMOTO Mitsuharu + + * macgui.h (MAX_CLIP_RECTS): New define. + (struct _XGC): New member clip_region. + (struct _XGC) [MAC_OSX && USE_ATSUI]: New members n_clip_rects and + clip_rects. + + * macterm.c (GC_CLIP_REGION): New macro. + (saved_port_clip_region): New variable. + (mac_begin_clip, mac_end_clip): New functions. + (XDrawLine, mac_erase_rectangle, mac_draw_bitmap, XFillRectangle) + (mac_draw_rectangle, mac_draw_string_common, mac_copy_area) + (mac_copy_area_with_mask, mac_scroll_area): Use them. + (mac_set_clip_rectangle, mac_reset_clipping): Remove functions. + [USE_ATSUI] (atsu_get_text_layout_with_text_ptr) + [MAC_OS_X_VERSION_MAX_ALLOWED < 1020]: Specify kATSLineFractDisable. + (mac_draw_string_common) [MAC_OSX && USE_ATSUI]: Clip to clipping + rectangles stored in gc. + (XFreeGC): Dispose clipping region. + (mac_set_clip_rectangles, mac_reset_clip_rectangles): New functions. + (x_draw_fringe_bitmap, x_set_glyph_string_clipping) + (x_draw_relief_rect, x_draw_box_rect, x_draw_stretch_glyph_string) + (x_draw_glyph_string, x_clip_to_row, x_draw_hollow_cursor) + (x_draw_bar_cursor): Use them. + (x_set_glyph_string_clipping): Use get_glyph_string_clip_rects to + get multiple clipping rectangles. + + * macterm.h (mac_term_init): Add types to extern. + (struct mac_output): Remove members mWP and pending_menu_activation. + Put members scroll_bar_foreground_pixel and + scroll_bar_background_pixel in #if 0. + (FRAME_MAC_WINDOW, FRAME_X_WINDOW): Use window_desc. + + * xfaces.c (x_create_gc, x_free_gc) [MAC_OS]: Add BLOCK_INPUT. + Add debug code. + 2005-10-08 Kim F. Storm * window.c (window_tree, Fwindow_tree): Rename fns added 2005-10-04. diff --git a/src/xfaces.c b/src/xfaces.c index 49ba6d334ec..f13fdf74909 100644 --- a/src/xfaces.c +++ b/src/xfaces.c @@ -790,7 +790,10 @@ x_create_gc (f, mask, xgcv) XGCValues *xgcv; { GC gc; + BLOCK_INPUT; gc = XCreateGC (FRAME_MAC_DISPLAY (f), FRAME_MAC_WINDOW (f), mask, xgcv); + UNBLOCK_INPUT; + IF_DEBUG (++ngcs); return gc; } @@ -799,7 +802,10 @@ x_free_gc (f, gc) struct frame *f; GC gc; { + BLOCK_INPUT; + IF_DEBUG (xassert (--ngcs >= 0)); XFreeGC (FRAME_MAC_DISPLAY (f), gc); + UNBLOCK_INPUT; } #endif /* MAC_OS */ From 010134536d1dd32344c713a90c000a9d6f70f729 Mon Sep 17 00:00:00 2001 From: Nick Roberts Date: Sat, 8 Oct 2005 02:55:16 +0000 Subject: [PATCH 019/168] *** empty log message *** --- man/ChangeLog | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/man/ChangeLog b/man/ChangeLog index c2dbbc22328..843a8aa7833 100644 --- a/man/ChangeLog +++ b/man/ChangeLog @@ -1,3 +1,10 @@ +2005-10-08 Nick Roberts + + * speedbar.texi (Introduction): Describe new location of speedbar + on menubar. + (Basic Key Bindings): Remove descriptions of bindings that have + been removed. + 2005-10-07 Nick Roberts * building.texi (GDB Graphical Interface): Add variables and From 339355e3438be65fb9cf4f92b8d04f1dd69aa9eb Mon Sep 17 00:00:00 2001 From: Nick Roberts Date: Sat, 8 Oct 2005 02:55:58 +0000 Subject: [PATCH 020/168] (Introduction): Describe new location of speedbar on menubar. (Basic Key Bindings): Remove descriptions of bindings that have been removed. --- man/speedbar.texi | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/man/speedbar.texi b/man/speedbar.texi index 469de905a24..4dc2bcea7d2 100644 --- a/man/speedbar.texi +++ b/man/speedbar.texi @@ -90,13 +90,13 @@ on. @xref{Basic Navigation}. @chapter Introduction @cindex introduction -To start using speedbar use the command @kbd{M-x speedbar RET} or select -it from the Tools menu in versions of Emacs with speedbar installed by -default. This command will open a new frame to summarize the local -files. On X Window systems or on MS-Windows, speedbar's frame is twenty -characters wide, and will mimic the height of the frame from which it -was started. It positions itself to the left or right of the frame you -started it from. +To start using speedbar use the command @kbd{M-x speedbar RET} or +select it from the @samp{Options->Show/Hide} sub-menu. This command +will open a new frame to summarize the local files. On X Window +systems or on MS-Windows, speedbar's frame is twenty characters wide, +and will mimic the height of the frame from which it was started. It +positions itself to the left or right of the frame you started it +from. To use speedbar effectively, it is important to understand its relationship with the frame you started it from. This frame is the @@ -141,9 +141,6 @@ to use. These key bindings are common across all modes: @table @kbd -@item delete, SPC -@cindex scrolling in speedbar -Scroll up and down one page. @item Q @cindex quitting speedbar Quit speedbar, and kill the frame. From 61bb15ebbf8e2e70493f5bc336ba7001802196ea Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Sat, 8 Oct 2005 04:13:32 +0000 Subject: [PATCH 021/168] *** empty log message *** --- admin/FOR-RELEASE | 2 -- 1 file changed, 2 deletions(-) diff --git a/admin/FOR-RELEASE b/admin/FOR-RELEASE index 3515f78d04a..15c186556a9 100644 --- a/admin/FOR-RELEASE +++ b/admin/FOR-RELEASE @@ -65,8 +65,6 @@ back burner waiting for a legal comment or an alternate implementation * BUGS -* Pierre Albarede's Aug 30 bug report about C-v and long lines. - ** Make a new interface for specifying window configurations so that we can fix bugs in balance-windows. From 6f1371898766cdf01267e8b01427ce1cedfc7f70 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Sat, 8 Oct 2005 04:46:48 +0000 Subject: [PATCH 022/168] *** empty log message *** --- lisp/ChangeLog | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index dd1f1c82212..d678198ff34 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,9 @@ +2005-10-07 Glenn Morris + + * progmodes/f90.el (f90-keywords-re, f90-mode): Doc fix. + (f90-font-lock-keywords-2, f90-mode-abbrev-table): Add `double + precision'. + 2005-10-07 Romain Francoise * ibuf-ext.el (ibuffer-do-shell-command-pipe) From 9877fcf1d069db3b98f6ec36e77123d1eaeb2dfb Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Sat, 8 Oct 2005 04:47:23 +0000 Subject: [PATCH 023/168] (f90-keywords-re, f90-mode): Doc fix. (f90-font-lock-keywords-2, f90-mode-abbrev-table): Add `double precision'. --- lisp/progmodes/f90.el | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lisp/progmodes/f90.el b/lisp/progmodes/f90.el index 5e2a3705ef3..676833cdedc 100644 --- a/lisp/progmodes/f90.el +++ b/lisp/progmodes/f90.el @@ -4,7 +4,7 @@ ;; Free Software Foundation, Inc. ;; Author: Torbj\"orn Einarsson -;; Maintainer: Glenn Morris +;; Maintainer: Glenn Morris ;; Keywords: fortran, f90, languages ;; This file is part of GNU Emacs. @@ -276,7 +276,7 @@ The options are 'downcase-word, 'upcase-word, 'capitalize-word and nil." "target" "then" "type" "use" "where" "while" "write" ;; F95 keywords. "elemental" "pure") 'words) - "Regexp for F90 keywords.") + "Regexp used by the function `f90-change-keywords'.") (defconst f90-keywords-level-3-re (regexp-opt @@ -370,7 +370,8 @@ subroutine\\)\\|use\\|call\\)\\>[ \t]*\\(\\sw+\\)?" (list ;; Variable declarations (avoid the real function call). '("^[ \t0-9]*\\(real\\|integer\\|c\\(haracter\\|omplex\\)\\|\ -logical\\|type[ \t]*(\\sw+)\\)\\(.*::\\|[ \t]*(.*)\\)?\\([^&!\n]*\\)" +logical\\|double[ \t]*precision\\|*type[ \t]*(\\sw+)\\)\ +\\(.*::\\|[ \t]*(.*)\\)?\\([^&!\n]*\\)" (1 font-lock-type-face t) (4 font-lock-variable-name-face t)) ;; do, if, select, where, and forall constructs. '("\\<\\(end[ \t]*\\(do\\|if\\|select\\|forall\\|where\\)\\)\\>\ @@ -381,7 +382,7 @@ do\\([ \t]*while\\)?\\|select[ \t]*case\\|where\\|forall\\)\\)\\>" (2 font-lock-constant-face nil t) (3 font-lock-keyword-face)) ;; Implicit declaration. '("\\<\\(implicit\\)[ \t]*\\(real\\|integer\\|c\\(haracter\\|omplex\\)\ -\\|logical\\|type[ \t]*(\\sw+)\\|none\\)[ \t]*" +\\|logical\\|double[ \t]*precision\\|type[ \t]*(\\sw+)\\|none\\)[ \t]*" (1 font-lock-keyword-face) (2 font-lock-type-face)) '("\\<\\(namelist\\|common\\)[ \t]*\/\\(\\sw+\\)?\/" (1 font-lock-keyword-face) (2 font-lock-constant-face nil t)) @@ -698,6 +699,7 @@ Used in the F90 entry in `hs-special-modes-alist'.") ("`de" "deallocate" ) ("`df" "define" ) ("`di" "dimension" ) + ("`dp" "double precision") ("`dw" "do while" ) ("`el" "else" ) ("`eli" "else if" ) @@ -796,8 +798,6 @@ Variables controlling indentation style and extra features: The possibilities are 'downcase-word, 'upcase-word, 'capitalize-word. `f90-leave-line-no' Do not left-justify line numbers (default nil). -`f90-keywords-re' - List of keywords used for highlighting/upcase-keywords etc. Turning on F90 mode calls the value of the variable `f90-mode-hook' with no args, if that value is non-nil." From aff88519c04d6935b353e0aa8bfd6632ebd3bdd1 Mon Sep 17 00:00:00 2001 From: Glenn Morris Date: Sat, 8 Oct 2005 04:49:48 +0000 Subject: [PATCH 024/168] Update maintainer email address. --- lisp/calendar/appt.el | 2 +- lisp/calendar/cal-iso.el | 2 +- lisp/calendar/cal-menu.el | 2 +- lisp/calendar/cal-move.el | 2 +- lisp/calendar/cal-x.el | 2 +- lisp/calendar/calendar.el | 2 +- lisp/calendar/diary-lib.el | 2 +- lisp/calendar/holidays.el | 2 +- lisp/calendar/solar.el | 2 +- lisp/mail/supercite.el | 2 +- lisp/progmodes/fortran.el | 2 +- 11 files changed, 11 insertions(+), 11 deletions(-) diff --git a/lisp/calendar/appt.el b/lisp/calendar/appt.el index ccced635976..ae2fc3bd8e1 100644 --- a/lisp/calendar/appt.el +++ b/lisp/calendar/appt.el @@ -3,7 +3,7 @@ ;; Copyright (C) 1989, 1990, 1994, 1998, 2004 Free Software Foundation, Inc. ;; Author: Neil Mager -;; Maintainer: Glenn Morris +;; Maintainer: Glenn Morris ;; Keywords: calendar ;; This file is part of GNU Emacs. diff --git a/lisp/calendar/cal-iso.el b/lisp/calendar/cal-iso.el index b32bd4eb2df..bee3e1ec482 100644 --- a/lisp/calendar/cal-iso.el +++ b/lisp/calendar/cal-iso.el @@ -3,7 +3,7 @@ ;; Copyright (C) 1995, 1997, 2004 Free Software Foundation, Inc. ;; Author: Edward M. Reingold -;; Maintainer: Glenn Morris +;; Maintainer: Glenn Morris ;; Keywords: calendar ;; Human-Keywords: ISO calendar, calendar, diary diff --git a/lisp/calendar/cal-menu.el b/lisp/calendar/cal-menu.el index d706dfd6ea3..1ea0f68ed95 100644 --- a/lisp/calendar/cal-menu.el +++ b/lisp/calendar/cal-menu.el @@ -4,7 +4,7 @@ ;; Author: Edward M. Reingold ;; Lara Rios -;; Maintainer: Glenn Morris +;; Maintainer: Glenn Morris ;; Keywords: calendar ;; Human-Keywords: calendar, popup menus, menu bar diff --git a/lisp/calendar/cal-move.el b/lisp/calendar/cal-move.el index 42cece292a9..3091822d7ff 100644 --- a/lisp/calendar/cal-move.el +++ b/lisp/calendar/cal-move.el @@ -3,7 +3,7 @@ ;; Copyright (C) 1995, 2005 Free Software Foundation, Inc. ;; Author: Edward M. Reingold -;; Maintainer: Glenn Morris +;; Maintainer: Glenn Morris ;; Keywords: calendar ;; Human-Keywords: calendar diff --git a/lisp/calendar/cal-x.el b/lisp/calendar/cal-x.el index 26c74172959..903f91af57b 100644 --- a/lisp/calendar/cal-x.el +++ b/lisp/calendar/cal-x.el @@ -4,7 +4,7 @@ ;; Author: Michael Kifer ;; Edward M. Reingold -;; Maintainer: Glenn Morris +;; Maintainer: Glenn Morris ;; Keywords: calendar ;; Human-Keywords: calendar, dedicated frames, X Window System diff --git a/lisp/calendar/calendar.el b/lisp/calendar/calendar.el index ec70c8c6c35..bb36ae4bb6e 100644 --- a/lisp/calendar/calendar.el +++ b/lisp/calendar/calendar.el @@ -4,7 +4,7 @@ ;; 2000, 2001, 2003, 2004, 2005 Free Software Foundation, Inc. ;; Author: Edward M. Reingold -;; Maintainer: Glenn Morris +;; Maintainer: Glenn Morris ;; Keywords: calendar ;; Human-Keywords: calendar, Gregorian calendar, diary, holidays diff --git a/lisp/calendar/diary-lib.el b/lisp/calendar/diary-lib.el index b997b5b5f61..ae42fa98661 100644 --- a/lisp/calendar/diary-lib.el +++ b/lisp/calendar/diary-lib.el @@ -4,7 +4,7 @@ ;; Free Software Foundation, Inc. ;; Author: Edward M. Reingold -;; Maintainer: Glenn Morris +;; Maintainer: Glenn Morris ;; Keywords: calendar ;; This file is part of GNU Emacs. diff --git a/lisp/calendar/holidays.el b/lisp/calendar/holidays.el index 7fd1d1f8f2c..aef07e39c8d 100644 --- a/lisp/calendar/holidays.el +++ b/lisp/calendar/holidays.el @@ -4,7 +4,7 @@ ;; Software Foundation, Inc. ;; Author: Edward M. Reingold -;; Maintainer: Glenn Morris +;; Maintainer: Glenn Morris ;; Keywords: holidays, calendar ;; This file is part of GNU Emacs. diff --git a/lisp/calendar/solar.el b/lisp/calendar/solar.el index ea027a50ca6..52d12e0a18a 100644 --- a/lisp/calendar/solar.el +++ b/lisp/calendar/solar.el @@ -4,7 +4,7 @@ ;; Author: Edward M. Reingold ;; Denis B. Roegel -;; Maintainer: Glenn Morris +;; Maintainer: Glenn Morris ;; Keywords: calendar ;; Human-Keywords: sunrise, sunset, equinox, solstice, calendar, diary, ;; holidays diff --git a/lisp/mail/supercite.el b/lisp/mail/supercite.el index a180c6c67ce..b4ded1335b8 100644 --- a/lisp/mail/supercite.el +++ b/lisp/mail/supercite.el @@ -4,7 +4,7 @@ ;; 2005 Free Software Foundation, Inc. ;; Author: 1993 Barry A. Warsaw -;; Maintainer: Glenn Morris +;; Maintainer: Glenn Morris ;; Created: February 1993 ;; Last Modified: 1993/09/22 18:58:46 ;; Keywords: mail, news diff --git a/lisp/progmodes/fortran.el b/lisp/progmodes/fortran.el index 3b6c77fef29..0d9921fcd7b 100644 --- a/lisp/progmodes/fortran.el +++ b/lisp/progmodes/fortran.el @@ -4,7 +4,7 @@ ;; 2002, 2003, 2004, 2005 Free Software Foundation, Inc. ;; Author: Michael D. Prange -;; Maintainer: Glenn Morris +;; Maintainer: Glenn Morris ;; Keywords: fortran, languages ;; This file is part of GNU Emacs. From 46f934722e506acf05a5efefb97bd114ad7a40b8 Mon Sep 17 00:00:00 2001 From: Simon Josefsson Date: Sat, 8 Oct 2005 08:40:34 +0000 Subject: [PATCH 025/168] * pgg-def.el (top-level): Don't require custom, it is autoloaded. (To sync with No Gnus.) --- lisp/gnus/ChangeLog | 5 +++++ lisp/gnus/pgg-def.el | 2 -- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog index d013524a1c8..0d58f8046ee 100644 --- a/lisp/gnus/ChangeLog +++ b/lisp/gnus/ChangeLog @@ -1,3 +1,8 @@ +2005-10-08 Simon Josefsson + + * pgg-def.el (top-level): Don't require custom, it is + autoloaded. (To sync with No Gnus.) + 2005-10-04 Reiner Steib * mm-url.el (mm-url-predefined-programs): Add switches for curl. diff --git a/lisp/gnus/pgg-def.el b/lisp/gnus/pgg-def.el index f27afada3fa..c6197db447d 100644 --- a/lisp/gnus/pgg-def.el +++ b/lisp/gnus/pgg-def.el @@ -25,8 +25,6 @@ ;;; Code: -(require 'custom) - (defgroup pgg () "Glue for the various PGP implementations." :group 'mime From 82259e507db63f0da997b4df69b280d8d55c0f58 Mon Sep 17 00:00:00 2001 From: Simon Josefsson Date: Sat, 8 Oct 2005 08:43:33 +0000 Subject: [PATCH 026/168] * pgg-gpg.el (pgg-gpg-possibly-cache-passphrase): Fix PIN caching, tiny patch from "Georg C. F. Greve" . --- lisp/gnus/ChangeLog | 5 +++++ lisp/gnus/pgg-gpg.el | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog index 0d58f8046ee..91fab639f78 100644 --- a/lisp/gnus/ChangeLog +++ b/lisp/gnus/ChangeLog @@ -1,3 +1,8 @@ +2005-05-09 Simon Josefsson + + * pgg-gpg.el (pgg-gpg-possibly-cache-passphrase): Fix PIN caching, + tiny patch from "Georg C. F. Greve" . + 2005-10-08 Simon Josefsson * pgg-def.el (top-level): Don't require custom, it is diff --git a/lisp/gnus/pgg-gpg.el b/lisp/gnus/pgg-gpg.el index f012a9d8506..6ba017c731c 100644 --- a/lisp/gnus/pgg-gpg.el +++ b/lisp/gnus/pgg-gpg.el @@ -100,13 +100,13 @@ (if (and pgg-cache-passphrase (progn (goto-char (point-min)) - (re-search-forward "^\\[GNUPG:] GOOD_PASSPHRASE\\>" nil t))) + (re-search-forward "^\\[GNUPG:] \\(GOOD_PASSPHRASE\\>\\)\\|\\(SIG_CREATED\\)" nil t))) (pgg-add-passphrase-cache (or key (progn (goto-char (point-min)) (if (re-search-forward - "^\\[GNUPG:] NEED_PASSPHRASE \\w+ ?\\w*" nil t) + "^\\[GNUPG:] NEED_PASSPHRASE\\(_PIN\\)? \\w+ ?\\w*" nil t) (substring (match-string 0) -8)))) passphrase))) From 20051b27ad0a1647fddfcf4da2471108d01d7a8e Mon Sep 17 00:00:00 2001 From: Simon Josefsson Date: Sat, 8 Oct 2005 08:44:21 +0000 Subject: [PATCH 027/168] * pgg-parse.el (top-level): Don't require custom, it is autoloaded. (To sync with No Gnus.) --- lisp/gnus/ChangeLog | 5 +++++ lisp/gnus/pgg-parse.el | 2 -- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog index 91fab639f78..4f1a6077e18 100644 --- a/lisp/gnus/ChangeLog +++ b/lisp/gnus/ChangeLog @@ -1,3 +1,8 @@ +2005-10-08 Simon Josefsson + + * pgg-parse.el (top-level): Don't require custom, it is + autoloaded. (To sync with No Gnus.) + 2005-05-09 Simon Josefsson * pgg-gpg.el (pgg-gpg-possibly-cache-passphrase): Fix PIN caching, diff --git a/lisp/gnus/pgg-parse.el b/lisp/gnus/pgg-parse.el index 26b48e2f141..422ccc6ac23 100644 --- a/lisp/gnus/pgg-parse.el +++ b/lisp/gnus/pgg-parse.el @@ -37,8 +37,6 @@ (eval-when-compile (require 'cl)) -(require 'custom) - (defgroup pgg-parse () "OpenPGP packet parsing." :group 'pgg) From 710f2e1b90301b2a5d7239573b2b324f26348e89 Mon Sep 17 00:00:00 2001 From: Simon Josefsson Date: Sat, 8 Oct 2005 08:45:31 +0000 Subject: [PATCH 028/168] * pgg-pgp.el (pgg-pgp-decrypt-region): Use passphrase cache. --- lisp/gnus/ChangeLog | 4 ++++ lisp/gnus/pgg-pgp.el | 8 +++++--- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog index 4f1a6077e18..f6167098ac7 100644 --- a/lisp/gnus/ChangeLog +++ b/lisp/gnus/ChangeLog @@ -1,3 +1,7 @@ +2005-01-21 Derek Atkins (tiny change) + + * pgg-pgp.el (pgg-pgp-decrypt-region): Use passphrase cache. + 2005-10-08 Simon Josefsson * pgg-parse.el (top-level): Don't require custom, it is diff --git a/lisp/gnus/pgg-pgp.el b/lisp/gnus/pgg-pgp.el index 88f1d697200..2735a0b7b27 100644 --- a/lisp/gnus/pgg-pgp.el +++ b/lisp/gnus/pgg-pgp.el @@ -149,14 +149,16 @@ Bourne shell or its equivalent \(not tcsh) is needed for \"2>\"." (defun pgg-pgp-decrypt-region (start end) "Decrypt the current region between START and END." (let* ((pgg-pgp-user-id (or pgg-pgp-user-id pgg-default-user-id)) + (key (pgg-pgp-lookup-key pgg-pgp-user-id 'encrypt)) (passphrase (pgg-read-passphrase - (format "PGP passphrase for %s: " pgg-pgp-user-id) - (pgg-pgp-lookup-key pgg-pgp-user-id 'encrypt))) + (format "PGP passphrase for %s: " pgg-pgp-user-id) key)) (args '("+verbose=1" "+batchmode" "+language=us" "-f"))) (pgg-pgp-process-region start end passphrase pgg-pgp-program args) - (pgg-process-when-success nil))) + (pgg-process-when-success + (if pgg-cache-passphrase + (pgg-add-passphrase-cache key passphrase))))) (defun pgg-pgp-sign-region (start end &optional clearsign) "Make detached signature from text between START and END." From b02afb20fb5c8437e65ecc488447e4c4137addc4 Mon Sep 17 00:00:00 2001 From: Chong Yidong Date: Sat, 8 Oct 2005 13:28:55 +0000 Subject: [PATCH 029/168] Checked files: man/anti.texi, man/maintaining,texi, and lispref/anti.texi --- admin/FOR-RELEASE | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/admin/FOR-RELEASE b/admin/FOR-RELEASE index 15c186556a9..92f3d634d05 100644 --- a/admin/FOR-RELEASE +++ b/admin/FOR-RELEASE @@ -130,7 +130,7 @@ people who have checked it. SECTION READERS ----------------------------- man/abbrevs.texi Chong Yidong Joakim Verona -man/anti.texi +man/anti.texi Chong Yidong man/basic.texi "Luc Teirlinck" Chong Yidong man/buffers.texi "Luc Teirlinck" Chong Yidong man/building.texi "Ted Zlatanov" @@ -151,7 +151,7 @@ man/indent.texi "Luc Teirlinck" Chong Yidong man/killing.texi "Luc Teirlinck" Chong Yidong man/kmacro.texi "Luc Teirlinck" Chong Yidong man/macos.texi -man/maintaining.texi +man/maintaining.texi Chong Yidong man/major.texi "Luc Teirlinck" Chong Yidong man/mark.texi "Luc Teirlinck" Chong Yidong man/mini.texi "Luc Teirlinck" Chong Yidong @@ -182,7 +182,7 @@ SECTION READERS ---------------------------------- lispref/abbrevs.texi "Luc Teirlinck" Chong Yidong lispref/advice.texi joakim@verona.se Chong Yidong -lispref/anti.texi +lispref/anti.texi Chong Yidong lispref/backups.texi "Luc Teirlinck" Chong Yidong lispref/buffers.texi "Luc Teirlinck" Chong Yidong lispref/calendar.texi Joakim Verona Chong Yidong From 119481721087321fd1e2a5dc7e6b7f53f5db2735 Mon Sep 17 00:00:00 2001 From: Michael Albinus Date: Sat, 8 Oct 2005 14:53:17 +0000 Subject: [PATCH 030/168] Sync with Tramp 2.0.51. --- lisp/ChangeLog | 37 ++++++++++++----- lisp/net/tramp.el | 94 +++++++++++++++++++++++++++++++++----------- lisp/net/trampver.el | 2 +- man/ChangeLog | 4 ++ man/trampver.texi | 2 +- 5 files changed, 105 insertions(+), 34 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index d678198ff34..96c16c2e558 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,20 @@ +2005-10-08 Michael Albinus + + Sync with Tramp 2.0.51. + + * net/tramp.el (tramp-handle-set-visited-file-modtime) + (tramp-handle-insert-file-contents) + (tramp-handle-write-region): Insert special handling for + `last-coding-system-used' again, it still seems to be + necessary (unlike stated before). Reported by Toshinori Sugita + + (tramp-password-prompt-regexp): There might be other words before + trailing ":". Reported by Kurt Steinkraus . + (tramp-chunksize): Improve docstring. + (tramp-set-auto-save-file-modes): Octal integer code #o600 breaks + Emacs 20. Use `tramp-octal-to-decimal' therefore. Reported by + Christian Joergensen . + 2005-10-07 Glenn Morris * progmodes/f90.el (f90-keywords-re, f90-mode): Doc fix. @@ -2521,7 +2538,7 @@ Sync with Tramp 2.0.50. - * tramp.el: Remove defvar of `last-coding-system-used' in the + * net/tramp.el: Remove defvar of `last-coding-system-used' in the XEmacs case; not necessary anymore. (tramp-user-regexp): Allow "@" as part of user name. (tramp-handle-set-visited-file-modtime) @@ -2562,7 +2579,7 @@ instead of octal character code ?\600. The latter resulted in a syntax error with XEmacs. - * tramp-smb.el: Remove defvar of `last-coding-system-used' in the + * net/tramp-smb.el: Remove defvar of `last-coding-system-used' in the XEmacs case; not necessary anymore. (tramp-smb-handle-write-region): No special handling for `last-coding-system-used, because this is done in @@ -7492,7 +7509,7 @@ Sync with Tramp 2.0.49. - * tramp.el (tramp-handle-dired-call-process) + * net/tramp.el (tramp-handle-dired-call-process) (tramp-handle-insert-directory):`insert-buffer' cannot be used because the contents of the Tramp buffer is changed before insertion (`expand-file' and alike). @@ -10241,7 +10258,7 @@ Sync with Tramp 2.0.48. - * tramp.el (all): Change all addresses to .gnu.org. + * net/tramp.el (all): Change all addresses to .gnu.org. (tramp-append-tramp-buffers): New defun. (tramp-bug): Apply `tramp-append-tramp-buffers' as post-hook. Catch `dont-send' signal. @@ -10251,7 +10268,7 @@ Kjetil Kjernsmo . Check for Emacs 21.3.50 removed. - * tramp-smb.el (all): Remove debug construct for + * net/tramp-smb.el (all): Remove debug construct for `with-parsed-tramp-file-name'. (tramp-smb-prompt): Prompt can contain spaces inside directory names. (tramp-smb-handle-delete-directory, tramp-smb-handle-delete-file): @@ -12093,7 +12110,7 @@ Sync with Tramp 2.0.47. - * tramp.el (tramp-operation-not-permitted-regexp) New defcustom, + * net/tramp.el (tramp-operation-not-permitted-regexp) New defcustom, catching keep-date problems in cp/scp operations. (tramp-handle-copy-file): Don't call `set-file-modes' unconditionally. Specialized functions should know better what is @@ -12112,7 +12129,7 @@ (tramp-file-name-for-operation): Mark `shell-command' as magic for Emacs only. - * tramp-util.el (tramp-minor-mode): New minor mode. Add it to + * net/tramp-util.el (tramp-minor-mode): New minor mode. Add it to `find-file-hooks' and `dired-mode-hook'. (tramp-minor-mode-map): Respective map. Add remapping for `compile' and `recompile'. @@ -12120,19 +12137,19 @@ (tramp-compile): Enable `tramp-minor-mode' and `compilation-mode' in buffer "*Compilation*". Call the commands asynchronously. - * tramp-vc.el (tramp-vc-do-command, tramp-vc-do-command-new) + * net/tramp-vc.el (tramp-vc-do-command, tramp-vc-do-command-new) (tramp-vc-simple-command): Call `tramp-handle-shell-command' but `shell-command', because it isn't magic in XEmacs. Reported by Adrian Aichner . - * tramp-smb.el (tramp-smb-file-name-handler-alist): Add entry for + * net/tramp-smb.el (tramp-smb-file-name-handler-alist): Add entry for `substitute-in-file-name. (tramp-smb-handle-substitute-in-file-name): New defun. (tramp-smb-advice-PC-do-completion): Delete advice. 2005-01-16 Kai Grossjohann - * tramp.el (tramp-wait-for-output): Fix typo in echo processing. + * net/tramp.el (tramp-wait-for-output): Fix typo in echo processing. Fix error in deleting region. 2005-01-15 Richard M. Stallman diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el index 17b91d92818..89fc86e9435 100644 --- a/lisp/net/tramp.el +++ b/lisp/net/tramp.el @@ -844,7 +844,7 @@ which should work well in many cases." :type 'regexp) (defcustom tramp-password-prompt-regexp - "^.*\\([pP]assword\\|passphrase.*\\):\^@? *" + "^.*\\([pP]assword\\|passphrase\\).*:\^@? *" "*Regexp matching password-like prompts. The regexp should match at end of buffer. @@ -1364,26 +1364,53 @@ implementation. The necessity, whether this variable must be set, can be checked via the following code: (with-temp-buffer - (let ((bytes 1000) - (proc (start-process (buffer-name) (current-buffer) \"wc\" \"-c\"))) - (process-send-string proc (make-string bytes ?x)) - (process-send-eof proc) - (process-send-eof proc) - (accept-process-output proc 1) - (goto-char (point-min)) - (re-search-forward \"\\\\w+\") - (message \"Bytes sent: %s\\tBytes received: %s\" bytes (match-string 0)))) + (let* ((user \"xxx\") (host \"yyy\") + (init 0) (step 50) + (sent init) (received init)) + (while (= sent received) + (setq sent (+ sent step)) + (erase-buffer) + (let ((proc (start-process (buffer-name) (current-buffer) + \"ssh\" \"-l\" user host \"wc\" \"-c\"))) + (when (memq (process-status proc) '(run open)) + (process-send-string proc (make-string sent ?\\ )) + (process-send-eof proc) + (process-send-eof proc)) + (while (not (progn (goto-char (point-min)) + (re-search-forward \"\\\\w+\" (point-max) t))) + (accept-process-output proc 1)) + (when (memq (process-status proc) '(run open)) + (setq received (string-to-number (match-string 0))) + (delete-process proc) + (message \"Bytes sent: %s\\tBytes received: %s\" sent received) + (sit-for 0)))) + (if (> sent (+ init step)) + (message \"You should set `tramp-chunksize' to a maximum of %s\" + (- sent step)) + (message \"Test does not work\") + (display-buffer (current-buffer)) + (sit-for 30)))) -In the Emacs normally running Tramp, evaluate the above code. -You can do this, for example, by pasting it into the `*scratch*' -buffer and then hitting C-j with the cursor after the last -closing parenthesis. +In the Emacs normally running Tramp, evaluate the above code +(replace \"xxx\" and \"yyy\" by the remote user and host name, +respectively). You can do this, for example, by pasting it into +the `*scratch*' buffer and then hitting C-j with the cursor after the +last closing parenthesis. Note that it works only if you have configured +\"ssh\" to run without password query, see ssh-agent(1). -If your Emacs is buggy, the sent and received numbers will be -different. In that case, you'll want to set this variable to -some number. For those people who have needed it, the value 500 -seems to have worked well. There is no way to predict what value -you need; maybe you could just experiment a bit. +You will see the number of bytes sent successfully to the remote host. +If that number exceeds 1000, you can stop the execution by hitting +C-g, because your Emacs is likely clean. + +If your Emacs is buggy, the code stops and gives you an indication +about the value `tramp-chunksize' should be set. Maybe you could just +experiment a bit, e.g. changing the values of `init' and `step' +in the third line of the code. + +When it is necessary to set `tramp-chunksize', you might consider to +use an out-of-the-band method (like \"scp\") instead of an internal one +(like \"ssh\"), because setting `tramp-chunksize' to non-nil decreases +performance. Please raise a bug report via \"M-x tramp-bug\" if your system needs this variable to be set as well." @@ -2371,11 +2398,14 @@ target of the symlink differ." (buffer-name))) (if time-list (tramp-run-real-handler 'set-visited-file-modtime (list time-list)) - (let ((f (buffer-file-name))) + (let ((f (buffer-file-name)) + coding-system-used) (with-parsed-tramp-file-name f nil (let* ((attr (file-attributes f)) ;; '(-1 65535) means file doesn't exists yet. (modtime (or (nth 5 attr) '(-1 65535)))) + (when (boundp 'last-coding-system-used) + (setq coding-system-used (symbol-value 'last-coding-system-used))) ;; We use '(0 0) as a don't-know value. See also ;; `tramp-handle-file-attributes-with-ls'. (if (not (equal modtime '(0 0))) @@ -2390,6 +2420,8 @@ target of the symlink differ." (setq attr (buffer-substring (point) (progn (end-of-line) (point))))) (setq tramp-buffer-file-attributes attr)) + (when (boundp 'last-coding-system-used) + (set 'last-coding-system-used coding-system-used)) nil))))) ;; CCC continue here @@ -3750,7 +3782,7 @@ This will break if COMMAND prints a newline, followed by the value of 'insert-file-contents) 'file-local-copy))) (file-local-copy filename))) - (result nil)) + coding-system-used result) (when visit (setq buffer-file-name filename) (set-visited-file-modtime) @@ -3759,10 +3791,15 @@ This will break if COMMAND prints a newline, followed by the value of multi-method method user host 9 "Inserting local temp file `%s'..." local-copy) (setq result (insert-file-contents local-copy nil beg end replace)) + ;; Now `last-coding-system-used' has right value. Remember it. + (when (boundp 'last-coding-system-used) + (setq coding-system-used (symbol-value 'last-coding-system-used))) (tramp-message-for-buffer multi-method method user host 9 "Inserting local temp file `%s'...done" local-copy) (delete-file local-copy) + (when (boundp 'last-coding-system-used) + (set 'last-coding-system-used coding-system-used)) (list (expand-file-name filename) (second result)))))) @@ -3876,6 +3913,13 @@ Returns a file name in `tramp-auto-save-directory' for autosaving this file." (loc-dec (tramp-get-local-decoding multi-method method user host)) (trampbuf (get-buffer-create "*tramp output*")) (modes (file-modes filename)) + ;; We use this to save the value of `last-coding-system-used' + ;; after writing the tmp file. At the end of the function, + ;; we set `last-coding-system-used' to this saved value. + ;; This way, any intermediary coding systems used while + ;; talking to the remote shell or suchlike won't hose this + ;; variable. This approach was snarfed from ange-ftp.el. + coding-system-used tmpfil) ;; Write region into a tmp file. This isn't really needed if we ;; use an encoding function, but currently we use it always @@ -3892,6 +3936,9 @@ Returns a file name in `tramp-auto-save-directory' for autosaving this file." (if confirm ; don't pass this arg unless defined for backward compat. (list start end tmpfil append 'no-message lockname confirm) (list start end tmpfil append 'no-message lockname))) + ;; Now, `last-coding-system-used' has the right value. Remember it. + (when (boundp 'last-coding-system-used) + (setq coding-system-used (symbol-value 'last-coding-system-used))) ;; The permissions of the temporary file should be set. If ;; filename does not exist (eq modes nil) it has been renamed to ;; the backup file. This case `save-buffer' handles @@ -3998,6 +4045,9 @@ Returns a file name in `tramp-auto-save-directory' for autosaving this file." ;; We must pass modtime explicitely, because filename can be different ;; from (buffer-file-name), f.e. if `file-precious-flag' is set. (nth 5 (file-attributes filename)))) + ;; Make `last-coding-system-used' have the right value. + (when (boundp 'last-coding-system-used) + (set 'last-coding-system-used coding-system-used)) (when (or (eq visit t) (eq visit nil) (stringp visit)) @@ -6990,7 +7040,7 @@ as default." ;; auto-saved file belonging to another original file. This could ;; be a security threat. (set-file-modes buffer-auto-save-file-name - (or (file-modes bfn) #o600))))) + (or (file-modes bfn) (tramp-octal-to-decimal "0600")))))) (unless (or (> emacs-major-version 21) (and (featurep 'xemacs) diff --git a/lisp/net/trampver.el b/lisp/net/trampver.el index 2ba9f7b3249..650f1a727a7 100644 --- a/lisp/net/trampver.el +++ b/lisp/net/trampver.el @@ -30,7 +30,7 @@ ;; are auto-frobbed from configure.ac, so you should edit that file and run ;; "autoconf && ./configure" to change them. -(defconst tramp-version "2.0.50" +(defconst tramp-version "2.0.51" "This version of Tramp.") (defconst tramp-bug-report-address "tramp-devel@gnu.org" diff --git a/man/ChangeLog b/man/ChangeLog index 843a8aa7833..f4e10d85e11 100644 --- a/man/ChangeLog +++ b/man/ChangeLog @@ -1,3 +1,7 @@ +2005-10-08 Michael Albinus + + Sync with Tramp 2.0.51. + 2005-10-08 Nick Roberts * speedbar.texi (Introduction): Describe new location of speedbar diff --git a/man/trampver.texi b/man/trampver.texi index a77ae82d49b..9f2bb8737f7 100644 --- a/man/trampver.texi +++ b/man/trampver.texi @@ -4,7 +4,7 @@ @c In the Tramp CVS, the version number is auto-frobbed from @c configure.ac, so you should edit that file and run @c "autoconf && ./configure" to change the version number. -@set trampver 2.0.50 +@set trampver 2.0.51 @c Other flags from configuration @set prefix /usr/local From 8cb0a5590f96cb25238fe7b00c3c58a421bbb4fb Mon Sep 17 00:00:00 2001 From: Lars Hansen Date: Sat, 8 Oct 2005 18:26:14 +0000 Subject: [PATCH 031/168] (tramp-perl-directory-files-and-attributes): Add error handling. (tramp-handle-directory-files-and-attributes): Handle error perl error message. --- lisp/ChangeLog | 6 ++++++ lisp/net/tramp.el | 9 ++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 96c16c2e558..034235683e5 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,9 @@ +2005-10-08 Lars Hansen + * net/tramp.el (tramp-perl-directory-files-and-attributes): Add + error handling. + (tramp-handle-directory-files-and-attributes): Handle error perl + error message. + 2005-10-08 Michael Albinus Sync with Tramp 2.0.51. diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el index 89fc86e9435..6df8a5dab42 100644 --- a/lisp/net/tramp.el +++ b/lisp/net/tramp.el @@ -1617,8 +1617,8 @@ printf( on the remote file system.") (defconst tramp-perl-directory-files-and-attributes "\ -chdir($ARGV[0]); -opendir(DIR,\".\"); +chdir($ARGV[0]) or printf(\"\\\"Cannot change to $ARGV[0]: $''!''\\\"\\n\"), exit(); +opendir(DIR,\".\") or printf(\"\\\"Cannot open directory $ARGV[0]: $''!''\\\"\\n\"), exit(); @list = readdir(DIR); closedir(DIR); $n = scalar(@list); @@ -2731,7 +2731,10 @@ of." (tramp-shell-quote-argument localname) (or id-format 'integer))) (tramp-wait-for-output) - (let* ((root (cons nil (read (current-buffer)))) + (let* ((root (cons nil (let ((object (read (current-buffer)))) + (when (stringp object) + (error object)) + object))) (cell root)) (while (cdr cell) (if (and match (not (string-match match (caadr cell)))) From d77911362a9c875148f6211c637a6cc9bb000c66 Mon Sep 17 00:00:00 2001 From: Jay Belanger Date: Sat, 8 Oct 2005 19:29:25 +0000 Subject: [PATCH 032/168] *** empty log message *** --- lisp/ChangeLog | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 034235683e5..19b509ca292 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,21 @@ +2005-10-07 Jay Belanger + + * calc/calc-arith.el (math-known-square-matrixp): New function. + (math-pow-fancy): Check for matrices before distributing exponent + across products. + + * calc/calc-keypd.el (calc-do-keypad): Widen keypad window for + fullscreen keypad. Suggested by Luc Teirlinck. + (calc-keypad-show-input): Add space for formatting. + + * calc/calc-mode.el (calc-matrix-mode, math-get-modes-vec): + Add square matrix option. + + * calc/calc-poly.el (math-expand-term): Check for matrices instead + of checking calc-matrix-mode when deciding how to expand. + + * calc/calc.el (calc-set-mode-line): Add square matrix option. + 2005-10-08 Lars Hansen * net/tramp.el (tramp-perl-directory-files-and-attributes): Add error handling. From 344066e6253bb656f9f8bc861b6900d7c76f8832 Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Sat, 8 Oct 2005 19:55:02 +0000 Subject: [PATCH 033/168] (ispell-check-version): Ignore hyphen, and all that follows, in aspell's version text. --- lisp/ChangeLog | 10 +++++++--- lisp/textmodes/ispell.el | 1 + 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 19b509ca292..145c4288b31 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,4 +1,9 @@ -2005-10-07 Jay Belanger +2005-10-08 Eric Hanchrow + + * textmodes/ispell.el (ispell-check-version): + Ignore hyphen, and all that follows, in aspell's version text. + +2005-10-08 Jay Belanger * calc/calc-arith.el (math-known-square-matrixp): New function. (math-pow-fancy): Check for matrices before distributing exponent @@ -97,10 +102,9 @@ * progmodes/gdb-ui.el (gdb-fringe-width -> gdb-buffer-fringe-width): Typo. -2005-10-06 Thien-Thi Nguyen +2005-10-06 Michael Cadilhac (tiny change) * play/zone.el (zone): Wrap body with save-window-excursion. - Suggested by Michael Cadilhac. 2005-10-06 Stefan Monnier diff --git a/lisp/textmodes/ispell.el b/lisp/textmodes/ispell.el index 235df714015..d4764f0b7bd 100644 --- a/lisp/textmodes/ispell.el +++ b/lisp/textmodes/ispell.el @@ -821,6 +821,7 @@ Otherwise returns the library directory name, if that is defined." (let (case-fold-search) (setq ispell-really-aspell (and (search-forward-regexp + "(but really Aspell \\(.*?\\)\\(-[0-9]+\\)?)" nil t) "(but really Aspell \\(.*\\))" nil t) (progn (setq ispell-aspell-supports-utf8 From 7d8087145d05af3a01ec85203d4eee878613499e Mon Sep 17 00:00:00 2001 From: Nick Roberts Date: Sat, 8 Oct 2005 21:18:18 +0000 Subject: [PATCH 034/168] *** empty log message *** --- lisp/ChangeLog | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 145c4288b31..60649e23978 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2005-10-09 Nick Roberts + + * progmodes/gud.el (gud-speedbar-menu-items): Use :visible + instead of :active. + 2005-10-08 Eric Hanchrow * textmodes/ispell.el (ispell-check-version): From 8f078ee4a372c7937a69793722b02836820780cd Mon Sep 17 00:00:00 2001 From: Nick Roberts Date: Sat, 8 Oct 2005 21:19:18 +0000 Subject: [PATCH 035/168] (gud-speedbar-menu-items): Use :visible instead of :active. --- lisp/progmodes/gud.el | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/lisp/progmodes/gud.el b/lisp/progmodes/gud.el index 12c7e1c0ba0..8840a01283f 100644 --- a/lisp/progmodes/gud.el +++ b/lisp/progmodes/gud.el @@ -357,15 +357,13 @@ t means that there is no stack, and we are in display-file mode.") (define-key gud-speedbar-key-map "\C-m" 'speedbar-edit-line) (define-key gud-speedbar-key-map "D" 'gdb-var-delete))) - (defvar gud-speedbar-menu-items - ;; Note to self. Add expand, and turn off items when not available. '(["Jump to stack frame" speedbar-edit-line - (with-current-buffer gud-comint-buffer - (not (memq gud-minor-mode '(gdbmi gdba))))] + :visible (with-current-buffer gud-comint-buffer + (not (memq gud-minor-mode '(gdbmi gdba))))] ["Edit value" speedbar-edit-line - (with-current-buffer gud-comint-buffer - (memq gud-minor-mode '(gdbmi gdba)))] + :visible (with-current-buffer gud-comint-buffer + (memq gud-minor-mode '(gdbmi gdba)))] ["Delete expression" gdb-var-delete (with-current-buffer gud-comint-buffer (memq gud-minor-mode '(gdbmi gdba)))]) From b82ecedf7bd7def576329ab9ac18af2e464c02d4 Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Sun, 9 Oct 2005 02:08:54 +0000 Subject: [PATCH 036/168] (tempparent): Don't check for 14-char file name limit. --- ChangeLog | 4 ++++ make-dist | 7 ------- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index 5decdb3bf86..444a2975854 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +2005-10-08 Richard M. Stallman + + * make-dist (tempparent): Don't check for 14-char file name limit. + 2005-10-07 Romain Francoise * make-dist: Add etc/images/ezimage and etc/images/mail diff --git a/make-dist b/make-dist index 80c219b87ee..d2563e16a5d 100755 --- a/make-dist +++ b/make-dist @@ -218,13 +218,6 @@ then echo "${bogosities}" fi rm -f /tmp/el /tmp/elc - - ### Check for .el files that would overflow the 14-char limit if compiled. - long=`find lisp leim -name '[a-zA-Z0-9]??????????*.el' -print` - if [ "$long" != "" ]; then - echo "The following .el file names are too long:" - echo "$long" - fi fi ### Make sure configure is newer than configure.in. From e313fc07dda725c02e43890e59b13c9e661eec83 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Dj=C3=A4rv?= Date: Sun, 9 Oct 2005 06:56:14 +0000 Subject: [PATCH 037/168] * emacs.c (standard_args): Removed options -i, -itype, --icon-type, added -nb, --no-bitmap-icon. * xfns.c (Fx_create_frame): Make bitmapIcon have default on. --- src/ChangeLog | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/ChangeLog b/src/ChangeLog index d466f5d3bf2..d9b2eb7ab3c 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,10 @@ +2005-10-09 Jan Dj,Ad(Brv + + * emacs.c (standard_args): Removed options -i, -itype, --icon-type, + added -nb, --no-bitmap-icon. + + * xfns.c (Fx_create_frame): Make bitmapIcon have default on. + 2005-10-08 YAMAMOTO Mitsuharu * macgui.h (MAX_CLIP_RECTS): New define. From 84f2588006e1efea7ac2a7bed7198c216ea0f82c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Dj=C3=A4rv?= Date: Sun, 9 Oct 2005 06:56:31 +0000 Subject: [PATCH 038/168] * xfns.c (Fx_create_frame): Make bitmapIcon have default on. --- src/xfns.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/xfns.c b/src/xfns.c index a0f6f3b3743..979a0a3435a 100644 --- a/src/xfns.c +++ b/src/xfns.c @@ -3277,7 +3277,7 @@ This function is an internal primitive--use `make-frame' instead. */) /* We need to do this after creating the X window, so that the icon-creation functions can say whose icon they're describing. */ - x_default_parameter (f, parms, Qicon_type, Qnil, + x_default_parameter (f, parms, Qicon_type, Qt, "bitmapIcon", "BitmapIcon", RES_TYPE_SYMBOL); x_default_parameter (f, parms, Qauto_raise, Qnil, From 55c9bfe532eb8ab382a5219963a76bf35e438095 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Dj=C3=A4rv?= Date: Sun, 9 Oct 2005 06:57:00 +0000 Subject: [PATCH 039/168] * emacs.c (standard_args): Removed options -i, -itype, --icon-type, added -nb, --no-bitmap-icon. --- src/emacs.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/emacs.c b/src/emacs.c index 80281d4f26b..497cdd7943f 100644 --- a/src/emacs.c +++ b/src/emacs.c @@ -311,7 +311,7 @@ Display options:\n\ --fullscreen, -fs make first frame fullscreen\n\ --fullwidth, -fw make the first frame wide as the screen\n\ --geometry, -g GEOMETRY window geometry\n\ ---icon-type, -i use picture of gnu for Emacs icon\n\ +--no-bitmap-icon, -nb do not use picture of gnu for Emacs icon\n\ --iconic start Emacs in iconified state\n\ --internal-border, -ib WIDTH width between text and main border\n\ --line-spacing, -lsp PIXELS additional space to put between lines\n\ @@ -1828,8 +1828,7 @@ struct standard_args standard_args[] = { "-u", "--user", 30, 1 }, { "-user", 0, 30, 1 }, { "-debug-init", "--debug-init", 20, 0 }, - { "-i", "--icon-type", 15, 0 }, - { "-itype", 0, 15, 0 }, + { "-nb", "--no-bitmap-icon", 15, 0 }, { "-iconic", "--iconic", 15, 0 }, { "-D", "--basic-display", 12, 0}, { "-basic-display", 0, 12, 0}, From 1c1db08afc2ee71671e6b8f7d60a197fbcc60469 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Dj=C3=A4rv?= Date: Sun, 9 Oct 2005 06:58:13 +0000 Subject: [PATCH 040/168] * startup.el (command-line-x-option-alist): Removed options -i, -itype, --icon-type, added -nb, --no-bitmap-icon --- lisp/ChangeLog | 5 +++++ lisp/startup.el | 5 ++--- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 60649e23978..eb4a0f046c5 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2005-10-09 Jan Dj,Ad(Brv + + * startup.el (command-line-x-option-alist): Removed options -i, + -itype, --icon-type, added -nb, --no-bitmap-icon + 2005-10-09 Nick Roberts * progmodes/gud.el (gud-speedbar-menu-items): Use :visible diff --git a/lisp/startup.el b/lisp/startup.el index 450159b36f2..3315e7236fb 100644 --- a/lisp/startup.el +++ b/lisp/startup.el @@ -121,8 +121,7 @@ This is normally copied from `default-directory' when Emacs starts.") ("-bg" 1 x-handle-switch background-color) ("-background" 1 x-handle-switch background-color) ("-ms" 1 x-handle-switch mouse-color) - ("-itype" 0 x-handle-switch icon-type t) - ("-i" 0 x-handle-switch icon-type t) + ("-nb" 0 x-handle-switch icon-type nil) ("-iconic" 0 x-handle-iconic) ("-xrm" 1 x-handle-xrm-switch) ("-cr" 1 x-handle-switch cursor-color) @@ -143,7 +142,7 @@ This is normally copied from `default-directory' when Emacs starts.") ("--foreground-color" 1 x-handle-switch foreground-color) ("--background-color" 1 x-handle-switch background-color) ("--mouse-color" 1 x-handle-switch mouse-color) - ("--icon-type" 0 x-handle-switch icon-type t) + ("--no-bitmap-icon" 0 x-handle-switch icon-type nil) ("--iconic" 0 x-handle-iconic) ("--xrm" 1 x-handle-xrm-switch) ("--cursor-color" 1 x-handle-switch cursor-color) From 9ea7445208845c9d54557754dfdeafdd2c05b653 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Dj=C3=A4rv?= Date: Sun, 9 Oct 2005 06:59:21 +0000 Subject: [PATCH 041/168] * cmdargs.texi (Icons X): Removed options -i, -itype, --icon-type, added -nb, --no-bitmap-icon. --- man/ChangeLog | 5 +++++ man/cmdargs.texi | 14 +++++++------- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/man/ChangeLog b/man/ChangeLog index f4e10d85e11..a4040eb5a53 100644 --- a/man/ChangeLog +++ b/man/ChangeLog @@ -1,3 +1,8 @@ +2005-10-09 Jan Dj,Ad(Brv + + * cmdargs.texi (Icons X): Removed options -i, -itype, --icon-type, + added -nb, --no-bitmap-icon. + 2005-10-08 Michael Albinus Sync with Tramp 2.0.51. diff --git a/man/cmdargs.texi b/man/cmdargs.texi index dad7e61dbf2..d0ab8788150 100644 --- a/man/cmdargs.texi +++ b/man/cmdargs.texi @@ -1173,12 +1173,12 @@ If you have many clients running at once, you can avoid cluttering up the screen by iconifying most of the clients. @table @samp -@item -i -@opindex -i -@itemx --icon-type -@opindex --icon-type +@item -nb +@opindex -nb +@itemx --no-bitmap-icon +@opindex --no-bitmap-icon @cindex Emacs icon, a gnu -Use a picture of a gnu as the Emacs icon. +Do not use a picture of a gnu as the Emacs icon. @item -iconic @opindex --iconic @@ -1187,8 +1187,8 @@ Use a picture of a gnu as the Emacs icon. Start Emacs in iconified state. @end table - The @samp{-i} or @samp{--icon-type} option tells Emacs to use an icon -window containing a picture of the GNU gnu. If omitted, Emacs lets the + By default Emacs uses an icon window containing a picture of the GNU gnu. +The @samp{-np} or @samp{--no-bitmap-icon} option tells Emacs to let the window manager choose what sort of icon to use---usually just a small rectangle containing the frame's title. From 2323b3ab731297223a7da2b9b938e39cc7d83054 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Dj=C3=A4rv?= Date: Sun, 9 Oct 2005 07:01:48 +0000 Subject: [PATCH 042/168] * term/x-win.el: Removed -i, --icon-type from comment. --- lisp/ChangeLog | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index eb4a0f046c5..6877f1443b2 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,7 @@ 2005-10-09 Jan Dj,Ad(Brv + * term/x-win.el: Removed -i, --icon-type from comment. + * startup.el (command-line-x-option-alist): Removed options -i, -itype, --icon-type, added -nb, --no-bitmap-icon From 3756ec33c04d4957d4908b33189e3fa4d6e95edb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Dj=C3=A4rv?= Date: Sun, 9 Oct 2005 07:02:00 +0000 Subject: [PATCH 043/168] * term/x-win.el: Removed -i, --icon-type from comment --- lisp/term/x-win.el | 2 -- 1 file changed, 2 deletions(-) diff --git a/lisp/term/x-win.el b/lisp/term/x-win.el index e530a860839..31bad4a9b15 100644 --- a/lisp/term/x-win.el +++ b/lisp/term/x-win.el @@ -54,8 +54,6 @@ ;; -font *font ;; -foreground *foreground ;; -geometry .geometry -;; -i .iconType -;; -itype .iconType ;; -iconic .iconic ;; -name .name ;; -reverse *reverseVideo From 0597ab12873c01dd125aca61cdecf20ce130516a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Dj=C3=A4rv?= Date: Sun, 9 Oct 2005 07:44:10 +0000 Subject: [PATCH 044/168] * NEWS: -nb, --no-bitmap-icon --- etc/ChangeLog | 4 ++++ etc/NEWS | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/etc/ChangeLog b/etc/ChangeLog index 12a85271f72..026e4ff9fa1 100644 --- a/etc/ChangeLog +++ b/etc/ChangeLog @@ -1,3 +1,7 @@ +2005-10-09 Jan Dj,Ad(Brv + + * NEWS: -nb, --no-bitmap-icon + 2005-10-02 Stefan Monnier * TODO: Clarify the local variables entry. diff --git a/etc/NEWS b/etc/NEWS index 3f91ef13536..7f7911d724b 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -175,6 +175,11 @@ disables the splash screen; see also the variable `inhibit-startup-message' (which is also aliased as `inhibit-splash-screen'). ++++ +** The default is now to use an bitmap as the icon, so the command-line options +--icon-type, -i has been replaced with options --no-bitmap-icon, -nb to turn +the bitmap icon off. + +++ ** New user option `inhibit-startup-buffer-menu'. When loading many files, for instance with `emacs *', Emacs normally From 865729da260be99e14c91bbbea3a8108cf7d828c Mon Sep 17 00:00:00 2001 From: Romain Francoise Date: Sun, 9 Oct 2005 12:54:23 +0000 Subject: [PATCH 045/168] (ispell-check-version): Fix last change. --- lisp/ChangeLog | 6 +++++- lisp/textmodes/ispell.el | 1 - 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 6877f1443b2..2996f055a00 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,8 +1,12 @@ +2005-10-09 Romain Francoise + + * textmodes/ispell.el (ispell-check-version): Fix last change. + 2005-10-09 Jan Dj,Ad(Brv * term/x-win.el: Removed -i, --icon-type from comment. - * startup.el (command-line-x-option-alist): Removed options -i, + * startup.el (command-line-x-option-alist): Removed options -i, -itype, --icon-type, added -nb, --no-bitmap-icon 2005-10-09 Nick Roberts diff --git a/lisp/textmodes/ispell.el b/lisp/textmodes/ispell.el index d4764f0b7bd..95a3cce5144 100644 --- a/lisp/textmodes/ispell.el +++ b/lisp/textmodes/ispell.el @@ -822,7 +822,6 @@ Otherwise returns the library directory name, if that is defined." (setq ispell-really-aspell (and (search-forward-regexp "(but really Aspell \\(.*?\\)\\(-[0-9]+\\)?)" nil t) - "(but really Aspell \\(.*\\))" nil t) (progn (setq ispell-aspell-supports-utf8 (not (version< (match-string 1) "0.60"))) From 827d67f3b670d6dee517ebcfb00fe81f80519bdb Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Sun, 9 Oct 2005 15:37:35 +0000 Subject: [PATCH 046/168] (format-spec): Propagate text properties of % spec. --- lisp/gnus/format-spec.el | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/lisp/gnus/format-spec.el b/lisp/gnus/format-spec.el index fc34b50bc11..b2fde53b3f1 100644 --- a/lisp/gnus/format-spec.el +++ b/lisp/gnus/format-spec.el @@ -33,7 +33,8 @@ "Return a string based on FORMAT and SPECIFICATION. FORMAT is a string containing `format'-like specs like \"bash %u %k\", while SPECIFICATION is an alist mapping from format spec characters -to values." +to values. Any text properties on a %-spec itself are propagated to +the text that it generates." (with-temp-buffer (insert format) (goto-char (point-min)) @@ -47,10 +48,17 @@ to values." (let* ((num (match-string 1)) (spec (string-to-char (match-string 2))) (val (cdr (assq spec specification)))) - (delete-region (1- (match-beginning 0)) (match-end 0)) (unless val (error "Invalid format character: %s" spec)) - (insert (format (concat "%" num "s") val)))) + ;; Pad result to desired length. + (let ((text (format (concat "%" num "s") val))) + ;; Insert first, to preserve text properties. + (insert-and-inherit text) + ;; Delete the specifier body. + (delete-region (+ (match-beginning 0) (length text)) + (+ (match-end 0) (length text))) + ;; Delete the percent sign. + (delete-region (1- (match-beginning 0)) (match-beginning 0))))) ;; Signal an error on bogus format strings. (t (error "Invalid format string")))) From b12e97dcfd095321eb6415bbacda75d2209ca6d7 Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Sun, 9 Oct 2005 15:40:00 +0000 Subject: [PATCH 047/168] (line-spacing): Add custom spec. --- lisp/cus-start.el | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/cus-start.el b/lisp/cus-start.el index d8ca2a77b58..9881012d949 100644 --- a/lisp/cus-start.el +++ b/lisp/cus-start.el @@ -99,6 +99,7 @@ Leaving \"Default\" unchecked is equivalent with specifying a default of (scroll-down-aggressively windows (choice (const :tag "off" nil) number) "21.1") + (line-spacing display (choice (const :tag "none" nil) integer)) ;; callint.c (mark-even-if-inactive editing-basics boolean) ;; callproc.c From 4b9f0de28a6301188880ad31e559f7b9a01b2a80 Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Sun, 9 Oct 2005 15:40:32 +0000 Subject: [PATCH 048/168] *** empty log message *** --- lisp/ChangeLog | 4 ++++ lisp/gnus/ChangeLog | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 2996f055a00..eb79a8c2b73 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,7 @@ +2005-10-09 Daniel Brockman + + * cus-start.el (line-spacing): Add custom spec. + 2005-10-09 Romain Francoise * textmodes/ispell.el (ispell-check-version): Fix last change. diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog index f6167098ac7..23e5564770f 100644 --- a/lisp/gnus/ChangeLog +++ b/lisp/gnus/ChangeLog @@ -1,3 +1,7 @@ +2005-10-09 Daniel Brockman + + * format-spec.el (format-spec): Propagate text properties of % spec. + 2005-01-21 Derek Atkins (tiny change) * pgg-pgp.el (pgg-pgp-decrypt-region): Use passphrase cache. From 3b6de0823d4aa65f7eca434b69043e463788ff03 Mon Sep 17 00:00:00 2001 From: Chong Yidong Date: Sun, 9 Oct 2005 15:44:34 +0000 Subject: [PATCH 049/168] * frames.texi (Speedbar): Add information on keybindings, dismissing the speedbar, and buffer display mode. Link to speedbar manual. --- man/ChangeLog | 6 ++++++ man/frames.texi | 57 ++++++++++++++++++++++++++++++++----------------- 2 files changed, 44 insertions(+), 19 deletions(-) diff --git a/man/ChangeLog b/man/ChangeLog index a4040eb5a53..95bd65cfd64 100644 --- a/man/ChangeLog +++ b/man/ChangeLog @@ -1,3 +1,9 @@ +2005-10-09 Chong Yidong + + * frames.texi (Speedbar): Add information on keybindings, + dismissing the speedbar, and buffer display mode. Link to + speedbar manual. + 2005-10-09 Jan Dj,Ad(Brv * cmdargs.texi (Icons X): Removed options -i, -itype, --icon-type, diff --git a/man/frames.texi b/man/frames.texi index 2928aa7a62a..3736fdbb91c 100644 --- a/man/frames.texi +++ b/man/frames.texi @@ -548,23 +548,44 @@ the variable should be @code{nil}. @section Making and Using a Speedbar Frame @cindex speedbar - An Emacs frame can have a @dfn{speedbar}, which is a vertical window -that serves as a scrollable menu of files you could visit and tags -within those files. To create a speedbar, type @kbd{M-x speedbar}; this -creates a speedbar window for the selected frame. From then on, you can -click on a file name in the speedbar to visit that file in the -corresponding Emacs frame, or click on a tag name to jump to that tag in -the Emacs frame. + The @dfn{Speedbar} is a special frame that is used to summarize +information related to other buffers. Normally, it displays a menu of +files you could visit and tags within those files. Type @kbd{M-x +speedbar} to enable the speedbar and associate it with the current +frame (which is called the speedbar's @dfn{attached frame}). - Initially the speedbar lists the immediate contents of the current -directory, one file per line. Each line also has a box, @samp{[+]} or -@samp{<+>}, that you can click on with @kbd{Mouse-2} to ``open up'' the -contents of that item. If the line names a directory, opening it adds + Currently, only one speedbar is supported at a time. To dismiss the +speedbar, select it and type @kbd{q} or @kbd{M-x speedbar}, or delete +the frame or window normally. You can then attach the speedbar to a +different frame by calling @kbd{M-x speedbar} from that frame. + + When you initially launch the speedbar, it starts in @dfn{File +Display Mode}, showing the current directory of the selected window of +the attached frame, one file per line. Clicking on a file name visits +that file in the attached frame, and clicking on a directory name +shows that directory in the speedbar (@pxref{Mouse References}). Each +line also has a box, @samp{[+]} or @samp{<+>}, that you can click on +to @dfn{expand} the contents of that item. Expanding a directory adds the contents of that directory to the speedbar display, underneath the -directory's own line. If the line lists an ordinary file, opening it up -adds a list of the tags in that file to the speedbar display. When a -file is opened up, the @samp{[+]} changes to @samp{[-]}; you can click -on that box to ``close up'' that file (hide its contents). +directory's own line. Expanding an ordinary file adds a list of the +tags in that file to the speedbar display; you can click on a tag name +to jump to that tag in the attached frame. When a file or directory +is expanded, the @samp{[+]} changes to @samp{[-]}; you can click on +that box to @dfn{contract} the item, hiding its contents. + + You can also use the keyboard to navigate the speedbar. Typing +@kbd{RET} is equivalent to clicking the item on the current line, and +@kbd{SPC} expands or contracts the item. @kbd{U} displays the parent +directory of the current directory. To copy, delete, or rename the +file on the current line, type @kbd{C}, @kbd{D}, and @kbd{R} +respectively. To create a new directory, type @kbd{M}. + + The speedbar is not limited to showing files. Type @kbd{b} to enter +@dfn{Buffer Display Mode}, in which the speedbar displays a list of +Emacs buffers. To return to File Display Mode, type @kbd{f}. You can +also change the display mode by clicking @kbd{mouse-3} anywhere in the +speedbar window (or @kbd{mouse-1} on the mode-line) and selecting +@samp{Displays} in the pop-up menu. Some major modes, including Rmail mode, Info, and GUD, have specialized ways of putting useful items into the speedbar for you to @@ -572,10 +593,8 @@ select. For example, in Rmail mode, the speedbar shows a list of Rmail files, and lets you move the current message to another Rmail file by clicking on its @samp{} box. - A speedbar belongs to one Emacs frame, and always operates on that -frame. If you use multiple frames, you can make a speedbar for some or -all of the frames; type @kbd{M-x speedbar} in any given frame to make a -speedbar for it. + For more details on using and programming the speedbar, @xref{Top, +Speedbar,,speedbar, Speedbar Manual}. @node Multiple Displays @section Multiple Displays From 1ff106579e394a888dde80b77ecb6aa231c5e225 Mon Sep 17 00:00:00 2001 From: Chong Yidong Date: Sun, 9 Oct 2005 15:47:43 +0000 Subject: [PATCH 050/168] Speedbar changes. --- etc/NEWS | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/etc/NEWS b/etc/NEWS index 7f7911d724b..fa5caeee5c6 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -2912,6 +2912,50 @@ from Outlook-format appointments in mail messages. The variable `diary-outlook-formats' can be customized to recognize additional formats. ++++ +** Speedbar changes: + +*** Speedbar items can now be selected by clicking mouse-1, based on +the `mouse-1-click-follows-link' mechanism. + +*** SPC and DEL are no longer bound to scroll up/down in the speedbar +keymap. + +*** The new command `speedbar-toggle-line-expansion', bound to SPC, +contracts or expands the line under the cursor. + +*** New command `speedbar-create-directory', bound to `M'. + +*** The new commands `speedbar-expand-line-descendants' and +`speedbar-contract-line-descendants', bound to `[' and `]' +respectively, expand and contract the line under cursor with all of +its descendents. + +*** The new user option `speedbar-query-confirmation-method' controls +how querying is performed for file operations. A value of 'always +means to always query before file operations; 'none-but-delete means +to not query before any file operations, except before a file +deletion. + +*** The new user option `speedbar-select-frame-method' specifies how +to select a frame for displaying a file opened with the speedbar. A +value of 'attached means to use the attached frame (the frame that +speedbar was started from.) A number such as 1 or -1 means to pass +that number to `other-frame'. + +*** The new user option `speedbar-use-tool-tips-flag', if non-nil, +means to display tool-tips for speedbar items. + +*** The frame management code in speedbar.el has been split into a new +`dframe' library. Emacs Lisp code that makes use of the speedbar +should use `dframe-attached-frame' instead of +`speedbar-attached-frame', `dframe-timer' instead of `speedbar-timer', +`dframe-close-frame' instead of `speedbar-close-frame', and +`dframe-activity-change-focus-flag' instead of +`speedbar-activity-change-focus-flag'. The variables +`speedbar-update-speed' and `speedbar-navigating-speed' are also +obsolete; use `dframe-update-speed' instead. + --- ** sql changes. From 74ab0905032874f203a43dbc93a6df5e8a2fc136 Mon Sep 17 00:00:00 2001 From: Chong Yidong Date: Sun, 9 Oct 2005 15:49:52 +0000 Subject: [PATCH 051/168] * speedbar.el (speedbar-file-key-map): Fix typo. --- lisp/ChangeLog | 4 ++++ lisp/speedbar.el | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index eb79a8c2b73..888c519faf7 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,7 @@ +2005-10-09 Chong Yidong + + * speedbar.el (speedbar-file-key-map): Fix typo. + 2005-10-09 Daniel Brockman * cus-start.el (line-spacing): Add custom spec. diff --git a/lisp/speedbar.el b/lisp/speedbar.el index cdb592a3944..bb813808ed9 100644 --- a/lisp/speedbar.el +++ b/lisp/speedbar.el @@ -762,7 +762,7 @@ This basically creates a sparse keymap, and makes it's parent be (define-key speedbar-file-key-map "-" 'speedbar-contract-line) (define-key speedbar-file-key-map "[" 'speedbar-expand-line-descendants) - (define-key speedbar-file-key-map "]" 'speedbar-close-line-descendants) + (define-key speedbar-file-key-map "]" 'speedbar-contract-line-descendants) (define-key speedbar-file-key-map " " 'speedbar-toggle-line-expansion) From 41791a20d7136db79a0b44a281b65216de35a4cf Mon Sep 17 00:00:00 2001 From: Romain Francoise Date: Sun, 9 Oct 2005 16:53:35 +0000 Subject: [PATCH 052/168] (Fwindow_end): Don't try to redisplay if non-interactive. --- src/ChangeLog | 6 +++++- src/window.c | 3 ++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index d9b2eb7ab3c..693ddb3bf57 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,6 +1,10 @@ +2005-10-09 Romain Francoise + + * window.c (Fwindow_end): Don't try to redisplay if non-interactive. + 2005-10-09 Jan Dj,Ad(Brv - * emacs.c (standard_args): Removed options -i, -itype, --icon-type, + * emacs.c (standard_args): Removed options -i, -itype, --icon-type, added -nb, --no-bitmap-icon. * xfns.c (Fx_create_frame): Make bitmapIcon have default on. diff --git a/src/window.c b/src/window.c index 3e9354a7ba8..9ef4fc2eacd 100644 --- a/src/window.c +++ b/src/window.c @@ -1029,7 +1029,8 @@ if it isn't already recorded. */) if (! NILP (update) && ! (! NILP (w->window_end_valid) - && XFASTINT (w->last_modified) >= MODIFF)) + && XFASTINT (w->last_modified) >= MODIFF) + && !noninteractive) { struct text_pos startp; struct it it; From 9af145676d2b6a7d4c074e0e963f3340ef634eab Mon Sep 17 00:00:00 2001 From: Bill Wohler Date: Sun, 9 Oct 2005 19:33:26 +0000 Subject: [PATCH 053/168] * Makefile.in (updates): Added mh-loaddefs dependency. --- lisp/ChangeLog | 4 ++++ lisp/Makefile.in | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 888c519faf7..487550513cb 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,7 @@ +2005-10-09 Bill Wohler + + * Makefile.in (updates): Added mh-loaddefs dependency. + 2005-10-09 Chong Yidong * speedbar.el (speedbar-file-key-map): Fix typo. diff --git a/lisp/Makefile.in b/lisp/Makefile.in index 07231d57405..a66ea05f27a 100644 --- a/lisp/Makefile.in +++ b/lisp/Makefile.in @@ -117,7 +117,7 @@ update-subdirs: doit $(srcdir)/update-subdirs $$file; \ done; -updates: update-subdirs autoloads finder-data custom-deps +updates: update-subdirs autoloads mh-autoloads finder-data custom-deps # Update the AUTHORS file. From 1919ed22637d355931564a6f6701e2317aff2ba4 Mon Sep 17 00:00:00 2001 From: Nick Roberts Date: Sun, 9 Oct 2005 20:21:38 +0000 Subject: [PATCH 054/168] *** empty log message *** --- lisp/ChangeLog | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 487550513cb..6da347a36af 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,14 @@ +2005-10-10 Nick Roberts + + * speedbar.el (speedbar-buffer-easymenu-definition): Add menu + separator. + + * progmodes/gud.el (gud-last-speedbar-buffer): Remove. + (gud-install-speedbar-variables): Add GUD to speedbar "Displays" + list. + (gud-expansion-speedbar-buttons): New function. + (gud-speedbar-buttons): Check for gud-comint-buffer. + 2005-10-09 Bill Wohler * Makefile.in (updates): Added mh-loaddefs dependency. From b863eb35947e47db28f4f3a38cfc5adbb1fbb256 Mon Sep 17 00:00:00 2001 From: Nick Roberts Date: Sun, 9 Oct 2005 20:22:43 +0000 Subject: [PATCH 055/168] (gud-last-speedbar-buffer): Remove. (gud-install-speedbar-variables): Add GUD to speedbar "Displays" list. (gud-expansion-speedbar-buttons): New function. (gud-speedbar-buttons): Check for gud-comint-buffer. --- lisp/progmodes/gud.el | 166 +++++++++++++++++++++--------------------- 1 file changed, 82 insertions(+), 84 deletions(-) diff --git a/lisp/progmodes/gud.el b/lisp/progmodes/gud.el index 8840a01283f..cc6163d6235 100644 --- a/lisp/progmodes/gud.el +++ b/lisp/progmodes/gud.el @@ -336,9 +336,6 @@ we're in the GUD buffer)." ;; speedbar support functions and variables. (eval-when-compile (require 'speedbar)) ;For speedbar-with-attached-buffer. -(defvar gud-last-speedbar-buffer nil - "The last GUD buffer used.") - (defvar gud-last-speedbar-stackframe nil "Description of the currently displayed GUD stack. t means that there is no stack, and we are in display-file mode.") @@ -355,7 +352,11 @@ t means that there is no stack, and we are in display-file mode.") (define-key gud-speedbar-key-map "j" 'speedbar-edit-line) (define-key gud-speedbar-key-map "e" 'speedbar-edit-line) (define-key gud-speedbar-key-map "\C-m" 'speedbar-edit-line) - (define-key gud-speedbar-key-map "D" 'gdb-var-delete))) + (define-key gud-speedbar-key-map "D" 'gdb-var-delete)) + + (speedbar-add-expansion-list '("GUD" gud-speedbar-menu-items + gud-speedbar-key-map + gud-expansion-speedbar-buttons))) (defvar gud-speedbar-menu-items '(["Jump to stack frame" speedbar-edit-line @@ -374,89 +375,86 @@ t means that there is no stack, and we are in display-file mode.") (gud-install-speedbar-variables) (add-hook 'speedbar-load-hook 'gud-install-speedbar-variables)) +(defun gud-expansion-speedbar-buttons (directory zero) + "Wrapper for call to speedbar-add-expansion-list. DIRECTORY and +ZERO are not used, but are required by the caller." + (gud-speedbar-buttons gud-comint-buffer)) + (defun gud-speedbar-buttons (buffer) "Create a speedbar display based on the current state of GUD. If the GUD BUFFER is not running a supported debugger, then turn -off the specialized speedbar mode." - (let ((minor-mode (with-current-buffer buffer gud-minor-mode))) - (cond - ((memq minor-mode '(gdbmi gdba)) - (when (or gdb-var-changed - (not (save-excursion - (goto-char (point-min)) - (let ((case-fold-search t)) - (looking-at "Watch Expressions:"))))) - (erase-buffer) - (insert "Watch Expressions:\n") - (let ((var-list gdb-var-list)) - (while var-list - (let* ((depth 0) (start 0) (char ?+) - (var (car var-list)) (varnum (nth 1 var))) - (while (string-match "\\." varnum start) - (setq depth (1+ depth) - start (1+ (match-beginning 0)))) - (if (equal (nth 2 var) "0") - (speedbar-make-tag-line 'bracket ?? nil nil - (concat (car var) "\t" (nth 4 var)) - 'gdb-edit-value - nil - (if (and (nth 5 var) - gdb-show-changed-values) - 'font-lock-warning-face - nil) depth) - (if (and (cadr var-list) - (string-match varnum (cadr (cadr var-list)))) - (setq char ?-)) - (speedbar-make-tag-line 'bracket char - 'gdb-speedbar-expand-node varnum - (concat (car var) "\t" (nth 3 var)) - nil nil nil depth))) - (setq var-list (cdr var-list)))) - (setq gdb-var-changed nil))) - (t (if (and (save-excursion - (goto-char (point-min)) - (looking-at "Current Stack")) - (equal gud-last-last-frame gud-last-speedbar-stackframe)) - nil - (setq gud-last-speedbar-buffer buffer) - (let ((gud-frame-list - (cond ((eq minor-mode 'gdb) - (gud-gdb-get-stackframe buffer)) - ;; Add more debuggers here! - (t (speedbar-remove-localized-speedbar-support buffer) - nil)))) - (erase-buffer) - (if (not gud-frame-list) - (insert "No Stack frames\n") - (insert "Current Stack:\n")) - (dolist (frame gud-frame-list) - (insert (nth 1 frame) ":\n") - (if (= (length frame) 2) - (progn -; (speedbar-insert-button "[?]" -; 'speedbar-button-face -; nil nil nil t) - (speedbar-insert-button (car frame) - 'speedbar-directory-face - nil nil nil t)) -; (speedbar-insert-button "[+]" -; 'speedbar-button-face -; 'speedbar-highlight-face -; 'gud-gdb-get-scope-data -; frame t) - (speedbar-insert-button (car frame) - 'speedbar-file-face - 'speedbar-highlight-face - (cond ((memq minor-mode '(gdbmi gdba gdb)) - 'gud-gdb-goto-stackframe) - (t (error "Should never be here"))) - frame t))) -; (let ((selected-frame -; (cond ((eq ff 'gud-gdb-find-file) -; (gud-gdb-selected-frame-info buffer)) -; (t (error "Should never be here")))))) - ) - (setq gud-last-speedbar-stackframe gud-last-last-frame)))))) +off the specialized speedbar mode. BUFFER is not used, but are +required by the caller." + (when (and (boundp 'gud-comint-buffer) + gud-comint-buffer + ;; gud-comint-buffer might be killed + (buffer-name gud-comint-buffer)) + (let ((minor-mode (with-current-buffer buffer gud-minor-mode))) + (cond + ((memq minor-mode '(gdbmi gdba)) + (when (or gdb-var-changed + (not (save-excursion + (goto-char (point-min)) + (let ((case-fold-search t)) + (looking-at "Watch Expressions:"))))) + (erase-buffer) + (insert "Watch Expressions:\n") + (let ((var-list gdb-var-list)) + (while var-list + (let* ((depth 0) (start 0) (char ?+) + (var (car var-list)) (varnum (nth 1 var))) + (while (string-match "\\." varnum start) + (setq depth (1+ depth) + start (1+ (match-beginning 0)))) + (if (equal (nth 2 var) "0") + (speedbar-make-tag-line 'bracket ?? nil nil + (concat (car var) "\t" (nth 4 var)) + 'gdb-edit-value + nil + (if (and (nth 5 var) + gdb-show-changed-values) + 'font-lock-warning-face + nil) depth) + (if (and (cadr var-list) + (string-match varnum (cadr (cadr var-list)))) + (setq char ?-)) + (speedbar-make-tag-line 'bracket char + 'gdb-speedbar-expand-node varnum + (concat (car var) "\t" (nth 3 var)) + nil nil nil depth))) + (setq var-list (cdr var-list)))) + (setq gdb-var-changed nil))) + (t (if (and (save-excursion + (goto-char (point-min)) + (looking-at "Current Stack:")) + (equal gud-last-last-frame gud-last-speedbar-stackframe)) + nil + (let ((gud-frame-list + (cond ((eq minor-mode 'gdb) + (gud-gdb-get-stackframe buffer)) + ;; Add more debuggers here! + (t (speedbar-remove-localized-speedbar-support buffer) + nil)))) + (erase-buffer) + (if (not gud-frame-list) + (insert "No Stack frames\n") + (insert "Current Stack:\n")) + (dolist (frame gud-frame-list) + (insert (nth 1 frame) ":\n") + (if (= (length frame) 2) + (progn + (speedbar-insert-button (car frame) + 'speedbar-directory-face + nil nil nil t)) + (speedbar-insert-button + (car frame) + 'speedbar-file-face + 'speedbar-highlight-face + (cond ((memq minor-mode '(gdbmi gdba gdb)) + 'gud-gdb-goto-stackframe) + (t (error "Should never be here"))) + frame t)))) + (setq gud-last-speedbar-stackframe gud-last-last-frame))))))) ;; ====================================================================== From 78d67e1028908a695720bf07bb16509b63f3fe7d Mon Sep 17 00:00:00 2001 From: Romain Francoise Date: Sun, 9 Oct 2005 20:56:54 +0000 Subject: [PATCH 056/168] *** empty log message *** --- lisp/ChangeLog | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 6da347a36af..22157d2482b 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -4,14 +4,13 @@ separator. * progmodes/gud.el (gud-last-speedbar-buffer): Remove. - (gud-install-speedbar-variables): Add GUD to speedbar "Displays" - list. + (gud-install-speedbar-variables): Add GUD to speedbar "Displays" list. (gud-expansion-speedbar-buttons): New function. (gud-speedbar-buttons): Check for gud-comint-buffer. 2005-10-09 Bill Wohler - * Makefile.in (updates): Added mh-loaddefs dependency. + * Makefile.in (updates): Add mh-loaddefs dependency. 2005-10-09 Chong Yidong @@ -61,6 +60,7 @@ * calc/calc.el (calc-set-mode-line): Add square matrix option. 2005-10-08 Lars Hansen + * net/tramp.el (tramp-perl-directory-files-and-attributes): Add error handling. (tramp-handle-directory-files-and-attributes): Handle error perl From de22e5d19579522baae53b8b425a9ff96fa5f6b5 Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Sun, 9 Oct 2005 21:19:50 +0000 Subject: [PATCH 057/168] (Speedbar): Clarify the text. --- man/ChangeLog | 4 +++ man/frames.texi | 79 +++++++++++++++++++++++++++---------------------- 2 files changed, 48 insertions(+), 35 deletions(-) diff --git a/man/ChangeLog b/man/ChangeLog index 95bd65cfd64..49af7878085 100644 --- a/man/ChangeLog +++ b/man/ChangeLog @@ -1,3 +1,7 @@ +2005-10-09 Richard M. Stallman + + * frames.texi (Speedbar): Clarify the text. + 2005-10-09 Chong Yidong * frames.texi (Speedbar): Add information on keybindings, diff --git a/man/frames.texi b/man/frames.texi index 3736fdbb91c..b01dd626d42 100644 --- a/man/frames.texi +++ b/man/frames.texi @@ -545,47 +545,56 @@ selects it, that variable should be @code{t}; if a click is necessary, the variable should be @code{nil}. @node Speedbar -@section Making and Using a Speedbar Frame +@section Speedbar Frames @cindex speedbar - The @dfn{Speedbar} is a special frame that is used to summarize -information related to other buffers. Normally, it displays a menu of -files you could visit and tags within those files. Type @kbd{M-x -speedbar} to enable the speedbar and associate it with the current -frame (which is called the speedbar's @dfn{attached frame}). +@cindex attached frame (of speedbar) + The @dfn{speedbar} is a special frame for conveniently navigating in +or operating on another frame. The speedbar, when it exists, is +always associated with a specific frame, called its @dfn{attached +frame}; all speedbar operations act on that frame. - Currently, only one speedbar is supported at a time. To dismiss the -speedbar, select it and type @kbd{q} or @kbd{M-x speedbar}, or delete -the frame or window normally. You can then attach the speedbar to a -different frame by calling @kbd{M-x speedbar} from that frame. + Type @kbd{M-x speedbar} to create the speedbar and associate it with +the current frame. To dismiss the speedbar, select it and type +@kbd{q} or @kbd{M-x speedbar}. (You can also delete the speedbar +frame like any other Emacs frame.) You can then attach the speedbar +to a different frame by typing @kbd{M-x speedbar} in that frame. +@c ??? If the speedbar is active, and I type M-x speedbar in another +@c frame, does that attach the speedbar to that other frame? +@c If not, it should! -- rms - When you initially launch the speedbar, it starts in @dfn{File -Display Mode}, showing the current directory of the selected window of -the attached frame, one file per line. Clicking on a file name visits -that file in the attached frame, and clicking on a directory name -shows that directory in the speedbar (@pxref{Mouse References}). Each -line also has a box, @samp{[+]} or @samp{<+>}, that you can click on -to @dfn{expand} the contents of that item. Expanding a directory adds -the contents of that directory to the speedbar display, underneath the -directory's own line. Expanding an ordinary file adds a list of the -tags in that file to the speedbar display; you can click on a tag name -to jump to that tag in the attached frame. When a file or directory -is expanded, the @samp{[+]} changes to @samp{[-]}; you can click on -that box to @dfn{contract} the item, hiding its contents. +@c ??? When you visit a file in this way, does it appear +in the selected window? In a new window in the same frame? -- rms + The speedbar can operate in various modes. Its default mode is +@dfn{File Display} mode, which shows the files in the current +directory of the selected window of the attached frame, one file per +line. Clicking on a file name visits that file in the attached frame, +and clicking on a directory name shows that directory in the speedbar +(@pxref{Mouse References}). Each line also has a box, @samp{[+]} or +@samp{<+>}, that you can click on to @dfn{expand} the contents of that +item. Expanding a directory adds the contents of that directory to +the speedbar display, underneath the directory's own line. Expanding +an ordinary file adds a list of the tags in that file to the speedbar +display; you can click on a tag name to jump to that tag in the +attached frame. When a file or directory is expanded, the @samp{[+]} +changes to @samp{[-]}; you can click on that box to @dfn{contract} the +item, hiding its contents. - You can also use the keyboard to navigate the speedbar. Typing -@kbd{RET} is equivalent to clicking the item on the current line, and -@kbd{SPC} expands or contracts the item. @kbd{U} displays the parent -directory of the current directory. To copy, delete, or rename the -file on the current line, type @kbd{C}, @kbd{D}, and @kbd{R} -respectively. To create a new directory, type @kbd{M}. + You navigate through the speedbar using the keyboard, too. Typing +@kbd{RET} while point is on a line in the speedbar is equivalent to +clicking the item on the current line, and @kbd{SPC} expands or +contracts the item. @kbd{U} displays the parent directory of the +current directory. To copy, delete, or rename the file on the current +line, type @kbd{C}, @kbd{D}, and @kbd{R} respectively. To create a +new directory, type @kbd{M}. - The speedbar is not limited to showing files. Type @kbd{b} to enter -@dfn{Buffer Display Mode}, in which the speedbar displays a list of -Emacs buffers. To return to File Display Mode, type @kbd{f}. You can -also change the display mode by clicking @kbd{mouse-3} anywhere in the -speedbar window (or @kbd{mouse-1} on the mode-line) and selecting -@samp{Displays} in the pop-up menu. + Another general-purpose speedbar mode is @dfn{Buffer Display} mode; +in this mode, the speedbar displays a list of Emacs buffers. To +switch to this mode, type @kbd{b} in the speedbar. To return to File +Display mode, type @kbd{f}. You can also change the display mode by +clicking @kbd{mouse-3} anywhere in the speedbar window (or +@kbd{mouse-1} on the mode-line) and selecting @samp{Displays} in the +pop-up menu. Some major modes, including Rmail mode, Info, and GUD, have specialized ways of putting useful items into the speedbar for you to From 7cf7e30ff4ee5ac8e8c1b4e3ec49226abb96bc7d Mon Sep 17 00:00:00 2001 From: "Kim F. Storm" Date: Sun, 9 Oct 2005 22:32:57 +0000 Subject: [PATCH 058/168] *** empty log message *** --- etc/NEWS | 2 +- lisp/ChangeLog | 14 ++++++-------- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/etc/NEWS b/etc/NEWS index fa5caeee5c6..b32e2b83fdc 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -4402,7 +4402,7 @@ If non-nil, that says to preserve the window's current margin, fringe, and scroll-bar settings. +++ -*** The new function `window-split-tree' returns a frame's window split tree. +*** The new function `window-tree' returns a frame's window tree. +++ ** Customizable fringe bitmaps diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 22157d2482b..2b7659bcd7f 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -48,7 +48,7 @@ across products. * calc/calc-keypd.el (calc-do-keypad): Widen keypad window for - fullscreen keypad. Suggested by Luc Teirlinck. + fullscreen keypad. Suggested by Luc Teirlinck. (calc-keypad-show-input): Add space for formatting. * calc/calc-mode.el (calc-matrix-mode, math-get-modes-vec): @@ -63,19 +63,17 @@ * net/tramp.el (tramp-perl-directory-files-and-attributes): Add error handling. - (tramp-handle-directory-files-and-attributes): Handle error perl - error message. + (tramp-handle-directory-files-and-attributes): Handle perl error msg. 2005-10-08 Michael Albinus Sync with Tramp 2.0.51. * net/tramp.el (tramp-handle-set-visited-file-modtime) - (tramp-handle-insert-file-contents) - (tramp-handle-write-region): Insert special handling for - `last-coding-system-used' again, it still seems to be - necessary (unlike stated before). Reported by Toshinori Sugita - + (tramp-handle-insert-file-contents, tramp-handle-write-region): + Insert special handling for `last-coding-system-used', again + it still seems to be necessary (unlike stated before). + Reported by Toshinori Sugita . (tramp-password-prompt-regexp): There might be other words before trailing ":". Reported by Kurt Steinkraus . (tramp-chunksize): Improve docstring. From cc8556d9763db3924cabcf8f874e76bf988eb4ae Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Mon, 10 Oct 2005 01:14:28 +0000 Subject: [PATCH 059/168] (flyspell-external-point-words): Simplify logic, and don't try to check for consecutive appearances of one incorrect word. --- lisp/ChangeLog | 6 ++++ lisp/textmodes/flyspell.el | 74 ++++++++++++++++++-------------------- 2 files changed, 41 insertions(+), 39 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 2b7659bcd7f..60e1924206d 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,9 @@ +2005-10-09 Richard M. Stallman + + * textmodes/flyspell.el (flyspell-external-point-words): Simplify + logic, and don't try to check for consecutive appearances of one + incorrect word. + 2005-10-10 Nick Roberts * speedbar.el (speedbar-buffer-easymenu-definition): Add menu diff --git a/lisp/textmodes/flyspell.el b/lisp/textmodes/flyspell.el index bd91e2b9b3d..10d61e0852a 100644 --- a/lisp/textmodes/flyspell.el +++ b/lisp/textmodes/flyspell.el @@ -1322,47 +1322,43 @@ Word syntax described by `flyspell-dictionary-alist' (which see)." ;* flyspell-external-point-words ... */ ;*---------------------------------------------------------------------*/ (defun flyspell-external-point-words () - (let ((buffer flyspell-external-ispell-buffer)) - (set-buffer buffer) + "Mark words from a buffer listing incorrect words in order of appearance. +The list of incorrect words should be in `flyspell-external-ispell-buffer'. +\(We finish by killing that buffer and setting the variable to nil.) +The buffer to mark them in is `flyspell-large-region-buffer'." + + (with-current-buffer flyspell-external-ispell-buffer (goto-char (point-min)) - (let ((pword "") - (pcount 1)) - ;; now we are done with ispell, we have to find the word in - ;; the initial buffer - (while (< (point) (- (point-max) 1)) - ;; we have to fetch the incorrect word - (if (re-search-forward "\\([^\n]+\\)\n" (point-max) t) - (let ((word (match-string 1))) - (if (string= word pword) - (setq pcount (1+ pcount)) - (progn - (setq pword word) - (setq pcount 1))) - (goto-char (match-end 0)) - (if flyspell-issue-message-flag - (message "Spell Checking...%d%% [%s]" - (* 100 (/ (float (point)) (point-max))) - word)) - (set-buffer flyspell-large-region-buffer) - (goto-char flyspell-large-region-beg) - (let ((keep t) - (n 0)) - (while (and (or (< n pcount) keep) - (search-forward word flyspell-large-region-end t)) - (progn - (goto-char (- (point) 1)) - (setq n (1+ n)) - (setq keep (flyspell-word)))) - (if (= n pcount) - (setq flyspell-large-region-beg (point)))) - (set-buffer buffer)) - (goto-char (point-max))))) + ;; Loop over incorrect words. + (while (re-search-forward "\\([^\n]+\\)\n" (point-max) t) + ;; Bind WORD to the next one. + (let ((word (match-string 1))) + ;; Here there used to be code to see if WORD is the same + ;; as the previous iteration, and count the number of consecutive + ;; identical words, and the loop below would search for that many. + ;; That code seemed to be incorrect, and on principle, should + ;; be unnecessary too. -- rms. + (if flyspell-issue-message-flag + (message "Spell Checking...%d%% [%s]" + (* 100 (/ (float (point)) (point-max))) + word)) + ;; Search the other buffer for occurrences of this word, + ;; and check them. Stop when we find one that reports "incorrect". + ;; (I don't understand the reason for that logic, + ;; but I didn't want to change it. -- rms.) + (with-current-buffer flyspell-large-region-buffer + (goto-char flyspell-large-region-beg) + (let ((keep t)) + (while (and keep + (search-forward word flyspell-large-region-end t)) + (goto-char (- (point) 1)) + (setq keep (flyspell-word))) + (setq flyspell-large-region-beg (point)))))) ;; we are done - (if flyspell-issue-message-flag (message "Spell Checking completed.")) - ;; ok, we are done with pointing out incorrect words, we just - ;; have to kill the temporary buffer - (kill-buffer flyspell-external-ispell-buffer) - (setq flyspell-external-ispell-buffer nil))) + (if flyspell-issue-message-flag (message "Spell Checking completed."))) + ;; Kill and forget the buffer with the list of incorrect words. + (kill-buffer flyspell-external-ispell-buffer) + (setq flyspell-external-ispell-buffer nil)) ;*---------------------------------------------------------------------*/ ;* flyspell-large-region ... */ From 9bab4985d9d5d99fac443f0d5a3a1dd47f28fc1a Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Mon, 10 Oct 2005 03:25:34 +0000 Subject: [PATCH 060/168] (font-lock-syntactic-keywords, font-lock-keywords): Doc fixes. --- lisp/ChangeLog | 3 +++ lisp/font-lock.el | 47 ++++++++++++++++++++++++----------------------- 2 files changed, 27 insertions(+), 23 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 60e1924206d..5ae269835f9 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,8 @@ 2005-10-09 Richard M. Stallman + * font-lock.el (font-lock-syntactic-keywords) + (font-lock-keywords): Doc fixes. + * textmodes/flyspell.el (flyspell-external-point-words): Simplify logic, and don't try to check for consecutive appearances of one incorrect word. diff --git a/lisp/font-lock.el b/lisp/font-lock.el index c4228c2841d..3d2d0fe6ef0 100644 --- a/lisp/font-lock.el +++ b/lisp/font-lock.el @@ -354,7 +354,7 @@ contained expressions. You can also alter it by calling Each element in a user-level keywords list should have one of these forms: MATCHER - (MATCHER . MATCH) + (MATCHER . SUBEXP) (MATCHER . FACENAME) (MATCHER . HIGHLIGHT) (MATCHER HIGHLIGHT ...) @@ -380,12 +380,13 @@ word \"bar\" following the word \"anchor\" then MATCH-ANCHORED may be required. MATCH-HIGHLIGHT should be of the form: - (MATCH FACENAME [OVERRIDE [LAXMATCH]]) + (SUBEXP FACENAME [OVERRIDE [LAXMATCH]]) -MATCH is the subexpression of MATCHER to be highlighted. FACENAME is an -expression whose value is the face name to use. Face default attributes -can be modified via \\[customize]. Instead of a face, FACENAME can -evaluate to a property list of the form (face FACE PROP1 VAL1 PROP2 VAL2 ...) +SUBEXP is the number of the subexpression of MATCHER to be highlighted. + +FACENAME is an expression whose value is the face name to use. +Instead of a face, FACENAME can evaluate to a property list +of the form (face FACE PROP1 VAL1 PROP2 VAL2 ...) in which case all the listed text-properties will be set rather than just FACE. In such a case, you will most likely want to put those properties in `font-lock-extra-managed-props' or to override @@ -395,7 +396,8 @@ OVERRIDE and LAXMATCH are flags. If OVERRIDE is t, existing fontification can be overwritten. If `keep', only parts not already fontified are highlighted. If `prepend' or `append', existing fontification is merged with the new, in which the new or existing fontification, respectively, takes precedence. -If LAXMATCH is non-nil, no error is signaled if there is no MATCH in MATCHER. +If LAXMATCH is non-nil, that means don't signal an error if there is +no match for SUBEXP in MATCHER. For example, an element of the form highlights (if not already highlighted): @@ -508,36 +510,35 @@ The function is called with a single parameter (the state as returned by should return a face. This is normally set via `font-lock-defaults'.") (defvar font-lock-syntactic-keywords nil - "A list of the syntactic keywords to highlight. -Can be the list or the name of a function or variable whose value is the list. -See `font-lock-keywords' for a description of the form of this list; -the differences are listed below. MATCH-HIGHLIGHT should be of the form: + "A list of the syntactic keywords to put syntax properties on. +The value can be the list itself, or the name of a function or variable +whose value is the list. - (MATCH SYNTAX OVERRIDE LAXMATCH) +See `font-lock-keywords' for a description of the form of this list; +only the differences are stated here. MATCH-HIGHLIGHT should be of the form: + + (SUBEXP SYNTAX OVERRIDE LAXMATCH) where SYNTAX can be a string (as taken by `modify-syntax-entry'), a syntax table, a cons cell (as returned by `string-to-syntax') or an expression whose value is such a form. OVERRIDE cannot be `prepend' or `append'. -For example, an element of the form highlights syntactically: +Here are two examples of elements of `font-lock-syntactic-keywords' +and what they do: (\"\\\\$\\\\(#\\\\)\" 1 \".\") - a hash character when following a dollar character, with a SYNTAX of - \".\" (meaning punctuation syntax). Assuming that the buffer syntax table does - specify hash characters to have comment start syntax, the element will only - highlight hash characters that do not follow dollar characters as comments - syntactically. + gives a hash character punctuation syntax (\".\") when following a + dollar-sign character. Hash characters in other contexts will still + follow whatever the syntax table says about the hash character. (\"\\\\('\\\\).\\\\('\\\\)\" (1 \"\\\"\") (2 \"\\\"\")) - both single quotes which surround a single character, with a SYNTAX of - \"\\\"\" (meaning string quote syntax). Assuming that the buffer syntax table - does not specify single quotes to have quote syntax, the element will only - highlight single quotes of the form 'c' as strings syntactically. - Other forms, such as foo'bar or 'fubar', will not be highlighted as strings. + gives a pair single-quotes, which surround a single character, a SYNTAX of + \"\\\"\" (meaning string quote syntax). Single-quote characters in other + contexts will not be affected. This is normally set via `font-lock-defaults'.") From 1fb7ce77dfbd0ac5ca9bdfdc53518148ae1b4012 Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Mon, 10 Oct 2005 04:03:09 +0000 Subject: [PATCH 061/168] (flyspell-check-word-p): If unread-command-events is non-empty, don't call sit-for. --- lisp/ChangeLog | 5 +++++ lisp/textmodes/flyspell.el | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 5ae269835f9..d2aada89bb1 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2005-10-10 Kenichi Handa + + * textmodes/flyspell.el (flyspell-check-word-p): + If unread-command-events is non-empty, don't call sit-for. + 2005-10-09 Richard M. Stallman * font-lock.el (font-lock-syntactic-keywords) diff --git a/lisp/textmodes/flyspell.el b/lisp/textmodes/flyspell.el index 10d61e0852a..74c7cbc5762 100644 --- a/lisp/textmodes/flyspell.el +++ b/lisp/textmodes/flyspell.el @@ -772,7 +772,8 @@ Mostly we check word delimiters." ((get this-command 'flyspell-delayed) ;; the current command is not delayed, that ;; is that we must check the word now - (sit-for flyspell-delay)) + (and (not unread-command-events) + (sit-for flyspell-delay))) (t t))) (t t))) From 1d676e9fe3ee65ba26c299809d1a16cde2b6ac1b Mon Sep 17 00:00:00 2001 From: Carsten Dominik Date: Mon, 10 Oct 2005 09:16:22 +0000 Subject: [PATCH 062/168] (org-mode-map): Explicit definition of `C-c C-x' as a prefix. (orgtbl-mode-map): Full keymap instead of sparse, because all `self-insert-command' keys are redifined in this map. (org-export-as-html): Specify charset for HTML file, by taking it from the coding system. --- lisp/textmodes/org.el | 191 ++++++++++++++++++++++-------------------- 1 file changed, 102 insertions(+), 89 deletions(-) diff --git a/lisp/textmodes/org.el b/lisp/textmodes/org.el index f10e546d00b..b9542c9fce7 100644 --- a/lisp/textmodes/org.el +++ b/lisp/textmodes/org.el @@ -5,7 +5,7 @@ ;; Author: Carsten Dominik ;; Keywords: outlines, hypermedia, calendar ;; Homepage: http://www.astro.uva.nl/~dominik/Tools/org/ -;; Version: 3.16 +;; Version: 3.17 ;; ;; This file is part of GNU Emacs. ;; @@ -80,6 +80,9 @@ ;; ;; Changes: ;; ------- +;; Version 3.17 +;; - HTML export specifies character set depending on coding-system. +;; ;; Version 3.16 ;; - In tables, directly after the field motion commands like TAB and RET, ;; typing a character will blank the field. Can be turned off with @@ -210,7 +213,7 @@ ;;; Customization variables -(defvar org-version "3.16" +(defvar org-version "3.17" "The version number of the file org.el.") (defun org-version () (interactive) @@ -482,89 +485,6 @@ or contain a special line If the file does not specify a category, then file's base name is used instead.") -(defun org-set-regexps-and-options () - "Precompute regular expressions for current buffer." - (when (eq major-mode 'org-mode) - (let ((re (org-make-options-regexp - '("CATEGORY" "SEQ_TODO" "PRI_TODO" "TYP_TODO" - "STARTUP" "ARCHIVE"))) - (splitre "[ \t]+") - kwds int key value cat arch) - (save-excursion - (save-restriction - (widen) - (goto-char (point-min)) - (while (re-search-forward re nil t) - (setq key (match-string 1) value (match-string 2)) - (cond - ((equal key "CATEGORY") - (if (string-match "[ \t]+$" value) - (setq value (replace-match "" t t value))) - (setq cat (intern value))) - ((equal key "SEQ_TODO") - (setq int 'sequence - kwds (append kwds (org-split-string value splitre)))) - ((equal key "PRI_TODO") - (setq int 'priority - kwds (append kwds (org-split-string value splitre)))) - ((equal key "TYP_TODO") - (setq int 'type - kwds (append kwds (org-split-string value splitre)))) - ((equal key "STARTUP") - (let ((opts (org-split-string value splitre)) - (set '(("fold" org-startup-folded t) - ("nofold" org-startup-folded nil) - ("content" org-startup-folded content) - ("dlcheck" org-startup-with-deadline-check t) - ("nodlcheck" org-startup-with-deadline-check nil))) - l var val) - (while (setq l (assoc (pop opts) set)) - (setq var (nth 1 l) val (nth 2 l)) - (set (make-local-variable var) val)))) - ((equal key "ARCHIVE") - (string-match " *$" value) - (setq arch (replace-match "" t t value)) - (remove-text-properties 0 (length arch) - '(face t fontified t) arch))) - ))) - (and cat (set (make-local-variable 'org-category) cat)) - (and kwds (set (make-local-variable 'org-todo-keywords) kwds)) - (and arch (set (make-local-variable 'org-archive-location) arch)) - (and int (set (make-local-variable 'org-todo-interpretation) int))) - ;; Compute the regular expressions and other local variables - (setq org-todo-kwd-priority-p (equal org-todo-interpretation 'priority) - org-todo-kwd-max-priority (1- (length org-todo-keywords)) - org-ds-keyword-length (+ 2 (max (length org-deadline-string) - (length org-scheduled-string))) - org-done-string - (nth (1- (length org-todo-keywords)) org-todo-keywords) - org-todo-regexp - (concat "\\<\\(" (mapconcat 'regexp-quote org-todo-keywords - "\\|") "\\)\\>") - org-not-done-regexp - (concat "\\<\\(" - (mapconcat 'regexp-quote - (nreverse (cdr (reverse org-todo-keywords))) - "\\|") - "\\)\\>") - org-todo-line-regexp - (concat "^\\(\\*+\\)[ \t]*\\(" - (mapconcat 'regexp-quote org-todo-keywords "\\|") - "\\)? *\\(.*\\)") - org-nl-done-regexp - (concat "[\r\n]\\*+[ \t]+" org-done-string "\\>") - org-looking-at-done-regexp (concat "^" org-done-string "\\>") - org-deadline-regexp (concat "\\<" org-deadline-string) - org-deadline-time-regexp - (concat "\\<" org-deadline-string " *<\\([^>]+\\)>") - org-deadline-line-regexp - (concat "\\<\\(" org-deadline-string "\\).*") - org-scheduled-regexp - (concat "\\<" org-scheduled-string) - org-scheduled-time-regexp - (concat "\\<" org-scheduled-string " *<\\([^>]+\\)>")) - (org-set-font-lock-defaults))) - (defgroup org-time nil "Options concerning time stamps and deadlines in Org-mode." :tag "Org Time" @@ -1755,6 +1675,89 @@ When this is non-nil, the headline after the keyword is set to the )) (defvar org-n-levels (length org-level-faces)) +(defun org-set-regexps-and-options () + "Precompute regular expressions for current buffer." + (when (eq major-mode 'org-mode) + (let ((re (org-make-options-regexp + '("CATEGORY" "SEQ_TODO" "PRI_TODO" "TYP_TODO" + "STARTUP" "ARCHIVE"))) + (splitre "[ \t]+") + kwds int key value cat arch) + (save-excursion + (save-restriction + (widen) + (goto-char (point-min)) + (while (re-search-forward re nil t) + (setq key (match-string 1) value (match-string 2)) + (cond + ((equal key "CATEGORY") + (if (string-match "[ \t]+$" value) + (setq value (replace-match "" t t value))) + (setq cat (intern value))) + ((equal key "SEQ_TODO") + (setq int 'sequence + kwds (append kwds (org-split-string value splitre)))) + ((equal key "PRI_TODO") + (setq int 'priority + kwds (append kwds (org-split-string value splitre)))) + ((equal key "TYP_TODO") + (setq int 'type + kwds (append kwds (org-split-string value splitre)))) + ((equal key "STARTUP") + (let ((opts (org-split-string value splitre)) + (set '(("fold" org-startup-folded t) + ("nofold" org-startup-folded nil) + ("content" org-startup-folded content) + ("dlcheck" org-startup-with-deadline-check t) + ("nodlcheck" org-startup-with-deadline-check nil))) + l var val) + (while (setq l (assoc (pop opts) set)) + (setq var (nth 1 l) val (nth 2 l)) + (set (make-local-variable var) val)))) + ((equal key "ARCHIVE") + (string-match " *$" value) + (setq arch (replace-match "" t t value)) + (remove-text-properties 0 (length arch) + '(face t fontified t) arch))) + ))) + (and cat (set (make-local-variable 'org-category) cat)) + (and kwds (set (make-local-variable 'org-todo-keywords) kwds)) + (and arch (set (make-local-variable 'org-archive-location) arch)) + (and int (set (make-local-variable 'org-todo-interpretation) int))) + ;; Compute the regular expressions and other local variables + (setq org-todo-kwd-priority-p (equal org-todo-interpretation 'priority) + org-todo-kwd-max-priority (1- (length org-todo-keywords)) + org-ds-keyword-length (+ 2 (max (length org-deadline-string) + (length org-scheduled-string))) + org-done-string + (nth (1- (length org-todo-keywords)) org-todo-keywords) + org-todo-regexp + (concat "\\<\\(" (mapconcat 'regexp-quote org-todo-keywords + "\\|") "\\)\\>") + org-not-done-regexp + (concat "\\<\\(" + (mapconcat 'regexp-quote + (nreverse (cdr (reverse org-todo-keywords))) + "\\|") + "\\)\\>") + org-todo-line-regexp + (concat "^\\(\\*+\\)[ \t]*\\(" + (mapconcat 'regexp-quote org-todo-keywords "\\|") + "\\)? *\\(.*\\)") + org-nl-done-regexp + (concat "[\r\n]\\*+[ \t]+" org-done-string "\\>") + org-looking-at-done-regexp (concat "^" org-done-string "\\>") + org-deadline-regexp (concat "\\<" org-deadline-string) + org-deadline-time-regexp + (concat "\\<" org-deadline-string " *<\\([^>]+\\)>") + org-deadline-line-regexp + (concat "\\<\\(" org-deadline-string "\\).*") + org-scheduled-regexp + (concat "\\<" org-scheduled-string) + org-scheduled-time-regexp + (concat "\\<" org-scheduled-string " *<\\([^>]+\\)>")) + (org-set-font-lock-defaults))) + ;; Tell the compiler about dynamically scoped variables, ;; and variables from other packages (eval-when-compile @@ -7869,7 +7872,7 @@ this variable requires a restart of Emacs to become effective." table editor in arbitrary modes.") (make-variable-buffer-local 'orgtbl-mode) -(defvar orgtbl-mode-map (make-sparse-keymap) +(defvar orgtbl-mode-map (make-keymap) "Keymap for `orgtbl-mode'.") ;;;###autoload @@ -8827,6 +8830,12 @@ headlines. The default is 3. Lower levels will become bulleted lists." (lang-words nil) (head-count 0) cnt (start 0) + ;; FIXME: The following returns always nil under XEmacs + (coding-system (and (fboundp 'coding-system-get) + (boundp 'buffer-file-coding-system) + buffer-file-coding-system)) + (charset (and coding-system + (coding-system-get coding-system 'mime-charset))) table-open type table-buffer table-orig-buffer ) @@ -8855,13 +8864,14 @@ headlines. The default is 3. Lower levels will become bulleted lists." (insert (format " %s - + " - language (org-html-expand title) date time author)) + language (org-html-expand title) (or charset "iso-8859-1") + date time author)) (if title (insert (concat "

" (org-html-expand title) "

\n"))) (if author (insert (concat (nth 1 lang-words) ": " author "\n"))) @@ -9408,6 +9418,9 @@ When LEVEL is non-nil, increase section numbers on that level." ;; i k @ expendable from outline-mode ;; 0123456789 ! %^& ()_{} " `' free +;; Make `C-c C-x' a prefix key +(define-key org-mode-map "\C-c\C-x" (make-sparse-keymap)) + ;; TAB key with modifiers (define-key org-mode-map "\C-i" 'org-cycle) (define-key org-mode-map [(meta tab)] 'org-complete) @@ -9587,7 +9600,7 @@ COMMANDS is a list of alternating OLDDEF NEWDEF command names." (if (fboundp 'command-remapping) (define-key map (vector 'remap old) new) (substitute-key-definition old new map global-map))))) - + (when (eq org-enable-table-editor 'optimized) ;; If the user wants maximum table support, we need to hijack ;; some standard editing functions From 3185357068e003a5169cdc087327a963412113b3 Mon Sep 17 00:00:00 2001 From: Carsten Dominik Date: Mon, 10 Oct 2005 09:17:45 +0000 Subject: [PATCH 063/168] (Workflow states): Documented that change in keywords becomes active only after restart of Emacs. --- man/org.texi | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/man/org.texi b/man/org.texi index 92248c91e87..b38181c0c22 100644 --- a/man/org.texi +++ b/man/org.texi @@ -4,8 +4,8 @@ @setfilename ../info/org @settitle Org Mode Manual -@set VERSION 3.16 -@set DATE September 2005 +@set VERSION 3.17 +@set DATE October 2005 @dircategory Emacs @direntry From 86bebbbc599a258edfe809f915a9c861b44c48dc Mon Sep 17 00:00:00 2001 From: Carsten Dominik Date: Mon, 10 Oct 2005 09:20:26 +0000 Subject: [PATCH 064/168] *** empty log message *** --- etc/ChangeLog | 4 + etc/orgcard.ps | 896 ++++++++++++++++++++++++------------------------ etc/orgcard.tex | 4 +- lisp/ChangeLog | 9 + man/ChangeLog | 5 + 5 files changed, 466 insertions(+), 452 deletions(-) diff --git a/etc/ChangeLog b/etc/ChangeLog index 026e4ff9fa1..3cafdb3e471 100644 --- a/etc/ChangeLog +++ b/etc/ChangeLog @@ -1,3 +1,7 @@ +2005-10-10 Carsten Dominik + + * orgcard.tex: Version 3.17, no changes except version number. + 2005-10-09 Jan Dj,Ad(Brv * NEWS: -nb, --no-bitmap-icon diff --git a/etc/orgcard.ps b/etc/orgcard.ps index fb550f246e6..8631e221e59 100644 --- a/etc/orgcard.ps +++ b/etc/orgcard.ps @@ -10,7 +10,7 @@ %DVIPSWebPage: (www.radicaleye.com) %DVIPSCommandLine: dvips -t landscape -o orgcard.ps orgcard.dvi %DVIPSParameters: dpi=600, compressed -%DVIPSSource: TeX output 2005.09.23:1744 +%DVIPSSource: TeX output 2005.10.10:1112 %%BeginProcSet: texc.pro %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S @@ -385,183 +385,181 @@ E12CD06BD02AB38CBA57492EFEB4A12AE7B58548623D7F862515AA3EC1B4F84A 7C9CB4390F825B68E7A6DF4D67DAEF89F1D461ABEDACBF1FA02FEF65F0B8E3ED 45974B9EC80855D5A1B34D792CC7793D4F05E81E185C3FA86C8A8FF108BAC2E0 801AB0B3FE4C0CD5257441F29F2F293F4BDCC67D00EFB68440FAEAFE138279D2 -415687CEFCE35F8A1BBB0C18AE4A8ABA688D2F3894B5654AB7AD595E022E6BB3 -083B492C4D6F553EE6DB0D7EF1616F397EA60DC79B6FF8998154D881C74F07D2 -C3B1B9AE8C307182A23EE559466355AA9D092FAA3651C430A550F9C6B18BB05E -1F4B2D7DA2AE2C9BF19B27C827F0E087FD64C5AEB89DF781E2D3FB7F5A471054 -8013A06284F6016A236A1152441EE4703EF4CDB21B964FC029980C62A30DA336 -B5B8DF6EC9FB172B746F1E7A1AB9B5828B1EE32889B22FB532D02045E3567F7C -44B2A0028D20469F45390FEAA44C3555BFAC6F4AF6350CAA53AB97286D25EE00 -933BA6B4E511CF1EBFE8BF240023602A60C3ABC555A08927D0E6AEDC3516D6FA -E4D82F913831A17710EC3A6DB1CE499B58C7B530A1EC4AC1AFF12ED8E79D7EEC -62B47FCAB38ABB2E80B7E05426A416742315C848BEC5AC0D1116BAEFBF220607 -3490F241891680E26C03DB4FFAE6CA4FCB6292226D4549CBCABC3206D1E4D327 -6AAC59B3F07E5D68CD7752C1BA1178A8C7DB6E947DCFAA9EEEDBD01FC8A4D201 -F5BD270279DC4805A24382F6A6108D1B3414D40F46EA91C6108B333342EE1F7E -7086DC76CE42C9C6A6D2858CE3B3E82D0294D8A88E22A0FA9028509F97C85CF5 -3B565E5570F8D4F6F40B8CBD19181B62176FBE65972381E0715EA9281EAE0FE7 -66B5154154738DEAFC9932B3D16EC9EB6F7524F22147C085272719A4AC5CBED3 -E62D88246C56B12ACEB231D42BE72F46D7C6749F9F2487DCEA19ACD3FF21E05B -74324DF87D11DE064F7EFA010B699E7C199908BFC672DDCD69B98D81DDC9C7A4 -062C25FFF5052E5B8042AE6898BAF38ED1C063780B672F0B4E8D331127C0D612 -5705230D97ADCC8103D85DFC7BF7CF154C8A6AABC88419E732EE1C6C724288FE -46F011FD8DD86B343F6240D95D20E8C01452365A061345E876A1B672C2548FC0 -CC0E1B02843714DCA1D8837FBB77E42E590A00D0A4EC1A34DF909A83898C6275 -DC40EAD69FB9436D7D5F0CDB5984A79B86A5AC2DFA0C54F8DC2B210D5C5F890E -64487A1BEB453C2B8D15BE63A1C74CCAEA825CC480AE4C2F4EE985DF8FB624A5 -60CA0E37A9638558EC3C5D1E87936B77D6422E87AB313CC4D91185AA672B92F3 -9D76E2D34A17BA0F35203E72B7D26B71B332D352B2101E871539CB4479954F9C -714158C724DAA05BB5B479CD54E8B0528EF51043EA676CCA3AF74F6CE6024EEE -71346FB0DE3310627BCF9C354FA2BFA44D00E4C11EFC1585C5C5E0C56ECAB11A -EB2037735F483FC4DE666CC61DD2B3214FC3EB4E960DEE07E5835533BE351B99 -18A32EE9888E98922885F3BFC8D5A86B076FF8030D68535FDBA76FBF821842A1 -F7068897E43B3533A9020F1FB35F6BDD8A97C4EE1ACA20EE72081527955D6EC9 -6A2FE32DB339508A0D05AD69AA839BC0D0B7C3B3EE4319A5D27FFDFDF9756583 -A39D0570768314B0B2D5303EF7AF3D52B651093C440CD8AFCE9E27F512D52345 -E292E0E582FBB4A628705A63E6FA384AE2898D324BE2E142716114F158E6178B -5F4D198C5A16608D05C22E647C3025A12955BB5F423563EED4AF398BF2621383 -04AEE3E372C05ADEF6C5D1E5047EE5701884A65B56E0AF429B78FC3A20F72CE8 -F1AEBA8DED5F661A2B336BDC348F8360839E1C2455E7DDB0E190ACA4FA5F4F19 -A2223C786B8E8AE770CEC7A8DEFE523E94458BB67CB2F22555802BDA8CEFD118 -ED2E1BFEE8FFDF6BDF4A61A3E5461B65166147057D47507E7DA9297BE7856D7C -36126E3B82352231A9E9EFC120935438F90913F6DB8953D325907CC8CB0BA012 -3AFD73AC92E481E1FDD6DE7C49ECA620DE1AFCA3E5BA20AADD72B66BE2ECD1DA -70FE7AB3C8DEEC078A034628E68F7B915FE7AC8C3F20A5FA0A80436E4FE0A20D -36589A6F5DB1BACDD8D7325E2F21464FBAB56E729FE7343B02D260FDB2C48607 -4FA69790941A8F45ADE89EF8C1027B04466D1BDAD348A91D5191C7A596BE2408 -5EDE1545714987B4473A51B0C39B1CD9F7B27E7DFC4E828D321E7F40282D7184 -7C5341A9EB897DA4A6C77ACC3FC22B98F40D5422CF53F3E561F781E7BD0F8D77 -F1225D15E96FD9A5723FC0A9E07FCDC18A837C7B14EE0A3158AFAFA976E6F419 -B57A920F7B0784082F818DFE9535570D1C2DB50421D47946FF134BE8FF8B70F5 -F3BD74B7F330BCB49D0CA72C275B39F1204BC7B701F26F80586CE138043BFC05 -11E101A875BA9277500C5AAF134F7E56C34E4704C4F47199F27EE2CC95B70DA7 -BB6D247FA6035D0DF7CCE23B54D67A348528FA551C0CD11BD1B46C62530CD19E -386B27B16A1DDFFB157604C074124374878F9ADEEAE039B4CC91426BE209BE74 -24FB053A5759BE2D970A5CE835D2E462AFFBF4649380049CBFBA8A030135A09D -42DD6EA17E65E0C8BFF3A442B64FC5298C50AD74ED875176EF737F8BE425CB94 -4C7035B5DC09E70A5B35230627CAE6449145357A220400C34281EB9475D3EA87 -310F5D6C14FAAF11356651346907AD48FA099EAE60ECD1E4C9491DCB6519043E -A1D5536CC8F92EA54A4D7FB9D1045284FA76C70F9DC5A23412584D11753C94EF -306A38B474E4F27AE0879819A5BA1FB401FACC0A71678C88BB2E7A8C1D130D91 -FCAD77B00FAC404BA1578779135656287A1F0BC7B6C4D3122ABED9F8B1927D3A -2038D58CA763939F53B8F667DF14811FCB3781B774EE3137B95B456F77E077C3 -F3557D5E06CEDBFB7FD84F5CFA36BF60D0C6BB8EE19FAABD169148FF6C38C30C -B1E354FB043E47F4D1C98A9F95FFECC90760E4DD269F5E212F7E0F6B5519664E -8D88024A5F439DC44C08C2F87EA4C4C5FB0FE0DA729C5D3D53F803B6CFC92793 -B955E961428A9BC704FC576CBD7B77A2E52CE46AA1CEF0CC8987D682804C1052 -D0998F37B2122EFA3932346E5947A5C96E09563D8DDAE2BD95D137155C044788 -1ECB14524651A18A0FC7F0D43F7C8888246BF5F3D7EFBA55F7924FACBD9948D5 -B10027AFA16FD9876E034A9409D9DE405BD3370A907BF9ECBA8289061C94019D -56FFA03F2FC8FFC11882CD5ACCF3AEE9D0FDDECB08433E19F536CEBDB5554947 -7769A3D1A6160689F118B55FEB95EE64391236407596C67E59EB604358845376 -D828EF56639C526F69634AD2C5C13F36F2CD9889BFFEE334F9EF212006298465 -2CDB8F2BC4EE08157E5AE915763EAC45CAAA393FACF3CF8E50788AE1AE6BD39B -49F24D099DC274C4CA6538C20ABBD8BBB9FBE3A038D6798317B938327A7F33FD -866D1CCD14148C95B96E0F35596C6A558077A6C7A2D87CC83393FDB57A6391F1 -875E85FEDAEA2036B1618DF94687A978E6CFDF7944F39E422FE3303270CDAD35 -81F7626BD3375AD01D436A012868C735326114F8AFB42B886CD32EB4A98A19B4 -E1B62B77F2F00548C531EE95F5EA677D16BE65BECF9FE0334757FCFA45F84CED -42F30B37E7DE566107D0F57A3B777E38A725D7AA8A4383BCEFE55CD51AF0B6ED -D1EB1942129CDFDBFFFB5E8D55DAA966AE6A086603F30D400359C2C273DEDEDE -38DE88FB502DA13592F3A7D396816DE8A0A86093E2B6DBA7A77C411F27A478E9 -3EF3166D7AD9133DDF48D873AEF825EF6CB162B98482BD50BDD2D48DD65CC73E -FEF538543B1A6DC11E71A3904A11EA208E70CD1852B0B19CB2EDCD0813D90B07 -19F0DEFFA8F02099B4D6EE3E74B0F0E6BBA43C4A24E6E91E1973ECAB64D313C0 -99F93025AEBBE3B402A87724ADF72937C66235F36A698529F92CFB67D861F908 -493730108FC4D7D9A8E01644FBBEF3B39253B7BFF5EF1DF6C2ACC4CC7F1EFD6E -72F8A54E8D568A484D0E15D2C88D1743D6E225ABD547F7953A5F5E42406F4EAE -EADD36D4998A41CEBABCB1F2945687400C7BE6322E4D924D9901D42032CC55FE -64254DEB51F5C844BCDB03D7069AD72F8F55CC306E12481D0CFAC6210BBF6EC1 -51D195E3A1B23ACD61FFF6A1A446D86DAD11BAD6A74B66D1B7362004FE7C3D2D -E4D5580654FB98A089F7322DACF853C0FF96747526AFE3F896988F7B0144897B -88091909ADDB26726D582235467E7E75372F16F804C7063311402E0F08C41804 -3264D3A54C0795902B0A70CF624827016B3D135F57C192E05EAE87EBE42618CD -CC4D35AF0EEF5BB9A0B78580573458BF8E808B2C9352D9AC844FC13B64EA6A0A -680636D47A0DF610F14FC3B59215B21599C52E206B5038F5AF3A9121BDDB0991 -64AEA5390C32ED5242C93DEAC8A8E398223A4466BEE9AF7DC8EBD1E58E82700D -97AF154B17F0CB94835996913FA29796BF0F262FD7BF307BF31D628128655E40 -8E8A8A6D0073EADB219EFAA3F1C1A040A5CA2B3AB8BF13500250D5DCC6C23A8D -546ACF1B5CE5E71362B9B8B472DB26FDE4624C4D25659F80179E2B840EEEDA65 -262CAE1572E905DC55993DD5652EF70AD17D4FC3651816E60CEE9A7ED5BE8989 -BCC82E24E2B118C176EC340917ED0D61C5195A3B5BAE92373DF0426B1B0E2E3E -07109E9975DED88D1D0A5459D6DBF6912938201A68B3260252091F8C977EA319 -F765D5E0FF6142886632373821EEA024B37604FEAD330949B483E7E9D972B07C -DE877A6991218B9992092462F59EE0BE0342BFB7F26E06AEBA3272D61BA95026 -C1529A435D9F96CBDF8541F91DB2851470B2155C544882D0D0E3990CED8CCF21 -DC8CD12312EB65A48E085935D2B8C0825027737E7E7256AEB89FCE18436FE4C1 -234453520F8E5799ABDDF6B0289178E0A5FCE7E0C9EF98983DAD2C27F69AD57A -417B9539492F30C6AFFFED9CBDC21EBFFAFDDF1F6E9AA9E312988C6CB380CD82 -D86224F31FD16D04E2C07016E99B23F59F05D4F0BCC758B4ABF5FBB2101DE03C -88F5C6971BC83CD764A2045074C31A8C465047FC28CC7D3CEC16EF29E3DDB8B2 -61CD29FAB521D6127A792DF0190F2D5F79879A25682A9452C2A04898B1D748FA -B1B686CD1F9B706657FC96BAB215E471630F94E6A68741CB3035F04F22FA0779 -5266634CAD26160BA102705891640B1171D41BDA8F75E482C62CD3A9D3155738 -1CC4109C167294849466BDC51AB3F640226787E805DCB1A6DDEE253B23E7BDB5 -BCF49FB392113175211BE07E855AF27EF7E7BACE38AB88C1D9BBFD648CE1A073 -9305F78663CD67AFFF0881B355661DB7A48D6F427F31E6E0ED530D55CF5FF3BC -06D2F4FE5E2CE0ADC23B293C5DEDDC39E5F21DE7E629B7A2333C7B0FC6DFE4BD -53FF9F83580668D56E0810CB5830CF84A1E6AE8E4A8CA2EEFED7EDF89A09AD75 -9D315E5C70A0AF0352BC304808209E9E4EFA27A8A9AFB5ABDACB712E47AF831B -7FFE6F3BCEDB86661A9A6B2F515C215276E963997C88E24FFA9593192303C907 -7E9B2E1096D692024C3B52849BD82E0FB5FA248DC46B457A634194C6BA29F2C2 -9FEBD559E7CC6A3B5D9256DE1396EB2C635B7A128193EF783CD2ED5F217BB9EE -1B2D2377F993BE53ADD197F2F12DCC0576B2B0FD6DCF6784016F36F6BA89B834 -262D1E024963D39E279479E1D127CA75112BCFE619615EB6C15346EC3A2EDC7E -8A342E1FC8B8A61B3D08968C00977A4654F036C4B9353DC2C7500EB8F12A2AFE -12491D37A10EBDB0F19409736DA7B62AE9A9E7AE738DA76A63D0CA3C11B997A5 -B0FD5E8C0FDF9759487B3803280F1036B2DDAD846AA162113E5D2EE94B301A58 -02911791528309473040FE0F512A7A2FB30508DC2FA0F4B4220147AB7CC4A83B -7B7A9313AFEE47127AC66CCA2FD6301D58C27B5C49E4C41785EDF404C5D9DC5A -54443FCCB690A5AABB33C7E1874DFE775E39CBA54C3F609065E77D7DB6C34BD2 -892EC469510256C092AD1A8B70C78D68C2EC211CAD18D3A38D571B7C25B7C465 -D8F90E80E19392B13899CDE111D7145C7A8DB5B988F54049E5E94BABF539A7C9 -6AA339CA44B0DB3B406B9F29373A3AE28B5E4544D25D0A4DDBB1EBC9DE4D5854 -2A0C39158DAA88CCA1C2DE5F9E588A35669FC9CCD6C80251CD95B3B75555C37B -19D6E10D1A2EA592D6FFB2A640BE02F00C1A62B5D6B1038C6F13FEF94ED8EEDD -BD4B1CE4A61DD41DBE1EB32DD2E98513AC545E9CCDCDC74F8D1293BFC4F81AC9 -1AAE6611F1F439C52A87C760D08F86D7273EE05569F0D62A88F8C0BA1E6BE645 -9191D1D39D43C9C3565C972A145E0AA8924FDA038B4600A8FA5DD3CA2DA18863 -6ED416AC4133D0E96EAB882BD17F1C995D7822A9A6BD20F9589EA1B99317AA71 -CE08AAD2837F4956C32731CD2895697AA160B039EAE99842AE7C6D562BF0F383 -5369C8A133D6F3C4BEC8B45911143B9C825F8A3CF4FDCB31B97F48006BE9ADC0 -11DCFD1AA424D6D4C5F21A2DED6E5E4622BD2D6419F8B097FEDD3BF4806BA6E5 -5FE67DE62197608351FA7BF17909687B58DC6323356A1560EBA7DAF0DA6C30F1 -9A1463EB04179802CD3D9393867DC77191ED81B045B924AA3F76809565792135 -2D24B8E017A7FF8C8991D060E6F3F6137BCCF30B41A14DB349A677C99D2EC6FE -591BF5CFFA31098AAA62D88E10E2F9844F3AF63AEDED630B1CDDF6FBD581B5B6 -98ED711902189716AABEDBE428594FEE3C203BF6764932847474C12B74D9D9E4 -D18AA4553DC217E0EE86C5CA32398BAAF0955247A1BABCCB62CD3C59798DDC83 -8D248B6E1E9700E989766503D664AB48809E5339A9FD63C537468075FE34D0C8 -2124080D8AAC6D82EC06146ECB9625DD1A1885B4A9338596EB6A4082DEF5EBF3 -AE5ACB49645174BBBC1BC4E64FC4D26469216DFA9C1AB7DDB5364CDBFD50F9E1 -B837419A5B7C5968048618AC453CA045E37D8A87F01B24D30E1F0B905CB29816 -DF958C7FCA6E5BC581E76F03D2B2E67E97B974E4EDBFB31C3851ABD18A8B17B9 -E4ACC739EE9A72EE738F047F5A67C9EE3011E534C363C4604D4C580B7853F659 -7F769BE90A5E2469258B20F8D4DF10BD4A0B69586CDDA5BD08F6FEC75451386B -ED5ABF5489B30D495C24183D6695EC6B7FD554A050A9C7B04D76A783B4346D70 -62A0A947304D81F35C29001F3E855AA34FA9B0CB1A5DD721247087AC30851702 -B2484D7F7C488256758D24318903958AB96AE39216AA7252708D7897C3607914 -DD35B0C862FBB495AFD7AB36FE422BDB7935CE34B6EAF269A7512328D56EBF7E -8FB7698BE3946D38365AB6180F139E15E28A52FF40A1C2C42C7D1596C58B654C -04E43AE282CE56BECB9F8EE264D062630205BD361AC7385380F7D3BED9B0C26D -FC01078D6BBB23C70D32EA798AC9620C60CCBBBCAEF286F52189EE63DF7832EA -FECA2C7EF4D2CA56EF45406365330C898FA73415F9A18E877429C9124982EB41 -FA7159B512FAC6259910A21866470AD9945A0D7FC39D956334A6B30026AA0838 -43E3369BC9C743BE3C29512D49EE3551933CFD29658AA3A2B41E265A68152B9E -6E5ED231DA1EB9C36392ED8C2692FB9E316E96AB83806D72FC1B4C6354E85149 -2655F669F44E49C4110ABFE8F0FEC7821B388436C99C33B203ABADB40729CE97 -A804BCDE32480ACEF760580E7BF94CE28077555F3FC58CAB8048E7CD891A5BA0 -F09AE7E90C64E0374565DF7E03DFEA10198B742BA58CD7969E2EAEEC8311613A -A9092E53147729A4C32B4ACA7AB77A9E01EFF4F294C601A79A3276917682A345 -0A52DFC61AB6E5D3CD6D989BDD8ADCF02272E4A1633B2939158434BD7D168975 -96A85A09BDAA86DC5BCF2088672B5217E87449DA42F66464B49926AC4A047BED -14023EB87BD154073A163DECD7F6380F38C52BFDADE187DA6A92DDED2E4724F5 -D2E58CE99686D259A4269DA7275AE3F43DDF42593750405108575A5037B2F912 -F18584CBD9FE3EF6935CCB5E081982DEC072F7FD6B55FF962D84373CB0F8C0E7 -C990834B6B64934C646AE5929BFFE0609739EC2691048AE17FD884009B975CAB -43C38008EC1893931947B846F7BD5B2B4D20AFFCB1270A27D32CC9E673AC0D26 -E3AC2BA7EF1A4A1A823B14DC8E25745EADF916F0EE3EBA79CB75FC17AFFFA614 -F570D732E4C7CA6F52B3C3A1CC726DBD1CE3E808 +415687CEFCE35F8A1BBB0C18AE4A8ABA688D2F3894B5654AB7AD595E02221090 +2BB6DBA4C0F57B6505E06154D2FD2B4867047BA56876080E6355F74A94B6110E +519BDFCCE8B1591398350C973E52643947FF0DDF1EF1D5BDC2CB548691337378 +CF13E83C7724774281EBCCD04A9A6193DFCAA31067CCDD98444C705CDFC58F57 +51343E8EEF46E9B779B89D59ABE35BAB4F08719816215E434BEB69263F40E144 +B30D52B749F3B66A9147F225777BC69BB72A12C96852AB90629CB453EC8BEF3D +62FD39F7DFF6F9466E98EB42D718EC3F40773D76EFB2FF4E7261C3C64A4C937E +823F633F19C6F58F4BD5E0EF012ECBECC797680A1B862AED6A1DFFD252155E20 +57E8B6B0156FEED1987931DE5EF1CA6D3B580BEAF56C71D8A2385481CFF22E6E +7B6D2FB8F139B5FC183BF5FA5E1ECADE0C78F6F43F37AF77F228E6E41B98142C +085427FF927194E7BE2B84ECCA36BA40DD7EDB158D3DA6109F4668FD12AB988B +0D65E1E14C092F865452DC646E0C246376ACA12C01F17D714A4DB87EDE98B6C3 +60E5A0F414813EF3392168D164463CDB5D55CE2862008ED4FD65F113195E5CE8 +854F473644A50DAAC5D39A3E10D690ECEE89CABBFA93D2B91F4116FAB704797C +C8397FDDC9F364013CDCAE9E9704B1DE28E2CD476AF57C3A30460AF14634C05E +7F1F232F563BFE0C7C3D669700A38A4752AE88BB814DFD08B40E9E7F8BFA0252 +177405ECFE96FC249A6F1B530AF5CF106E21EFE0AC0729C36385E022BBA827F1 +68C11A91E90CA1472AB5767F14821E8FE5E32C7DB4A88FB64E746187CEF23FCE +C499D2472AF392EBB6F79F714AC991F390769C25DC58D364147D868AC08DD739 +FA4602613467E3F2B04ECCCD12333F55D80BA4132883B2498D652E61D4E0096C +B5193FA063E5C4131397D76C9656CE31CDC41D24C17F3208971BB853FDCB3F62 +B3CC083E6D9682CACA448112C84C0FC9FB19C8AB13E0C33EDFEC2A4CC16AB125 +044C048B65011725D34571D9C235736B61A485F7FF0835C7294A6FF2E48194F1 +8FFF4C5A055091AFF95E674F9CD2E43ECCA77F4876B5B50A1D5B38319D594246 +CCA3CD4F81AB3CE49B648FB21F0959801B814422D31DA4F7C3581032F8310E76 +95660ABF1A1DB536081F61FBB83AE5C8B47A9E0575FC475754DEC3689B28582C +016062AA7AA63EE703DBC73ACCB5316DC3A12A2B7926D132D5B463B01452B475 +51862ED934A55F3DEB560FE2CAC39909C99CBDCA1F7239D122D9FFDE76D90D8E +0576A645714E190BE1938E8A9EF1E4E5C55AC58899C2ED571F246A612EB73EBD +24B76697C6A4FFDF1447CA182096A771B26788DD9456E0DD04C83119B0E1D0C7 +3C4323F13AC8786BF2B89F3759180E58AA599D2F981FE280E82768C0E3ABBBA7 +CC14B6521FE6179CDD5EFD68E9BDC2F53B5D6C25155564176618EA019D0BA472 +76C553A27871443019F43AE1B1B898AAFE70EA1F274C57582E70719AF3A53597 +1E88D7603DC99E5113062024B63E9BE65CE676E4F61DDB8F77E40C47A8F7D6A8 +2590664A97ED1D14547FCBED2C7E37BC09558954D4E3B93DFC48E504BCCE7865 +E44F4C479A27F3BCF551203BB51F443630B06F3D75D24EE7478B1AF78130174F +FCE0B804DBCE20F62989ECD03A0CC1A42A1F7FBB673EED9E93E1B36D6E3E9905 +24E71A3391786905FFF7A2B56FC23AE64D4478D25ECDFAE9235606EEDC854E62 +F2EE5F50849138DE28C569D08961EACE1E6AA1787825B0706C532ABE724AD9D9 +87B1F459B0197A9F2B8002686E814BC91A91DEC9C0BE90F3F76242E3709228E3 +DE8116E7138751A8854E8A515BBA1E0F8A16C77BFABB6562601B85E1497E6E82 +AE4B8688DD6FDEFCD53226058BC6923EE68A195F375DC42448DD39905439A38D +1B61CC01CEF9D2618F72E05E018A9E83AB1BACA13D1FAEE362F60C2E00523558 +E801B3BC8F79E4079D10627DAC3EE837B39337BFA4FCCE26FFAE8B9AAD60B710 +0BDDAADC236257D1DC9A7C41F83EE6F44573A357A3A1820D03685C919D80293C +1276AAB97166B2D0D82D1045075648ACCA7933FF2B68F7584DA6E78899F0F5C2 +247A46AD8162A61671A1B633DF24EBFCC985C029223B98362431118BD6ADFAE5 +61A8C91E79306D1E3D4DFA5073C6BAB2DD04D441418B47015A7A0F21DA1C1B8C +0E9B5DAF91CDCB69F86B62B4C003BE88B4DAE2D5F9DC00FEA9D3136B7EBF92E2 +7AD8617DEEEE72E869E2483548B56B90BC88F8E767676341B45FD0C000B8E080 +42CC156B75ABFA7026D54B31FFE73D285A2330C7698727BCA6511F8C404994EB +8C8D437CB593291E8816FFFE3E4BD7BAADA3CB009982EC7F0192C5429FF37D2A +AC8DD62D454A8B50857804BDB8EBA7347902EEDCB394FF153503E77174D71439 +A57D9941E1EC82D2CC49847933FF387BC7EC6E730BA6EFE48A9BB5B1A6785DCC +AD7A9557FF402D8AF864E0FAEB0AAAE4C93243F3E6C550A18047F2CB9AB57FAC +CE3F57FA2072D37763FB32172C2908B152948BE21051D26715C9326B858D538C +B9C8A6DDF567C6DC6E7DBFE7CFD29A498490AC16D964B1FC1FD81B95735A5E3B +03CE325D2138969138F3B6CB027E54C987E4C81E52EFA77A824B40F71B2EA2CC +E98F2AB61546E4BFADE41731E48D6EE82C19257DD9FFF78CF3D01A2055863099 +21C06567DF3F852DC96838488CBB41D5D587BAC66C9586F093E493E1EFA65260 +9B9F0148227A5D3F69FFF499675F0A52EF0615E8272825E69D0D8496CAD940CA +93655503DA72D62D8D35C6E25337ADF834198C750910461C25965925D0DEF604 +844C1257BFF739EAD0918630473F5B9E88A5AB0417815239189E0738A1134655 +DCF9B009A68120E823B23C770F7AD7C0A11EBE9962D3F14940C8D2C1A7295F63 +908BD22A418F4E8F81526FC827CBA16BA143050278D4F2FECBBFAFD3DC8003F8 +81FD27C56330B33BEBA0EFEF1F0384C45756B1A74339E232873504E55DB50E3B +59A2CA167D209142C1ED6029313C73B7D83B0E22B1410C01519206795FA33F63 +C88A326500EB96700A24A434382BEEA0D0692E12E3AC72D568AA0133B0CCCF70 +C34C979B31975536089EA02286AC17FAC1CC980FDB0BA382F7755602DCB18CEA +C862957FD6DA71D7180B3AFA8851458B5DA45DD8C5336E7033F4E957CFC2C08D +1B3F550A219034ACFE7353BDB815B7B65BAF0F947BFC3C5E47AAB9FEE752B938 +34F5E6AADE58FD6F827B0649DB56F21097A780F57E253AA57CA6D5C97AB407B8 +8646B1652557344AB12A962D745016BF5E3E712E56520A30D2D4725FA67B2AC4 +8E331D28063727F0DCB494D6DE60F01FC86DD340EB5C8201CEE5C83B141A6FF9 +72974B88E35BE6061626D570539AB1BA69183EBD64FEDDE0E3C8221A5190DA08 +58853CB53920A109561473A0E0A3E6C89E66F9A5372483CDF9CB9F05F6AD5AD1 +F673B2DB23090B73C08E0D914366AFF8190366111E0504E11A1B123E2E752B75 +90728C69D7FBCCFD6411CBE4AF4734CD67F4F4CF231F38F4A2085C9896C5CE05 +8DC64395C62FDFB3ED92FBF66451DA41385E35FF0E0B381DCEBAF01CB9550679 +A0B3016A0E6CAC3E9C9B6FCDD0991B3AD4DB08B899A321FB78EE4205A0440285 +BE7D4AECB70BF2574EFD1A8E715AF68DC99E30DE8233C557AA120584199A80EB +BCABC03A01AAEF4259F4740D3E217288BBDD85F690BFF141CAD097B6E7353364 +CE25F9818D743CE61A3EC151B120462A411332FE32F279F7BE76014AC2BF7C44 +C9B2E6A156F4F63C2522470963BF1FE855AD6A083349BAE5A077AE1381F0E264 +4F3CC894E16A0B1E5195B66CB83F0904E3C9C3154E87231CFF119A00165C4338 +7EBE20D9F9F7E73AE9DBFF5A5B25E241A52C180843852748415EB5F040B38D59 +FA08110F79D73ABDF3AABCB1A95933E7A56120D63B473ACA80B80769638ED878 +0E0513D8134962A1C350712424910E4528AB2C27F805E73D0C204B94809C5872 +DE2B60DB49C7414001AE889875E6FE43F8D3BDE20EA92F4B92F9E9077F96987A +FAF2EF0CE7FD75387CC8E98CCEC81F1EC31955098C66936CFAC4200A7896B245 +CD57EE8BFF38CF671576240C466CD5AE235E46DDA8825C72619AD25EBD9B4D20 +B0DBC776CFB8E8F988903E59573D77D9CD6AC5CA6447323B9B6B9D4EA9C975A6 +CAC725E12C3B10BD7D38BED398F49D132D850B737979658BE3D6585D63052366 +255234F4A3A6CFA9E1B1CA462CD6FBFE67F8B02E7988BD6C81AECB1396AFB4C9 +6CF9F41A9426D1AE18A3CA08062CD08FF430935081B48EF4FF53093B1BD25B15 +13B8F3207B3F5AF6788364DD45853A1ABB21E67848184228238C7290ECDD5B6F +6A755FCA9D9422FB325FC74A8831C33F053DED1525FC298DCFA03F382FE259CB +6DA17A718CFBC755A5EA1B46AACB7C5882B341D01EF761625804C83A2073E41E +C1B47DF7037677D53BEBB9D1EBCE59E1D10E68C4E4BC9972443FFDE127B6A7AC +0ACA3D597FD27904183920B6050DF7F6D2B6EFF4FDE0BF73863020BD00C03803 +DF70E829030D042FF85E288550BA31479A53EA746760D4D330EF65A9CD017EB4 +75528EDC8F9D527098258D7C89A642333C73CEB113F80D3D507E0D7E62BECEC5 +C63C8545A01F94E2ED182472AA6AC86864E3725C31930B0ED0B8AE8AC33FE5D2 +5A2AADDCECA9877DBBB9CBDD7255F5AE1F0D64A399447AAECAC3360D77BB85D0 +49988DF9FD104F31917A03ED7C3319CD51EF4DE19D7EAA3292DD8D1BE8A729AF +ED576D7D298EEF456B4E252B9057A8186328ADAFE674FD28936FA4A66AA8CEFE +FD75A180F88B56FF34C353EA48E19D94BD98B0BD330A06D2FDE75D950EED3A61 +ED046D38B86429EAD3C8FD076BBF224F97A07EB96DF43027A1F3C841080B08D9 +90669E035C80E052EF8C209097AC6C1EA442E6E553055D659573CC1764866C76 +4A998871A49FE54F852DC81C19EB833DCB827C4FFEA4203C1539FB6057006EFC +8C9FAAF9E4676EA22CAC6907105292F59169E0690CAAC7C5D71E6CA25220BB09 +6B815EE86C14BB4FC2EB5F684E96A5A23813F0979D07990723861939EA40A6A8 +B6B360F5DB0062A426036CEF16485B4BBB0A18056E8BEA923884EB5876F82A90 +F9B175F1F9C0DEAC73DBF7A8B8B735C271CCB85181FA5007706E31D349571B9B +C876251A0DEB34DB2715CD37B5F38CE8D5AF46C338C98B70FF11535D355ACFC7 +9107738B8907A52BEEE7EF642593D486EE15CEA7D17328F58D2C453FFC9D5422 +35084974E464ADD547B26F3FA94988DF0B1F36ECD048D41C8459A258698DA53A +B71546604E7EBACAD7A9A949451A5841B3CBFC65E818B6923003CC9CB2D0EE17 +54DB8F558DA7CC3E5678CA5F2317A0713B8CA73D4B4F555BF5CB00410B7CAC34 +C862B645F311E814A23F60810162C6E7FCC2830ABE3BEF1F60975F1ADEE9174A +82E67ADFEAF665F4DEB6EFA2A12F2A44AFF5D5B73FE036AF2BDC271E44E5C119 +F3165F00248C3CFBE900A4D925B9E99BD7B72549DA2E26BDDAA760936F7D056E +16214EFC4BF143588FDC9195389359F05FB38B07FA192895B5482BC16DA48FB2 +675F45BE53D1FD413192E344AE1B8D4D34B6DE4BD2C5F0CCAC25D8C416E82FF4 +8DD67C02CE58BE6C1411750195A6FC57186BA2A501D9E94E55B99435FF0B80A9 +468ABE2014EB30AADC5512550BCC194B2654CF439E669779FFA2D0D956B02311 +9A7C15A34D3EB890D1971307E85CF10C316A560454ABEFE5B9E4BF9E12D2C18B +D42ABCC8A9E848028BE311B0315E3EF2DA66F87C0204D62172F3DA5392489B4D +6DE4005E73F3C7CA198F6EAF1359C7B41E0A9B6A1D4E5BA635A376157910521D +516AD8BF7275725C81D75D553D6C45807422C979E85896967933C80B693FAFDD +7A0BF5CFD1CB0C19CB60517BC725F5B5AE16D38E9878CC4B80B5CA95C942E6FC +2DABE3617E5CF76CC6CD83F257E7B7B746D164A26B451D400C8177946FA447EE +6A68C961E78DFBC76DF68AEBD9E1061DC729088E4C2FE68DB331A031B42BFB26 +14045F941615EA0D1ADB1F7672FF6726AC59AF4835115B14ADB0C6422BAE128B +956F8AA6F35773757D13EF82C640F1D79E7904AE638958A63F8D4B48534B6758 +EE840A51857C852EB04680C6B5789D0EF46178A02801CDE990D2C1689B7FCA63 +D3F3953340DBFDCA3FEDE5F026F0C15EB43848B78A6C2D6C01231FDDDC0A67CF +AF1C673B95370C4FB888B551BC360762DB048D91F614A764E9EB618111122664 +C33BDDA6C8996B8B85A3583C5661B5B66B8222B46325F6244E0323B3B3EEE469 +433F262863585D54DF1F11AEF52C2114CB0AFCDCD2AF7C6C7ED155B1F58B84C1 +AB11520AB2D62C3DECDD638D83E42195B8315BCB37C1A7A0BE6BA1274AC9C4FB +FB9647197DED96DD50FBDFE9E46050400B78F04744E687ED5F51DCD04067DACB +E4299E7EEC824DEBE6D165C463B920A4BBD08EC3554F4CEE40F044529AA8F059 +81AEC16191D42BCE549DC373DC8252D8AB83C4512BCB4FDF83603D629B26E302 +A49E90B234503D5622FFB038E8EA2CE5794FA2E97E80FE5231ECE372A35DB9B5 +D7D86AC8B690635AC11789940493C7D37934E2FDF8F56433824C7F2AAFA357D4 +6952E877C901139D1F68F379DE71A51C0F7EAA3272A412744C52F9782DAFA97B +8A753144988536ADAE7964B6E7D63191C1C521DCB90656DD8AF540C67D30B644 +048B0CC17F54090F1CAE35B59F190BDC2A473BA8BBAC2D8E4004E6BFB02FE922 +849F6DE710ABDE45BF0CBCC91EA5FE97806C059617D5EB64FBBEDBC570A39F5C +DB4C9E35F3C57E6693196066843B53DF3633C3E44F4A3857DEE327121DFB0BF6 +3CFA4F3FD2EE79DE54ED1E66168B6718F0DB0EAE4B0387AC2D680E60BAE49478 +0D89683C04CF89CB5B22CA2A5B4F56827388AEC1263EC0E0918E12E26834FF3D +E53BF07C6670109AC0236F4676C014782B9AB4C139499A0E72A8FF6101A39F5B +99B33D6EF20B9A959159EC1BDFE1AAC8846352DE5B3B29137A34E8ACD5883FD9 +56F140D6BF3A66A4E2B547CF555DBAA3C8A04E2616873C76AD8E0257C8224EA9 +5EF69C5EE5BBA0D9DAA564EE3648A3F19AC70652EF6B2529D87E11FF3102A846 +4AB88679CF80547A3D94A2EFFAC31005CAB09BEF2B9D20B5AEB4FA1882126B62 +B7C151CE7A504381B3E24EE88FC789B0ED87A13A3A04AB0742940DEEB24B5D3D +75FDCDA9B817FA318C932E9397E4E4011714EA81D69717F21470ABA8BA20DDDD +A9ECF00C6804214BC82B20C91A445C6B0B5158F57315CF1939539F6A2FFEF426 +E493FCF410E5D576AF15B178E77E65B79328A79ECC7A681C6C8585EFCE1DC079 +C0F140D40EC95B468564DE0BAFA0EB3E70BE89797146F56B7BE9A4B7BF3E5B8F +BCECD50A1793FCE65EBA1E335247E3964BE095810964326D580CF2F26133A799 +1A078D83BD6E550812CC56CF295A1E6545B339440A1D3392866B9E4500428130 +E42B64F1E4824FB0D785F787C7A0515DD39678008950E25564E3E148190F8C30 +922D719A29798C3C120EEDD5BC0F4C321F82C08761E68D8400993655CEB31839 +A98154FE243670B464AC40BAD7F18893F517A09D7EB5CB30CAD9ADF62DF7D9DA +5F60EC004A9B9A49DD43005B66E05EDEDBCD49B94DCA88E91F6D359ECF19FC2D +660EEDB26CD608D0B2E0867633CF353F16804E2E8155C9DF6B6FEEEB2CE1FEF0 +9492C875FDDA09F81D8266766E6CE28199D1EA777FF67F71F3F7BEB60A2DEF9E +68B059FB0135812071176E44A70C38A3FA80648225631B16B17D683343313F52 +810F6E7D60BB7C895317C6C0A93289B1A29E6D221E55BE350547FD775CE2F77F +94ACA7430811E849E86F87C4913D04E15B704A8059C9F4E9B15EB1F32F081F19 +49255ABA9890AE20DEF0BCEB216B5372DE32AED9577FFD9E06 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -2033,273 +2031,271 @@ A208ED52A9684A802003AAD6D9FCD5A3CF635FCC938931CB94C751212CCCDA6E 6EAD4AEF60B83DB1E356D7B6844375FB3AAA0389F56D070F426C759ECD2F970B 2E65032797BEE2FFDD78CF0B7C9684F6EB8FAAB6502F4676CA8F23D37CC4D4A3 42EFDCFAC381E4B95D63E26FAC8DC58232288CDF0A98F076816242E68A3C3189 -8EA28401139ED158D704F62F79ED030B0B8C6FDF57D79CB24D633DAEA4D152F2 -6D841A03E07789BCC6FE50E341EBB0E62D9A727C6A55256893D89562240BE250 -43EB09EAEB3C19F1BCB4319DC85CE4FA356D25386C9646BE83B51DECCADDF627 -32DEFB64DC618A9506F372828A3B615E63CB685AF64E199532C3AA540A6B628A -8E4019355DCBF124E438AEA613E35D755F8B9263861A63966743FB7DF52F2F08 -2D4337B8ECB52EF7E09311A5FF7C40E608E68B9D0A764F83A294E3439CED09CA -CEE4EFE17CAAC95C323E51B205DA84CA8C17260D7643DA0DC0222A5A6F192602 -B240ADCCCEB494EAAA6DD3961D0A5B697A1754C77FFBFB45305B72C533D6D506 -6ED9C0E158AC4CC72F1CE4D70D35EE49FB5997BC93CA764B7CDBDC0DED90A276 -5B7333DDA2EA5CB20696DBC572D77DD5847752A7181DFB4D862B7454DF10893B -B41B2D30036A20BFAC047CA6E78118C1B59AAE1A36938CE018105478260C91BA -84F8CE3EFEC29EBDECD0C1D65AC7DE83B2A6210BD2D535EB78471375A03ED62D -7AAB24E7E940B021B6772D2C74C662E78F25782F00C956F49C078246D3D5D230 -BACC06F32A5804C4984FE5F40D53A21710435E43A9D178AE305C052A44773E2E -018175E9B6D0A6F856179DDF4B66B9B6C02080BFD3F79821CFF92F44F7900367 -F43EB4BD305740DF903D212B00B44DB51718D40A186D0CF87CFAE417FD957611 -5314E281183E04CC0218AAA77C267AFD4A0D4E1908A1D60E1005B33EB5EE5047 -BACDB817380466BF1D084140E623402D174A0810BC2447BB2A0B7A1C1E4EADDE -04EB1432A994D12446064F3F08CF3FA1D62CC361EB1B8D956CE12255C12C35FD -A0528F3C74A333C3409E138A551D2E2351DB44BC0F1F6CA6454E3A64B2A74659 -A7CCE55CDEB071FD94B4D166E17F3640DDE2B3D5633E3AD8CA18F0C6776BC247 -263AE4E046077DC73D5E9C7117AA1B8A823B5A18A64004329F47379B050597D1 -0D3925A3E59D630C1E88EC5A6B61BB696635B48A65D000820B4AB15C11F43A1D -028C5667E750A6875650883B6DD72A783280772EBF55A6E08814DF09D8047CE2 -BAF5498D4F567FCED475372BDD73DFDA5911FCC6B32ACE95DF38900BED5747CA -4880693640008D4298EBF2C9C053B38C821A244367331EC78BAD53EAC16D358E -94F1BCC39C05B61A8347E4B69B19941B320271FCE6E415FB14352587A929077F -9DC65C455A76B8C2F5E7FBBD0437EC17134242D3BB13B0722C6B197C54E5EAD8 -18AF5887986C7895294E4E810EA9BC21D29E2CED5C82BAFA33FE5058F3F252A2 -C1C2F313872048F8D2EADE51B5A94290094085F43D81ED74DE3EFE8AE9DEA7EA -49F466F7F133F2C82D656523B407797A61B8C9982D5B60293EB7F18A2085E1EF -7C1F60A8A438314F0388F722ACFCE55195C1F3F1E17159845941589928BEC56A -F31ED3C2218CDE188A3B55D17FF605E05D8AE1065CAC7B135A1E6B54EC841644 -B430A21C8B0ACAF85204A564E57FE3AAC1A4B8E8D1CFBA68852D39C4A3159DC4 -605EDF016558176CF811F7591977490B3C21A1E4A79D27E5D76310FCBD435C95 -40F95C34771663015DF949A64B171F229F83025C0A907965DD988A0F2A75E8E1 -1B498406159A0C332949577D32E1545FA3401879F05329982C72A203D7652CE6 -5AD49FF99AA463047C93F56DE4916158EED499FD7073823BC5324BC00191B24E -456D1A93FBF6E6137B4AA3A773047072021F8C20E9A553879C60A54774A9E845 -BBE9DB5D253F61EA096DDFCD8F321B74465B604BF3AD557CD20E6F1C7B0169BF -B37105EDBC8FDBF1E3DB5554775E475DD3AC4F88DF0D72CDA441C04A0CC47526 -7A35680041E78C0B8CE7A54540D591DF9CC8164EA3A3C7C871B029AF99DC0DE2 -E994E863765F9D907EF27DBB707E9EA1CB479E1AAC73F741E9EF0AA96F8455CD -0084F105227A5A3B6E066C5487FC956CDCC0E8D1F6B92E8E0F54EBDA69C7DE9B -A63EA7FC5C969185D72362A6EA294E30DE8E13CB701C90EF7E13250B34545B30 -CA046BA19A488FE9FB27C7FB9B7A6017F78D2B8E9C5ACDA576801381F6B2C435 -DA1B205A4041A7C1E0B55B44E71AB130A11713DA2D971D2FDD1416AD86412604 -6E65D39D7D77732E6B42910C85FCDCB473E5F2ED159F9AF583CA21C4AE230D63 -607222B23A1E413A671F55E6B71B1F772F9EED06CBD5F299D033DAC93F80330D -3E3CAD7850FDAE6EF00E1E1D02395CA135829FC65A6B8CC95537DCD7AB804425 -2172752ADC751F0CCE122C7A470CF445FF92D6DDBA43E0903AF9EBDDF94DEA18 -679567FD8A7E78DCF94B26D5C2E4E46BDF150D67032545A5DCA2EA06E49BA763 -D5531360293B0AF7D83A7706D82C730B97D78FD494E47502CAA1125B1AEE7093 -129C7BB9DC79AFCF1F08E8157A50AEA2CDB077806133548C9159D1C5B8EDA8BA -8FC4E14051F42AD4217EB631A846394CE942C16A2B2FA617701CB3403ACB7AED -1B0BDF2F56B65F14BD2D3D4860AFA59D61709D1AEE9388B04E40B7F6D1878293 -9D828F81DB610843ED5306632A99A23E11D00A53B46660E6AE8BD5DB9284BDB5 -BF5F5118DEF0585FB46364C7F0CA697C43712C8A366F717D600D56B3B5162E98 -24EA12C92C8831414F54DA383B358AEC3E312C456EF0DBD70E81819DDC2F00FA -B3E1EDE9C4610F5E51D0F4E0EAD5508BA97AC5D6EB5F16D2927633A7E92D521C -E9C34D91D69C5273E3B591E8E9732EC02FFCE392AA2093A154A8AF4323BE07A3 -ED6E4E2A0FC7CE95E879AC41D515014E54913E3B68D83FD3C621F400CF93F9D0 -2308DEB63797130B1C9FCB29ED6FD1BB8E140178CE267192E5D2830DFEA98831 -500EB89845F0D6B47BD87958CA500896A1AAB34AB6AE1568D0CFF85766CA1B78 -AA828FDD1B699828832ECE7E48B2AD702109B72781640C7CFA52E0A490C22A36 -D106F18CBC5B629C61A3FAFEA54946A2BF98133683FEA93C17499CC8621F9395 -D169358AF2C2D4F9008954E5DCE465E1F2333CB65DFD554052D49E268677B602 -7D064A95B1B2AF7F6B4F223D772C88201A835A934465139DAE6AE837F6F653F0 -60CCE5FAF8FE9A6198294771724BE20A20E3A65BA23F34B59310154F54730941 -C39D3D438F2DAB828172F68A16CAB5A3D1EAFD41A982C8D7DA0438146625CD88 -A0D3264A1C4947B2ADD5B320B982C12D1AA4C45334CA821177EA18F2ECFCA050 -11577526AE45DB0C4E2D11F9470954AB14BDCE0F921097A6B73239B8E11CF61D -D2A41C16C8286A4D5C1E4F90CA103203CD2361C983593BE6CDF6E1A93E15AD93 -CB4B66C51F0BB708EC26CDE3E413FD5F14100A0402D1FFEFEF92A3060C8178EE -B7448BBA900476F1ABFAB06478ADB9D426FF04604A4C7881D96A7B66E6BBDA4C -B828F046F5307345354D8DEF36543281AEEDE1407F9ED00D55BF3A7808D26422 -C26DF7CF6880111F52D0E884D8ADAB5B8CAE44DB6F4C4A7BD6D4B29C69DBE0E5 -8EE2F7FF6AA30BFFCEB9A6AF4909FFCD80F68EA11E2AFD247257D1C1ADC14E5B -FB18ADDEDA37AC39B95906EF8F5531011BC351B19A7D7056F90FA1FA0228634C -3C353A19539F78EFF72152E1A83C40F705923605DD4E3AC3801CCDFC3393B665 -9BD2334180424290256C383F229AB6062D3732B8E3497E8E413AC1CB5896016D -9333B7610D3899BE52FFC49A2F24A7E9BA277C46D1B53763CAB0FC8076E3C0B8 -AA329CB6D9BC4714891C766F4E7B1DB3C17E34CECA89CA084DEA904227976419 -E93940D4F773C28FBFB771CF206D857168C3C9200A1EDF3281465F4AA3639250 -8167B6839466831D66D7AC762F1F4138A5DC4940AB4A908CCD022D37541E02F2 -DD976E727A9AD36DAFC65FE440D4A9EDDC5434E7E60431C6F65F1EEA1FC2381F -A9CE5E6AFF4187EA3C03FF68AA552410675D55E321DE3073638EAAE12F9F164E -0206CD106458EB6E1AABEDC21E93DF33D4FE77F168CB5E2F7051077EE345377B -1AFF83007A866E86A3AB71D96C5264A524F367C5C94BC3C13FA63ADCFD3A0612 -2D384E8622C0FE2FD6F3BCD97276EC66DD3A348AED1049958516168712F7605B -4A0935B2526A6F2107AC9CCE157823E0476798790426C029B64ACD8152ABA13F -0B977FAA390FC397E5181B37B9A67FF72A8FCA83EA399DD2F3D9ED076F26EF5F -871FBBA26AFA0B83ECEC1DDCEB5A543DFB395314F32D0096520F3F03FD4C242C -9B089D84E46A62875DA88811CA1DE61E898698219EBD5C3E240A513261BC4046 -9563C6B3376ADD56C10A01080326DE260F58DC1C247F6B37C77031E58E2B62FB -07D1A560A187EB97D93214211D3EA4CE098C306985199C98F289CC14C15C24D0 -1E1B27B4626D8B877FABF9935EEBE37E5EE2FDF544E9262A4CE1748EBC50D690 -C6C58846736684482C5BE0585115BA020984571C5FD3A6787E8F5B76E9AF4258 -97BDB1937C7E482C1080639007A1F6C06993A8C168DE54FAF48E2C5BAB7CF01A -521A043B69C656EC17B10AE310F5768979A6CADC836CC10A5C842728BFDA4BF6 -D5D836EE57B49D8D42DD26FC15E13ABDF58043CF6AF5969374914DCAF4DAA415 -42D24BB29521E29CC2AE3113ACE9098A954D9A43FF36E5EC12655E49EA8118D8 -009CC243141EB69112E5F93C313A095946067DAD6662E69E12EAD6D803E3F2D0 -9FD1095FF7E1449744882D2CB4184727FBEAECF87BAD52DC5855FB3D0CEC065F -F93D86608522082CE33EE38BCA76DE948931334A7D66E306EE3F6A95EE28D40C -B79C62A848E44D7ED27BDE438054CEE3478F64F5BA9F4AB828BDC228BF616F70 -7F589760B6CB6C66558ED8F3518D283AD8950B75C8304983D0E597FD8C9FB30A -3BBBE79820E68B547A5398BE7BFB4FF9EEEBA6584275FD4E328698746763C356 -FCE94EA9CC2768AE4C6261F623755646EF15421A73870578EDEDD6ACA608FEE7 -9E3DBC12CA6A25D6C1F8628865A7A737FD13780372E1423D7B079B5360CD1A42 -0C94CFA4A5E6E812C149BDBF6A94D99D55AF61182BF43AA9DE6FF801C1524E4B -1727815484C92F8E63C2D9C716ECE1C0451ACD62832F349D6E8D2C1F9646B6BF -2B82352E14ADDC6EB1DAAD0F46D852ACE0AD78F638F491FEC7E5C70BCAC41305 -5FA3E5018BCA8CA62C412C6304C6330D020CEA9AF60ED5964B907EBF65634B11 -7D2CB6A25CFA843BE865A82D50FCFF7F94E47580E7DB88CD060FD149FC0C1EA6 -F174D407FE7CA377967ADACC5B876233ECD2601036F87D8CAEC8320D70C5EC06 -42E62EF1A2A2033B8DCEB7DDC4D8E94264EDC2AD8E3C4D1B8BAB34572312F5DD -EBD34F74EB83A5AA8FEC51E663E1F104EDBA38469DD49EFEECDEA2BE7DF7C8DC -9E424CB30B135335FB2F128DAB2EFE900F7CE6B401615B0DFCE70D4C22F51F60 -0F5247A261CEBD55B6716A36ED3ED2BC4C1DF2E1A4D63EF5C9F3D17C1C8DABA6 -CC2D06C252D21BC288020D51D1343CD2531DC71AF1195F535B2228708B03E63B -59EDB01D4BB609798EB0EC74A72837B34D5351CC617F6403E9F5465A299613A2 -2137C6DDA812F6326840FF7616CF323AAF43203742783E5570EB4FC228C93ACA -46C3FC78BEC83A655B48CBA55D337728A2DD0DEEF346338C1ABDAEE2A56F6C3E -784ED1742B242052224E4EB5FC583F238807A119E78C9B290645B516EF931BC5 -598A64FCD9BD82A5D1D4CE3F01C5A08B12147B0128C712612FBCD7E485603AFB -769B6A6829AB4237762F70824DEAD4414EE5BD4AC440F76CC9FCB155D9AD320F -A84EE2E7797EAD8E2EA03946AA3816540F4DC97EA169EF7D44A107030A5275C2 -7321F760948A24E243B95C9B44C5110576B81A9BDF7206AA9445E673F65407EE -13F5F1389F9875B5E9997ADE151DE75E7DF47A128007F0FAB2A3B6B218C104E6 -0D8B168F630110BA045BA473C7B515D6FB3E8D9D6B90AC901499306B44A79D7D -28B9AFBB5963ADA9ED6DCA3DA607C994F0DA16CEEC47717B1EAD6FAF96580133 -2055DDFAA11EAAD717569C8F702A119235569458298D489F66F50502D8D29D53 -AF4C050D783345477827805D408944472D7FF85B0EF814C36BE790C71BA19594 -5EE88D99B47B3B098FA7D8C84C99AA51290604C8C4CCD6080101235BC741E4A2 -1A2F54778A7E77B63EA497ECB71EA8AD469D65DDD6D8776707DD52160C7BFBCA -23929AE8AF2A0D8D2D8D233923404E300D0678D08BB8BA3FA4B81B46922C04A5 -A521C71F808560D2B1DE5F9F7B3B629475134B4702125805CF4CAA0BE126EF9E -AFE93778035EC428DCE96A93B274102E8FB0D11C96D0B4C27A6F33DD6000E6ED -823C814E8572E36AD1E21C8EA27462E08CB71259AC109C86999A4D50D6177E2D -0F8713C6CFB0415D02D52FA559DEC8995F536B2CF338E1E6CEFF1DDD91DF4F7F -68B550977E7BB90DEF1EC24A008312EEC5E4BFE0993743D067CEF1EFEB383C24 -C9C80F936068C2BCF2085252DFC096D05B7135F1C645A8C1BA3C8C16E6A330D8 -E4C1A41F0BFB9A0AB4C21872D512222A0059E35DDE9F144D1451AD78D16F1F4B -5B3666466A18F6247739BECE6A892A617375C722D6BF5DED9A519CF2EE29DD2E -23326963FF9CFCA32E53FE9E4704CC2FA42B915436C34BA169E9878690AB4BD4 -8AA2BA04479F5F9E472308AEBBC45CB6270A690422C68C5C56CC6675B0BEF0F5 -EB4DB9478295CF9D922F8D869A3A20C42C5B4C5E0181738262E468659AF751D1 -D0C170935944475288010298D0DAC4AE7708CB253B8941F91DA2020F47B5B55D -0470D6C4FD89D970ADACCED67DE7BA99EA1EA02A633B2E7731D0EF6556190849 -7952308071B8DC8CDBAB15F6FCFE1C667BD4C0D6C5D351E56FB5747CF7518597 -9F155290E8FAC19A51B31AAC847B696BF626B65F18919E0FB5895E49137C208B -36381592CAB93193FA04C50D4D37943FC52054E3466E7ED7134BBD646BCDAE5B -CC8C0943166E82FEFE02141592572A6EFA52FD193E0092BC581A4244F83CEB34 -C9F35737ABAF1754D61ABD899A8BBE2AF894200A759AAEDB27C4E1A339DC60A9 -F22ED20E54E952E2C6DB328E6D9F2543C318247AFDF6EE1E890D2FE0956C0924 -2C3119516A9DE1F8CD15CEB11D3F802D3F41E9B3927CECFCCBBE55F8B2C9261C -51990DD48EA5AC1900A32FC053C7812C9683564B523938B3C74C9C078DB851F6 -E219BB63042B69978523D638C549E5227921C446AFFA396A8E6728C774119791 -D77AA58D7853DB026416BB2CF5CBB624F83D4DEA2056915E43D0DD3481B41896 -E715E2AAC87C10DF63DBFF724CE4A5CCA6C6F009213E2E748275809784F65288 -F96177F90D07C3FBAB0F83FA54B46F50C5D921E498C06DEC3B704840F7AA72FC -0D0F1DB46CE59496B6A79D9169AF68E708B7E1AEAD754E6C8C6C534527CC9B09 -6513DC67C5A1941CC4061394F34D2A482450ABFFC78480ADA145FE2C24355D00 -85E581FB956F19A361C91AA32C8084BCD0443E85D313020043A4870721AAA540 -8D78F7A2B9D33DD67306A68BA901461ECB068DC745BDF0F5FD5EB4AD9E9B93BE -4D2536FC5FC13D3DA84173CB3423B67DB738C26030509EB748688943316666A1 -B6CD6976E8D383C28D5B88078C500D4135531DAE5D6DF1C5DBFF191E3382E565 -3DC50B22DEA1E1367518A9143C3158519271C41301339F8666C4180ACF631BF4 -CC44488929D90655608F33EAF4E1966C03D187181EFB474143E3F309543E687A -6AE1C12E33892D9A3C218AF94A4DE08797E639636C7D2745FA846CBB1479E2C8 -45978FE6B22D02D4CAF3DEE8542D5B978A86BFD526069981094B4F0BAF2EB6E2 -77F7AC896366A642837C057774F0A45235AE35827EB47D4D2F430CA4B8F4BD42 -45DCCAFB700E20C031FC1A38923C6173615D2D03CF4C225016CC93A0356ABB63 -B4F50AFE3BDDC417472BEBA6A3216B81A0755D68B99DF13AD956AF12518B7FB3 -9A9EF940AD5C7E788C579F0AEE8E52BC8F033CE70E995A29E48F8527313B79A4 -19A7AD0276FFB441A8A8F2DBD3EE8000C6788FDA0FEC0BFE72B1DAE52F890209 -0CB03B7C02B8CEA68328B43D16A93F40B3EF8ECA9B8C27EDF01931B06DB3ED55 -08F3017BC5965DED9281965A0DB6A6412B6AD447608346F8B254E5914E8A5093 -0B1F561AAF68179612BBAF1D8C4501FCAFA6D024AD505BB29BE89F9307793A35 -DBB3264052836CF223D6A2BE17117AD4DEBC2E3CC3853A2879C5F4B2F036871D -966EA551071A2230A00A8F12FE60114ADEA08E5F32FBED0ABBA31CD7A5D509EC -CC72EFE19AEF2107095DBAD50F73AB56ABA9D0384C29526DEF162910B89CECB0 -B0ED2F5BDA61AFC44632D737810ED47BB89994772198167315F898DE0614F2DF -A0EA64CE22FA62EC1A2D8184DCB57DFE6CD9A573AD7815CE677049AA3B073A68 -6F103C97951A401CB7D5C4E41E936C73C6ECC0AE0163576C913097A50CD2B189 -C135927450521BAC01D981B805BE453428839DBE2CF0B2A96E3D5DE93B1D9411 -BD2BDAEE782636388CDB0304E6621ED1AE849C45B51E36A9D6065F6ACFFE8224 -FBD2C5B02D2324CA550CFB66D0F9489E2B4B0DA49A3260DF965683F433F7860A -1F4B12F772F332A049F909383B88AF16C321441F3A2074590E907983B7B7E643 -1349CE37B942E166C851DBF68B2F58023566987CAB9F1D05BF773161B81A0584 -2B39DAB2E00DD4E101465EF425A6C24FE051FED0B658A2E02CE960FD55A3CAE9 -B1DEBE866D4B0CA3AD93AF477C4EDC907F3FA286153D8FBA938CE0EA2D314914 -B0F988FF0226F4409518323DFF26E78A4654827B5BF9F2A6BA534AA93C17901C -2B855C3E28AB0B0F09DA1C07CF904802C97108FB8F85E349150E773DADACBD3B -CFBC02FC33182DE08ED5C6B01FDC9C955286AD96909235404538595E81EE86D3 -8886492962E92E11B8F5C753DCBFC88306A0D390E8674C04C183830CAFF8101B -FAC76B1DC865BDEDFD3B0C28C6CA1C969993D335AF70F80782A08E13BE7F00AD -FF175C302E582B13A64B33F46640CFD5224164762F7EC20CBB779A6C6A536027 -D801CFC048190F02EFBDC670147EC52759A2D7F54E19A30989DE04DFB08062D3 -6A78B0FA6F5FDB2CB5D225CB1FCF6C71407A576E3D985AA1BF482665794CCCF5 -CFA9038ED91157260B3F85E7B50F1A47CB61519391E744F62B5E567E13AF41F4 -AF224D3A8CF5AE9734B3EFEBE5CD56CC4C26FD551CEF64D56A52D5C1D0B00F22 -727844FBFBF599DED45A466E46BD20BED6BDA0539F01A6EA7087A76313A59668 -CC48D25D0AC54558A77684114BC2941EF7E785A61CA6A4AC12113248E5F999E6 -4B7B3DDC3D06CA3196381CD543B52917660E8AAB1B5EF56CAAD0CF5CCA14AD86 -82ED132A71E7C48B79DE14525BD110E5831E0A575E2425727769A66C1F018ECD -6304682D80E7E343EB106B126DE1384D729E9F2A8E054B7DDF651207BCE28BAA -18D19C9D7085C747749C52B89A4CB492B5FABFCBACA522E21CF33CDFF0488F46 -79D81BF13513BC1293F0E17F37D808143E1C197543DFA6CA2A8969638F0CD799 -5930300FD61DB36DB8D256CB1682E23CCD65479C7791B2D3DD0BB1AD5E248674 -95277F235CC9D0BDEC4D3F320B03C3DFAADACCBA2B33422F5664E777DB049495 -2B34B5D369AFCD58F5F69DCDDB865B332EE1955226E4BACE1D4D1A71AD791785 -7BC2B701A5BF7611413DCCA1336BBBAEADC5BAF054324A641BAFFB601531B187 -791C2367A302040DF89E3A6879C50A9903DBAD252AFC558634860065244751F0 -07F6B91729FCB170140A39190956EE31CFFFB360A4FEA9F8064AF6224898C633 -15B743C005CA3603F22409B5404A532659E0748DF6A08A304B799206C26CF81A -B0B2B4737AD52DD6D2B9F3E001F2CB8FE3DFC2C42197721D534D94400AF45A79 -62BBC2D9810530D880A68004C5221B2BF6EA5D366E387B4970D82C03AAE964B7 -97763C054083502D5F7928EC7A016B779E714F80518A332587D56B98038A8F17 -CE35F07308AD6BEF760174EE9EF6D779B73D97BC8810D335A945A80AA820E495 -8ED3F2C9436E19C11C2F4C4926530E2BD813527D99DA5D43BA763E397B66FE67 -9979299DD514743C8DE3A014FA551E68257739EC2A6A06E29D3096DD4D53516B -E68204CB21CDA0AF8862980CA956DB89DD6FF54D12A120A82F1948F28F8F5F55 -B69252C842D1B564DAA862CC4C86D42124E88C2CEE773C4394EF7AB12781FDB4 -7C1F6950D36987C92896F14F6BE66DCE2D2ECF7EEBFF92D5A782A3ECF958A9BD -E8E551F0FB231241B1C9CBAC93B18A29052362F894E0A86930660BA6015CA415 -BC65885A29A4BA20D1229B0F12D03C52E38476FBC50C59CF702A6DC11F5B819F -414AA539D622755302271F43870E337595A7BBB674BD11CF0B20F0CC2FF7BD88 -6EFB43E36E3870F748593249ACA4CAFEDE6BF14C3F6B474F18C877346CAFAB38 -359620FAF58C4923ECA8EF490942E05693F0909623FD974F54928CC11A7F7E9B -6F2DD0B23EB06801AEA78B27ED6D4C718B8CB0F1E838487BCB51595E3AF1515D -9C28B2FB5E74CF4C5772178D603BA50D44C172C89B78EB40DFFFE008C8BAB54A -053D5B9A9C62E5EA50C0932F743FA66C3374B727AFCEDE1A125236A76BE64570 -9F94369064AE74428173DBCE2CFF1DF90DE1BC0A5AE52C9B93DEDAECAA606E32 -B6987990E4429C87CB6B2E08800689345862483F1C1C63EEA072EB6EF3A6DC34 -9A05C17F98D501D15C6D1FDD87B608DF395691A99D027AE89BD031CE74D96C32 -1C1DBB33B70A1DA9DF76E28A7E645601CA6843724221C83E0840D1EEC4E0A3C2 -C898A366F03152FAB5C21575FE079C8F367B72E12061AC4D85C59BD6C28D241B -118BE6000AE4CE9C2BAC0C9BE46B4BFA2EE160E65D5B9B405CDCFDB619EEF7AD -66B6C14BB536006EDAC9B340F4618372A2F71EEC48B618E1FCA5B55492DE9ACD -BDA5F30B25739C3352E70C8BC6AD31A263B89A01E3BAB92D8351206C57C40983 -7FADECB045A309CB9BFE28925446D98137D872FF8D1863376D055F4D3D0FDB00 -008A2B12570DB5E2E770F300DB06FA5F287C9E1A58F92E5C6B0AD193F44C6D62 -01822097C8059A187FD56F5E243BAB3726589CF24DF311289E9F663E8C1A9622 -21BEB646FC0C3F3BE1821A67F249E80CABF77894B5C197C00A42AF80E4F5C0E8 -51C7464C427C2DF89FCCFA851EEA7C40F661FAAB65EB5CD9D5B5F7EA5D86DF7C -C54F0504F573A3860FDDF2D186E8D36D394C861BE9C48162B61AB9A8E7DDDF31 -18404D5C8C6BDF7C8FAAB452831199090F70BA20AF0289593B3A1AAADB9B3D6E -8E0798B87E8DE26E8333E49896AC44508E835581A9BFFCEAF0E59CBB13BC04A2 -C05C936DDB7D69DBDEB9B0411CEDB53F1D149496BF51BB23C3B07F62D34A1FEF -F0BE8139A9CB352821AE90293BB79E82751336C9EDD971455FCF0452A72FA705 -0454F32DC0BC4394C4E4F4C90E203313BEC4483053CC3ABFF8E9FDAD6D65A7A8 -67FFC0B08A4F6582BE48F050C817F05B6949BB50E4B83456F801A83B9FCE8B05 -FF97F73AF6B037C8EBF49E62F3497C92F351D942E5C7AA49156458254E7E67C2 -97A49E4F75114F62623A471CB2C21A7C666D3E8088FD1F3F67627E5B6949508A -EAC44C7FF37F501348A93944ACDF4284613B9ECA369FE186E2E0C013693448B5 -CDA2B7630E09A0283236B0DB58C29B5249AFEBB87B5357549D4D55A1A871832F -F07C5CD2D1272E02A59D8433DB9FF170706AB964A07F52E4CC6782E8DCA74BFA -3D6B5347990224FC3780F036BFF243CAC8B9CBF544086C0078C290FCCB665612 -75BB17D6B80A09CF21EA087BD82592E5E3F801BE227D5EED19BC99F5750F0E24 -ECE512FB2B35DFB1B6BE645D7ECA90AA0EB583BE252BE3E7AC4A642FCDC4D541 -23180C2C71835BA0CBC06E56E99F198FFC2830021C20A9ED35DFFA76C0FBB7D9 -F48A05EC327123B520E0BC1ABDE393C0AF88AF610C1513E7E578595B90B9D101 -245006733BD8A44F89FFC7164AA59B1E73558A85F775B7AC1FC6D646D89544AA -B9CD23D9C7403F122749C21FF7539A87307084C0FA290570EC52E0BA8F306B37 -491ADF370A75112AC14F33A7F57BA0DC82271E5ADE77CB +8EAEDFDBC8802E6C8D2F78857CE66105FEFAA26AA62235515B9DF83D86CA7F06 +4887E80BC9C14A4C5974463498998052A711AF175999917AB6530A5981D5FC02 +F6F5BDAFD469D43E2E2134C6BFF0B68ED9CABD7A14B0F0C2427F14682AD3E1E5 +EC92396EF1DF4FC20F1B574F1FDF7BE782DAEB1490C2182F017E633F47EE6B56 +971A2837D4C9E8C78E5B28D34BA512FBD85CC07117D7A261904D6E2C57413264 +DC745E50EACD437C729BCA09AA240BF7F99B11DABC36B90AD717BED1439D1649 +A8F219ABF3C3E8275B4C41DD3251907E90601B7625C72E4EC7BB58EE544E09CC +D86769AE126E8325A6997F7163187B190B0C73F76783EE86095540C40C86CDBE +B2ED24860D2224024AA004929555C0C4EA645EFEE62B7A20DFFAB78A256704E4 +0BE2A5E2DFD2086BB24376D399A14888757AACCCAAB87C123445F38C7B2D6B75 +3E7EB1D517A4B4C8770251666F76C1F1C79DE62671BD3D0CAD2C1434D9E0E931 +883723EB811D9906BE8305278E586493C90CEAA20307064A29F20BB204E5CEA8 +FE94F52A5DE7C1F3F7403F642F29E81F2B38760DB0F0DFE9775FDFE49C685F69 +360C20D3ACAFD0BF01C813DEF6C95F16BFB43923A78B5B20112BBA77DCFB3F81 +7DE00A59336368DE9737943A9B33160D3FA500B5C74D36BDACC54A5D6862056E +B02CD766308328E2C8C7FC41A0E9B21C75C08219195CD22FC5D3A99AC9FB25C7 +1D72A08B5B86B4866CBA3CC965743CFDB0FBD2DC51EB24BA7BC9E6C99A03259E +B78BFBAE4DA928215E1B969FD6B00E3C44393AE4C0F3A18E380A55BB8EAD5713 +44D479967A07C711E8DB24C3E01EC9F0B6C2F936DBFB3F3B5FBF0850C55B9A38 +2C546BED80AFE9B30E3AA308FD575FBF349F4C556A1F5227495EB5A313CC6AAA +BA779533C79CC35EE45C86333E307864EDD1BB5D45BC3058BA88A351FD39312B +B031A56703E91714EEE44056F6B826090B63CD30144C95B88A3E5B250A2B2AF8 +9254E991853F7C8165185BAEBA1F088C9AE10B16B618F8E32352DEB52967E3A9 +A39E6DF485104508B77B3569AF0FF6AC768EAB7432BCD14F18B0A6B2D7AF694D +958E51BF543A3A337FE6CA854586F2FD61C5835A939AD374CB05BC334CD893C8 +031FE1D92920DB07488228C03FDEF985574836565885E5023CEFE96AD27D2F7F +468DE1FE34C26216CF4219288A88DB2512CC9A79BBC672D38A430B643B64D09A +C2A82DD14F6AC4085C2B2D950839F1B3DBE701AD3F4488ADFC4953056AE03B04 +0CAB248A3697303B74171D342AC88F6E436A28970752BBDDA6A49CA78DFC76EB +8A2EAF1E6E663DE24E221125555B79CFD316BD450196DFE80AFC35F9D0EFD36E +FA0D1050E4CE2DF26B9605FB8950E2BBE6C873F1621DDD52FC977D9A7E5E5DCB +3C7200B775513A763647F6DF8C6EBCB415242654867A519A57880271AB25A9C8 +9255B10E0D0FEF324CC97D1BE4278C69A7ED352FFDD4B83FA569CDF24E8698E3 +04CAB5E8F66EB18BACADCB452E7E2D93FAA3D7DED9E392E7A82B2E343F61CC6C +D8943214CB064C361930803CF4C470925857C83D9FA4871854E84980762F8B11 +CAC395DC7C24DA3D94C70903CF0B406F67D71E37835A40A676CEE1780C955E7E +2699F15A82AF0138A106E0BB7C179F1480678F90D7794777652300C073D8127C +9C0F6C08AF449C339C324B286BCF56CA6CB069D351AAEE86C04BBF3BFED533B5 +4993C9EDAE588F9122BBF1D830E1B024235EBF5842FCD14DA0E759453A0A87D0 +569C89320936EF3A9A93865600133C2800BD77A49A7CB1EA1ABC17A89AEA5383 +50740DB2DBA5A00ABB556FDD5181B8086CC1683703829BD9995E9B9928ED6CE6 +4ADACDFB73DE333CA7B8F7DB17EB25C30846D9DF5110FBF2A5B004E80486B5F0 +F0A5E9EE3B37FDF87E52A65CA61DAF5774521BE090875605FC33445A8CB47470 +5C088A7AAED828BD3D93BE80F93CCBB71B702DA053B9CF4C5D949678B54E7D7B +8B4D28E3283310890884A4DEE9BA606770C8FC52FAA87A1846E402F5110F79CF +685AD45742AA00FA8304E668BB4B3A78BA2BE8717306419F4EE1EC696B4C8CD9 +0877326DE7DCCE619D86F9A75C194CD7406A9B1B9C962A381DA83707264F879F +FF16DBFB7B15D38347423C4D14CB8B26007BF591AC6A0FA815852433CE4AC18A +4FD19818F04737C71BBF48C925699AFCFDD25D92010069D2568E655B43A2A88E +3F734C472714E5FC7CAD6189611A10FC281118DA6D78743B9F5CA56301888AB4 +1B4099F9593D046157054869A6267C12474BABDAF528DD0E0F2452C38052787C +12B04D3F2A46888BBA6ED82374485BDFF8B887B8238105D63E912B01D25FB099 +834F60570D0E50CFF2ABC21162EAED3B6D1E8F3575E285EB59A3CFE0D4291255 +40EFDDD282C4A213FD3313C21DC6D90AD561435DF54236CA665EE4B45D7F57C8 +C43B9AFF7AB6E35C1D3BF42CC45DAD238B10F782559007BBA003B508CB25C41F +8CA0B35779C6B5EA62D3F3D4543E12863DCC7A41432DF12464F119E9584C8BFD +FD46563D85185C21A221D398AC93B79C1206975DAB906418E4F27DB339B6B50E +BE1CB70F5ADACA9635B61CCC4DC831CC3EF73AB139061D725190EA2E0C8FD7C6 +8D805D2D19A2F54769D68ACE92B6DBF22C0A2EDB9B45C604E724FABE2762AA93 +2F30FE0FF0FFA874FD655D416F254BC4EE83EFC2489DDA222C669FDDDC14170E +607B85563BECB3D0D397CDF9CFD6E1D7FF5116334317A188FB8537B38B328CDE +2D05354E9774AAA3BD0E21053683879F89324F1714B42DF0A6E9D902BA5373E3 +2A6E95367DD0CFCEC5F1576631969BC441CA14E5E927FE46CB26601D492B8A9E +D5FB32EC9BECA60CA49A241C5F432B2E71B4EC4AE2E4CAF8A488CE89639F2008 +04762E7F895F5865655E81AEEF5B4CB02E47ABEA8E35F95B289B5BF52D760539 +53C5F2950A886B43E4D6AF59199A6C8CDAA2BB2767D5ABDEFFCD40EEFA0B1D02 +ED629131B0FFBD54693A602AC1BD15745E2C80C4A9DB293EA112393CC16A3904 +A26BA8FFD378D0C13D656ECEEBCCDB6F177777CB24359791F987BBC6A8F9F33F +54919747ABC99A0C994F65151C777472AF32480E21399F6FF16BAB2B1501FE31 +9D991F02F20235D5117B1255622EDECC52FB0A752C9DC5CF7DB8B8213E0386E1 +4CE8CA8116B3326DE080035488E7E68F52DB93B456B7DBE5CE4A10298083B1DA +8C1C682D701299958D772E7ADD0E94944F0C4CD12A23DE08FAC08469CDA4B7FA +7E7C86A82C998975B0CF64527869AA22388B3338C0DB25B26B3C5BB43DF9AB3A +7A356DAA33B0B36B4C39330635FE1D8BD33A00208B49F15CE341A54C5698F447 +43638F0B8EEEC6BA29DE5F016365CD09342039C6C30D2C25E38BF1D6DBB78580 +F0BF68CDFBD27D25AA0D9B60D91AE236157C9C5293046695E6C6C74388CB4E69 +43B316C090C3641E1B846FAC1579770B4A2D0F55847CA1162DEDFD59D544E402 +0D472889C3B8177FC1FC57A1D56894750787A6388A9F53004575B85437674062 +E93B2517E379DFD6F735B363D5588591A1D5C384193B6FC50CF4BFF941307783 +3D23C679FB825C99E536B1D0638AE039CD1B38D3FDD72FF18A3E686C32576328 +F16A3090AA2D5527009F821A5F6DAEC910982407451BC6442762B8486C3F923C +4F2EA39609025D5BC6345EB42A74342304819397459C7C576AA92ECEB4584D58 +BF275974AF38FD6CE06A25EC5659D9BE7F616602D48CD61A3F9303500D1A1DA1 +E6D0EAD6141B3E5209E6728DC6436AC89E27D591C4A1057467C5EE398CFFBDC5 +E9E9DBE6649F926671D15AC22E4DA06D2E882BB371682172D21F108D62BABC36 +28F0A65F816E0F389C27419EFA98B070B4F761AF9E8277D1AAA42D8CA68B51CA +21C09C83AD39A9B94EB527F4E114EEAD8DFA8996EA536E0FB71EFCAB6EBD5EA0 +1C3840716B944F6DD6B7BA486F188202D879A07242550A1487F96E0704EBA09E +BF6EBCA8AEEFE48EB5CE14CB3E3D7823DDE0EE6700D5E5D60D76A677FE18AD56 +6752653E7333CC4C21229079F40F4DCC756362B8BBF4AC77C527E285956B1543 +4268C9CCFDECF6E4E5A9B65893AC7C707465E0502AF76E458B6193B943F8CB3E +AEDDEC24C24AD1DF95B958EB48F9D79608A2C53D281F77801B1D0191E2456B17 +825825502754E688CACD557422C5EEF2221F39DE067051611D118020DD2CF23B +F7530C9F085AD552E0EE0E2A0967631D36D3F19F16D0C3EBA4806B1B050F74E3 +D101E032C64C8950560EA38C473099D45DB3E9B3ECE0F5DD604B3AB8CE424618 +BFB6BF2A357CA3FDE707BA64B42BF9585E95F717FAA6157E6B03D098EED24DF5 +DA296997ABFD50D085092AF1FBA05DD63A354200134E6CC02AC5978CD7F5DB4C +9F6480918FE5348DD6908C6CC33413E41B41E308CA598AE14E61C1E61F8EED96 +995E95D2AF962AD7E7E08AE45FE5A15A9C9B9C9A4A003F80EE6A35EC9DE3428A +98863BBD9F3247BBD3661EABA6DB4A885E3CF961E3FA211BC75B97C01AF1D196 +5A67092149A7D759804BDCE977EB1BBE8E150DF922B7E9AB6F90A8F4373BDDE2 +AEB4BEB35DA4876795B5401A84BC613A43F425FCF92E9F9EF479CCC441C2B35C +EF2745005AA4890E904004C66434408374D569A1ED0B6CFB30A26C91C9ADC8F3 +07EC65241B13F5B9741527DBE436E8C9DB6FF461A78391AC480D5A8AF8DF33AE +79AB46290DDD2C1D6BD0CBAC35EE36496EAE145D52353E6EB263DFE620EB54B0 +49651CA5B551077E59A0963F707F1DEB5B329BDB46F59537854B982C7A5C5D43 +6DD9398FB9D035DA69C9874094104F4EF073E8FD995C8FC81D8B285E22CEB34D +568F6609A5902886875DE5C52C496D5146D200BF495F5EC143B93CC49E5C2A08 +D4267B161D4AAD19A05EF614886BC60A66A6342FB499480F38BDEBC97E0A5C1E +5759955496515E544266E1DC67620A31A47997B6AD78F5DAB4640EF4AFC5E0FE +EAB4677B4D02CEB83868BB7E0192DC0B8B2A32A78575A4019A7137F206223238 +C754551A6644A3D3DFFBF819916ED174FDEF284DABE4179FF24F406303547ABF +D453EF90B6713978992A11DF0D0CBCCF423AF7D29B171AA79978EEA46574BF14 +2A631C701B921C6746067A40AC96F5A05D3F60834F5A63363D05D44CFE0E6820 +E467E28CF920243F3B01A09F20D91DDACDEDB5EDA65CC9CA01C395BCE006F690 +8D83231B3015692822C11F541E5D4A6651A315151A26C4A145D7D4644682B094 +9A8870FD7E6AD333E7A78933BACD0F28A1B8CBCA57A7FE19AB2165A22648D09C +7796E45EF0F36605561BE1F039106DA70ED7C603081D459F004CDA4B4CD201EC +E7653A8311DC66B95AE6DBBDEEBA50016D14ADE0488FE1AB0377B7049A0F9A09 +14B16EA09F1EE2565D567EE0FA21C712F5DBD1CC53E8C23E40338E43C4965BE4 +EEF1CAE961E2F2C9775BD78274FB62016A7363FA3D3936D02667EA6841775DF9 +3CBF9165389CCFA9392D139735575C3662F0355BC343851BCEDD7CA61278EB0B +A7810A4317C52B15F559C0F0762A0F4A17D52052779B655C3F77CD0613D07367 +52BB9BF23D904FD1B70AD6C107EB1831C241BA878BD7CF0B2EFAA4BD2E3F9BCF +D09A2A4F2C9EE9D742ED921721701AC2ACD6E9754CDB6E1EAD891B0D63474600 +24C221A5550472C685E6BC6ADAF7BAD61135D960B66B59A524423CF6815407B5 +29ACEE91F08C4F3AFF74931786D014BDF6F85A57C50C50CA13082F0F962D8A7D +D91BB97760E1DF2A8051FEE387AEC967524E8AA2D6D4C824AADD46EDF9683DB5 +6FDD72CCA7D000BE8BD526F5AC2990ECAA151A4B65F87BACAB9CEDFE7F2BE5BF +0DA724EF6AA670E37CB8DFCE9D32A90590831C9E71FA8C929F01C09D379B819F +C86B1F1CA2DCCAD147496898756107F3B1EA3FF25D603E625C3ADB1A122C4010 +B1A8BE368C268F1938CC1DA24ED7F22634A4B3DEBCEFE6AC250B9384F7A34131 +36A38C1589FFA8EDB470D62EE09EE9F19E6CC76F0EBDA2C9E9D6276C466F02BD +5F6F9E9AF9A74793B8B36C36E8C198215EB0259F871FD4356A9FFB3337988711 +5A84B7829626D3C7FBAD3D4FD5EA30953408BB97D77229F5C27150D72CBB6A6C +4585FE13E452D977DBF7EC2639F06B0D0420D965CAB90E1797DE9D201E1219AA +3B06CD074470641FE3CDD17A17E68FB3B7F2B5498F2C74D6209EB97EF626286C +1982FD51DB1B80CF8D3AAC6C449AF5B32966D483B12C4C2C4C2359523B603892 +13109BA0D7E208DC74CFC4583AF2F0E50AE9458F5112A780991C8B6EA248E76E +15C78B3B068C5BFFB1F015A9639EFBCCCC5507206D204EC199CE2D38A2A2F7ED +E9604F1F146AAC9F21B0F6E306202E5BA947C38FA3C9CFE0E2332A903E9F9360 +C3C8750D8DA48FA999397CB7C98F130E449E6116D120DA2902137B9B9CD92D4F +48BA0A077EDF1BE73E43A4C445D9D3738EFE2674FB1849F2037D7CE3D43D126A +607D72B5EEDD491EBDBC9E45EE8AD7E07DE4B0AB22698CCA2800DC307C2D3726 +A98D432531FED2BD1FFE8329A23FFE76837D502A7453FA4EDD1C6EEC8DDCC96B +C23543F90CC51B078F513E0444CA873332E146B87785078084B6E5E89DF07C68 +3777F088436E1D5E5D3EC8078E5D4079AE89C546EEEF93B5EC16CB8C6D95051B +DF0D5B1B59487483402198EE5D20DF471DC29330012EB2934FF9321E5F55D42E +9DDAC8B2A5ABC0549D3E31F4E700F92F92D41991E3680C74D3C8D78FC37F24E0 +6A00CB6FA5145BBA9637DE8A8BCB5DA54E4CBF2A42874A277D8BE7BE258BDFB3 +580E4360299187051E62C27B2C79CDDB9B279A2059325CBA86847B13893AA6D9 +E497C6A771868237B064D20953D44DEDCDA37586ECDE68994A96EB8013753EF2 +CAACD7045E07B8440DCBE8DCBD6862A14E349691C93C83F9F7F9E67C5A746BC0 +7864B3E9938BB5A8D244DE021D45B7766364F5AA1BC2BA0633404F00AD6A097C +DC400FADF01566720B6341407C60045EEDD3187B79EE341FB867A0D1C61903BA +2FF729083A1D94B1B2CC31E28F6D098135E9008BF046650D8EA8881EC30C03CE +DEAC187BC4B92E3F8F90F6E433E3053A2841D95B4CD5A5536D2FD8BA3C8BFCA9 +BA560A0171B941AD077865DCFA6D7DCAAF5EBE285BD0807A7207BE986E8351BE +03064839D4358B16264538A453D42C095552F552383FBA044C7F2D47A3A69EC4 +6E5FD899E0E55CF0B94BDACBC436660DD0CB9C24030345944BF4C62FFA0C7A63 +35F86BC16EB62F5B117458B12ED15387165036F2A2E106BF8D388075382D886E +5FCE7DE83E43F9145D0DAD6CCD00772F6D3C0804BA01B9DF8F31AFC3B2E0F7C1 +976A83DFFD9DE717AAEB614EE6C32DFB3E0592BDC29C18ED416AB637E8769C7C +9F0D9AC0F017A9CC75BA10EF9B30ED1C31DAA78D6CA6F3F71A988F0FBB0BA50E +4775BD68A0FA366E16351193EC5390EC553437388EBE4153E678D850DFDBDBDD +BDFA73F47A3E6A800EEFDA70402B73E571B3B55A6475C055A89D0504423F829D +FA76DD2C7D78280429E6527AAA64AD7FD074F300732771ACA43288CDBB3D26FD +DD4A0AF02CED8E7503E6479643741581E0565970A56C7DD5D7E1C314639EA886 +0E581B4DE3742FB93683F0BF5932019AF0AE1DF9A2812B3E0200C6FCED8AB6E0 +C5256611D969FF4472771FC0ADB16E71A5C32BB6E3C3A79C832C32574262ACE4 +20225A253F4B5C750903DF5D9F5C3AD6DE75500F2B2584973612115924906460 +AE9AB02B1DEE0AACD47B7610241ADFEA06EEC2677BA7CEA0CF3CA93BE4083710 +1956D6974422517019551C92FC19CDFFCAEF2A26C9508D206D9642D66B33971C +8996CDFD0789B2DFB9460A8E00BD6E2BA83120E94E4EBFBBD5A06C2C77555465 +B50579BBC9EBF8C6D9066C4114383392998324DCF86B9ADC935F66176E019DBB +081AE411E45A1499A7DF7B5C998C6DF917AB3D43639CE6365AFBACE5FF30A70F +F0B0087701AA9C5E871A97EF789F94A222F7E586BE8BD1C83FF7E0A429918A8C +0275B463A881742F71096D6ED5946BDF93CD1EA0D407C0542ACE030BE6214211 +BB580CAF11EB8635D6C00052A5A0ADCED3CD6BD1E99141BE1D247CB48CE39CD6 +CAEE933C1068729E9A167515F743E0B66BD06481FFA48CE9C6DCF4F0145BC851 +0710C946391AABEFB70AA2D02DF83E68EED2305195B53B667331B9EF352D7FFF +56EAC2571490A80E0F5EDB22EF988671B978CBA393FAEE0271A02AD4E7916FAD +5BA6E42816C0E4A6B59AD4882CBBE4279392940636B95B14AC72EC763F3C8DF5 +158902E1144BCB9B77497B94AB6F985BAFE6A6EA919ADF5DC76D9547BFC10CF7 +F27AF0F3F369A40F0818EC70BA8D0E3064208B929F4691B4C3359FF49A32477F +E21B57B2C2D7A6C444C09147DAF3C53BBAF46FDC8F18F8F53534F69DB5568BFA +41412B4050EBAD38E48DE3CB3B2024365A2D9436AFAE44DFA3B145EB031F2B34 +A98C93D81397DED7235D26F7C55B6E9DEC79AAD7ECD9D25119C11657E7F593C0 +00B3B94107B15D33F2B27BCB1C7544018613FCE5546AB33EA041BDD6DF071D9A +93AB099D606F7B5437A61C294770AFD946F292CBC5C0E657DFD3B99645D02611 +C3C2D5C083304436098C8BF60C7527F06997B4D10AE189322D279DB5834EDB43 +FAC2E91C1E9B468583AE8EBB861898CE9415A6FA5E099EAAE096BDE2978A142B +930EE1DE108AB039C1512D066AD015A88024072732AD9932203E38F8F822931C +226A39466C45C1D5161583730D41695AD184C7DA4A2F6E06599B0A7D2676C99F +265568564D74A19CFE27CE4F3EAF0F1C1AC97902FAF891506B735F9E35D4E91B +10A54E78899C211532A36D3C85D7C37B287D7D0BB3FCCF4922FA25A2B7EE57E9 +6F834FA1614758B455E4ED8A4F3BB2155EF04D18F8771DE6E441AD8B90CEC661 +81096112F28A4F5BF8C0D03647974574330A9DB9FD4858A866B827E02815D6FE +269545855B4C2978ADF3D01FD470375622DB6302841304C4B34DFC14C934A5EA +D948AFF88638AB565855086B9BDC7ED1C2B1A2DCDE0237F64379FBF189B062BC +3E271422401D7044171D1CF04BCE2334018509119BF2A1A9F77D539FB78049F7 +55447125C1B1BC734D552A95A6542A45B56BC7A9D77D865D69FAD63EBB5CEF5C +A6CC02E78F40A5F4D2D0083A57B9EE39AA1A85AB63F3611BD2F27CC4C0C38B99 +C66CE4ABA335F4E6325EF52E64BFB558C1B0C811C779A46F079E64639EC28C94 +7FB1A2D4C30533813E739009C352DCF93441E0C61A2B43D180D495C62D4433E2 +D5CDC01224D6CE29F06FDFA328E338648FB3C47BBEAED76E2C10DB94B8B39D19 +9A596EAB6D5E0033252119CD31BDC7857CF5833E011DB5330DAEC0C0C6C2CC37 +C3B81DADE8B960867D48E26ADF34929E7A74C220048C250AFD23CD03CA8CAFE7 +AAA8D671FFE2654B5E129B632D2F6AE861C0868F7567ECE49364558EEBE71069 +C1EBB2A01276A674D83944221FB6206A4CB07F451ECBEF842FC10C107ED7CF01 +7B1584DC6B33A0BB78B9741433E59446427D272CC35EA60C69988FB24E5F8FC6 +B8E8B5980FCD7381BFC34789377156F357B7D3A2165913DBC2D15DF5CF92E6FB +42DB4B09628D45936F15456A007230CC9EA9703C14B12443497C8961A46055D8 +FC5D1A2E3E03BB7993079353406FAB03AA50CE6D589EFAC8E186898D39A3B158 +73A86DBEC6D4BA9F706E3E66AC32510865C7FC495CBDD03482F48F77A7C68A56 +7FD81C53FCD359F3518A810A9EBF8B3287B3498FD8DC09612F46F8933B24F230 +6EA06D9CC090E62350DC87C37EE8C2A00B5B305B5F9DF024A354D218BBD6F893 +29C2455C3A6FA80442CF96F71EF417766B36BEA9599A148C741019958E5D9D6F +57BD18C456126C9C2E61B26BA99CC24E381CF54DF698B638395DC4CF5646B297 +35DF231EF503C8A9242ABEC825B86E6B1C396225DE9DD5A74CD4AB2E52CE5502 +E64FE52B841E9C903B6041010CF762B9DA460DBE1B7AB6547E56967AD50A20A8 +A3562CE86FE628FCBD8D5A46CDC6928CC907883B3B223D1BB39FFEC99C295471 +5819DA78E1A28E67BE9C9ECF030D17B750CF63A1FFCCE03488BBCD5AB8833229 +129EFF723149ACCA53F3349F20A95175C634C1AECBA667E94A6EC7240CC73738 +56853DA698EFBFBE8D4EA742115D056E60A5C563CE677211F762D78728F4A4FF +16106B14CF733EC786BC81BF382D929C6E779BF2C5CAC1A7141311467B230972 +473561159C7F359C249A40CC0A2B78153B1407C9B5C58B61BE08EE79D2361242 +7F796F70F131C8EB601DCAC36940A0432598B85A9808D2E3A3AE04481AC98AD4 +765F604A00F6BFBFABC92FCDAFDA89DAF343D56D8BB390DD8196E65823CCBE14 +A44D12EC7460A65E46C3546D6A2C3B5E16B023DEE94A5F29CEEE87F773748F96 +32EF586A0CE0E35DC20A2F79A398A52060A5A4ACAAC9F38A5C5F5E18C5F548B6 +14EC4B3E3DCA73ECF7111C84980AB97DFBCC2B072D917EE0110248FF4728042E +F527F2B5BC1C5CA2FC93FA15ED3F83DC3992CA9ED5BF29EC2ACD3F65CFEFD598 +D3ED8D7F3D54D220D79CD51A599194E511A440B43F1976B944FBA750C80E786D +514014EB35E21B85CF8DE707B96B03B2BB973B9E215C1FC9816DB019765D5B25 +0A1B77FAAA4E048CA5BA20CEA9CA184F59BF87DE90BED9DD310C7FAFE3E93583 +DC243BA6CFDD104A3B126AC33F040E706D9EC76C986C1BC084623E58EA5E197B +2E35DC67BA1BC12FA7013F9212868299C2AA052521D0FE1C8117BA36553B8024 +4FFD05A76B5AB7285E06584ED89DE8E7B6BD50CBA86B0E167BD86820AD60112A +9C90BECB87FFEEEC23104B36BEEEF385FEDF701E9CED8C77D1BD04DB0F5C7616 +373AC3D57A4E056E1A22238E4E4873084E29B993B43F382D90161084F3243769 +AEC08A9272E3F1FAC01BACD9FD24D0C7749423CF64078B39AF900305714A3980 +2CB0B3D6F122A6CEF41C2E290D8EFC54E4ECC8908FDAC9DFD7F3F0EE7A98D260 +EC5C7E3484AFBDE096CCC71D9C2E2DDFA1429C0845AD23A6D235663086C76716 +F5A9EAA8BD0B23D6A9482E452E0BFE1B2FD9B24FC4495C212B4EF23D328AE080 +8CD8DBF54981E161763D7F354A1A411A61D71C5CF36E551269024CEA701E9462 +E09EC70BC5676B2F5DAA0202FBA4948E8E2F896DF94CF23CD93882F0C6F574F2 +C2508020035864D35D73E573105F13F1AF6CE24F4DDD537D52C1E04E1275BF48 +7F28BFA941FEC50C43AC453CCF22645BEED3434AE099A63DCDAA368C2DBDBB65 +F1C83773639DC0E5E22521622A5A7F1FB6C05FA104E22AA914629A5599545712 +9612711D4D8702405003E5D3A94334E32AED660957DE864F657D0878A8636639 +3644D887B87ADB7148DEE4C3F40C302A018F0D8939D901080BDE7C64813DF7B5 +23D6484C7AD67B42AF576895873775C4D8BDFEF8D429317F10D9D344C429D5E8 +8C95A7CBD3BD08F28D46C620EAF97BC44FFF733970C76D2436BC46B04B5CB80D +D6900BDE70957162C71B62F5E0B07637050ADFFF583014DA9F24DED2CA080F50 +574262A788352244EE07ACA41E7827C30D40BF3DD7BBD32F1EE757A661B8F83B +7CD28FE74546961C5A6AE1E201ED17343522264D3CA4C149FD0AE2ECE287068A +3A269B22C8CF8EC9D6B375B38AC613F0F1F4A47C99404D541674B7C40C4CED3B +79105290D297F9771072FCBCC89502405BA5D927C01062B3A781C45EB6048E73 +961ECA73E091FCE341EB6723439B38B188EA498FE9E77B2E5E97880A4CC9ADFD +A6F3AF790B84BDEBD1331F77DF164ABC9B969BB5C431BD9FAF52539B339BAA9C +96ABC3D341722CD608CEF0F08D3E6AAE4962DB8198673B19F3C469559B993F5D +DFF518F5EAF32191B9BC76165FA1A5CFE7B4BA741D140EFDF797F51807385F01 +A4DCD08030ADD12175887CBB60210FF5F275E8BD9706D69CE55F0D5030951A7B +B0D31DFA257ADFA67C9914D4A1EFDC365AEAAA4B31FDA0D401A542 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 0000000000000000000000000000000000000000000000000000000000000000 @@ -2314,7 +2310,7 @@ TeXDict begin 55380996 39158280 1000 600 600 (orgcard.dvi) @start /Fa 242[61 13[{ TeXbbad153fEncoding ReEncodeFont }1 49.8132 /CMSY6 rf /Fb 134[32 1[43 32 34 24 24 24 1[34 30 34 50 18 32 1[18 34 30 19 27 34 27 34 30 13[34 44 -1[41 47 1[54 3[22 1[47 39 2[43 1[45 6[18 3[30 30 1[30 +1[41 47 1[54 3[22 1[47 39 2[43 1[45 6[18 2[30 1[30 1[30 30 30 30 1[18 21 18 44[{ TeXf7b6d320Encoding ReEncodeFont }42 49.8132 /CMR6 rf /Fc 135[33 3[24 29 4[40 58 18 2[22 36 2[33 36 33 33 36 50[22 46[{ TeX74afc74cEncoding ReEncodeFont }14 @@ -2338,7 +2334,7 @@ TeXDict begin 55380996 39158280 1000 600 600 (orgcard.dvi) rf /Fi 133[31 37 37 51 37 39 27 28 28 37 39 35 39 59 20 37 22 20 39 35 22 31 39 31 39 35 2[35 1[35 3[53 72 53 53 51 39 52 1[48 55 53 65 44 55 1[25 53 55 46 48 54 -51 50 53 6[20 3[35 2[35 35 35 1[35 20 24 20 55 35 27 +51 50 53 6[20 2[35 3[35 35 35 1[35 20 24 20 55 35 27 27 20 2[35 59 35 20 19[39 39 41 11[{ TeXf7b6d320Encoding ReEncodeFont } 71 66.4176 /CMR8 rf /Fj 141[57 2[69 76 6[69 42 63 76 61 1[67 14[103 2[103 1[131 9[99 16[69 69 1[69 1[46 3[53 @@ -2354,7 +2350,7 @@ TeXDict begin %%Page: 1 1 TeXDict begin @landscape 1 0 bop -169 -357 a Fj(Org-Mo)t(de)45 b(Reference)h(Card)g(\(1/2\))546 -242 y Fi(\(for)23 b(v)n(ersion)h -(3.16\))-150 -42 y Fh(Getting)37 b(Started)-150 125 y +(3.17\))-150 -42 y Fh(Getting)37 b(Started)-150 125 y Fi(Put)24 b(the)h(follo)n(wing)e(in)g(y)n(our)h Fg(~/.emacs)931 102 y Ff(1)-150 199 y Fg(\(autoload)38 b('org-mode)g("org")e("Org)h (mode")g(t\))-150 268 y(\(autoload)h('org-diary)g("org")f("Org)f(mode)h @@ -2569,7 +2565,7 @@ end %%Page: 2 2 TeXDict begin @landscape 2 1 bop -169 -357 a Fj(Org-Mo)t(de)45 b(Reference)h(Card)g(\(2/2\))546 -242 y Fi(\(for)23 b(v)n(ersion)h -(3.16\))-150 -36 y Fh(Timeline)37 b(and)g(Agenda)-150 +(3.17\))-150 -36 y Fh(Timeline)37 b(and)g(Agenda)-150 120 y Fi(sho)n(w)24 b(timeline)f(of)h(curren)n(t)g(org)f(\014le)458 b Fg(C-c)36 b(C-r)-150 190 y Fi(...)30 b(include)24 b(past)h(dates)793 b Fg(C-u)36 b(C-c)g(C-r)-150 288 y Fi(add)24 b(curren)n(t)g(\014le)g @@ -2755,7 +2751,7 @@ b Fi(with)g(the)h(cur-)4242 3574 y(sor)h(still)g(in)g(a)h(line)f(to)h Fg(org-CUA-compatibility)p Fi(.)4535 3770 y Fb(Cop)n(yrigh)n(t)4838 3768 y(c)4821 3770 y Fa(\015)d Fb(2005)i(F)-5 b(ree)21 b(Soft)n(w)n(are)i(F)-5 b(oundation,)20 b(Inc.)4795 3826 -y(v3.16)h(for)h(Org-Mo)r(de)e(3.16,)i(2005)4912 3882 +y(v3.17)h(for)h(Org-Mo)r(de)e(3.17,)i(2005)4912 3882 y(Author:)k(Philip)18 b(Ro)r(ok)n(e)4473 3937 y(based)j(on)g(refcard)g (design)g(and)f(format)i(b)n(y)f(Stephen)f(Gildea)4242 4022 y(P)n(ermission)28 b(is)f(gran)n(ted)i(to)f(mak)n(e)h(and)e diff --git a/etc/orgcard.tex b/etc/orgcard.tex index f4c1af25972..cd077848978 100644 --- a/etc/orgcard.tex +++ b/etc/orgcard.tex @@ -1,4 +1,4 @@ -% Reference Card for Org Mode 3.16 +% Reference Card for Org Mode 3.17 % %**start of header \newcount\columnsperpage @@ -58,7 +58,7 @@ % Thanks to Paul Rubin, Bob Chassell, Len Tower, and Richard Mlynarik % for their many good ideas. -\def\orgversionnumber{3.16} +\def\orgversionnumber{3.17} \def\year{2005} \def\shortcopyrightnotice{\vskip 1ex plus 2 fill diff --git a/lisp/ChangeLog b/lisp/ChangeLog index d2aada89bb1..872c21dcbc5 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,12 @@ +2005-10-10 Carsten Dominik + + * textmodes/org.el: (org-mode-map): Explicit definition of `C-c + C-x' as a prefix. + (orgtbl-mode-map): Full keymap instead of sparse, because all + `self-insert-command' keys are redifined in this map. + (org-export-as-html): Specify charset for HTML file, by taking it + from the coding system. + 2005-10-10 Kenichi Handa * textmodes/flyspell.el (flyspell-check-word-p): diff --git a/man/ChangeLog b/man/ChangeLog index 49af7878085..f015e35d089 100644 --- a/man/ChangeLog +++ b/man/ChangeLog @@ -1,3 +1,8 @@ +2005-10-10 Carsten Dominik + + * org.texi: (Workflow states): Documented that change in keywords + becomes active only after restart of Emacs. + 2005-10-09 Richard M. Stallman * frames.texi (Speedbar): Clarify the text. From fde7576e52b949afd0931d62475f973c947489cf Mon Sep 17 00:00:00 2001 From: Andreas Schwab Date: Mon, 10 Oct 2005 09:34:44 +0000 Subject: [PATCH 065/168] ($(lisp)/mh-e/mh-loaddefs.el): Fix for building outside source directory. --- lisp/ChangeLog | 5 +++++ lisp/Makefile.in | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 872c21dcbc5..40a27824574 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2005-10-10 Andreas Schwab + + * Makefile.in ($(lisp)/mh-e/mh-loaddefs.el): Fix for building + outside source directory. + 2005-10-10 Carsten Dominik * textmodes/org.el: (org-mode-map): Explicit definition of `C-c diff --git a/lisp/Makefile.in b/lisp/Makefile.in index a66ea05f27a..226110e35c7 100644 --- a/lisp/Makefile.in +++ b/lisp/Makefile.in @@ -240,9 +240,9 @@ $(lisp)/mh-e/mh-loaddefs.el: $(MH-E-SRC) $(EMACS) $(EMACSOPT) \ -l autoload \ --eval "(setq generate-autoload-cookie \";;;###mh-autoload\")" \ - --eval "(setq generated-autoload-file (expand-file-name \"mh-e/mh-loaddefs.el\"))" \ + --eval "(setq generated-autoload-file \"$(lisp)/mh-e/mh-loaddefs.el\")" \ --eval "(setq make-backup-files nil)" \ - -f batch-update-autoloads mh-e + -f batch-update-autoloads $(lisp)/mh-e echo " " >> $@ echo "(provide 'mh-loaddefs)" >> $@ echo ";;; Local Variables:" >> $@ From 9bf211adf26ea43c4aa4eb92ec33dcd1a5361a53 Mon Sep 17 00:00:00 2001 From: Andreas Schwab Date: Mon, 10 Oct 2005 09:47:24 +0000 Subject: [PATCH 066/168] (tex-font-lock-keywords-2): Adjust match number. --- lisp/ChangeLog | 3 +++ lisp/textmodes/tex-mode.el | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 40a27824574..3fb51eb15fb 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,8 @@ 2005-10-10 Andreas Schwab + * textmodes/tex-mode.el (tex-font-lock-keywords-2): Adjust match + number. Reported by Karl Chen . + * Makefile.in ($(lisp)/mh-e/mh-loaddefs.el): Fix for building outside source directory. diff --git a/lisp/textmodes/tex-mode.el b/lisp/textmodes/tex-mode.el index 24267b7b8f2..3623c788882 100644 --- a/lisp/textmodes/tex-mode.el +++ b/lisp/textmodes/tex-mode.el @@ -577,7 +577,7 @@ An alternative value is \" . \", if you use a font with a narrow period." ;; This is separate from the previous one because of cases like ;; {\em foo {\bf bar} bla} where both match. (list (concat "\\\\\\(bf\\(series\\)?\\)\\>" args) - 2 '(tex-font-lock-append-prop 'bold) 'append))))) + 3 '(tex-font-lock-append-prop 'bold) 'append))))) "Gaudy expressions to highlight in TeX modes.") (defun tex-font-lock-suscript (pos) From 4e5f12ee1d678252e2fac41824fd9c13c6c0ce51 Mon Sep 17 00:00:00 2001 From: Nick Roberts Date: Mon, 10 Oct 2005 12:23:44 +0000 Subject: [PATCH 067/168] *** empty log message *** --- lisp/ChangeLog | 12 ++++++++++++ man/ChangeLog | 6 ++++++ 2 files changed, 18 insertions(+) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 3fb51eb15fb..306705ff042 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,15 @@ +2005-10-11 Nick Roberts + + * progmodes/gud.el (gud-install-speedbar-variables): Add more + bindings. + (gud-speedbar-buttons): Preserve point if possible. + (gud-sentinel): Restore previous speedbar display type. + + * progmodes/gdb-ui.el (gdba): Improve diagram. + (def-gdb-auto-update-handler, gdb-info-locals-handler) + (gdb-put-breakpoint-icon, gdb-remove-breakpoint-icons): Call + get-buffer-window once. + 2005-10-10 Andreas Schwab * textmodes/tex-mode.el (tex-font-lock-keywords-2): Adjust match diff --git a/man/ChangeLog b/man/ChangeLog index f015e35d089..99b2b4feb76 100644 --- a/man/ChangeLog +++ b/man/ChangeLog @@ -1,3 +1,9 @@ +2005-10-11 Nick Roberts + + * building.texi (GDB User Interface Layout): Improve diagram. + (Watch Expressions): Explain how to make speedbar global. + (Other GDB User Interface Buffers): Make references more precise. + 2005-10-10 Carsten Dominik * org.texi: (Workflow states): Documented that change in keywords From c35d8f463cf82e22b1ef82e79555e4f00e4d028b Mon Sep 17 00:00:00 2001 From: Nick Roberts Date: Mon, 10 Oct 2005 12:25:04 +0000 Subject: [PATCH 068/168] (gud-install-speedbar-variables): Add more bindings. (gud-speedbar-buttons): Preserve point if possible. (gud-sentinel): Restore previous speedbar display type. --- lisp/progmodes/gud.el | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/lisp/progmodes/gud.el b/lisp/progmodes/gud.el index cc6163d6235..d38697a2152 100644 --- a/lisp/progmodes/gud.el +++ b/lisp/progmodes/gud.el @@ -352,6 +352,9 @@ t means that there is no stack, and we are in display-file mode.") (define-key gud-speedbar-key-map "j" 'speedbar-edit-line) (define-key gud-speedbar-key-map "e" 'speedbar-edit-line) (define-key gud-speedbar-key-map "\C-m" 'speedbar-edit-line) + (define-key gud-speedbar-key-map " " 'speedbar-toggle-line-expansion) + (define-key gud-speedbar-key-map "[" 'speedbar-expand-line-descendants) + (define-key gud-speedbar-key-map "]" 'speedbar-contract-line-descendants) (define-key gud-speedbar-key-map "D" 'gdb-var-delete)) (speedbar-add-expansion-list '("GUD" gud-speedbar-menu-items @@ -389,7 +392,9 @@ required by the caller." gud-comint-buffer ;; gud-comint-buffer might be killed (buffer-name gud-comint-buffer)) - (let ((minor-mode (with-current-buffer buffer gud-minor-mode))) + (let* ((minor-mode (with-current-buffer buffer gud-minor-mode)) + (window (get-buffer-window (current-buffer) 0)) + (p (window-point window))) (cond ((memq minor-mode '(gdbmi gdba)) (when (or gdb-var-changed @@ -454,7 +459,8 @@ required by the caller." 'gud-gdb-goto-stackframe) (t (error "Should never be here"))) frame t)))) - (setq gud-last-speedbar-stackframe gud-last-last-frame))))))) + (setq gud-last-speedbar-stackframe gud-last-last-frame)))) + (set-window-point window p)))) ;; ====================================================================== @@ -2569,6 +2575,9 @@ It is saved for when this flag is not set.") ;; Stop displaying an arrow in a source file. (setq gud-overlay-arrow-position nil) (set-process-buffer proc nil) + (if (featurep 'speedbar) + (speedbar-change-initial-expansion-list + speedbar-previously-used-expansion-list-name)) (if (memq gud-minor-mode-type '(gdbmi gdba)) (gdb-reset) (gud-reset))) From 974be7ce983b4f14f24bbcf4bb0a55b0e2e85e54 Mon Sep 17 00:00:00 2001 From: Nick Roberts Date: Mon, 10 Oct 2005 12:26:05 +0000 Subject: [PATCH 069/168] (gdba): Improve diagram. (def-gdb-auto-update-handler, gdb-info-locals-handler) (gdb-put-breakpoint-icon, gdb-remove-breakpoint-icons): Call get-buffer-window once. --- lisp/progmodes/gdb-ui.el | 71 +++++++++++++++++++++------------------- 1 file changed, 37 insertions(+), 34 deletions(-) diff --git a/lisp/progmodes/gdb-ui.el b/lisp/progmodes/gdb-ui.el index fe05119d2cd..852cd8deb88 100644 --- a/lisp/progmodes/gdb-ui.el +++ b/lisp/progmodes/gdb-ui.el @@ -173,28 +173,28 @@ See Info node `(emacs)GDB Graphical Interface' for a more detailed description of this mode. ---------------------------------------------------------------------- - GDB Toolbar ---------------------------------------------------------------------- - GUD buffer (I/O of GDB) | Locals buffer - | - | - | ---------------------------------------------------------------------- - Source buffer | Input/Output (of inferior) buffer - | (comint-mode) - | - | - | - | - | - | ---------------------------------------------------------------------- - Stack buffer | Breakpoints buffer - RET gdb-frames-select | SPC gdb-toggle-breakpoint - | RET gdb-goto-breakpoint - | d gdb-delete-breakpoint ----------------------------------------------------------------------" ++--------------------------------------------------------------+ +| GDB Toolbar | ++-------------------------------+------------------------------+ +| GUD buffer (I/O of GDB) | Locals buffer | +| | | +| | | +| | | ++-------------------------------+------------------------------+ +| Source buffer | I/O buffer (of inferior) | +| | (comint-mode) | +| | | +| | | +| | | +| | | +| | | +| | | ++-------------------------------+------------------------------+ +| Stack buffer | Breakpoints buffer | +| RET gdb-frames-select | SPC gdb-toggle-breakpoint | +| | RET gdb-goto-breakpoint | +| | d gdb-delete-breakpoint | ++-------------------------------+------------------------------+" ;; (interactive (list (gud-query-cmdline 'gdba))) ;; @@ -1192,12 +1192,13 @@ happens to be appropriate." (let ((buf (gdb-get-buffer ',buf-key))) (and buf (with-current-buffer buf - (let ((p (window-point (get-buffer-window buf 0))) + (let* ((window (get-buffer-window buf 0)) + (p (window-point window)) (buffer-read-only nil)) (erase-buffer) (insert-buffer-substring (gdb-get-create-buffer 'gdb-partial-output-buffer)) - (set-window-point (get-buffer-window buf 0) p))))) + (set-window-point window p))))) ;; put customisation here (,custom-defun))) @@ -2125,13 +2126,15 @@ corresponding to the mode line clicked." (while (re-search-forward "\\s-*{.*\n" nil t) (replace-match " (array);\n" nil nil)))) (let ((buf (gdb-get-buffer 'gdb-locals-buffer))) - (and buf (with-current-buffer buf - (let ((p (window-point (get-buffer-window buf 0))) + (and buf + (with-current-buffer buf + (let* ((window (get-buffer-window buf 0)) + (p (window-point window)) (buffer-read-only nil)) (erase-buffer) (insert-buffer-substring (gdb-get-create-buffer 'gdb-partial-output-buffer)) - (set-window-point (get-buffer-window buf 0) p))))) + (set-window-point window p))))) (run-hooks 'gdb-info-locals-hook)) (defun gdb-info-locals-custom () @@ -2528,10 +2531,10 @@ BUFFER nil or omitted means use the current buffer." (when (< left-margin-width 2) (save-current-buffer (setq left-margin-width 2) - (if (get-buffer-window (current-buffer) 0) + (let ((window (get-buffer-window (current-buffer) 0))) + (if window (set-window-margins - (get-buffer-window (current-buffer) 0) - left-margin-width right-margin-width)))) + window left-margin-width right-margin-width))))) (gdb-put-string (propertize putstring 'face (if enabled 'breakpoint-enabled 'breakpoint-disabled)) @@ -2543,10 +2546,10 @@ BUFFER nil or omitted means use the current buffer." (remove-images start end)) (when remove-margin (setq left-margin-width 0) - (if (get-buffer-window (current-buffer) 0) - (set-window-margins - (get-buffer-window (current-buffer) 0) - left-margin-width right-margin-width)))) + (let ((window (get-buffer-window (current-buffer) 0))) + (if window + (set-window-margins + window left-margin-width right-margin-width))))) ;; From 1a0b66fe019869f5bdcb59082aa684b12962d967 Mon Sep 17 00:00:00 2001 From: Nick Roberts Date: Mon, 10 Oct 2005 12:27:21 +0000 Subject: [PATCH 070/168] (GDB User Interface Layout): Improve diagram. (Watch Expressions): Explain how to make speedbar global. (Other GDB User Interface Buffers): Make references more precise. --- man/building.texi | 72 +++++++++++++++++++++++++++-------------------- 1 file changed, 41 insertions(+), 31 deletions(-) diff --git a/man/building.texi b/man/building.texi index a9a3cc049c7..eb7a8bb00fe 100644 --- a/man/building.texi +++ b/man/building.texi @@ -801,18 +801,21 @@ If @code{gdb-many-windows} is non-@code{nil}, regardless of the value of @code{gdb-use-inferior-io-buffer} is @code{nil}. In this case the source buffer occupies the full width of the frame. -@multitable @columnfractions .5 .5 -@item GUD buffer (I/O of GDB) -@tab Locals buffer -@item -@tab -@item Source buffer -@tab Input/Output (of inferior) buffer -@item -@tab -@item Stack buffer -@tab Breakpoints buffer -@end multitable +@example ++--------------------------------+--------------------------------+ +| | | +| GUD buffer (I/O of GDB) | Locals buffer | +| | | +|--------------------------------+--------------------------------+ +| | | +| Source buffer | I/O buffer (of inferior) | +| | | +|--------------------------------+--------------------------------+ +| | | +| Stack buffer | Breakpoints buffer | +| | | ++--------------------------------+--------------------------------+ +@end example To toggle this layout, do @kbd{M-x gdb-many-windows}. @@ -822,12 +825,12 @@ re-compiling your program, then you can restore it with the command @code{gdb-restore-windows}. You may also choose which additional buffers you want to display, -either in the same frame or a different one. Select GDB-windows or -GDB-Frames from the menu-bar under the heading GUD. If the menu-bar -is unavailable, type @code{M-x +either in the same frame or a different one. Select them from +@samp{GUD->GDB-windows} or @samp{GUD->GDB-Frames} sub-menu +respectively. If the menu-bar is unavailable, type @code{M-x gdb-display-@var{buffertype}-buffer} or @code{M-x -gdb-frame-@var{buffertype}-buffer} respectively, where @var{buffertype} -is the relevant buffer type e.g breakpoints. +gdb-frame-@var{buffertype}-buffer} respectively, where +@var{buffertype} is the relevant buffer type e.g breakpoints. When you finish debugging then kill the GUD buffer with @kbd{C-x k}, which will also kill all the buffers associated with the session. @@ -874,7 +877,7 @@ the current line (@code{gdb-goto-breakpoint}). Alternatively, click The stack buffer displays a @dfn{call stack}, with one line for each of the nested subroutine calls (@dfn{stack frames}) now active in the -program. @xref{Backtrace,,info stack, gdb, The GNU debugger}. +program. @xref{Backtrace,, Backtraces, gdb, The GNU debugger}. @findex gdb-frames-select The selected frame number is displayed in reverse contrast. Move @@ -898,6 +901,12 @@ types, such as arrays, structures and unions are represented in a tree format. To expand or contract a complex data type, click @kbd{Mouse-2} on the tag to the left of the expression. +By default, watch expressions only display in the speedbar when the +GUD buffer is selected in the attached frame. If you want your watch +expressions to remain visible at all times then select the @samp{GUD} +radio button on the @samp{Speedbar->Displays} sub-menu using +@kbd{Mouse-3}. + @findex gdb-var-delete With the cursor over the root expression of a complex data type, type @kbd{D} to delete it from the speedbar @@ -936,8 +945,8 @@ available here. @xref{Shell Mode}. @item Locals Buffer The locals buffer displays the values of local variables of the -current frame for simple data types (@pxref{Frame Info,,, gdb, The GNU -debugger}). +current frame for simple data types (@pxref{Frame Info, Frame Info, +Information on a frame, gdb, The GNU debugger}). Arrays and structures display their type only. You must display them separately to examine their values. @xref{Watch Expressions}. @@ -958,20 +967,21 @@ appear in the fringe or margin. @item Threads Buffer @findex gdb-threads-select The threads buffer displays a summary of all threads currently in your -program (@pxref{Threads,,, gdb, The GNU debugger}). Move point to any -thread in the list and press @key{RET} to select it -(@code{gdb-threads-select}) and display the associated source in the -source buffer. Alternatively, click @kbd{Mouse-2} on a thread to -select it. If the locals buffer is displayed then its contents update -to display the variables that are local to the new thread. +program (@pxref{Threads, Threads, Debugging programs with multiple +threads, gdb, The GNU debugger}). Move point to any thread in the +list and press @key{RET} to select it (@code{gdb-threads-select}) and +display the associated source in the source buffer. Alternatively, +click @kbd{Mouse-2} on a thread to select it. If the locals buffer is +displayed then its contents update to display the variables that are +local to the new thread. @item Memory Buffer The memory buffer allows the user to examine sections of program -memory (@pxref{Memory,,, gdb, The GNU debugger}). Click @kbd{Mouse-1} -on the appropriate part of the header line to change the starting -address or number of data items that the buffer displays. -Click @kbd{Mouse-3} on the header line to select the display format -or unit size for these data items. +memory (@pxref{Memory, Memory, Examining memory, gdb, The GNU +debugger}). Click @kbd{Mouse-1} on the appropriate part of the header +line to change the starting address or number of data items that the +buffer displays. Click @kbd{Mouse-3} on the header line to select the +display format or unit size for these data items. @end table From 008171a4e0c745ade79ab36779f8ca8c9c692f1c Mon Sep 17 00:00:00 2001 From: Juanma Barranquero Date: Mon, 10 Oct 2005 13:41:06 +0000 Subject: [PATCH 071/168] (Fwindow_tree): Fix spelling. --- src/window.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/window.c b/src/window.c index 9ef4fc2eacd..ff01b2c902c 100644 --- a/src/window.c +++ b/src/window.c @@ -6279,7 +6279,7 @@ is the frame's minibuffer window. If the root window is not split, ROOT is the root window itself. Otherwise, ROOT is a list (DIR EDGES W1 W2 ...) where DIR is nil for a -horisontal split, and t for a vertical split, EDGES gives the combined +horizontal split, and t for a vertical split, EDGES gives the combined size and position of the subwindows in the split, and the rest of the elements are the subwindows in the split. Each of the subwindows may again be a window or a list representing a window split, and so on. From 66a9dbbea53f608635026eb2d7b01b30b5c150c0 Mon Sep 17 00:00:00 2001 From: Juanma Barranquero Date: Mon, 10 Oct 2005 14:52:50 +0000 Subject: [PATCH 072/168] (Fredirect_frame_focus): Fix typos in docstring. (next_frame, prev_frame, set_term_frame_name): Make static. --- src/frame.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/frame.c b/src/frame.c index d423138fc9a..624e1a89b86 100644 --- a/src/frame.c +++ b/src/frame.c @@ -901,7 +901,7 @@ DEFUN ("frame-list", Fframe_list, Sframe_list, If MINIBUF is 0, include all visible and iconified frames. Otherwise, include all frames. */ -Lisp_Object +static Lisp_Object next_frame (frame, minibuf) Lisp_Object frame; Lisp_Object minibuf; @@ -978,7 +978,7 @@ next_frame (frame, minibuf) If MINIBUF is 0, include all visible and iconified frames. Otherwise, include all frames. */ -Lisp_Object +static Lisp_Object prev_frame (frame, minibuf) Lisp_Object frame; Lisp_Object minibuf; @@ -1813,7 +1813,7 @@ Focus redirection is useful for temporarily redirecting keystrokes to a surrogate minibuffer frame when a frame doesn't have its own minibuffer window. -A frame's focus redirection can be changed by select-frame. If frame +A frame's focus redirection can be changed by `select-frame'. If frame FOO is selected, and then a different frame BAR is selected, any frames redirecting their focus to FOO are shifted to redirect their focus to BAR. This allows focus redirection to work properly when the @@ -1821,7 +1821,7 @@ user switches from one frame to another using `select-window'. This means that a frame whose focus is redirected to itself is treated differently from a frame whose focus is redirected to nil; the former -is affected by select-frame, while the latter is not. +is affected by `select-frame', while the latter is not. The redirection lasts until `redirect-frame-focus' is called to change it. */) (frame, focus_frame) @@ -1952,7 +1952,7 @@ frame_name_fnn_p (str, len) /* Set the name of the terminal frame. Also used by MSDOS frames. Modeled after x_set_name which is used for WINDOW frames. */ -void +static void set_term_frame_name (f, name) struct frame *f; Lisp_Object name; From 04bc79457e5c97febd4fdb3d9b5a6df754a66086 Mon Sep 17 00:00:00 2001 From: Juanma Barranquero Date: Mon, 10 Oct 2005 14:59:07 +0000 Subject: [PATCH 073/168] *** empty log message *** --- src/ChangeLog | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 693ddb3bf57..d9e64625393 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,10 @@ +2005-10-10 Juanma Barranquero + + * frame.c (Fredirect_frame_focus): Fix typos in docstring. + (next_frame, prev_frame, set_term_frame_name): Make static. + + * window.c (Fwindow_tree): Fix spelling. + 2005-10-09 Romain Francoise * window.c (Fwindow_end): Don't try to redisplay if non-interactive. @@ -219,9 +226,9 @@ * systime.h (get_operating_system_release): ... here. - * xterm.c (set_vertical_scroll_bar): Move prototype ... - (handle_one_xevent): Refer to union field to match the type - required by the function definition. + * xterm.c (handle_one_xevent): Refer to union field to match the + type required by the function definition. + (set_vertical_scroll_bar): Move prototype ... * xterm.h: ... here. From 92d22d4827437da88ec1ab4c6596fab97d5339a5 Mon Sep 17 00:00:00 2001 From: Chong Yidong Date: Mon, 10 Oct 2005 15:00:57 +0000 Subject: [PATCH 074/168] * frames.texi (Speedbar): A couple more clarifications. --- man/ChangeLog | 4 ++++ man/frames.texi | 37 +++++++++++++++++-------------------- 2 files changed, 21 insertions(+), 20 deletions(-) diff --git a/man/ChangeLog b/man/ChangeLog index 99b2b4feb76..3b929275136 100644 --- a/man/ChangeLog +++ b/man/ChangeLog @@ -1,3 +1,7 @@ +2005-10-10 Chong Yidong + + * frames.texi (Speedbar): A couple more clarifications. + 2005-10-11 Nick Roberts * building.texi (GDB User Interface Layout): Improve diagram. diff --git a/man/frames.texi b/man/frames.texi index b01dd626d42..daaa9599bf7 100644 --- a/man/frames.texi +++ b/man/frames.texi @@ -555,30 +555,27 @@ always associated with a specific frame, called its @dfn{attached frame}; all speedbar operations act on that frame. Type @kbd{M-x speedbar} to create the speedbar and associate it with -the current frame. To dismiss the speedbar, select it and type -@kbd{q} or @kbd{M-x speedbar}. (You can also delete the speedbar -frame like any other Emacs frame.) You can then attach the speedbar -to a different frame by typing @kbd{M-x speedbar} in that frame. -@c ??? If the speedbar is active, and I type M-x speedbar in another -@c frame, does that attach the speedbar to that other frame? -@c If not, it should! -- rms +the current frame. To dismiss the speedbar, type @kbd{M-x speedbar} +again, or select the speedbar and type @kbd{q}. (You can also delete +the speedbar frame like any other Emacs frame.) If you wish to +associate the speedbar with a different frame, dismiss it and call +@kbd{M-x speedbar} from that frame. -@c ??? When you visit a file in this way, does it appear -in the selected window? In a new window in the same frame? -- rms The speedbar can operate in various modes. Its default mode is @dfn{File Display} mode, which shows the files in the current directory of the selected window of the attached frame, one file per -line. Clicking on a file name visits that file in the attached frame, -and clicking on a directory name shows that directory in the speedbar -(@pxref{Mouse References}). Each line also has a box, @samp{[+]} or -@samp{<+>}, that you can click on to @dfn{expand} the contents of that -item. Expanding a directory adds the contents of that directory to -the speedbar display, underneath the directory's own line. Expanding -an ordinary file adds a list of the tags in that file to the speedbar -display; you can click on a tag name to jump to that tag in the -attached frame. When a file or directory is expanded, the @samp{[+]} -changes to @samp{[-]}; you can click on that box to @dfn{contract} the -item, hiding its contents. +line. Clicking on a file name visits that file in the selected window +of the attached frame, and clicking on a directory name shows that +directory in the speedbar (@pxref{Mouse References}). Each line also +has a box, @samp{[+]} or @samp{<+>}, that you can click on to +@dfn{expand} the contents of that item. Expanding a directory adds +the contents of that directory to the speedbar display, underneath the +directory's own line. Expanding an ordinary file adds a list of the +tags in that file to the speedbar display; you can click on a tag name +to jump to that tag in the selected window of the attached frame. +When a file or directory is expanded, the @samp{[+]} changes to +@samp{[-]}; you can click on that box to @dfn{contract} the item, +hiding its contents. You navigate through the speedbar using the keyboard, too. Typing @kbd{RET} while point is on a line in the speedbar is equivalent to From f9e36a6dc971d61c8439f0a7d0b1df5a8e77f886 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Dj=C3=A4rv?= Date: Mon, 10 Oct 2005 16:14:00 +0000 Subject: [PATCH 075/168] -nb changed to -nbi --- etc/ChangeLog | 4 ++++ etc/NEWS | 2 +- man/ChangeLog | 4 ++++ man/cmdargs.texi | 4 ++-- src/ChangeLog | 4 ++++ src/emacs.c | 4 ++-- 6 files changed, 17 insertions(+), 5 deletions(-) diff --git a/etc/ChangeLog b/etc/ChangeLog index 3cafdb3e471..d5bc0f4abb0 100644 --- a/etc/ChangeLog +++ b/etc/ChangeLog @@ -1,3 +1,7 @@ +2005-10-10 Jan Dj,Ad(Brv + + * NEWS: -nb => -nbi + 2005-10-10 Carsten Dominik * orgcard.tex: Version 3.17, no changes except version number. diff --git a/etc/NEWS b/etc/NEWS index b32e2b83fdc..3debb164866 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -177,7 +177,7 @@ disables the splash screen; see also the variable +++ ** The default is now to use an bitmap as the icon, so the command-line options ---icon-type, -i has been replaced with options --no-bitmap-icon, -nb to turn +--icon-type, -i has been replaced with options --no-bitmap-icon, -nbi to turn the bitmap icon off. +++ diff --git a/man/ChangeLog b/man/ChangeLog index 3b929275136..c4e793ac00f 100644 --- a/man/ChangeLog +++ b/man/ChangeLog @@ -1,3 +1,7 @@ +2005-10-10 Jan Dj,Ad(Brv + + * cmdargs.texi (Icons X): -nb => -nbi + 2005-10-10 Chong Yidong * frames.texi (Speedbar): A couple more clarifications. diff --git a/man/cmdargs.texi b/man/cmdargs.texi index d0ab8788150..bdb57d9b063 100644 --- a/man/cmdargs.texi +++ b/man/cmdargs.texi @@ -1173,8 +1173,8 @@ If you have many clients running at once, you can avoid cluttering up the screen by iconifying most of the clients. @table @samp -@item -nb -@opindex -nb +@item -nbi +@opindex -nbi @itemx --no-bitmap-icon @opindex --no-bitmap-icon @cindex Emacs icon, a gnu diff --git a/src/ChangeLog b/src/ChangeLog index d9e64625393..dada003404a 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,7 @@ +2005-10-10 Jan Dj,Ad(Brv + + * emacs.c (USAGE3, standard_args): -nb => -nbi + 2005-10-10 Juanma Barranquero * frame.c (Fredirect_frame_focus): Fix typos in docstring. diff --git a/src/emacs.c b/src/emacs.c index 497cdd7943f..4eee9e0e534 100644 --- a/src/emacs.c +++ b/src/emacs.c @@ -311,7 +311,7 @@ Display options:\n\ --fullscreen, -fs make first frame fullscreen\n\ --fullwidth, -fw make the first frame wide as the screen\n\ --geometry, -g GEOMETRY window geometry\n\ ---no-bitmap-icon, -nb do not use picture of gnu for Emacs icon\n\ +--no-bitmap-icon, -nbi do not use picture of gnu for Emacs icon\n\ --iconic start Emacs in iconified state\n\ --internal-border, -ib WIDTH width between text and main border\n\ --line-spacing, -lsp PIXELS additional space to put between lines\n\ @@ -1828,7 +1828,7 @@ struct standard_args standard_args[] = { "-u", "--user", 30, 1 }, { "-user", 0, 30, 1 }, { "-debug-init", "--debug-init", 20, 0 }, - { "-nb", "--no-bitmap-icon", 15, 0 }, + { "-nbi", "--no-bitmap-icon", 15, 0 }, { "-iconic", "--iconic", 15, 0 }, { "-D", "--basic-display", 12, 0}, { "-basic-display", 0, 12, 0}, From a05fcb7d84188fa404e21e3f73ac4de8d697c446 Mon Sep 17 00:00:00 2001 From: Bill Wohler Date: Mon, 10 Oct 2005 16:37:54 +0000 Subject: [PATCH 076/168] * mh-init.el (mh-image-load-path): New function that adds the path to the MH-E images to the image-load-path or load-path depending on the version of Emacs. * mh-customize.el: Call mh-image-load-path just before mh-tool-bar-define so that the toolbar images can be found. * mh-customize.el (mh-invisible-header-fields-internal) (mh-invisible-header-fields-internal): Add Received-SPF header and X-Gmail- prefixes seen from Gmail. Jeffrey C Honig * mh-customize.el (mh-customize): Use customization group mh-e. * mh-e.el (desktop-buffer-mode-handlers): Only add to this list if the variable exists. Not present pre-version 22. (Version, mh-version): Added +cvs to version. * mh-unit.el (mh-unit): Changed lm-verify test to Emacs 22. * Makefile: Incorporated ideas from Clemens Fruhwirth to generalize mh-loaddefs.el to make it work for both GNU Emacs and XEmacs. (EMACS_OPTIONS, XEMACS_OPTIONS): Use double-dash for all long options. (EMACS_LOADDEFS_COOKIE): New variable for generate-autoload-cookie setting. Obsoletes XEMACS_LOADDEFS_COOKIE. (EMACS_EXPORT_MH_LOADDEFS): New variable for GNU Emacs commands to rebuild mh-loaddefs.el. (XEMACS_EXPORT_MH_LOADDEFS): New variable for XEmacs commands to rebuild mh-loaddefs.el. Obsoletes XEMACS_LOADDEFS_FILE and XEMACS_LOADDEFS_PKG_NAME. (MH-E-LOADDEFS-SRC): New variable which is set to $(MH-E-SRC) on GNU Emacs, and adds $(MH-E-XEMACS-SRC) on XEmacs. (all): Modify EMACS_EXPORT_MH_LOADDEFS and MH-E-LOADDEFS-SRC on XEMacs. (mh-loaddefs.el): Now depends on $(MH-E-LOADDEFS-SRC) and has generic compile command that works on both GNU Emacs XEmacs. (xemacs): Depend on autoloads instead of deleted loaddefs-xemacs. (loaddefs-xemacs): Deleted. * mh-comp.el (mh-font-lock-field-data): Fix a bug where the function would return t but match-data was being set to nil (closes SF #1241017). Satyaki Das . * mh-comp.el (mh-insert-auto-fields): Inset identity regardless of whether one was already set, since if one used a default identity it would never be overridden. Peter S Galbraith * mh-init.el (mh-path): Use customization group mh-e. Thanks to Peter Whaite for these patches (closes SF #1213716). * mh-mime.el (mh-compose-forward): Only use mh-sent-from-msg as a default message if it's a number (as is done elsewhere). Otherwise, an error is thrown if this function is called from a draft created by mh-forward since this variable is a list. Also added a space after the "Messages [%s]:" prompt. * mh-mime.el (mh-compose-forward): Allow insertion of multiple forwarded messages by range (including sequences). For the sent folder the default message presented is the sent message. For other folders, the default message is "cur", if it exists. Jeffrey C Honig --- lisp/mh-e/ChangeLog | 11341 +---------------------------------- lisp/mh-e/ChangeLog.1 | 11414 ++++++++++++++++++++++++++++++++++++ lisp/mh-e/mh-alias.el | 2 +- lisp/mh-e/mh-comp.el | 20 +- lisp/mh-e/mh-customize.el | 18 +- lisp/mh-e/mh-e.el | 10 +- lisp/mh-e/mh-identity.el | 2 +- lisp/mh-e/mh-init.el | 50 +- lisp/mh-e/mh-junk.el | 2 +- lisp/mh-e/mh-mime.el | 44 +- lisp/mh-e/mh-print.el | 2 +- 11 files changed, 11540 insertions(+), 11365 deletions(-) create mode 100644 lisp/mh-e/ChangeLog.1 diff --git a/lisp/mh-e/ChangeLog b/lisp/mh-e/ChangeLog index 6836b3947cb..ac4e9242729 100644 --- a/lisp/mh-e/ChangeLog +++ b/lisp/mh-e/ChangeLog @@ -1,11339 +1,20 @@ -2005-09-30 Bill Wohler +2005-10-09 Bill Wohler - * mh-customize.el (mh-refile-msg, mh-tool-bar-reply-from) - (mh-tool-bar-reply-to, mh-tool-bar-reply-all) - (mh-alias-grab-from-field, mh-pack-folder): Image files moved to - etc/images/mail so added "mail/" prefix. - (mh-reply): Ditto. Also renamed reply2.* to reply.*. - (mh-rescan-folder): Ditto. Renamed image file to refresh.* since - it can be used in the general sense. Does not have "mail/" - prefix. + * mh-init.el (mh-image-load-path): New function that adds the path + to the MH-E images to the image-load-path or load-path depending + on the version of Emacs. -2005-09-24 Emilio C. Lopes + * mh-customize.el: Call mh-image-load-path just before + mh-tool-bar-define so that the toolbar images can be found. - * mh-mime.el (mh-compose-forward, mh-mhn-compose-forw): - * mh-comp.el (mh-insert-letter): - * mh-utils.el (mh-prompt-for-folder): - Follow convention for reading with the minibuffer. +2005-10-04 Bill Wohler -2005-09-19 Juanma Barranquero + * ChangeLog: Moved contents into ChangeLog.1 and trimmed. + + * ChangeLog.1: New file. Contains old ChangeLog. - * mh-print.el (mh-ps-print-msg-show): Fix misplaced parenthesis in - previous change. -2005-09-18 D Goel - - * mh-alias.el (mh-alias-ali): Fix `message' call: first arg - should be a format spec. - - * mh-print.el (mh-ps-spool-buffer, mh-ps-spool-a-msg) - (mh-ps-print-msg, mh-ps-print-msg-show): Ditto. - - * mh-mime.el (mh-toggle-mh-decode-mime-flag): Ditto. - - * mh-index.el (mh-index-sequenced-messages): Ditto. - - * mh-e.el (mh-refile-or-write-again, mh-page-msg): Ditto. - - * mh-junk.el (mh-junk-blacklist, mh-junk-whitelist) - (mh-spamassassin-blacklist, mh-spamassassin-whitelist): Ditto. - -2005-08-15 Dan Nicolaescu - - * mh-customize.el: Do not use face-alias compatibility for - faces that did not appear in the previous Emacs release. - -2005-08-10 Lars Hansen - - * mh-e.el: Add handler to desktop-buffer-mode-handlers. - (mh-restore-desktop-buffer): Remove autoload cookie. - (mh-folder-mode): Add autoload cookie. - -2005-07-04 Lute Kamstra - - Update FSF's address in GPL notices. - -2005-06-17 Lute Kamstra - - * mh-customize.el (mh-folder-body-face, mh-folder-cur-msg-face) - (mh-folder-cur-msg-number-face): New backward-compatibility - aliases for renamed faces. - -2005-06-17 Miles Bader - - * mh-customize.el (mh-folder-body, mh-folder-cur-msg) - (mh-folder-cur-msg-number, mh-folder-date, mh-folder-followup) - (mh-folder-msg-number, mh-folder-refiled, mh-folder-subject) - (mh-folder-tick, mh-folder-to, mh-index-folder) - (mh-letter-header-field, mh-show-cc, mh-show-date) - (mh-show-header, mh-show-pgg-good, mh-show-pgg-unknown) - (mh-show-pgg-bad, mh-show-signature, mh-show-to, mh-show-from) - (mh-show-xface, mh-speedbar-folder, mh-speedbar-selected-folder) - (mh-speedbar-folder-with-unseen-messages) - (mh-speedbar-selected-folder-with-unseen-messages) - (mh-folder-msg-number, mh-folder-subject, mh-folder-followup) - (mh-folder-subject): Remove "-face" suffix from face names. - (mh-folder-body, mh-folder-cur-msg, mh-folder-cur-msg-number) - (mh-folder-date-face, mh-folder-followup-face) - (mh-folder-msg-number-face, mh-folder-refiled-face) - (mh-folder-subject-face, mh-folder-tick-face, mh-folder-to-face) - (mh-index-folder-face, mh-letter-header-field-face) - (mh-show-cc-face, mh-show-date-face, mh-show-header-face) - (mh-show-pgg-good-face, mh-show-pgg-unknown-face) - (mh-show-pgg-bad-face, mh-show-signature-face, mh-show-to-face) - (mh-show-from-face, mh-show-xface-face, mh-speedbar-folder-face) - (mh-speedbar-selected-folder-face) - (mh-speedbar-folder-with-unseen-messages-face) - (mh-speedbar-selected-folder-with-unseen-messages-face): - New backward-compatibility aliases for renamed faces. - (mh-folder-body-face, mh-folder-cur-msg-face) - (mh-folder-cur-msg-number-face, mh-folder-date-face) - (mh-folder-followup-face, mh-folder-msg-number-face) - (mh-folder-deleted-face, mh-folder-refiled-face) - (mh-folder-subject-face, mh-folder-address-face) - (mh-folder-scan-format-face, mh-folder-to-face) - (mh-index-folder-face, mh-show-cc-face, mh-show-date-face) - (mh-show-header-face, mh-show-pgg-good-face) - (mh-show-pgg-unknown-face, mh-show-pgg-bad-face) - (mh-show-to-face, mh-show-from-face, mh-show-subject-face) - (mh-speedbar-folder-with-unseen-messages) - (mh-speedbar-selected-folder-with-unseen-messages): - Use renamed MH-E faces. - - * mh-utils.el (mh-letter-font-lock-keywords) - (mh-face-display-function): Use renamed MH-E faces. - * mh-speed.el (mh-folder-speedbar-buttons) - (mh-speed-update-current-folder, mh-speed-normal-face) - (mh-speed-bold-face, mh-speed-add-buttons) - (mh-speed-invalidate-map): Likewise. - * mh-mime.el (mh-signature-highlight): Likewise. - -2005-06-16 Juanma Barranquero - - * mh-comp.el (mh-send-sub): - * mh-identity.el (mh-identity-field-handler): - * mh-mime.el (mh-secure-message): - Don't use `format' on `error' arguments. - -2005-06-14 Juanma Barranquero - - * mh-mime.el (mh-secure-message): Follow error conventions. - -2005-05-28 Bill Wohler - - Released MH-E version 7.84. - - * MH-E-NEWS, README: Updated for release 7.84. - - * mh-e.el (Version, mh-version): Updated for release 7.84. - -2005-05-28 Bill Wohler - - * mh-e.el, mh-comp.el: Don't autoload Info-goto-node. It's not - used, and if it were, the code should use the info function - instead. - - Use full year in copyright notices (for example, 2005, not 05). - - * Makefile (mh-loaddefs.el, mh-e-autoloads.el): Added 2005 to - copyright notice. - - * mh-inc.el: Use three ;;; to precede Local Variables to be - consistent with other files. Will have to ask Stefan Monnier why - he changed it. - - * README: This version of MH-E to appear in GNU Emacs 22.1, not - 21.5. - - * ChangeLog: The * in a ChangeLog entry must only be used before a - filename. - - Fixed compilation warnings in CVS Emacs. This included using - "public" functions instead of "private" ones (info instead of - Info-goto-node, view-mode-enter instead of view-mode), and - removing a customization group that didn't have a parent group. In - addition, string-to-int was recently deprecated; use - string-to-number instead. - - * mh-customize.el (Info-goto-node): Deleted autoload. - (mh-e): Deleted mh group. Use single mh-e group instead. - (mh-tool-bar-folder-help, mh-tool-bar-letter-help): Use info - instead of Info-goto-node. - - * mh-e.el (mh-read-msg-list): string-to-int deprecated; use - string-to-number. - - * mh-funcs.el (mh-list-folders): Use view-mode-enter instead of - view-mode. - - * mh-seq.el (mh-list-sequences): Use view-mode-enter instead of - view-mode. - - * mh-utils.el (mh-get-msg-num): string-to-int deprecated; use - string-to-number. - - Merged in changes from CVS Emacs including: - - * mh-utils.el (mh-show-mode): - * mh-pick.el (mh-pick-mode): Remove spurious run-hooks. Lute - Kamstra 2005-05-26. - -2005-05-25 Bill Wohler - - Merged in changes from CVS Emacs including: - - * mh-customize.el (mh-speedbar-selected-folder-face): Special case - high number of colors displays. Dan Nicolaescu - 2005-04-08. - - * mh-e.el, mh-identity.el, mh-mime.el: Replace `legal' with - `valid'. Replace `illegal' with `invalid'. Werner Lemberg - 2005-03-25. - - * mh-inc.el (mh-inc-spool-list): Correctly declare the external - var. Stefan 2004-09-07. - -2005-05-18 Bill Wohler - - * mh-comp.el (mh-reply): Mention use of mh-repl-group-formfile in - docstring. - -2005-05-05 Bill Wohler - - * mh-e.el (Version, mh-version): Added +cvs to release number. - -2005-05-05 Bill Wohler - - Released MH-E version 7.83. - - * MH-E-NEWS, README: Updated for release 7.83. - - * mh-e.el (Version, mh-version): Updated for release 7.83. - -2005-05-05 Bill Wohler - - * README: To appear in Emacs 21.5, since 21.4 was released (but - without the latest MH-E). - - * release-utils (usage): Added --variable-changes. - -2005-05-04 Bill Wohler - - * mh-customize.el (*-face): Made docstrings consistent. - - * mh-seq.el (mh-pick-args-list): Extracted function for turning - string of pick arguments to list. Fixed list so that multi-word - arguments were put in a single string (closes SF #1122655). - (mh-edit-pick-expr): Use it. - - * mh-unit.el (mh-unit): Since 21.4 snuck out but didn't contain - updated lm-verify, don't run lm-verify on versions before 21.5. - (mh-unit-test-pick-args-list): Added. - - * mh-customize.el (mh-yank-from-start-of-msg): Use headline - capitalization. Changed wording of some choices to be more consistent. - (mh-invisible-header-fields-internal): Added fields from usa.net. - -2005-04-24 Satyaki Das - - * mh-mime.el (mh-mime-security-button-face): New function which - determines the face to use to colorize encrypted or signed emails. - (mh-insert-mime-security-button): Modified to colorize the button - differently based on whether the signature was valid or not, - whether the decryption was successful or not, etc. - - * mh-customize.el (mh-show-pgg-good-face) - (mh-show-pgg-unknown-face, mh-show-pgg-bad-face): Faces added to - highlight buttons introduced for encrpted or signed MIME parts. - -2005-03-19 Bill Wohler - - * mh-customize.el (mh-mml-method-default): Sorted alphabetically. - (mh-insert-x-mailer-flag, mh-reply-show-message-flag): Moved from - mh-letter group to mh-sending-mail group. The writing of the - documentation revealed that these options were misplaced. - -2005-03-17 Bill Wohler - - * mh-customize.el (mh-junk-background): Put in alphabetical order. - Synced with manual. - (mh-junk-program): Use double-quotes on non-symbols. - - * mh-pick.el: (mh-search-folder): Synced docstrings with manual. - - * mh-index.el: (mh-index-search, mh-pick-execute-search) - (mh-grep-execute-search, mh-mairix-execute-search) - (mh-swish-execute-search, mh-swish++-execute-search) - (mh-namazu-execute-search): Synced docstrings with manual. Note - that I'm now grabbing the output of an Info buffer which is why - the indents on the examples has changed a bit. If we all use that - methodology in the future, we shouldn't produce as many gratuitous - diffs. I also noticed that `grep' and `search' became links to - unrelated things, so let's use double-quotes for quoting - non-symbols in the docstrings. - - * mh-customize.el (mh-index-new-messages-folders) - (mh-index-ticked-messages-folders): Synced docstrings with manual. - -2005-02-16 Satyaki Das - - * mh-index.el (mh-swish-execute-search): Simplify the indexing - recipe for swish. Thanks to Eric Jensen for the suggestion. - -2005-02-11 Satyaki Das - - * mh-index.el (mh-swish-execute-search) - (mh-swish++-execute-search): Make the indexing recipes better. - (mh-swish-next-result): The indexer might find matches in files - that aren't messages. Make the function handle that case - gracefully. - -2005-02-07 Bill Wohler - - * mh-customize.el (mh-inc-prog, mh-inc-spool-list): Synced - docstrings with manual. - -2005-02-06 Bill Wohler - - * mh-junk.el (mh-spamassassin-blacklist): Removed trailing - whitespace. - - * mh-e.el (mh-refile-or-write-again): Checkdoc fix. - - * mh-identity.el (mh-identity-list-set) - (mh-identity-field-handler, mh-identity-handler-gpg-identity) - (mh-identity-handler-signature) - (mh-identity-handler-attribution-verb) - (mh-identity-handler-default, mh-identity-handler-top): Docstring - editing. - - * mh-customize.el (mh-identity-list, mh-auto-fields-list) - (mh-identity-default, mh-identity-handlers): Synced docstrings - with manual. - -2005-02-03 Bill Wohler - - * mh-xemacs.el (define-behavior 'mh): Moved Ben's code here from - mh-e.el and added standard documentation. - - * mh-e.el: Received patch from Ben Wing to add - define-behavior on XEmacs. - -2005-01-28 Jeffrey C Honig - - * mh-customize.el (mh-invisible-header-fields-internal): Added - X-Evolution header added by Evolution mai client. - -2005-01-18 Bill Wohler - - * mh-customize.el (mh-invisible-header-fields-internal): Added - DomainKey-Signature (http://antispam.yahoo.com/domainkeys/). - There's a Comment field that goes with it, but I thought it was - too general to add. - -2005-01-06 Bill Wohler - - * mh-junk.el (mh-spamassassin-blacklist): Fixed typo to fix an - error when junking spamassassin mail when mh-junk-background is - turned on. - -2004-12-25 Satyaki Das - - * mh-utils.el (mh-show-unquote-From): Make the buffer writable - before trying to change it (closes SF #1089870). - - * mh-comp.el (mh-complete-word): Fix a typo in a variable - name (closes SF #1089870) - -2004-11-28 Jeffrey C Honig - - * mh-comp.el (mh-complete-word): Kill the *Completions* buffer in - any cases where we belive we are done with it. Not perfect, but - better than just leaving it around. - -2004-11-08 Satyaki Das - - * mh-acros.el (mh-funcall-if-exists): In XEmacs, presence of a - function at compile time doesn't guarantee it's existence at run - time. So make the macro handle that situation better. - -2004-11-05 Satyaki Das - - * mh-acros.el (advice): Load advice, since it isn't loaded in - XEmacs causing compilation problems. - -2004-10-24 Satyaki Das - - * mh-index.el (mh-mairix-execute-search) - (mh-mairix-regexp-builder): Update the interface to mairix so that - it will work with versions of mairix 0.12 and later. - - * mh-funcs.el (mh-rmf-daemon): Avoid using - beginning-of-buffer since it clobbers the mark and it was pointed - out on the Emacs developers list to be the wrong thing to do. - - * mh-e.el (mh-inc-folder): Only remove the window on the show - buffer. This means if the user has BBDB enabled then the window - displaying BBDB information isn't clobbered. - (mh-refile-or-write-again): Don't use the function - interactive-p. There was a long thread on the Emacs developers - list where it was pointed out that it is incorrect to use this - function most of the time. - - * mh-comp.el (autoload): Don't set auto-mode-alist. This could - screw things up for users that don't use MH-E (closes SF #1032353). - -2004-10-13 Satyaki Das - - * mh-e.el (mh-refile-or-write-again): Generalize the function to - work on a range of messages (closes SF #1046330). - -2004-09-02 Satyaki Das - - * mh-e.el (mh-process-commands): The concurrent execution of mark - and refile can cause problems since both the commands change the - current folder. This change avoids that by getting rid of the - concurrency. Another change covers the corner case where we refile - messages to a previously empty folder. Before the modification - sequences weren't preserved even if the appropriate flag was - set. That is no longer the case. - -2004-08-26 Satyaki Das - - * mh-e.el (mh-get-new-mail): Also, update the unseen sequence from - disk. Otherwise, the new messages aren't highlighted. - - * mh-seq.el (mh-thread-inc): Fix a bug which appears when inc is - run in a narrowed folder. The user sequence notation was getting - lost. The change fixes that. - - * mh-e.el (mh-get-new-mail): Make inc more efficient by reusing - the existing user sequence notation and deleted/refiled notation. - -2004-08-24 Bill Wohler - - * mh-e.el (Version, mh-version): Added +cvs to release number. - -2004-08-24 Bill Wohler - - Released MH-E version 7.82. - - * MH-E-NEWS, README: Updated for release 7.82. - - * mh-e.el (Version, mh-version): Updated for release 7.82. - -2004-08-24 Bill Wohler - - * mh-init.el (mh-variant-set): Change MH to mh as that's what is - emitted by `mh-variant-mh-info' (closes SF #1014781). - (mh-variant-p): Add mu-mh to docstring. - -2004-08-23 Satyaki Das - - * mh-acros.el (mh-require-cl): Remove unneeded autoloads. - (require): Add an advice to the function so that at compile time - the uncompiled file is loaded. This avoids compilation problems - when built in the Emacs tree. - - * mh-mime.el (mh-identity-pgg-default-user-id): Defvar the - variable, to avoid compiler warnings. - - * mh-e.el (mh-seq): Load mh-seq since functions defined there are - used here. Without this, the state mh-seq.elc would be loaded. - - * mh-customize.el (mh-init, mh-identity): Load mh-init and - mh-identity at compile time manually, before the corresponding - stale elc files get autoloaded. - -2004-08-21 Bill Wohler - - * mh-e.el (Version, mh-version): Add +cvs to release number. - -2004-08-21 Bill Wohler - - Released MH-E version 7.81. - - * MH-E-NEWS, README: Updated for release 7.81. - - * mh-e.el (Version, mh-version): Updated for release 7.81. - -2004-08-21 Bill Wohler - - * release-utils (variable_changes): Check for checked-out - directory before proceeding. Remove temporary files. - Rename --variable-update flag to --variable-changes. - -2004-08-16 Mark D. Baushke - - * mh-mime.el (mh-toggle-mh-decode-mime-flag: New function. - * mh-e.el (mh-help-messages): Add [;] help string for it. - (mh-folder-mode-map): Add ";" key binding for it. - -2004-08-15 Satyaki Das - - * mh-acros.el (mh-defstruct): Distinguishing structures created - by mh-defstruct just based on the number of fields is not - sufficient, since both the mh-thread-message and - mh-thread-container structures have the same length. - -2004-08-15 Mark D. Baushke - - * mh-customize.el (mh-identity-handlers): Use ":default" instead of - "default" to avoid problems with "Default:" as a user defined field. - * mh-identity.el (mh-identity-field-handler): Ditto. - -2004-08-15 Bill Wohler - - * mh-e.el (Version, mh-version): Added +cvs to release number. - -2004-08-15 Bill Wohler - - Released MH-E version 7.4.80. - - * MH-E-NEWS, README: Updated for release 7.4.80. - - * mh-e.el (Version, mh-version): Updated for release 7.4.80. - -2004-08-15 Bill Wohler - - * mh-funcs.el, mh-gnus.el, mh-inc.el, mh-init.el, mh-junk.el, - mh-pick.el, mh-print.el, mh-xemacs.el: Added 2004 to Copyright. - - * mh-acros.el, mh-alias.el: Checkdoc fixes. - -2004-08-12 Satyaki Das - - * mh-acros.el (cl): Load cl in this file. That is all right, since - this file is only used at compile time, and so cl doesn't get - loaded at run time. This avoids problems with stale *.elc files - present in the Emacs source tree during compilation. - (mh-defstruct): Modify it to make it more CL like and in the - process simplify it a bit. This makes the argument list of the - constructor compatible with the previous version, thereby avoiding - a compilation error when an old version of mh-seq.elc is present. - - * mh-seq.el (mh-thread-id-container, mh-thread-get-message) - (mh-thread-get-message-container): Revert back to the CL style - of using keyword arguments, since the mh-defstruct now produces - code compatible to such usage. - -2004-08-11 Satyaki Das - - * mh-acros.el (mh-defstruct, mh-require-cl): Checkdoc fixes. - - * mh-utils.el (message-tokenize-header, message-fetch-field): Add - autoloads. - (mh-folder-completing-read): Make the folder completion look - better with CVS Emacs. - - * mh-init.el (mh-variant-set): Remove dead code. - -2004-08-11 Bill Wohler - - * *.el: Use the following at the top of each file which seems to - do a good job of suppressing compilation warnings in 21.3 and CVS - Emacs (21.4). This replaces (require 'cl) or (require - 'utils) (mh-require-cl) calls: - - (eval-when-compile (require 'mh-acros)) - (mh-require-cl) - -2004-08-10 Bill Wohler - - * release-utils (DESCRIPTION): Added one. - (FILES, SEE ALSO, VERSION): Deleted empty and incorrect sections. - - * mh-e.el (mh-colors-available-p): Call x-display-color-cells with - mh-funcall-if-exists since it no longer seems to be defined in - GNU Emacs 21.4. - -2004-08-10 Satyaki Das - - * mh-speed.el (mh-process-kill-without-query, mh-speed-flists): - Avoid a compiler warning in versions of Emacs where - process-kill-without-query is a deprecated function. - - * mh-seq.el (mh-thread-message, mh-thread-container): Use - mh-defstruct instead of defstruct. - (mh-thread-id-container, mh-thread-get-message-container) - (mh-thread-get-message): Use the slightly different structure - constructor function. - - * mh-acros.el (mh-defstruct): New macro which is a partial - replacement of the defstruct in CL. - (no-byte-compile): Don't compile the file since it isn't loaded at - run time, so efficiency isn't an issue. - - * mh-utils.el (mh-buffer-data): Use mh-defstruct instead of - defstruct. - -2004-08-09 Satyaki Das - - * mh-funcs.el, mh-junk.el, mh-print.el: Use mh-require-cl to avoid - compilation warnings in Emacs-21.3. - - * mh-acros.el (mh-require-cl): Add autoloads of CL functions used. - -2004-08-09 Bill Wohler - - * mh-customize.el (mh-show-use-xface-flag): Mention that `fetch' and - `curl' are supported as well. - -2004-08-08 Bill Wohler - - * mh-xemacs.el (mh-xemacs-has-toolbar-flag): Checkdoc fixes. - - * mh-mime.el (mh-display-with-external-viewer): Checkdoc fixes. - - * mh-identity.el: (mh-identity-attribution-verb-end): Stripped - trailing space; checkdoc fixes. - - * mh-e.el (mh-restore-desktop-buffer): Checkdoc fixes. - - * mh-customize.el: (mh-inc-spool-list, - mh-compose-forward-as-mime-flag, defcustom): Stripped trailing - space; checkdoc fixes. - - * mh-comp.el (mh-reply): Stripped trailing space. - - * mh-unit.el (mh-unit-files): Added mh-acros.el and mh-gnus.el. - (mh-unit): Don't lm-verify pre-21.4. Save buffers before killing - since we might have done some editing. - - * import-emacs: Deleted. Functionality subsumed by release-utils. - - * release-utils: New script. Performs import-emacs functionality - and displays new and deleted options. - - * Makefile (import-emacs): Call release-utils instead of - import-emacs. - - * mh-funcs.el (mh-undo-folder): Removed deprecated `ignore' - argument. - - * mh-e.el (mh-scan-date-regexp): Deleted as Peter claims it is - obsolete. - (mh-folder-font-lock-keywords): Removed reference to deleted - variable `mh-scan-date-regexp'. - - * mh-customize.el (mh-auto-fields-prompt-flag): Made reference to - `mh-auto-fileds-lists'. - (mh-forward-hook): Fixed docstring typo. - -2004-08-07 Bill Wohler - - * mh-acros.el: New file. Currently holds macros needed by - mh-customize.el but is planned to hold all macros to avoid - dependency problems when compiling. - - * mh-utils.el (mh-xemacs-flag): Defined in mh-customize.el now. - (mh-require-cl, mh-do-in-gnu-emacs, mh-do-in-xemacs) - (mh-funcall-if-exists, mh-make-local-hook, mh-mark-active-p): - Moved to new file mh-acros.el. - - * mh-customize.el: Require mh-acros and cl only when compiling and - mh-loaddefs at runtime instead of mh-utils. - (mh-xemacs-flag): Define it here instead of mh-utils.el. - - * Makefile (MH-E-SRC): Added mh-acros.el. - - * mh-gnus.el (default-enable-multibyte-characters): Don't define - any more. It doesn't seem to be needed. - - * mh-customize.el (mh-junk-background): New variable. If on, spam - programs are run in background. Running in foreground can be slow. - Defaults to nil to spare machines with little memory. - - * mh-junk.el (mh-spamassassin-blacklist, mh-bogofilter-blacklist) - (mh-bogofilter-whitelist, mh-spamprobe-blacklist) - (mh-spamprobe-whitelist): Use new option mh-junk-background. - -2004-07-25 Satyaki Das - - * mh-utils.el (mh-folder-completing-read): In recent CVS Emacs, - the first letter of the possible choices in the completion buffer - is highlighted. The change is needed for this feature to work - during folder name completion. This is not entirely sufficient, - since the leading "+" in folder names is still mishandled. A patch - is required in Emacs itself to address that. - -2004-07-22 Mark D. Baushke - - * mh-e.el (recursive-load-depth-limit): Move - recursive-load-depth-limit code to ... - * mh-utils.el (recursive-load-depth-limit): ... here to avoid - problems compiling mh-utils.el and mh-alias.el with gnus-5.10.6 - under emacs-21.1. Use eval-and-compile instead of eval-when. - -2004-07-20 Bill Wohler - - * mh-customize.el (mh-invisible-header-fields-internal): Added - header fields emitted by T-Mobile picture phones (X-Mms-*, and - commented out X-Operator field saying it's like X-Mailer). - -2004-07-12 Bill Wohler - - * mh-gnus.el: Set local variables indent-tabs-mode and - sentence-end-double-space to nil. - - * mh-customize.el: Checkpoint from option docstring updates and - manual synchronization from last summer. For the options listed - below, docstring was usually completely rewritten. Use "on" - instead of "t" in docstring to match what is seen in customization - buffer. Use headline capitalization. Standardize on "Auto-detect" - text when option has that capibility. - (mh): Since we work on more than one type of Emacs, use Emacs - instead of GNU Emacs. Prefer GNU mailutils over GNU Mailutils. - (mh-variant): s/Autodetect at startup/Auto-detect/. - (mh-alias-insertion-location): s/Sorted - alphabetically/Alphabetical/. s/At the top of file/Top/. s/At the - bottom of file/Bottom/. - (mh-alias-local-users-prefix): s/Use login instead of real - name/Use Login/. - (mh-identity-list): Sorted values by fields, attribution, - signature, GPG key. - (mh-auto-fields-list): Missing quote. - (mh-compose-insertion): s/Use Gnus/Gnus/. s/Use mhn/mhn/. - (mh-compose-space-does-completion-flag): s/SPACE//. - (mh-extract-from-attribution-verb): Since we have French, added - German too ;-). - (mh-letter-complete-function): Mention default in docstring. - (mh-invisible-header-fields-internal): Added X-ELNK-Trace from - Earthlink. - (mh-alias-flash-on-comma, mh-alias-insert-file) - (mh-alias-passwd-gecos-comma-separator-flag) - (mh-recenter-summary-flag, mh-default-folder-for-message-function) - (mh-default-folder-must-exist-flag, mh-index-program) - (mh-index-ticked-messages-folders, mh-ins-buf-prefix) - (mh-delete-yanked-msg-window-flag, mh-identity-default): See - summary above. - - * mh-init.el (mh-variant-set, mh-sys-path, mh-variant-mu-mh-info): - Prefer GNU mailutils over GNU Mailutils MH. - - * mh-comp.el (sc-cite-original, mh-smail, mh-smail-batch) - (mh-edit-again, mh-extract-rejected-mail, mh-forward) - (mh-smail-other-window, mh-reply, mh-send, mh-send-other-window): - Use `mh-send' instead of \\[mh-send]] since links in the docstring - are more useful than a key sequence in these cases. Use "See also" - instead of "See also documentation for". - - Merged in 7.4.4 changes, described below. - - * mh-e.el (Version, mh-version): Set to 7.4.4+cvs. - -2004-07-10 Bill Wohler - - Released MH-E version 7.4.4. - - * MH-E-NEWS, README: Updated for release 7.4.4. - - * mh-e.el (Version, mh-version): Updated for release 7.4.4. - - This patch release contains the following patches: - - * mh-xemacs.el: New file from concatenation of mh-xemacs-compat.el - and mh-xemacs-icons.el which were removed since their names - exceeded DOS 8+3 limits. - - * Makefile: - (mh-e-autoloads.el): Add target to make `mh-e-autoloads.el', a - file containg usual entry commands into MH-E to be used for users - installing MH-E separately from Emacs. - (XEMACS_LOADDEFS_FILE): New. Used to generate mh-loaddefs.el - in XEmacs. - (XEMACS_LOADDEFS_COOKIE): Ditto. - (XEMACS_LOADDEFS_PKG_NAME): Ditto. - (XEMACS_OPTIONS): Add '-no-autoloads' to give a cleaner build - environment. - (MH-E-SRC): Moved mh-xemacs.el to new variable MH-E-XEMACS-SRC. - (MH-E-XEMACS-SRC): New variable to hold XEmacs source files. - (MH-E-XEMACS-OBJ): New variable to hold XEmacs object files. - (clean): Moved XEmacs-specific code to clean-xemacs. - (xemacs): Added clean-xemacs prerequisite. Moved down to XEmacs - section of file. Add target to build mh-loaddefs.el in XEmacs - (loaddefs-xemacs): New rule to build mh-loaddefs.el in XEmacs. - (clean-xemacs): New target to remove XEmacs-specific files. - (compile-xemacs): New. It allows for the '-no-autoloads' option - and byte-compiles all the source files with a single instance of - XEmacs. - (dist): Added $(MH-E-XEMACS-SRC) to tarball. - (AUTO_PRELOADS): Removed, in favour of 'AUTOLOAD_PACKAGE_NAME' and - 'AUTOLOAD_FILE'. - (AUTOLOAD_PACKAGE_NAME): New. - (AUTOLOAD_FILE): New. - (all): Don't set $EMACS_HOME if building with XEmacs. - (xemacs): Use 'compile-xemacs' instead of 'compile'. - (auto-autoloads.elc): Use new $AUTOLOAD_* vars and allow for - '-no-autoloads'. - (custom-load.elc): Allow for '-no-autoloads'. - - * mh-e.el: Don't require mh-xemacs-compat which no longer exists. - The XEmacs stuff gets required by mh-customize.el which is - required by mh-utils.el which is required by mh-e.el. This all - happens before mh-xemacs-compat was required, so all should be - well. - (mh-restore-desktop-buffer): Move from desktop.el. Add Parameters. - (mh-restore-desktop-buffer): Delete with-no-warnings. - (mh-folder-mode): Bind desktop-save-buffer to t. - (Courtesy Lars Hansen). - - * mh-alias.el (mh-assoc-ignore-case): New macro to use - assoc-string when available (Emacs 21.4+); assoc-ignore-case - otherwise. - (mh-alias-reload, mh-alias-expand, - mh-alias-minibuffer-confirm-address): Use it. - - * mh-seq.el: Added mh-autoload to mh-read-seq-default. - - * mh-utils.el (mh-require-cl): The Emacs coding conventions - require that the cl package not be required at runtime. However, - the cl package in versions of Emacs prior to 21.4 left cl routines - in their macro expansions. Use mh-require-cl to provide the cl - routines in the best way possible (closes SF #930012). - (require 'mouse): To shush compiler. - - Use new function mh-require-cl throughout. - - Add arch taglines (courtesy Miles Bader). - - * mh-unit.el (mh-unit-files): Replaced mh-xemacs-compat.el and - mh-xemacs-icons.el with mh-xemacs.el. - - * import-emacs: Also grab the ChangeLog. - - * *.pbm: Regenerated using GIMP to be consistent with other Emacs - icons. - 1. Edit .xpm image in GIMP. - 2. Image > Mode > Indexed. Check Use Black/White Palette and No - Color Dithering. - 3. File > Save As file.xbm. - 4. Run xbmtopbm < file.xbm > file.pbm. - Thanks to jan.h.d@swipnet.se for the help. - -2004-07-07 Stephen Gildea - - * mh-customize.el (mh-invisible-header-fields-internal): - Add X-Greylist, X-Source*, and X-WebTV-Signature. - Replace specific X-Spam-* headers with general pattern. - -2004-06-15 Bill Wohler - - * README: Vladimir Ivanovic reports that mh-rmail works with - XEmacs 21.5.17, so updated requirements text accordingly (closes - SF #644321). - -2004-05-12 Satyaki Das - - * mh-utils.el (mh-mail-header-end): Replace call to - rfc822-goto-eoh with something that allows From_ lines in the mail - header. - -2004-04-14 Bill Wohler - - * mh-utils.el (mh-show-mouse): s/EVENT/event/. Thanks to John Paul - Wallington for pointing this out. - -2004-04-12 Satyaki Das - - * mh-e.el (mh-folder-size-flist): Add -showzero option so that the - parsing code doesn't get confused by the presence of -noshowzero - in the user's .mh_profile (closes SF #933954). - -2004-04-07 Satyaki Das - - * mh-mime.el (mh-insert-mime-button) - (mh-insert-mime-security-button): Add evaporate property to - overlays used in MIME part buttons. This avoids problems with - CVS Emacs. - -2004-03-16 Satyaki Das - - * mh-e.el (mh-folder-from-address): Go to the end of buffer if the - re-search-forward fails (closes SF #917096). - -2004-02-02 Satyaki Das - - * mh-customize.el (mh-compose-forward-as-mime-flag): New user - customizable variable that controls whether messages are forwarded - as MIME attachments (closes SF #827203). - - * mh-comp.el (mh-forward): Call forw with -mime option only if - mh-compose-forward-as-mime-flag is non-nil. - -2003-12-26 Jeffrey C Honig - - * mh-junk.el (mh-junk-blacklist, mh-junk-whitelist) - (mh-spamassassin-blacklist, mh-spamassassin-blacklist) - (mh-spamassassin-blacklist, mh-spamassassin-whitelist) - (mh-spamassassin-whitelist, mh-bogofilter-blacklist) - (mh-spamprobe-blacklist): Add progress messages. Change "Couldn't" - to "Unable" in error messages. Run bogofilter and spamprobe in - the foreground to prevent a large number of processes from - swamping the system. - -2003-12-25 Satyaki Das - - * mh-e.el (mh-prompt-for-refile-folder): Marking the whole folder - and then refiling all messages throws an error, since this - function expects point to be on a valid scan line. The change - relaxes this requirement, thereby avoiding the above problem. - -2003-12-14 Satyaki Das - - * mh-comp.el (mh-ascii-buffer-p): New function that checks if a - buffer is entirely composed of ASCII. - (mh-send-letter): Encode the draft if it contains non-ASCII - characters. - -2003-12-12 Satyaki Das - - * mh-customize.el (mh-invisible-headers): Keep only unique fields - in list of header fields to hide. This avoids problems in XEmacs. - -2003-12-10 Satyaki Das - - * mh-seq.el (mh-thread-print-scan-lines): The imenu index was not - getting created for threaded index buffers. The change fixes this. - - * mh-index.el (mh-index-insert-folder-headers): Always create the - imenu index. - (mh-index-create-imenu-index): Set which-func-mode to t. If - which-function-mode is turned on after the folder buffer has been - prepared, display of the folder info was being inhibited. The - change fixes that. - -2003-12-09 Satyaki Das - - * mh-comp.el (mh-letter-mode): Setup mh-mail-header-separator - based on draft contents. - (mh-letter-mode, mh-letter-mail-header-end-marker) - (mh-letter-header-end): Remove use of the variable - mh-letter-mail-header-end-marker. Instead use - mh-mail-header-separator. This avoids problems in font locking - draft buffers (closes SF #855479). - -2003-12-09 Satyaki Das - - * mh-index.el (mh-index-insert-folder-headers): Modified so that - imenu--index-alist is updated. - (mh-index-create-imenu-index): New function that generates an - index usable by imenu. This adds which-func-mode support to index - folders (closes SF #855520). - - * mh-e.el (which-func, which-func-modes): Tell which-func that - mh-folder-mode supports it. - (mh-folder-mode): Add support for imenu. - -2003-11-22 Peter S Galbraith - - * Makefile: renamed mh-startup.el to mh-e-autoloads.el - - * README: renamed mh-startup.el to mh-e-autoloads.el - - * .cvsignore: Added mh-e-autoloads.el - -2003-11-18 Bill Wohler - - Released MH-E version 7.4.3. - - * MH-E-NEWS, README: Updated for release 7.4.3. - - * mh-e.el (Version, mh-version): Updated for release 7.4.3. - - This patch release contains the following two patches: - - * mh-identity.el (mh-identity-make-menu): Removed condition on - mh-auto-fields-list. Use it to enable or disable menu item - instead. - - * mh-customize.el (mh-identity-list): Removed defvar and moved - defcustom before mh-auto-fields-list so that defvar wouldn't - clobber user's customization settings. - -2003-11-17 Jeffrey C Honig - - * mh-print.el (mh-print-msg): Do not print a message on deprecated - usage, the bindings have been removed. - - * mh-e.el (mh-folder-mode-map): Remove "l" binding for - mh-print-msg. - - * mh-utils.el (mh-show-mode-map): Remove "l" binding for - mh-print-msg. - -2003-11-16 Satyaki Das - - * mh-comp.el (mh-beginning-of-word): Use the function - mh-mail-abbrev-make-syntax-table instead of the function - mail-abbrev-make-syntax-table. - - * mh-gnus.el (mh-mail-abbrev-make-syntax-table): Add a wrapper - function that calls mail-abbrev-make-syntax-table if available. - This is needed so that MH-E built with CVS Emacs will work with - released versions of Emacs21 and vice versa. - -2003-11-14 Peter S Galbraith - - * mh-customize.el (mh-invisible-header-fields-internal): Add - "X-NAI-Spam-" and "X-Spam-Report:". - -2003-11-14 Mark D. Baushke - - * mh-customize.el (mh-invisible-header-fields-internal): - Add X-AntiAbuse and X-MailScanner. - (Patch from Stephen Gildea.) - -2003-11-13 Peter S Galbraith - - * mh-identity.el (mh-identity-handler-attribution-verb): New - function. A new Identity handler for the attribution verb (e.g. - "wrote:") to allow for different identities to use different - languages. - (mh-identity-insert-attribution-verb): New function. Insert the - attribution verb, placing special markers so it can be deleted and - replaced later. - (mh-identity-attribution-verb-start): New variable. Holds the - marker for the start of the attribution verb. - (mh-identity-attribution-verb-end): New variable. Holds the - marker for the end of the attribution verb. - - * mh-customize.el (mh-identity-handlers): Add new - ":attribution-verb" tag for the attribution-verb handler. - (mh-identity-list): Idem. - - * mh-comp.el (mh-yank-cur-msg): Insert attribution verb using - mh-identity-insert-attribution-verb. - (mh-extract-from-attribution): Extract only the name from the From - line, without appending `mh-extract-from-attribution-verb' since - markers need to be inserted around that now. - -2003-11-12 Bill Wohler - - * mh-e.el (mh-rmail, mh-nmail): Well, actually, we run in both GNU - Emacs and XEmacs, so removed the "GNU" in the docstrings unless - one is strictly talking about GNU Emacs. - - * mh-comp.el (mh-smail, mh-smail-batch, mh-smail-other-window): - Ditto. - -2003-11-11 Bill Wohler - - * mh-customize.el (mh-customize): Minor docstring change. - (mh, mh-e): The short description for MH-E is: The GNU Emacs - Interface to the MH Mail System. Therefore, updated docstrings - accordingly. - - * mh-comp.el (mh-smail, mh-smail-batch, mh-smail-other-window): - Ditto. - - * mh-e.el (mh-rmail, mh-nmail): Ditto. - -2003-11-10 Satyaki Das - - * mh-mime.el (mh-mml-to-mime): In case errors happen in - mml-to-mime, restore contents of the draft buffer (closes SF - #839303). - -2003-11-07 Bill Wohler - - * mh-customize.el (mh-letter-mode-hook): Moved to mh-sending-mail - group (where it is now documented in the manual). - (mh-pick-mode-hook): Moved to mh-index group (where it is now - documented in the manual). - - * mh-loaddefs.el: Deleted per our discussion on mh-e-devel. No - more conflicts! No more check-ins! Anyone pulling CVS MH-E is - expected to compile. This file shall be added to the tarball so - that users of the distribution are not. - -2003-11-07 Mark D. Baushke - - * mh-loaddefs.el: Regenerated. - - * mh-customize.el (mh-forward-hook): Define new hook. - * mh-comp.el (mh-forward): Use it. - -2003-11-07 Satyaki Das - - * mh-loaddefs.el: Regenerated. - - * mh-utils.el (mh-show-toggle-mime-buttons) - (mh-show-display-with-external-viewer): New interactive functions - callable from the show buffer. - (mh-show-mime-map): Add bindings for "K t" and "K e". - (mh-show-msg): Propagate change to - mh-display-buttons-for-inline-parts-flag to the show buffer. - - * mh-mime.el (mh-display-with-external-viewer): New interactive - function to display MIME parts with external viewer (closes SF - #839318). - - * mh-e.el (mh-folder-mode): Make the variable - mh-display-buttons-for-inline-parts-flag buffer-local so that - display of MIME buttons can be toggled. - (mh-toggle-mime-buttons): New interactive function to toggle - display of MIME buttons. - (mh-mime-map): Modified to add bindings for "K t" and "K e". - -2003-11-04 Steve Youngs - - * Makefile (XEMACS_LOADDEFS_FILE): New. Used to generate - mh-loaddefs.el in XEmacs. - (XEMACS_LOADDEFS_COOKIE): Ditto. - (XEMACS_LOADDEFS_PKG_NAME): Ditto. - (xemacs): Add target to build mh-loaddefs.el in XEmacs - (clean-xemacs): Remove `mh-loaddefs.el*' - (loaddefs-xemacs): New rule to build mh-loaddefs.el in XEmacs. - -2003-11-02 Peter S Galbraith - - * mh-init.el (mh-variant-set-variant): Reset `mh-x-mailer-string' - when we select an MH variant. - -2003-11-02 Jeffrey C Honig - - * mh-loaddefs.el: Regenerated. - - * mh-funcs.el (mh-print-msg): Move to mh-print.el. - - * mh-e.el (mh-folder-mode-map): Add mh-print-msg ("l") back, it - will print a message that this usage is deprecated. - - * mh-print.el (require, mh-ps-print-msg, mh-ps-print-msg-file): - Require mh-funcs for mh-note-printed. PS print functions were not - setting the printed notation. Move mh-print-msg here for - consistency. Print message if mh-print-msg invoked via deprecated - key binding. - -2003-11-01 Peter S Galbraith - - * Makefile: Add target to make `mh-startup.el', a file containg - usual entry commands into MH-E to be used for users installing - MH-E separately from Emacs. - - * README: Document the above for users. - -2003-10-29 Jeffrey C Honig - - * mh-utils.el (mh-show-ps-print-map): Add "?" and "l" to - mh-show-ps-print-map. - - * mh-e.el (mh-ps-print-map, mh-help-messages): Add "?" and "l" to - mh-ps-print-map. Add "l" to help message. - -2003-10-27 Bill Wohler - - * Makefile (MH-E-SRC): Moved mh-xemacs.el to new variable - MH-E-XEMACS-SRC. - (MH-E-XEMACS-SRC): New variable to hold XEmacs source files. - (MH-E-XEMACS-OBJ): New variable to hold XEmacs object files. - (clean): Moved XEmacs-specific code to clean-xemacs. - (xemacs): Added clean-xemacs prerequisite. Moved down to - XEmacs section of file. - (clean-xemacs): New target to remove XEmacs-specific files. - (compile-xemacs): Added $(MH-E-XEMACS-SRC) prerequisite. - (dist): Added $(MH-E-XEMACS-SRC) to tarball. - -2003-10-27 Satyaki Das - - * mh-loaddefs.el: Regenerated. - - * mh-index.el (mh-indexer-choices): Remove option for the non-free - glimpse indexer (closes SF #831276). - (mh-glimpse-binary, mh-glimpse-directory) - (mh-glimpse-execute-search, mh-glimpse-next-result): Functions - and variables to implement glimpse support are removed. - - * mh-customize.el (mh-index-program): Remove option for glimpse. - -2003-10-24 Satyaki Das - - * mh-customize.el: Remove top-level test for toolbar enabled - XEmacs since it is not needed. - (mh-tool-bar-define): Add test for XEmacs toolbar in the functions - mh-toolbar-init, mh-tool-bar-letter-buttons-set and - mh-tool-bar-folder-buttons-set. This enables proper compilation - irrespective of whether the XEmacs was built with toolbar support - or not. - - * mh-comp.el (mh-letter-mode): Remove conditional since it is not - needed. - - * mh-e.el (mh-folder-mode): Same as above. - - * mh-utils.el (mh-show-mode): Same as above. - - * mh-xemacs.el (mh-xemacs-icon-map): Remove condition on toolbar - presence since we want the build to work if XEmacs without - toolbars is used during compilation. - -2003-10-23 Bill Wohler - - * mh-customize.el: The Great Reorganization. Sorted groups - alphabetically. Aligned variables in customization groups with - manual sections. Group docstrings changed to match manual chapter - titles. - -2003-10-22 Satyaki Das - - * mh-speed.el (timer): Avoid compiler warning in XEmacs. - -2003-10-22 Steve Youngs - - * Makefile (XEMACS_OPTIONS): Add '-no-autoloads' to give a cleaner - build environment. - (AUTO_PRELOADS): Removed, in favour of 'AUTOLOAD_PACKAGE_NAME' and - 'AUTOLOAD_FILE'. - (AUTOLOAD_PACKAGE_NAME): New. - (AUTOLOAD_FILE): New. - (all): Don't set $EMACS_HOME if building with XEmacs. - (xemacs): Use 'compile-xemacs' instead of 'compile'. - (auto-autoloads.elc): Use new $AUTOLOAD_* vars and allow for - '-no-autoloads'. - (custom-load.elc): Allow for '-no-autoloads'. - (compile-xemacs): New. It allows for the '-no-autoloads' option - and byte-compiles all the source files with a single instance of - XEmacs. - - * mh-e.el (mh-folder-mode): Only load the toolbar in XEmacs if - toolbar support is available. - - * mh-comp.el (mh-letter-mode): Only load the toolbar in XEmacs if - toolbar support is available. - - * mh-customize.el: Require 'mh-xemacs' at toplevel when - 'mh-xemacs-flag' is non-nil. - Wrap all the toolbar code in a test that is true if using - GNU/Emacs or a toolbar-enabled XEmacs. - - * mh-print.el (mh-ps-spool-a-msg): Comment out - `clean-message-header-flag' because it isn't used anywhere. - - * mh-utils.el (mh-show-mode): Only load the toolbar in XEmacs if - toolbar support is available. - - * mh-xemacs.el: Autoload `regexp-opt', `customize-group', - `view-mode', `with-electric-help', `pp', `sort-numeric-fields', - `reverse-region', and `goto-address' at compile time. - (mh-xemacs-has-toolbar-flag): New. This is non-nil when XEmacs - has toolbar support. - (mh-xemacs-toolbar-*-icon): Use it. - -2003-10-21 Mark D. Baushke - - * mh-identity.el (mh-identity-field-handler): Fields that begin - with ":" must have an mh-identity-handler defined or the user - gets an error. - -2003-10-17 Peter S Galbraith - - * mh-customize.el (mh-identity-list): This change affects users! - The keyword "signature" becomes ":signature". The recently added - keyword "pgg-default-user-id" becomes ":pgg-default-user-id". - (mh-auto-fields-list): The keyword "Identity" becomes ":identity". - (mh-identity-handlers): Idem for signature and pgg-default-user-id. - - * mh-comp.el (mh-insert-auto-fields): Idem for Identity. - -2003-10-17 Peter S Galbraith - - * mh-xemacs.el: Add eval-and-compile call to (load "toolbar" t t) to - make sure `toolbar-make-button-list' is defined. We can't use - require because Emacs doesn't have this library. - -2003-10-16 Bill Wohler - - * mh-customize.el (mh-signature-file-name) - (mh-letter-insert-signature-hook): Merge docstring with manual. - - * mh-comp.el (mh-file-is-vcard-p): Checkdoc fix. - (mh-insert-signature): Merge docstring with manual. - - * mh-customize.el (mh-junk): Changed manual link in defgroup from - Customizing mh-e to Junk. - (mh-junk-function-alist): Moved SpamAssassin to first in list on - the hunch that it is the most popular and should be chosen if - other anti-spam programs exist. - (mh-junk-mail-folder): Since the variable can accept values other - than folder names, renamed to mh-junk-disposition to more - accurately reflect the content. Merge docstring with manual. - (mh-junk-program): Moved SpamAssassin to the top of the menu for - the same reason presented in mh-junk-function-alist. Also, fixed - case of spam programs to match official usage. Merge docstring - with manual. - - * mh-junk.el (mh-junk-blacklist): - s/mh-junk-mail-folder/mh-junk-disposition/. Merge docstring with - manual. - (mh-junk-whitelist): Merge docstring with manual. - (mh-bogofilter-blacklist): No longer suggest using automatic - classification so use -s instead of -Ns. - (mh-bogofilter-whitelist): No longer suggest using automatic - classification so use -n instead of -Sn. - (mh-spamassassin-blacklist, mh-spamassassin-whitelist): Merge - docstring with manual. Moved spamassassin functions to top of file - so functions appear in same order that they are presented in menu. - -2003-10-09 Peter S Galbraith - - * mh-customize.el (mail-citation-hook): Moved from mh-comp.el and - made into a defcustom. - -2003-10-09 Satyaki Das - - * mh-loaddefs.el: Regenerated. - - * mh-comp.el (mh-get-header-field): Add autoload cookie. - - * mh-utils.el (mh-show-ps-print-toggle-mime) - (mh-show-ps-print-toggle-color, mh-show-ps-print-toggle-faces) - (mh-show-ps-print-msg-file, mh-show-ps-print-msg) - (mh-show-ps-print-msg-show): New interactive functions callable - from the show buffer. - (mh-show-ps-print-map): New key map for printing. - - * mh-e.el (mh-folder-mode-map): Remove key binding for - mh-print-msg. - (mh-ps-print-map): Add new key map for printing. - - * Makefile (MH-E-SRC): Add mh-print.el. - -2003-10-07 Satyaki Das - - * mh-utils.el (mh-x-image-url-fetch-image): In XEmacs, - make-temp-file is not present. So to avoid security problems, use - a temporary file in the user's home directory. This avoids issues - in creating files in a world-writable directory. - - * mh-mime.el (mh-signature-highlight): In Emacs, arrange for the - overlay to be freed when it is no longer needed. Also, implement - signature highlighting in XEmacs. - -2003-10-05 Satyaki Das - - * mh-mime.el (mh-mime-display, mh-mm-inline-message): Respect the - value of `mm-verify-option' and `mm-decrypt-option'. - (mh-mime-display-security): Rearrange code a bit to avoid too many - new lines being inserted when message verification/decryption is - carried out while the message is being read. Also use the - point-m{in|ax}-marker functions to make the function easier to read. - (mh-mime-security-press-button): Extend the function so that the - user can verify/decrypt messages while reading them. - - * mh-gnus.el (mm-possibly-verify-or-decrypt): Added to avoid - compiler warning with old Gnus. - - * mh-utils.el (mh-x-image-url-sane-p): New function which checks - if the URL in X-Image-URL is something we can handle. - (mh-x-image-url-display): Don't display image if the URL looks - malformed. - -2003-10-04 Mark D Baushke - - * mh-comp.el (mh-letter-menu): Simplify menu heading. - -2003-10-03 Mark D Baushke - - * mh-mime.el (mh-mml-query-cryptographic-method): Avoid - revisionist history and still provide a good default. - - * mh-comp.el (mh-letter-menu): Remove the Disable Security - parenthetical comment. - - * mh-loaddefs.el: Regenerated. - - * mh-customize.el (mh-mml-method-default): What method should be - used in secure directives. - - * mh-mime.el (mh-secure-message): New function used to generate - the mml security tags. - (mh-mml-unsecure-message): New wrapper function around - mml-unsecure-messages. - (mh-mml-secure-message-sign-pgpmime): Remove function. - (mh-mml-secure-message-encrypt-pgpmime): Ditto. - (mh-mml-cryptographic-method-history): New variable. - (mh-mml-query-cryptographic-method): New function. - (mh-mml-secure-message-encrypt): Ditto. - (mh-mml-secure-message-signencrypt): Ditto. - (mh-mml-secure-message-sign): Ditto. - - * mh-comp.el (mh-letter-menu, mh-letter-mode-help-messages, - (mh-letter-mode-map): Update to use new functions. - -2003-09-26 Satyaki Das - - * mh-seq.el (mh-interactive-range): The function has been - extended so that it now takes a default result to return if no - interactive prefix arg is given and no region is active. - - * mh-e.el (mh-add-sequence-notation): If transient-mark-mode is - on, then the active region is deactivated based on whether a user - sequence or a internal sequence is being notated. The change - removes this inconsistency. - (mh-catchup, mh-folder-map): A new interactive function to mark - messages as read has been added and bound to "F c" in the folder - mode. - - * mh-utils.el (mh-show-catchup, mh-show-folder-map): New - interactive function callable from show mode buffers has been - bound to "F c". - -2003-09-24 Bill Wohler - - * mh-customize.el (mh-clean-message-header-flag) - (mh-invisible-header-fields-default, mh-invisible-header-fields): - Merge docstring with manual. - -2003-09-24 Mark D. Baushke - - * mh-junk.el (mh-junk-blacklist): Junked messages should be put - into the mh-seen-list to avoid propagating the unseen sequence - into the spam folder. - - * mh-loaddefs.el: Regenerated. - - * mh-mime.el (mh-mml-secure-message-sign-pgpmime): Add an optional - dontsign argument to remove an existing secure message directive. - Update the docstring -- this fuction does not allow for - encrypt/sign, just sign directives. - - * mh-mime.el (mh-mml-secure-message-sign-pgpmime): Use - mml-insert-tag directly to provide a sender if - mh-identity-pgg-default-user-id is set. - (mh-mml-secure-message-encrypt-pgpmime): Use mml-insert-tag - directly to provide a sender if this message is to be both signed - and encrypted and mh-identity-pgg-default-user-id is set. - -2003-09-23 Bill Wohler - - * mh-alias.el (Commentary): Removed as it is now in the manual. - (mh-alias-system-aliases): Moved here from mh-customize.el. By - definition, "system" definitions are not user-visible, and user - filenames are in the the Aliasfile: profile component, so this - variable really shouldn't be a defcustom - (mh-alias-tstamp, mh-alias-filenames, mh-alias-reload) - (mh-alias-add-alias, mh-alias-grab-from-field) - (mh-alias-add-address-under-point, mh-alias-apropos): Merge - docstring with manual. - (mh-alias-reload-maybe): Minor comment update. - (mh-alias-insert-file): Merge docstring with manual. Removed - "[press TAB]" from prompt since users should know about completion - and space can be used as well. - (mh-alias-for-from-p): No longer returns a surprising result (t if - there was **not** an alias for the From field) if the From header - field is missing. This function now returns what you would expect - a function of this name to return. Renamed from - mh-alias-from-has-no-alias-p since negatives in the function name - make logic harder to follow. - (mh-alias-add-alias-to-file): Merge docstring with manual. - Improved verbiage of prompt. Aliases are now inserted "[b]efore" - or "[a]fter" the existing alias instead of "[i]nsert" or - "[a]ppend." Note how the new usage flows better. - - * mh-customize.el (mh-alias): Changed manual link in defgroup from - Customizing mh-e to Aliases. - (mh-alias-grab-from-field button): mh-alias-from-has-no-alias-p - renamed to mh-alias-for-from-p and no longer returns surprising - value if there isn't a From field. Therefore, enable button if - there is a From header field and mh-alias-for-from-p returns nil. - (mh-letter-complete-function) - (mh-alias-completion-ignore-case-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): Merge docstring with - manual. - (mh-alias-system-aliases): Moved to mh-alias.el. - - * mh-comp.el (mh-letter-complete-function-alist): Removed comment - about making this customizable since I didn't think it seemed - appropriate in the manual. - (mh-letter-complete): Merge docstring with manual. - -2003-09-23 Satyaki Das - - * mh-speed.el (mh-speed-flists): When exiting emacs, don't ask if - the flists process should be killed. - - * mh-e.el (mh-folder-message-menu): Enable undo menu entry only - if something can be undone. - - * mh-customize.el (undo): Enable undo button only if something - can be undone. - -2003-09-22 Peter S Galbraith - - * mh-customize.el (mh-identity-handlers): New defcustom. Alist of - Handler functions for mh-identity (downcased) fields. - (mh-identity-list): Add support for pgg-default-user-id. - - * mh-identity.el (mh-insert-identity): Modified to use - `mh-identity-handlers', adding hacking flexibility for those who - might need it. - (mh-identity-field-handler): New function. Return the handler for - a FIELD or nil if none set. The field name is downcased. - (mh-identity-handler-gpg-identity): New function; handler for pgg - pgp identities. It sets a buffer-local value for - `mh-pgg-default-user-id' which must be handled by mh-send-letter. - (mh-identity-pgg-default-user-id): New buffer-local variable to - hold the requested key ID. - (mh-identity-handler-signature): New function; handler t insert - and remove signature files. - (mh-identity-handler-default): New function; the default handler - to insert or remove generic field. - (mh-identity-handler-top): Insert a field at the top of the - header. - (mh-identity-handler-bottom): Insert a field at the bottom of the - header. - (mh-header-field-delete): Make more robust wrt the field having a - trailing colon or not. - (mh-identity-make-menu): Add a "Customize Identities" menu entry. - - * mh-loaddefs.el: Regenerated. - -2003-09-21 Peter S Galbraith - - * mh-init.el (mh-variant-set): Bug fix for mh-variant long names - with version numbers. - - * mh-e.el (mh-scan-format): patch from Sergey Poznyakoff. - GNU mailutils now supports the %(decode) format - -2003-09-20 Satyaki Das - - * mh-gnus.el (mh-mm-text-html-renderer): New function to query - which HTML renderer is being used by Gnus. - - * mh-mime.el (mh-signature-highlight): Renderers used to display - HTML parts garble the signature separator in various ways. The - function has been modified to take that into account. - (mh-mime-display-single, mh-mm-display-part): Pass the new - optional argument to `mh-signature-highlight'. - -2003-09-19 Mark D. Baushke - - * mh-mime.el (mh-have-file-command, mh-file-mime-type): Made an - mh-autoload as they are used in mh-comp.el. - - * mh-loaddefs.el: Regenerated. - -2003-09-18 Peter S Galbraith - - * mh-comp.el (mh-insert-fields): Make sure field has a colon. - -2003-09-18 Satyaki Das - - * mh-seq.el (mh-toggle-tick): Don't hardcode the name of the tick - sequencence in the function. This would have caused improper - highlighting of the tick sequence if the user had changed its - name. - -2003-09-15 Satyaki Das - - * mh-e.el (mh-folder-message-menu): Fix a little bug which shows - up as a problem during compilation (closes SF #806577). - -2003-09-15 Mark D. Baushke - - * mh-customize.el (mh-invisible-header-fields-internal): Added - a new field for GNU mailutils per Sergey Poznyakoff. - -2003-09-09 Satyaki Das - - * mh-utils.el (vcard): Unconditionally load vcard.el, if - available, so that vcards are always inlined. - -2003-09-09 Peter S Galbraith - - * mh-mime.el (mh-file-mime-type-substitutions): Add entry to - convert text/plain .vcf files to text/x-vcard. - (mh-mime-content-types): Add text/x-vcard. - -2003-09-09 Bill Wohler - - * mh-comp.el (mh-rejected-letter-start): Added strings for qmail - and exim (addresses SF #404965). - -2003-09-09 Satyaki Das - - * mh-gnus.el (mm-inline-text-vcard): Make vcard display work with - Gnus-5.9. The extra file vcard.el is still needed. - - * mh-mime.el (mh-signature-highlight): New function that - highlights message signatures. - (mh-mm-display-part, mh-mime-display-single): Highlight signatures - using `mh-signature-highlight' (closes SF #802722). More work is - needed for XEmacs. - (mh-mime-display): Highlight signature in non-MIME email too. - - * mh-customize.el (mh-show-signature-face): New face used to - display message signature. - -2003-09-08 Peter S Galbraith - - * mh-e.el (mh-version): Do something sensible when - mh-variant-in-use is undefined. - * mh-junk.el (mh-spamassassin-blacklist) - (mh-spamassassin-whitelist): Change options to be compatoble with - old version of spamassassin (V2.20). - -2003-09-07 Mark D. Baushke - - * mh-mime.el (mh-access-types): Per RFC 2049, the "afs" - access-type for message/external-body has been removed. - Update the comments to reference the current MIME RFCs - 2045, 2046 and 2049 rather than the obsolete RFC 1521. - -2003-09-05 Peter S Galbraith - - * mh-e.el (mh-version): Bumped version number to 7.4.2+cvs. - -2003-09-04 Satyaki Das - - * mh-utils.el (mh-picon-directory-list, mh-picon-directory): The - mh-picon-directory-list variable supersedes mh-picon-directory. - (mh-picon-existing-directory-list): New variable that contains - the list of picon directories that actually exist. - (mh-picon-set-directory-list): New function to update - mh-picon-existing-directory-list from mh-picon-directory-list. - (mh-picon-get-image): The function has been modified to search a - list of possible picon source directories. The regexp to extract - the username from the email address has been made smarter so that - it can recognize email addresses of the form user+random@foo.net - and extract "user" from there. - (mh-picon-file-contents): The file type recognition code has been - moved from mh-picon-get-image into this function. - (mh-picon-generate-path): The function has been generalized so - that searching multiple paths is now feasible. - - * mh-pick.el, mh-e.el: Checkdoc fixes. - -2003-09-02 Satyaki Das - - * mh-identity.el (eval-when): It seems that the mh-comp-loaded - code isn't required any more. - -2003-08-30 Satyaki Das - - * mh-init.el (mh-variant-set): Replace `error' with `message' so - that Emacs CVS will compile without errors if no MH variant is - present. - -2003-08-29 Satyaki Das - - * mh-init.el (mh-variant-set): Add interactive spec to the - function. - - * mh-mime.el (mh-mhn-compose-external-type): Optional arguments - are prompted for only if prefix arg is given. - -2003-08-29 Mark D. Baushke - - * mh-mime.el (mh-mhn-compose-external-type): Modified to be - interactive and prompts for many of the fields. Made an - mh-autoload. - (mh-access-types): New table derived from RFC2017, RFC1521 and - RFC1738, used in a completing-read in - mh-mhn-compose-external-type. - - * mh-loaddefs.el: Regenerated. - -2003-08-26 Satyaki Das - - * mh-utils.el (mh-picon-image-types, mh-picon-get-image): Avoid - compiler warnings. - (mh-sub-folders-actual): Parsing of the output from folders has - been modified, so that it also works for MH (closes SF #792300). - - * mh-junk.el (mh-spamassassin-whitelist): Avoid calling - ietf-drums-parse-address if it isn't present. - (mh-spamassassin-identify-spammers): Avoid use of puthash so that - Emacs20 doesn't complain. - - * mh-e.el (mh-colors-available-p): Wrap call to - display-color-cells in a mh-funcall-if-exists to avoid compiler - warning in Emacs20. - -2003-08-25 Satyaki Das - - * mh-e.el (mh-colors-available-flag, mh-folder-mode): New - variable to track if colors are available and it is set - appropriately in mh-folder-mode. - (mh-colors-available-p, mh-colors-in-use-p): Two functions to - check whether colors are available and if they are actually being - used. - (mh-add-sequence-notation): Just changing a scan line doesn't - make font-lock refontify the line in Emacs20. So explicitly - refontify the scan line in such a situation. - (mh-internal-seq): If colors aren't being used then treat the - tick sequence like a normal user sequence. - - * mh-seq.el (mh-put-msg-in-seq): Do font-lock highlighting after - the messages have been added to the sequence. - (mh-toggle-tick): Modified so that highlighting of the ticked - messages will be properly done. If font-lock isn't being used or - if colors aren't supported by the Emacs where MH-E is running, - then the `%' character is used to annotate ticked messages. - - * mh-utils.el (mh-picon-image-types): Since Emacs20 doesn't have - image-type-available-p, wrap calls to that function in - ignore-errors. - (mh-add-msgs-to-seq): Do the font-lock highlighting after the - messages have been added. - -2003-08-24 Bill Wohler - - * Makefile (MH-E-SRC): Replaced mh-xemacs-compat.el and - mh-xemacs-icons.el with mh-xemacs.el. - - * mh-e.el: Don't require mh-xemacs-compat which no longer exists. - The XEmacs stuff gets required by mh-customize.el which is - required by mh-utils.el which is required by mh-e.el. This all - happens before mh-xemacs-compat was required, so all should be - well. - - * mh-unit.el (mh-unit-files): Replaced mh-xemacs-compat.el and - mh-xemacs-icons.el with mh-xemacs.el. - - * mh-xemacs.el: New file from concatenation of mh-xemacs-compat.el - and mh-xemacs-icons.el which were removed since their names - exceeded DOS 8+3 limits. - - * mh-customize.el (mh-compose-skipped-header-fields): Use - uppercase for field names. - -2003-08-21 Bill Wohler - - * mh-customize.el (mh-sequences): Introduced new customization - group for sequences. - (mh-refile-preserves-sequences-flag, mh-tick-seq) - (mh-update-sequences-after-mh-show-flag): Moved option from - mh-folder to mh-sequences group. Synced docstring with manual. - (mh-index-ticked-messages-folders): Since mh-tick-seq is - customizable, use it instead of tick in the docstring. - - * mh-index.el (mh-index-ticked-messages): Since mh-tick-seq is - customizable, use it instead of tick in the docstring. - - * mh-seq.el (mh-msg-is-in-seq): Can now specify an alternate - message number with a prefix argument. - (mh-narrow-to-tick): Since mh-tick-seq is customizable, use it - instead of tick in the docstring. Also, use mh-tick-seq instead of - tick in warning message. - -2003-08-20 Peter S Galbraith - - * mh-customize.el: setq mh-variant to 'none when byte-compiling, - since we don't care what MH variant (if any) is on the system at - that point. - - * mh-init.el (mh-variant-set): Don't probe for MH variant when - mh-variant is set to'none (during byte-compilation). - -2003-08-19 Peter S Galbraith - - * mh-pick.el (mh-pick-single-dash): New defconst. Search - components that are supported by single-dash option in - pick. - (mh-pick-regexp-builder): Use `mh-pick-single-dash' and adapt - patch from Sergey Poznyakoff. - - * mh-comp.el (mh-reply): mu-mh supports `repl -group', thanks to - Sergey Poznyakof. - - * mh-init.el: checkdoc fixes. - -2003-08-19 Bill Wohler - - * mh-seq.el: (mh-edit-pick-expr): Renamed from mh-read-pick-regexp - since the new name is more indicative of what the function does. - Prompt now says "Pick expression" instead of "Pick regexp". - (mh-narrow-to-subject): Rewrote function to behave like other - similar functions. - (mh-narrow-to-header-field, mh-narrow-to-range) - (mh-narrow-to-tick): s/regexp/pick-expr/. - (mh-widen, mh-narrow-to-from, mh-narrow-to-cc, mh-narrow-to-to): - Synced docstrings with manual - -2003-08-19 Bill Wohler - - Released MH-E version 7.4.2. - - * MH-E-NEWS, README: Updated for release 7.4.2. - - * mh-e.el (Version, mh-version): Updated for release 7.4.2. - - * mh-e.el (mh-folder-size, mh-folder-size-folder) - (mh-folder-size-flist): If flist is not present use folder to find - the number of messages in the folder. Also the .mh_sequences file - is read to find the number of unseen messages (patch from 1.349 - and branched for 7.4.2, closes SF #791021). - - * mh-utils.el (mh-flists-present-flag, mh-find-progs): Introduce a - new variable to test for the presence of the flists program and - set it in mh-find-progs. - (mh-collect-folder-names): Use folders instead of flists. One - advantage is that folders is available on MH while flists is not. - Another is that if an explicit -sequence argument isn't given and - Unseen-Sequence profile is not present then flists croaks while - folders doesn't. - (mh-collect-folder-names-filter): Don't consider folder names that - start with a `.' character. This is needed since the folders - command doesn't filter them out like flists does. - (patches from 1.307 and 1.309 and branched for 7.4.2, closes SF - #791021). - -2003-08-18 Bill Wohler - - * mh-index.el (mh-index-sequenced-messages) - (mh-index-new-messages, mh-index-ticked-messages): Updated - docstrings from manual (closes SF #718833). - - * mh-customize.el (mh-variant): Checkdoc fix. - (mh-index-new-messages-folders): Don't mention defvar in - docstring, use `+inbox' instead. - (mh-index-ticked-messages-folders): Don't mention defvar in - docstring, use `tick' instead. - - * mh-comp.el (mh-repl-group-formfile): Checkdoc fix. - -2003-08-18 Peter S Galbraith - - * mh-init.el (mh-variant-set, mh-sys-path, mh-variant-info): Add - support for GNU mailutils. - (mh-variant-mu-mh-info): New function to detect mu-mh and return - info about it for `mh-variants'. - - * mh-e.el (mh-regenerate-headers): mu-mh has different error - message for a invalid mesage list. - -2003-08-18 Peter S Galbraith - - * mh-customize.el (mh-e): New defgroup. Sort of an alias for the - 'mh group that a user might be more likely to find. - -2003-08-18 Bill Wohler - - * mh-comp.el (mh-insert-auto-fields-done-local): Docstring tweak. - (mh-compose-and-send-mail): Do not call mh-insert-auto-fields. - This should be done only once in mh-send-letter. - -2003-08-18 Peter S Galbraith - - * mh-comp.el (mh-letter-mode): Call `mh-find-path unconditionally, - like elsewehere in MH-E. - - * mh-utils.el (mh-find-path): Run setup code only if - `mh-find-path-run' is nil such that this is only done once. - Also remove the `setq' for `read-mail-command' and `mail-user-agent'. - -2003-08-18 Peter S Galbraith - - * mh-e.el: require 'mh-utils first - - * mh-customize.el (mh-variant): defcustom moved here. - - * mh-init.el (mh-variants): Made an mh-autoload. - -2003-08-18 Peter S Galbraith - - * Makefile (MH-E-SRC): Added mh-init.el to MH-E-SRC. - - * mh-utils.el (mh-find-progs): Deleted. Make obsolete by mh-init.el. - (mh-find-path): Call `mh-variants' instead of now obsolete - `mh-find-progs'. - (mh-path-search): Deleted. Was only used by `mh-find-progs'. - - * mh-e.el: require mh-init.el. - (mh-version): Use simpler `mh-variant-in-use'. - (mh-scan-format): Use (mh-variant-p 'nmh) instead of mh-nmh-flag. - - * mh-comp.el (mh-insert-x-mailer): Use simpler `mh-variant-in-use'. - - * mh-utils.el (mh-progs, mh-lib, mh-lib-progs) - (mh-flists-present-flag): Moved to mh-init.el. - (mh-nmh-flag): Deleted. Use (mh-variant-p 'nmh) instead. - - * mh-comp.el (mh-repl-group-formfile, mh-forward, mh-reply) - (mh-send-letter): Use (mh-variant-p 'nmh) instead of mh-nmh-flag. - - * mh-mime.el (mh-edit-mhn, mh-mime-save-parts): Use (mh-variant-p - 'nmh) instead of mh-nmh-flag. - -2003-08-16 Bill Wohler - - * mh-customize.el (mh-folder-selection): New group to hold - variables described in Folder Selection section in manual. - (mh-default-folder-list, mh-default-folder-must-exist-flag, - mh-default-folder-prefix): Moved to mh-folder-selection group. - Updated docstrings per manual update. - (mh-default-folder-for-message-function): New defcustom. Was a - defvar in mh-utils.el. Updated docstring per manual update. - - * mh-utils.el (mh-default-folder-for-message-function): Moved to - mh-customize.el. - - * mh-e.el (mh-folder-from-address, mh-prompt-for-refile-folder): - Updated docstrings per manual update. - - * mh-unit.el (mh-unit-files): Added mh-init.el. - -2003-08-16 Peter S Galbraith - - * mh-init.el: New file. Code to initialize the MH-E back-end. - Highlights: - (mh-variant): New defcustom. Users may customize `mh-variant' to - switch between available variants. - (mh-variants): Available MH variants are described in this variable. - (mh-variant-in-use, mh-variant-p): Developers may check which - variant is currently in use with the variable `mh-variant-in-use' - or the function `mh-variant-p'. - -2003-08-15 Bill Wohler - - * mh-customize.el (mh-auto-fields-list): The manual uses Fcc - instead of fcc, so I've changed the user-visible text - accordingly. I've left the const alone for backwards - compatibility. - -2003-08-14 Bill Wohler - - * mh-identity.el (mh-insert-identity): Changed signature deletion - test to test for both markers, rather than testing to see if the - start marker is bound. Since the start marker is defined in this - file, it should always be bound. Suggestion by Satyaki. - - * mh-comp.el (mh-send-letter): Go to the top of the draft so that - the user can see which header fields have been inserted. I think - this is more important than leaving point alone or going to the - end to see the signature since Mail-Followup-To or Bcc or cc could - have some deleterious effects. - - * mh-customize.el (mh-auto-fields-prompt-flag): New variable. - Non-nil means to prompt before sending if fields inserted. - - * mh-comp.el (mh-insert-auto-fields): Now return t if fields - inserted; otherwise nil. - (mh-send-letter): Deleted obsolete documentation about adding - X-Mailer and X-Face. Prompt before sending if auto fields added - and mh-auto-fields-prompt-flag is t. - - * mh-customize.el (mh-identity-list): Allow signature to come from - mh-signature-file-name. In this case, the "signature" value is set - to nil. This might not be the best implementation. Suggestions - welcome. - - * mh-identity.el (mh-insert-identity): Now that the signature can - be a nil value, moved test higher up in cond so that the test for - a nil value would not be executed first prevening signature - handling. Handle nil signature value by calling - mh-insert-signature with no arguments which means to use - mh-signature-file-name. - - * mh-comp.el (mh-insert-signature): Changed text of message if no - signature inserted. - - * mh-customize.el (mh-identity-list): Changed "Signature" constant - back to "signature" so it *won't* be backwards-incompatible any - more. I discovered one could use the :tag keyword to get headline - captalization in the menu. - - * mh-identity.el (mh-insert-identity): Ditto. - - * mh-identity.el (mh-identity-make-menu): Always build menu. - Always create Insert Auto Fields menu item. Just don't enable it - if mh-auto-fields-list is nil. Enable radio buttons always. Make - None a radio button choice with the other identities. - - * mh-comp.el (mh-letter-menu): Removed cond on fboundp - 'easy-menu-define. We don't do this elsewhere. - -2003-08-13 Bill Wohler - - * mh-identity.el (mh-identity-make-menu, mh-insert-identity): Use - headline capitalization in menu items. Even the internal names are - exposed in the customize interface, so they need to be uppercase - too. - (mh-insert-identity): Rather than goto-char to - mh-identity-signature-start before deleting, simply pass it to - delete-region. When setting markers, use point-min-marker and - point-max-marker instead of moving point. Set marker type of - mh-identity-signature-start to t to fix a bug where changing - identity deleted user's text. - - * mh-customize.el (mh-identity-list, mh-auto-fields-list): - Reworked docstring. Use headline capitalization. Commented out - implementation details for later deletion or resurrection upon - popular demand. N.B. If your mh-identity-list contains "signature" - then you will need to either edit your .emacs file manually, or - delete your existing "signature" which will become a regular field - with this change and create a new signature. I figured I could get - away with this since 8.0 is a major release, and coinciding with - the manual update will be a MAJOR release. I apologize profusely - that I didn't catch this before it was released. - (mh-identity-default): Use headline capitalization in example. - -2003-08-12 Jeffrey C Honig - - * mh-customize.el (mh-alias-reloaded-hook): Define - `mh-alias-reloaded-hook'. - - * mh-alias.el (mh-alias-reload): Run `mh-alias-reloaded-hook' - after reloading the aliases. - -2003-08-12 Mark D. Baushke - - * mh-comp.el (mh-insert-signature): Use functionp to avoid - the possibility of doing a funcall on a void function. - -2003-08-12 Bill Wohler - - * mh-customize.el (mh-identity): Point group manual link to new - Identities section. - (mh-signature-separator-flag): New variable which can be used to - suppress the output of the signature separator. - - * mh-comp.el (mh-insert-signature): Use - mh-signature-separator-flag. - - * mh-identity.el (mh-insert-identity): If the identity's signature - file didn't exist, an fboundp error was thrown. This was fixed by - removing signature tests that were redundant and out of date with - the tests in mh-insert-signature. Removed second signature - condition as it is now handled in the first signature condition. - -2003-08-12 Peter S Galbraith - - * mh-identity.el (mh-insert-identity): Don't insert new lines on - signatures anymore. - - * mh-comp.el (mh-insert-signature): Make sure signature file is - readable before trying to insert it. - -2003-08-11 Bill Wohler - - * mh-comp.el (mh-insert-signature): Unconditionally insert a - newline so that signatures are inserted consistently, and so that - there isn't any text after the cursor so that the user can start - typing his message immediately. Use new variable and function - mh-signature-separator and mh-signature-separator-p. - - * mh-customize.el (mh-delete-yanked-msg-window-flag): Checkdoc - fix. - (mh-signature-file-name): Updated docstring now that this variable - can be a function. Added cross-references to - mh-signature-separator, mh-signature-separator-regexp, and - mh-signature-separator-p which might be used in such functions. - - * mh-identity.el (mh-insert-identity): Don't include signature if - signature separator already present. Useful when running - mh-edit-again. - - * mh-mime.el (mh-inline-vcard-p): Use mh-signature-separator-p. - - * mh-utils.el (mh-signature-separator-regexp): New variable - containing "^-- $" which should be used when looking for the - signature separator. - (mh-signature-separator): New variable containing "-- \n" which - should be used when inserting the signature separator. - (mh-signature-separator-p): New function that returns non-nil if - mh-signature-separator-regexp is found in the buffer. - -2003-08-09 Satyaki Das - - * mh-utils.el (mh-x-image-scaling-function): Variable that - contains function used to scale images. Possible choices are - mh-x-image-scale-with-convert and mh-x-image-scale-with-pnm. - (mh-convert-executable): Removed. - (mh-x-image-scale-with-pnm, mh-x-image-scale-with-convert): New - functions that scale images using pnm tools or ImageMagick. - (mh-x-image-scale-and-display, mh-x-image-url-display): Use - mh-x-image-scaling-function instead of mh-convert-executable. - -2003-08-08 Peter S Galbraith - - * mh-comp.el (mh-insert-signature): Bug fix. Handle case of nil - `mh-signature-file-name' and hooks correctly. - - * mh-identity.el (mh-insert-identity): Refactor to use - mh-insert-signature - - * mh-comp.el (mh-signature-separator-p): Removed. - - * mh-comp.el (mh-insert-signature): Merge MIME awareness from - mh-insert-identity into this command. Allow - `mh-signature-file-name' to be a function to call. See if "-- " - needs to be inserted only after hooks have run. - -2003-08-07 Bill Wohler - - * mh-customize.el (mh-compose-skipped-header-fields): Added - X-Image-URL. - (mh-autoload): Removed cookies. They aren't necessary in - mh-e.el, mh-utils.el, or mh-customize.el. - - * mh-e.el (mh-autoload): Removed cookies. They aren't necessary in - mh-e.el, mh-utils.el, or mh-customize.el. - - * mh-identity.el (mh-insert-identity): Made regexp for signature - separator more explicit. Hmmm, maybe we should create - mh-signature-separator-regexp... - - * mh-index.el (mh-replace-string): Moved to mh-utils.el. - - * mh-utils.el (mh-replace-string): Moved here from mh-index.el. - (mh-autoload): Removed cookies. They aren't necessary in mh-e.el, - mh-utils.el, or mh-customize.el. - - * mh-comp.el (mh-insert-signature): Added file argument to insert - a file other than mh-signature-file-name. Insert signature - separator, unless file already contains one. - -2003-08-06 Satyaki Das - - * mh-e.el (mh-folder-size, mh-folder-size-folder) - (mh-folder-size-flist): If flist is not present use folder to - find the number of messages in the folder. Also the .mh_sequences - file is read to find the number of unseen messages. - - * mh-utils.el (mh-flists-present-flag, mh-find-progs): Introduce - a new variable to test for the presence of the flists program and - set it in mh-find-progs. - -2003-08-06 Peter S Galbraith - - * mh-customize.el: Change the order of `mh-identity-list' and - `mh-auto-fields-list' and remove byte-compilation defvar for - `mh-identity-list'. This fixes a customization bug for - `mh-identity-list', where it wasn't set correctly. - - * mh-identity.el (mh-identity-make-menu): mh-auto-fields-list may - not be bound yet when initially loaded. - -2003-08-06 Bill Wohler - - * mh-alias.el (mh-alias-add-address-under-point): Removed trailing - period from messages. The conventions say that errors should not - end with a period and that "Foo...done" messages should not end in - a period, but they aren't explicit about messages in general. - Given what the conventions *do* say, and because most of our - messages don't end with a period, let's just say that messages in - general don't end in a period, just like error messages. - - * mh-comp.el (mh-extract-rejected-mail, mh-letter-mode-message): - Ditto. - - * mh-e.el (mh-refile-a-msg): Ditto. - - * mh-funcs.el (mh-undo-folder): Ditto. - - * mh-mime.el (mh-mime-save-parts): Ditto. - - * mh-seq.el (mh-subject-to-sequence-unthreaded) - (mh-narrow-to-subject, mh-delete-subject): Ditto. - - * mh-index.el (mh-index-sequenced-messages) - (mh-index-new-messages, mh-index-ticked-messages): Discovered that - in general we should only use question marks in yes-or-no-p or - y-or-n-p prompts, but not in other prompts that use - completing-read and offer defaults. In these cases, use colons - instead (closes SF #730470). - - * mh-mime.el (mh-mime-save-parts): Ditto. - - * mh-utils.el (mh-prompt-for-folder): Ditto. - - * mh-alias.el (mh-alias-apropos): Multiple messages are usually - shown one at a time rather than appended. Send output to - mh-aliases-buffer instead of *Help*. - (mh-alias-local-users): Checkdoc fix. - - * mh-funcs.el (mh-undo-folder): Removed commented-out code since - its deadline had expired. - - * mh-utils.el (mh-aliases-buffer): New buffer name, used in - mh-aliases.el. - -2003-08-06 Satyaki Das - - * mh-utils.el (mh-x-image-url-cache-canonicalize): Make this - function work for XEmacs too. - (mh-collect-folder-names): Use folders instead of flists. One - advantage is that folders is available on MH while flists is not. - Another is that if an explicit -sequence argument isn't given and - Unseen-Sequence profile is not present then flists croaks while - folders doesn't. - (mh-collect-folder-names-filter): Don't consider folder names that - start with a `.' character. This is needed since the folders - command doesn't filter them out like flists does. - - * mh-index.el (mh-replace-string): Add autoload for it. - -2003-08-05 Satyaki Das - - * mh-mime.el (mh-compose-forward, mh-mhn-compose-forw) - (mh-mml-forward-message): The variable mh-sent-from-msg can be a - list. So check that the value is really a number before using it - like one. - - * mh-comp.el (mh-insert-letter): Same as above. - - * mh-utils.el (mh-picon-get-image): Make the code that finds the - address of the sender more robust. - (mh-face-display-function): Make it work with XEmacs. - (mh-picon-image-types): A new variable that stores what image - types can be used. - -2003-08-05 Satyaki Das - - * mh-customize.el (mh-tool-bar-define): Make the save button such - that is activated only if the buffer needs to saved. - - * mh-utils.el (mh-face-display-function, mh-picon-get-image): Some - domains, for instance cs.cmu.edu, don't have xpm files. So we need - to search for all three files. The change does that. - (mh-picon-file-contents): A utility function to return the - contents of a file as a string. - (mh-picon-get-image): Write it as a loop to make it simpler. - (mh-x-image-set-download-state): Make the link simpler. - -2003-08-04 Satyaki Das - - * mh-utils.el (mh-x-image-url-display): Don't bother to try to - download image if we don't have the necessary tools to display - it. - (mh-face-display-function): Add preliminary support for "domain" - picons. - (mh-picon-get-image, mh-picon-generate-path): Functions to find - best match for domain in the From header field. - - * mh-e.el (mh-previous-unread-msg): If some of the messages in the - unseen sequence are not present in the folder buffer then calling - this function gets stuck and can't skip over them. The change - fixes this. - (mh-next-unread-msg): Same as above. - -2003-08-04 Bill Wohler - - * mh-utils.el (mh-show-mode): Added cross reference to - mh-folder-mode in docstring (closes SF #728638). Added - \\{mh-show-mode-map} to show keymap. - - * mh-e.el (mh-folder-mode): Added information about ranges to - docstring (closes SF #728638). - - * mh-speed.el (mh-speed-refresh): New function that calls - mh-speed-flists and mh-invalidate-map. - (mh-folder-speedbar-key-map): Replaced keybindings for - mh-speed-invalidate-map and mh-speed-flists with a single binding - for mh-speed-refresh. - (mh-folder-speedbar-menu-items): Replaced menu items for Run - Flists and Invalidate Cached Folders with the single menu item - Refresh Speedbar in order to simplify the UI. - - * mh-customize.el (mh-fetch-x-image-url): Added DOS as another - reason not to set this to t. - -2003-08-04 Satyaki Das - - * mh-e.el (mh-scan-folder): Handle ranges from user input properly. - -2003-08-03 Satyaki Das - - * mh-utils.el (mh-find-msg-get-num): Removed. If threading isn't - present, the messages are sorted by index. So `mh-goto-msg' was - implemented as a binary search and this function was used in that - implementation. So this isn't needed any more. - (mh-msg-search-pat): Removed. Before the advent of message - threading, this function was used to generate a regexp used to - search for a particular message. It isn't used anymore. The - variable `mh-scan-msg-number-regexp' should be updated and used in - `mh-goto-msg' instead of hardcoding the regexp in the code. Then - we might be able to better support other scan line formats in the - future. - - * mh-seq.el (mh-map-to-seq-msgs, mh-notate-seq): Removed. These - functions were used to notate user sequences. But calling - `mh-goto-msg' inside of a loop is inefficient. So the sequence - notation code was rewritten thereby making these functions - redundant. - (mh-copy-line-to-point): Removed. This function was used in the - implementation the now removed function `mh-copy-seq-to-point'. - That function was problematic and was replaced by the less general - `mh-copy-seq-to-eob'. This makes `mh-copy-line-to-point' - redundant. - (mh-region-to-msg-list): Removed since this is a special case of - the more general `mh-range-to-msg-list'. - - * mh-loaddefs.el: Regenerated. - -2003-08-03 Jeffrey C Honig - - * mh-customize.el (mh-invisible-header-fields-default): Added - several new fields to hide. Sorted the list with sort-lines. - -2003-08-03 Peter S Galbraith - - * mh-customize.el (mh-invisible-headers): Variable renamed to - `mh-invisible-header-fields-compiled'. - (mh-invisible-headers): Implement above change. - - * mh-utils.el (mh-display-msg): Idem. - - * mh-mime.el (mh-mm-inline-message): Idem. - - * mh-comp.el (mh-insert-letter): Idem. - -2003-08-03 Bill Wohler - - * mh-speed.el (mh-folder-speedbar-menu-items): Added separator - between standard and MH-E menu items. Use headline capitalization - in menu items. - - * mh-utils.el (mh-temp-fetch-buffer): New constant to hold - buffer name for wget output. - (mh-x-image-url-fetch-image): Use mh-temp-fetch-buffer instead - of hard-coded buffer name. Use make-temp-file to avoid race - conditions and subsequent security issues raised in make-temp-name - docstring. - -2003-08-03 Satyaki Das - - * mh-utils.el (mh-wget-executable, mh-wget-choice, mh-wget-option) - (mh-x-image-url-fetch-image): Support the use of `curl' and - `fetch' as alternatives to `wget'. - (mh-wget-choice): Change order of search. - (mh-x-image-url-fetch-image): Rename buffer. - -2003-08-03 Satyaki Das - - * mh-utils.el (mh-x-image-set-download-state) - (mh-x-image-get-download-state): Specially named symbolic links - are used to keep track of whether a X-Image-URL header field needs - to downloaded the next time it is seen. These functions get and - set the symlinks appropriately. - (mh-x-image-url-fetch-image): Simplified since the query has been - moved to `mh-x-image-url-display'. Also if wget isn't present then - try again next time since the user might install wget before - trying once more. - (mh-x-image-scale-and-display): Handle absence of the `convert' - program better. If it isn't present then we will try to display - the image the next time it is encountered. Also use the -geometry - option to convert since the -resize option isn't present in older - versions. - (mh-x-image-url-display): Move all the code that decides whether - an X-Image-URL header field will be fetched in this function. Also - remember the user's decision so that if the image couldn't be - fetched the first time, we will try to fetch it later on without - asking again. - -2003-08-02 Peter S Galbraith - - * mh-alias.el (mh-alias-local-users): Exclude all aliases already - in mh-alias-alist from `ali' (closes SF #772595). - -2003-08-01 Satyaki Das - - * mh-utils.el (mh-x-image-display, mh-x-image-url-display): Avoid - a race. The X-Image-URL is displayed asynchronously. Suppose a - message with a image is shown with `mh-show'. If a different - message is displayed before the image can be fetched, then the new - message will have the image displayed. With this change the race - is less likely to happen. - -2003-08-01 Peter S Galbraith - - * mh-inc.el (mh-inc-spool-map): Fix what `mh-inc-spool-map-help' - must look like as a fake `mh-help-messages' in order to work - correctly in mh-help. - -2003-07-31 Bill Wohler - - * mh-inc.el (mh-inc-spool-map): Use mh-help instead of - mh-ephem-message in order to display help in its own buffer - instead of minibuffer. - - * mh-utils.el (mh-help-buffer): New variable to hold the name of - the MH-E help buffer name. - - * mh-funcs.el (mh-help, mh-prefix-help): Use with-electric-help to - display help messages. I observed a friend with a vision - disability and the 5 seconds the help appeared on the screen was - not long enough for him to lock on it. I've therefore changed the - help function to display the help in its own buffer called *MH-E - Help* (closes SF #493740 and SF #656631). - - * mh-customize.el (mh-fetch-x-image-url): Changed default from nil - to 'ask. Updated docstring from manual. - (mh-invisible-header-fields-internal): Added X-Image-URL. - (mh-show-use-xface-flag): Updated docstring from manual. - (mh-x-face-file): Ditto. - - * mh-mime.el (mh-mhn-compose-external-type): Don't insert the - directory parameter if it's nil. The mhbuild man page indicates - that this parameter is optional, so this should be fine. - - * mh-comp.el (mh-letter-mode-map): Added keybindings for - mh-mhn-compose-anon-ftp and - mh-mhn-compose-external-compressed-tar. - (mh-letter-menu): Uncommented menu items for same. - -2003-07-30 Satyaki Das - - * mh-loaddefs.el: Regenerated. - - * mh-pick.el (mh-do-pick-search): Removed since the function - `mh-pick-do-search' performs the same action as this function. - - * mh-index.el (mh-index-update-unseen): Removed since the - generalized sequence synchronization code that keeps sequences in - index folders in sync with the sequences in the source folders - makes this function redundant. - - * mh-e.el (mh-folder-unseen-seq-name, mh-folder-unseen-seq-list): - Removed. These two functions were used in the unseen sequence - highlighting before the sequence highlighting code was - generalized. In any event calls to the function - `mh-folder-unseen-seq-name' can be replaced by the variable - `mh-unseen-seq' and calls to `mh-folder-unseen-seq-list' can be - replaced with (cdr (assoc mh-unseen-seq mh-seq-list)). - (mh-unmark-all-headers): Removed since this function has been - superseded by mh-remove-all-notation. - (mh-map-over-seqs): Removed since we now have the generalized - iteration over message ranges (the `mh-iterate-on-range' macro) - that can be used instead. - (mh-notate-if-in-one-seq): Removed. This function was used for - changing the `%' notation for user sequences. It can't be used for - that purpose any more, since we have a different scheme now. - - * mh-unit.el (mh-unit-tests): Removed since it isn't needed any - more. - (mh-unit): Run all function that start with the string - "mh-unit-test-". - -2003-07-30 Bill Wohler - - * mh-customize.el (mh-invisible-header-fields): Checkdoc fix. - - * mh-utils.el (mh-x-image-url-cache-canonicalize): Shortened using - example in files.el:make-backup-file-name-1. - (mh-face-display-function): Added X-Image-URL to docstring. - - * mh-unit.el (mh-unit-x-image-url-cache-canonicalize): New - function to test mh-x-image-url-cache-canonicalize since it lent - itself well to unit testing. Had to start somewhere! - (mh-unit-equal): New function that throws an error if RESULT - doesn't equal EXPECTED. - (mh-unit): Call mh-unit-x-image-url-cache-canonicalize. - -2003-07-29 Satyaki Das - - * mh-unit.el (mh-unit-update-call-graph): Make the function work - better with dotted lists, that is lists of the form (a b c . d) - where `d' isn't nil. With this we are able to avoid marking some - functions as unused even though they are actually used in alists. - -2003-07-28 Peter S Galbraith - - * mh-comp.el (mh-insert-letter): Remove `mh-visible-headers' - operation. - - * mh-mime.el (mh-mm-inline-message): Same. - - * mh-utils.el (mh-display-msg): Same. - (mh-clean-msg-header): Make a note of above change. - - * mh-customize.el (mh-invisible-header-fields-internal): Renamed - from prior `mh-invisible-header-fields-default'. - (mh-invisible-header-fields-default): Renamed from prior - `mh-invisible-header-fields-default-override'. - (mh-invisible-header-fields): Renamed from prior - `mh-invisible-header-fields-user'. - (mh-visible-headers): Removed! We use invisible fields only now. - (mh-visible-header-fields): Removed! - -2003-07-28 Peter S Galbraith - - * mh-customize.el (mh-invisible-header-fields-default): Added 3 - new fields to hide. - -2003-07-28 Satyaki Das - - * mh-utils.el (mh-show): Add an extra argument to the function so - that interactive use will always force redisplay of the message. - - * mh-mime.el (mh-mime-display, mh-mm-inline-message): Bind the - variables `mm-verify-option' and `mm-decrypt-option' so that - verification and decryption of mail can happen without any - additional tinkering. - -2003-07-25 Peter S Galbraith - - * mh-customize.el (mh-invisible-header-fields-default): New defvar - holding default fields to hide. This replaces the old - `mh-invisible-header-fields' defcustom. - (mh-invisible-header-fields-user): New defcustom. Users add - fields to suppress that we didn't include in - `mh-invisible-header-fields-default'. This could be named simply - `mh-invisible-header-fields' and it wouldn't really break anything - for users who have customized it to a long list now redundant with - `mh-invisible-header-fields-default'. - (mh-invisible-header-fields-default-override): New defcustom. - Users check off the fields they want displyed from what we - included in `mh-invisible-header-fields-default'. - (mh-invisible-headers): Function adapted to new variables. - -2003-07-25 Satyaki Das - - * mh-e.el (mh-inc-folder): If the user is in a different folder - displaying a message and runs mh-inc-folder, then the folder - changes to +inbox but the show window continues to display the - message in the old folder. The change fixes this. - (mh-visit-folder): Make the handling of the show window similar to - that of mh-inc-folder. - -2003-07-24 Satyaki Das - - * mh-e.el (mh-folder-message-menu, mh-folder-folder-menu): Use the - predicate mh-outstanding-commands-p instead of its exapansion. - Also use the same label in both menus. - (mh-outstanding-commands-p): Generalized so that it will work in - mh-show-mode buffers as well. - - * mh-customize.el (mh-tool-bar-define): Enable tool-bar button for - mh-execute-commands only if there are pending deletes or refiles. - -2003-07-19 Satyaki Das - - * mh-utils.el (mh-show-msg): If a unseen message is first marked - for deletion/refiling and then displayed, the bold highlighting - does not go away. This change fixes that. - - * mh-seq.el (mh-msg-is-in-seq): Fix a bug in the function. If any - message was marked for refiling, then the function would have you - believe that every message in the folder is being refiled. - -2003-07-17 Bill Wohler - - * mh-e.el: Removed email address for Stephen Gildea's in Change - Log at his request (damn spammers). Removed other email addresses - while I was at it since the SourceForge URL should be sufficient - contact information. - - (mh-scan-format-*mh): Fixed typo in comment above these variables. - These variables are used if mh-scan-format-file is t, not nil. - Also mh-scan-format-file is no longer "above" (courtesy Stephen - Gildea). - -2003-07-17 Satyaki Das - - * mh-mime.el (mh-mhn-quote-unescaped-sharp): New function that - quotes `#' characters in the first column that aren't part of a - MHN directive. - (mh-mhn-directive-present-p): Generalized to allow the function - to search for MHN directives in a part of the buffer. - (mh-edit-mhn): Quote unescaped `#' characters in the draft (closes - SF #762464). - -2003-07-16 Satyaki Das - - * mh-alias.el (mh-alias-read-address-map): If - mh-alias-flash-on-comma is nil when mh-alias is loaded, then - setting mh-alias-flash-on-comma to t later on doesn't turn on - address completion display till Emacs is restarted. The change - fixes this. - -2003-07-15 Bill Wohler - - * mh-utils.el (mh-cmd-note): Cleaned up docstring (changed phrase - to sentences). Moved to Scan Line Formats section. - (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): Cleaned up - docstrings (changed phrases to sentences). - (mh-note-seq): Cleaned up docstring (changed phrase to sentences). - Also, this variable is now a character and not a string. Moved to - Scan Line Formats section. - - * mh-funcs.el (mh-note-copied, mh-note-printed): Cleaned up - docstrings (changed phrases to sentences). Also, these variables - are now characters and not strings. - - * mh-e.el (mh-scan-format-mh, mh-scan-format-nmh): Filled. I was - hoping to quote the hint `t' but checkdoc wouldn't let me. - (mh-note-deleted, mh-note-refiled, mh-note-cur): Moved to Scan - Line Formats section. - (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-format-regexp): Cleaned - up docstrings (changed phrases to sentences). - (mh-scan-cur-msg-regexp): Marked this variable as obsolete; it - should be removed for 8.0. - - * mh-comp.el (mh-note-repl, mh-note-forw, mh-note-dist): Cleaned - up docstrings (changed phrases to sentences). Also, these - variables are now characters and not strings. - -2003-07-15 Satyaki Das - - * mh-index.el (mh-index-update-single-msg) - (mh-index-create-sequences): Handle the situation where there are - copies of the exact same message correctly. - -2003-07-15 Satyaki Das - - * mh-seq.el (mh-thread-update-scan-line-map): Modified since - notation is already a character. - - * mh-utils.el (mh-note-seq): Convert from string to character. - (mh-notate): Modified since characters are used to notate instead - of strings of length one. - - * mh-comp.el (mh-note-repl, mh-note-forw, mh-note-dist): Convert - from string to characters. - - * mh-e.el (mh-note-deleted, mh-note-refiled, mh-note-cur): Same as - above (closes SF #770772). - (mh-unmark-all-headers): Modified since mh-note-* variables are - now characters. - (mh-remove-sequence-notation): The mh-notate function remembers - the previous notation. Before the change to the mh-note-* - variables, mh-notate would only remember the change if a string - was used to notate the message. Now mh-notate is always called - with a character notation. So the deletion has to take place - explicitly. - -2003-06-28 Bill Wohler - - * mh-mime.el (mh-mhn-directive-present-p): If shell comments are - present that have a space after the # but no content, then this - function would throw an error. This has been fixed (closes SF - #762458). - -2003-06-27 Satyaki Das - - * mh-index.el (mh-index-search): Use the new and improved - mh-index-new-folder. - (mh-index-new-folder): Improved so that redoing the same search - will reuse the old index folder. - (mh-index-folder-search-regexp): New function which that extracts - out the search expression that produced the index folder. - -2003-06-24 Bill Wohler - - * mh-e.el (Version, mh-version): Set to 7.4.1+cvs. - -2003-06-25 Bill Wohler - - Released MH-E version 7.4.1. - - * MH-E-NEWS, README: Updated for release 7.4.1. - - * mh-e.el (Version, mh-version): Updated for release 7.4.1. - -2003-06-25 Bill Wohler - - * mh-unit.el (require 'cl): Added. Needed when compiling - separately. - - * Makefile (clean): Now a double-colon rule. Added a second clean - target to remove mh-unit.elc. - (compile): Removed mh-unit.elc. - (mh-unit.elc): New target used to compile mh-unit. - -2003-06-24 Bill Wohler - - * mh-e.el (Version, mh-version): Set to 7.4+cvs. - -2003-06-24 Bill Wohler - - Released MH-E version 7.4. - - * MH-E-NEWS, README: Updated for release 7.4. - - * mh-e.el (Version, mh-version): Updated for release 7.4. - -2003-06-24 Bill Wohler - - * mh-alias.el (mh-alias-gecos-name, mh-alias-local-users) - (mh-alias-suggest-alias): s/gcos/gecos. The original acronym was - GECOS but was later renamed to GCOS (see - http://info.astrian.net/jargon/terms/g/GCOS.html). But the term - really needs to match the field named pw_gecos in struct passwd in - /usr/include/pwd.h - - * mh-customize.el (mh-letter-faces): New group to house - mh-letter-header-field-face. - (mh-interpret-number-as-range-flag) - (mh-kill-folder-suppress-prompt-hook): Use "you" instead of "the - user" to make text more friendly. - (mh-index-ticked-messages-folders, mh-visible-headers) - (mh-visible-header-fields): Alphabetized. - (mh-alias-passwd-gcos-comma-separator-flag): Alphabetized and - s/gcos/gecos. - (mh-alias-local-users-prefix): Fixed docstring. Prefixes are - prepended, not appended. Additional checkdoc fix. - (mh-letter-header-field-face): Set group to new group - mh-letter-faces and moved option into this group. - - * mh-index.el (mh-index-sequenced-messages): Improved wording of - docstring and mentioned use of prefix argument. - - * mh-seq.el (mh-widen): Made docstring more accurate (hopefully!). - -2003-06-18 Satyaki Das - - * mh-index.el (mh-replace-string): Modified to preserve case of - replacement text. - (mh-index-parse-search-regexp): Preserve case of search terms. - This is needed to take advantage of the acronym indexing in - swish++ (closes SF #755718). - -2003-06-13 Satyaki Das - - * mh-utils.el (mh-show-index-sequenced-messages): Interactive - function callable from the show buffer. - (mh-show-folder-map): Add key binding for "F q". - - * mh-e.el (mh-folder-map): Same as above. - - * mh-index.el (mh-index-sequenced-messages): Add interactive spec - to the function (closes SF #718833). - -2003-06-13 Bill Wohler - - * mh-index.el (mh-flists-execute): Needed to expand mhpath too. - -2003-06-12 Satyaki Das - - * mh-index.el (mh-flists-execute): Modified so that flists - present in mh-progs is called. - -2003-06-07 Jeffrey C Honig - - * mh-comp.el (mh-forward, mh-forward): Use (mh-mail-header-end) to - find the end of headers instead of doing an re-search-forward - based on mh-mail-header-separator. - -2003-06-06 Satyaki Das - - * mh-comp.el (mh-letter-toggle-header-field-display): Make the - function callable from the show buffer. This means that the - buffer is temporarily made writable and the modification status - of the buffer restored to the original value. - -2003-06-06 Peter S Galbraith - - * mh-utils.el (mh-address-mail-regexp): Bug fix! It wasn't a true - copy of the goto-addr variable. My modification only recognized - addresses with one dot after the @. Sorry about that. - -2003-06-05 Satyaki Das - - * mh-utils.el (mh-replace-in-string): Move comment into doc - string to satisfy checkdoc. - - * mh-alias.el (mh-alias-apropos): Checkdoc fix. - -2003-06-05 Bill Wohler - - * mh-customize.el (mh-identity-list): Fixed typo in docstring. - -2003-06-05 Peter S Galbraith - - * mh-comp.el (mh-letter-complete-function-alist): Add bcc an reply-to. - -2003-06-04 Peter S Galbraith - - * mh-comp.el (mh-letter-complete-function-alist): Add dcc. - -2003-06-03 Peter S Galbraith - - * mh-utils.el (mh-replace-in-string): New function name instead of - `dired-replace-in-string'. - * mh-alias.el (mh-alias-gcos-name): Use it. - - * mh-alias.el (mh-alias-apropos): New command. Show all aliases - that match REGEXP either in name or content. - - * mh-alias.el (mh-alias-suggest-alias): Add no-comma-swap optional - arg. - (mh-alias-canonicalize-suggestion): Change a comma to a period in - created aliases. - (mh-alias-local-users): Call `mh-alias-suggest-alias' with - `no-comma-swap' arg set to t. - - * mh-alias.el (mh-alias-local-users): Fix case of nil - `mh-alias-passwd-gcos-comma-separator-flag'. - - * mh-alias.el (mh-alias-gcos-name): Fix for case of empty gcos - name field. - (mh-alias-local-users): Fix same. - - * mh-alias.el (mh-alias-canonicalize-suggestion): Replace use by - verbose `replace-regexp' by a looped `replace-match' - -2003-06-02 Peter S Galbraith - - * mh-utils.el (dired-replace-in-string): Bind if not already - defined. Borrowed from dired.el - - * mh-alias.el (mh-alias-gcos-name): switch to using - dired-replace-in-string. - -2003-06-02 Satyaki Das - - * mh-utils.el (mh-letter-font-lock-keywords): Fontify header - fields in the draft buffer that aren't skipped when navigating - with TAB (or S-TAB). - - * mh-customize.el (mh-clean-message-header-flag) - (mh-invisible-headers, mh-invisible-header-fields) - (mh-alias-passwd-gcos-comma-separator-flag): Checkdoc fix. - (mh-letter-header-field-face): New face to fontify the header - fields. - - * mh-comp.el (mh-insert-auto-fields-done-local): Checkdoc fix. - (mh-letter-mode, mh-letter-mail-header-end-marker): Remember the - end of the message header in a marker. This is used to fontify the - header fields. - (mh-font-lock-field-data, mh-letter-header-end): Functions used - to fontify message header fields. - - * mh-alias.el (mh-alias-gcos-name): Checkdoc fix. - -2003-06-02 Peter S Galbraith - - * mh-alias.el (mh-alias-gcos-name): New function. Return a usable - address string from a GCOS-NAME and USERNAME. - (mh-alias-local-users): Use it. - - * mh-customize.el (mh-alias-passwd-gcos-comma-separator-flag): New - defcustom. Whether the gcos field in the passwd file uses comma as - a separator. - - * mh-customize.el (mh-alias-local-users-prefix): New - defcustom. String to append to the real names of users from the - passwd file. If nil, use the username string unmodified instead of - the real name from the gcos field of the passwd file. - - * mh-alias.el (mh-alias-local-users): Use it to generate aliases - which by default are now the real name prefixed by "local." - -2003-06-01 Peter S Galbraith - - * mh-comp.el (mh-modify-header-field): Bug fix. Calling with with - a value that was already inserted causes it to get inserted a - second time. I have wrapped the value around \b word delimiters. - Hope there are no side effects for other code. - - * mh-comp.el (mh-insert-auto-fields): Attempt regardless of - `mh-insert-auto-fields-done-local' flag in interactive use. - - * mh-comp.el (mh-insert-auto-fields-done-local): Keep track of - whether `mh-insert-auto-fields' was called in a buffer. - (mh-insert-auto-fields): Set it and use it. Also, don't enter an - identity if one was already entered manually. - (mh-send-letter): Call `mh-insert-auto-fields' again when sending - message. - (mh-compose-and-send-mail): Call `mh-insert-auto-fields' _after_ - `mh-letter-mode' so `mh-identity-local' doesn't get cleared by the - mode invocation. - -2003-06-01 Satyaki Das - - * mh-loaddefs.el: Regenerated. - - * mh-seq.el (mh-thread-parse-scan-line): The value of - mh-scan-field-from-start-offset was hardcoded in one place. The - change fixes that. - - * mh-utils.el (mh-show-mode): Setup mh-show-mode to display - elipsis for truncated header fields and to skip over them quickly. - (mh-clean-msg-header): Make another pass over the message header - fields truncating long headers. - - * mh-comp.el (mh-letter-complete): Remove unnecessary autoload. - (mh-letter-toggle-header-field-display): Take into account that - an empty line can also end the message header. The function was - originally written with the draft buffer in mind. - -2003-06-01 Mark D. Baushke - - * mh-comp.el (mh-letter-mode-map): Do not steal C-t. Use C-c C-t - for the mh-letter-toggle-header-field-display command. - -2003-05-31 Peter S Galbraith - - * mh-customize.el (mh-visible-headers): Changed to a defvar that - will be set using new `mh-visible-headers' function using - `mh-visible-header-fields' as input. - (mh-visible-headers): New function, described above. - (mh-visible-header-fields): New defcustom. The UI to set - `mh-visible-headers'. - (mh-invisible-header-fields-set): Deleted. Code merged into - defcustom since it's so short. - -2003-05-31 Satyaki Das - - * mh-comp.el (mh-letter-toggle-header-field-display): Extended to - truncate headers if they are too long. - (mh-letter-truncate-header-field): Make code that would be - duplicated into a function. - (mh-letter-hide-all-skipped-fields): Modified so that fields that - are important are hidden if they are too long. - -2003-05-31 Satyaki Das - - * mh-utils.el ("tool-bar"): Since tool-bar isn't available on - XEmacs, requiring it causes problems. So load it instead. - (mh-do-at-event-location): New macro to do stuff at location of - events. This has been refactored out of mh-push-button. - - * mh-mime.el (mh-push-button): Simplified since it now uses the - mh-do-at-event-location macro. - - * mh-comp.el (mh-hidden-header-keymap): Keymap to make mouse - clicks on header toggle its display. - (mh-letter-toggle-header-field-display-button): Interactive - function to toggle header display when mouse button is clicked. - -2003-05-31 Peter S Galbraith - - * mh-e.el (mh-folder-mode): Remove conditional on tool-bar-mode. - - * mh-comp.el (mh-letter-mode): Same. - - * mh-utils.el (mh-show-mode): Same. - -2003-05-30 Satyaki Das - - * mh-utils.el (tool-bar): Load tool-bar explicitly. This avoids - problems with incorrect initialization of tool-bar-map otherwise. - -2003-05-30 Peter S Galbraith - - * mh-comp.el (mh-modify-header-field): Minor fix of spaces for - when an entry already existed. - (mh-insert-auto-fields): Make interactive. Add optional `quiet' - arg for use when called systematically on every buffer. Won't be - used interactively for more verbose output. - (mh-letter-mode-map): Add \C-c\M-d keybinding for - mh-insert-auto-fields. - - * mh-identity.el (mh-identity-make-menu): Add a menu entry in - Identity menu for mh-insert-auto-fields. - - * mh-customize.el (mh-invisible-header-fields): Add entries for - `Envelope-to' and `X-Original-To'. - -2003-05-30 Satyaki Das - - * mh-comp.el (mh-letter-mode): Skip over invisible text quickly. - -2003-05-30 Satyaki Das - - * mh-comp.el (mh-letter-mode): Use text properties to achieve - invisibility. This is more portable and the same code can be used - for all Emacs versions. - (mh-letter-toggle-header-field-display): Rewritten to use text - properties. - (mh-dead-overlay-p, mh-letter-hidden-header-fields)): Removed. - -2003-05-29 Satyaki Das - - * mh-comp.el (mh-letter-hidden-header-fields, mh-letter-mode): Add - a hash table, initialized it in mh-letter-mode, to remember the - overlays introduced to hide long headers fields. - (mh-insert-x-mailer): checkdoc fix. - (mh-compose-and-send-mail): Hide unimportant message header - fields. - (mh-letter-header-field-regexp, mh-letter-header-field-at-point) - (mh-letter-next-header-field, mh-letter-previous-header-field): - Add a variable that contains the header-field name regexp and use - it instead of the regexp directly. - (mh-letter-toggle-header-field-display, mh-letter-mode-map): Add - new key binding in mh-letter-mode that toggles display of long - header fields, in mh-letter-mode. - (mh-dead-overlay-p): A predicate which checks if a given header - field has an active overlay hiding it. - (mh-letter-hide-all-skipped-fields): New function that shortens - uninteresting headers. - -2003-05-29 Eric Ding - - * mh-comp.el (mh-letter-next-header-field-or-indent): Call - indent-relative rather than indent-for-tab-command. - -2003-05-29 Satyaki Das - - * mh-comp.el (mh-letter-complete-or-space): The meaning of the - customizable variable was reversed. Also make the doc string more - accurate. - -2003-05-28 Satyaki Das - - * mh-customize.el (mh-compose-skipped-header-fields): New - customizable variable that lists headers that are skipped. - (mh-compose-space-does-completion-flag): Option to do completion - with space (closes SF #745634). - - * mh-comp.el (mh-insert-x-mailer): Check the value of - mh-insert-x-mailer-flag in this function instead of in its caller. - (mh-compose-and-send-mail, mh-send-letter): Insert X-Mailer and - X-Face headers when the draft is first presented to the user - instead of when the mail is sent (closes SF #745624). - (mh-letter-complete-or-space): Allow for this key binding to be - overridden. - (mh-letter-next-header-field): Fix a problem with multiline header - fields. - (mh-letter-next-header-field, mh-letter-previous-header-field): - Make these functions skip unwanted header fields. - (mh-letter-skipped-header-field-p): New predicate that checks if a - header field is to be skipped. - - * mh-seq.el (mh-thread-inc): Inc'ing email in threaded mode was - causing duplication of the current notation. The change fixes that. - -2003-05-28 Satyaki Das - - * mh-comp.el (mh-beginning-of-word): Generalize it to skip - arbitrary number of words. - (mh-letter-complete-or-space): New interactive function that - allows space character to be used for completion. - (mh-letter-mode-map): Add key binding to allow space to be used - for completion. - -2003-05-27 Satyaki Das - - * mh-customize.el (mh-compose-prompt-flag): Customizable variable - that controls whether the user is prompted when composing a draft. - It replaces mh-dont-prompt-for-address-flag (closes SF #745622). - - * mh-comp.el (mh-letter-next-header-field): If the point is in - the header field name, then go the start of the header field - instead of the next field. - (mh-interactive-read-address, mh-interactive-read-string) - (mh-letter-adjust-point): Use mh-compose-prompt-flag instead of - mh-dont-prompt-for-address-flag. - -2003-05-27 Satyaki Das - - * mh-customize.el (mh-tool-bar-define): Fix incorrect usage of - set-specifier (closes SF #745655). Also the button enabling code - interacts poorly with font-lock in XEmacs. So disable that. - -2003-05-26 Satyaki Das - - * mh-e.el (mh-folder-from-address): The function - message-fetch-field expects that the buffer is narrowed to the - mail header. The change makes sure that this is indeed the case. - - * mh-mime.el (mh-add-missing-mime-version-header) - (mh-decode-message-body): Same as above. - -2003-05-25 Satyaki Das - - * mh-alias.el (mh-alias-minibuffer-confirm-address): Modified to - use mh-beginning-of-word. - - * mh-comp.el (mh-letter-confirm-address): Calling - mh-alias-reload-maybe can be expensive. So do it only if we really - need to. - -2003-05-25 Satyaki Das - - * mh-loaddefs.el: Regenerated. - - * mh-comp.el (mh-letter-confirm-address): Load aliases if not yet - loaded. - - * mh-alias.el (mh-alias-reload-maybe): Autoload it since it is - used in mh-comp.el. - -2003-05-24 Satyaki Das - - * mh-comp.el (mh-letter-skip-leading-whitespace-in-header-field): - New function to skip leading space and tab characters when placing - point in a header field. - (mh-letter-next-header-field, mh-letter-previous-header-field): - Skip leading whitespace when using TAB to navigate to header - fields. - (mh-letter-confirm-address): New interactive function that - displays the last expansion of the last alias when "," is typed. - (mh-letter-mode-map): Add key binding for "," (closes SF #745634). - -2003-05-23 Satyaki Das - - * mh-comp.el (mh-edit-again, mh-forward, mh-send) - (mh-send-other-window, mh-send-sub): Modified so that if - mh-dont-prompt-for-address-flag is non-nil, then MH-E won't prompt - for addresses to send mail to and instead directly jump to the - draft (closes SF #745622). - (mh-letter-complete-function-alist): An alist that is used to - decide which completion function to use in which header. This - variable should probably be customizable. - (mh-letter-complete): Now uses mh-letter-complete-function-alist. - (mh-letter-header-field-at-point, mh-letter-next-header-field) - (mh-letter-next-header-field-or-indent) - (mh-letter-previous-header-field): Commands for easier navigation - to header fields. - (mh-dont-prompt-for-address-flag): Variable which controls - whether MH-E prompts for addresses. - (mh-interactive-read-address, mh-interactive-read-string): Two - functions to ask user for input depending on the value of the - above flag. - (mh-letter-adjust-point): New function that sets point to the - first header field. - (mh-letter-mode-map): Add key bindings for TAB and S-TAB (closes - SF #745627). - -2003-05-23 Satyaki Das - - * mh-loaddefs.el: Regenerated. - - * mh-comp.el (mh-complete-word): New function which is - approximately equivalent to mail-abbrev-complete-alias. - (mh-beginning-of-word): Refactor repeated code into its own - function. - (mh-folder-expand-at-point): Make Fcc completion work in XEmacs - by not using mail-abbrev-complete-alias. - - * mh-alias.el (mh-alias-letter-expand-alias): Make alias - expansion work in XEmacs. Replace the use of the function - mail-abbrev-complete-alias, which isn't present in XEmacs. - - * mh-mime.el (mh-mml-to-mime): If a MIME message is created - immediately after starting MH-E then invoking mh-mml-to-mime - causes an error because "message" isn't being loaded. The change - works around this problem. - (mh-mime-maybe-display-alternatives): Give better indication of - which MIME parts are alternatives. - -2003-05-22 Satyaki Das - - * mh-e.el (mh-add-sequence-notation, mh-remove-sequence-notation): - Just delete and add the same character in the scan line to make - font-lock refontify it. The previous trick of removing all text - properties didn't work in XEmacs. - - * mh-seq.el (mh-put-msg-in-seq): Complain if the user tries to - create an invalid MH sequence. - - * mh-mime.el (mh-mime-display-alternative): Modified to - optionally display alternatives as buttons. - (mh-mime-maybe-display-alternatives): New function which displays - alternative MIME parts as buttons. - (mh-mime-save-part): Initially mh-mime-save-parts-directory is - nil and calling file-name-as-directory with nil arg leads to an - error. So fall back on the default-directory in that case. - - * mh-customize.el (mh-display-buttons-for-alternatives-flag): New - customizable variable that controls display of the alternative - MIME parts (closes SF #741288). - -2003-05-22 Peter S Galbraith - - * mh-customize.el (mh-invisible-header-fields): Commented out - "User-Agent:". It's similar to X-Mailer, so display it. - -2003-05-21 Satyaki Das - - * mh-customize.el (mh-tool-bar-define): Add an optional argument - to the button description that can dynamically enable/disable - buttons. - (mh-tool-bar-define): The alias grabbing button is disabled if the - current message doesn't have a From header or if the sender is - already in the user's alias. This functionality was inadvertently - lost when the Emacs/XEmacs toolbar unification took place. - -2003-05-20 Satyaki Das - - * mh-unit.el (mh-unit-construct-call-graph): Be more aggressive - and flag interactive functions that aren't autoloaded or have no - key bindings. - (mh-unit-interactive-function-p): Remove now unused function. - (mh-unit, mh-unit-construct-call-graph): Replace mh-files with - mh-unit-files. - -2003-05-20 Bill Wohler - - * mh-unit.el (mh-prune-trailing-spaces): Renamed to - mh-unit-prune-trailing-spaces to clean up the namespace. - (mh-files): Renamed to mh-unit-files. Ditto. - (mh-unit): Checkdoc fix. - - * mh-index.el (mh-index-p): Added autoload cookie since mh-index-p - is used by mh-customize.el. This calls for another mh-unit test - that looks for mh-autoloads for functions that are no longer used - in other files. - - * mh-loaddefs.el: Regenerated. - -2003-05-20 Satyaki Das - - * mh-unit.el (mh-unit-construct-call-graph): Factor out the code - to read the lisp files to a separate function. Also change it to - construct a function call-graph. Autoloaded functions are taken - into account. - (mh-unit-find-all-used-functions, mh-unit-called-functions) - (mh-unit-find-all-unused-functions): Find all unused functions by - computing a fixed point starting from the set of top level - functions. - (mh-unit-analyze-block): Removed. - (mh-unit-update-call-graph): mh-unit-functions-called was renamed - with modifications to update the function call graph. - -2003-05-19 Satyaki Das - - * mh-loaddefs.el: Regenerated. - - * mh-utils.el (mh-notate): Modified to keep track of notation - that was replaced when sequence notation is added. Thus when the - sequence is deleted, the original notation is recovered. - (mh-add-msgs-to-seq): Modified to work with the new sequence - notation code. - - * mh-seq.el (mh-delete-seq, mh-put-msg-in-seq): Simplified since - we don't need to handle tick and unseen sequences specially any - more. - (mh-narrow-to-seq): Don't need to call mh-notate-user-sequences - since mh-copy-seq-to-eob already does that. - (mh-widen): Remove sequence notation, so that notation when - messages are replied to aren't lost. - (mh-copy-seq-to-eob): Simplified with the use of - mh-iterate-on-range. - (mh-thread-inc): This function doesn't need to notate user - sequences since its callers already do that. - (mh-thread-parse-scan-line): Simplified since mh-note-seq doesn't - appear in scan lines it is given as arguments. - (mh-thread-update-scan-line-map): Remove the test, since its - caller already does the required check. - (mh-thread-folder): Simplified by the use of mh-iterate-on-range. - (mh-tick-add-overlay, mh-tick-remove-overlay, mh-notate-tick): - These functions aren't needed any more, since overlays aren't used - any more. Also overlays aren't portable to XEmacs, so nasty - conditional code that used overlays in Emacs and extents in Xemacs - have been eliminated. - (mh-toggle-tick): Generalize it to work on a range of messages - like the other interactive messages. - - * mh-funcs.el (mh-undo-folder): Use mh-remove-all-notation - instead of mh-unmark-all-headers. - - * mh-e.el (mh-folder-font-lock-keywords): The entry for unseen - sequence highlighting is now done by the macro. - (mh-generate-sequence-font-lock): New macro to highlight any - arbitrary sequence. This macro is invoked twice to get the - highlighting for unseen and tick sequences. - (mh-sequence-notation-history, mh-folder-mode): New variable that - keeps track of the old notation when a message is notated with - mh-note-seq. - (mh-regenerate-headers, mh-get-new-mail): Add appropriate calls to - mh-notate-user-sequences and mh-remove-all-notation. - (mh-unmark-all-headers): Add comment that this function shouldn't - be used any more. - (mh-add-sequence-notation, mh-remove-sequence-notation): New - functions to notate message with mh-note-seq and to remove it. - (mh-remove-all-notation): Simplified to use mh-iterate-on-range. - (mh-process-commands): Use mh-remove-all-notation instead of - mh-unmark-all-headers. - (mh-notate-user-sequences, mh-delete-msg-from-seq): Simplified - since the tick and unseen sequences don't need special handling - any more. - (mh-internal-seq): Make it possible to dynamically change what - sequences are treated as internal (internal means font lock is - used to highlight the sequence). - (mh-clear-text-properties): Removed since it isn't needed - anymore. - -2003-05-19 Satyaki Das - - * mh-unit.el (mh-unit-analyze-block, mh-unit-interactive-function-p) - (mh-unit-find-all-unused-functions): Change argument name bl to - block. - -2003-05-19 Satyaki Das - - * mh-unit.el (mh-unit-find-all-unused-functions): New interactive - function to find all unused functions in MH-E. - (mh-unit-analyze-block, mh-unit-interactive-function-p) - (mh-unit-functions-called): Functions used by - mh-unit-find-all-unused-functions do its job. - - * Makefile (compile): Byte-compile mh-unit.el, since the analysis - to find unused code runs faster when compiled. - -2003-05-18 Satyaki Das - - * mh-loaddefs.el: Regenerated. - - * mh-seq.el (mh-notate-deleted-and-refiled): Add autoload - declaration since this function is used in mh-index.el. - - * mh-e.el, mh-customize.el, mh-utils.el: Adjust require/provide - statements so that mh-e.el isn't loaded twice. - -2003-05-15 Satyaki Das - - * mh-utils.el (mh-defun-show-buffer): Arrange for the current - line in the folder buffer to be highlighted even when we are in - the show buffer. - -2003-05-14 Satyaki Das - - * mh-seq.el (mh-read-range): Allow this to work on invalid - sequences that only MH-E knows about. - - * mh-index.el (mh-create-sequence-map, mh-index-add-to-sequence) - (mh-index-delete-from-sequence): Don't consider sequences that - aren't valid MH sequences. - - * mh-e.el (mh-valid-seq-p): New predicate to check if a symbol - could be a MH sequence. - (mh-undefine-sequence, mh-define-sequence): Don't execute "mark" - unless the sequence name is a valid MH sequence. - - * mh-utils.el (mh-exec-cmd): In case an error happens in the - call-process and non-strings are present in ARGS, then the error - message isn't properly displayed. The change fixes this. - -2003-05-14 Peter S Galbraith - - * mh-mime.el (mh-mime-save-part): Bug Fix: Make sure - `mm-default-directory' gets a trailing "/" if - `mh-mime-save-parts-directory' doesn't have one. Otherwise the - default in the prompt of `mh-mm-save-part' will be wrong. Perhaps - `mh-mm-save-part' needs to do this check itself. - -2003-05-14 Satyaki Das - - * mh-index.el (mh-unpropagated-sequences): New function and - variable to keep track of sequences that shouldn't be propagated. - (mh-create-sequence-map, mh-index-add-to-sequence) - (mh-index-delete-from-sequence): Use mh-unpropagated-sequences to - stop changes to some sequences being reflected back to the source - folders. - -2003-05-13 Satyaki Das - - * mh-loaddefs.el: Regenerated. - - * mh-e.el (mh-process-commands): Preserve sequences when messages - are refiled (closes SF #737128). - - * mh-index.el (mh-create-sequence-map) - (mh-index-create-sequences): Refactor code that is reused into a - new function. - - * mh-customize.el (mh-refile-preserves-sequences-flag): New - customizable flag that controls whether sequences are preserved - when messages are refiled. - -2003-05-13 Eric Ding - - * mh-e.el (mh-scan-format): The argument for scan format files - should be -form, not -format. - -2003-05-13 Satyaki Das - - * mh-seq.el (mh-widen): The scan line map stack was not being - properly updated when ALL-FLAG is non-nil. The change fixes that. - - * mh-e.el (mh-reset-threads-and-narrowing): The change resets the - scan line map stack. - -2003-05-12 Satyaki Das - - * mh-loaddefs.el: Regenerated. - - * mh-seq.el (mh-thread-scan-line-map-stack) - (mh-thread-old-scan-line-map): Instead of the old scan line map, - now we need to maintain a stack of scan line maps. - (mh-narrow-to-seq): Modified so that multiple level of narrowings - can be done. We now maintain a stack of old views instead of - hiding the old scan lines. This makes it possible to have - multiple levels of narrowings. - (mh-widen): A optional prefix arg was added to allow undoing all - narrowing. - (mh-read-seq-default, mh-read-range): Don't use - mh-narrowed-to-seq, since it doesn't exist any more. - (mh-thread-initialize-hash, mh-thread-initialize): The - mh-thread-initialize function has been refactored. - (mh-thread-update-scan-line-map): Maintain notations in the stack - of scan line maps. - (mh-notate-tick, mh-toggle-tick): Simplified, since we don't have - mh-narrowed-to-seq any more. This means there is a slight loss of - functionality. Earlier if we narrowed to the tick sequence the - ticked messages weren't highlighted. This feature isn't present - any more. - - * mh-e.el (mh-execute-commands, mh-reset-threads-and-narrowing) - (mh-folder-sequence-menu, mh-get-new-mail): Use - mh-folder-view-stack instead of the now removed - mh-narrowed-to-seq. - (mh-narrowed-to-seq, mh-tick-seq-changed-when-narrowed-flag): - These variables have been removed. - (mh-folder-view-stack): New variable to keep track of a stack of - narrowings. - (mh-execute-commands, mh-get-new-mail): Add extra argument to - mh-widen so that all narrowings are undone. - - * Makefile (MH-E-SRC, MH-E-OTHERS): Move mh-gnus.el from MH-E-SRC - to MH-E-OTHERS so that it isn't byte compiled. - -2003-05-10 Satyaki Das - - * mh-seq.el (mh-read-seq): Improve the function a bit by adding - history to the sequence prompt. - -2003-05-09 Satyaki Das - - * mh-gnus.el: New file that won't be byte-compiled. From now on - having different Gnus versions at run-time and compile-time won't - cause errors in MH-E. - - * mh-mime.el (mh-small-show-buffer-p, mh-display-smileys) - (mh-display-emphasis): Handle all legal values of - font-lock-maximum-size. The existing code assumed didn't consider - the case where it could be an alist. - (mh-small-image-p): Simplified, so that aliasing XEmacs functions - in Emacs isn't necessary any more. - (mh-mm-display-part): Remove unnecessary call to fboundp. The - mh-funcall-if-exists does that for us any way. - (mh-defun-compat, gnus-local-map-property, mm-merge-handles) - (mm-set-handle-multipart-parameter, mm-readable-p) - (mm-long-lines-p, mm-keep-viewer-alive-p, mm-destroy-parts) - (mh-mm-save-part, mm-handle-multipart-ctl-parameter): These - compatibility functions have been moved to mh-gnus.el. - - * Makefile (MH-E-SRC): Add mh-gnus.el. - - * mh-seq.el (mh-narrow-to-header-field) - (mh-current-message-header-field): Checkdoc fixes. - - * mh-e.el (mh-undefine-sequence): Since mh-coalesce-msg-list - returns a list, apply is needed. - -2003-05-09 Noel Cragg (tiny change) - - * mh-junk.el (mh-spamassassin-blacklist): Separate "--local" and - "--no-rebuild" arguments to call-process. - [Patch committed by satyaki] - -2003-05-08 Satyaki Das - - * mh-seq.el (mh-translate-range): Take into account differnt - semantics of split-string in Emacs and XEmacs. - (mh-read-pick-regexp, 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): New - narrowing functions that can select messages based on different - message headers. - - * mh-utils.el (mh-show-limit-map): Add new narrowing functions - callable from the show buffer. - - * mh-e.el (mh-help-messages): Add help text for new functions. - (mh-limit-map): Add new narrowing functions (closes SF #732823). - -2003-05-07 Satyaki Das - - * mh-utils.el (mh-collect-folder-names): Use mh-exec-daemon to - run flists. This means we don't have to remember to expand the MH - executable in the mh-progs path. - (mh-exec-cmd-daemon): Return the new process object produced. - -2003-05-06 Satyaki Das - - * mh-e.el (mh-folder-font-lock-unseen): Use mh-seq-list to do - unseen sequence highlighting instead of reading the .mh_sequences - file from disk every time. - -2003-05-05 Satyaki Das - - * mh-utils.el (mh-show-sequence-map): Add key binding for S' - (closes SF #732825). - - * mh-e.el (mh-sequence-map): Ditto. - (mh-help-messages): Updated for S'. - -2003-05-04 Satyaki Das - - * mh-index.el (mh-index-write-data): The with-temp-buffer macro - is a bit better than write-file, so use that instead. - -2003-05-03 Satyaki Das - - * mh-index.el (mh-index-update-maps, mh-index-search) - (mh-index-sequenced-messages): Write index data to disk. This - allows us to recover index folder information if Emacs is - restarted, or the index folder is visited after the buffer has - been killed (closes SF #701762). - (mh-index-write-data, mh-index-read-data) - (mh-index-write-hashtable, mh-index-read-hashtable): Functions to - store and read index data information to disk. - (mh-index-insert-folder-headers, mh-index-group-by-folder): We - can no longer use object identity to compare strings, since they - might have been read back from disk. - - * mh-e.el (mh-index-data-file): New variable that stores the name - of the file that keeps track of index folder data. - (mh-make-folder): Read index folder data if available. - - * mh-utils.el (mh-show, mh-summary-height, mh-modify): Make - checkdoc happy. - - * mh-seq.el (mh-tick-add-overlay): Rearrange code to make code - more uniform. - - * mh-loaddefs.el: Regenerated. - -2003-05-02 Satyaki Das - - * mh-seq.el (mh-tick-add-overlay): If a message with a short scan - line is ticked, then the highlighting didn't extend to the right - margin. This change fixes that. - -2003-05-01 Bill Wohler - - * mh-e.el (mh-help-messages): Added brackets around / and - downcased limit to be consistent with other commands with - punctuation keybindings. Don't document aliases. - -2003-05-01 Satyaki Das - - * mh-loaddefs.el: Regenerated. - - * mh-seq.el (mh-read-range): Fix comment. - -2003-04-30 Mark D. Baushke - - * mh-e.el (mh-help-messages): Better documentation for the F map. - -2003-04-30 Satyaki Das - - * mh-utils.el (mh-find-path): Cache folder names so that - folder name completion is always fast. - (mh-flists-partial-line, mh-flists-process): Variables used for - pre-caching folder names. - (mh-collect-folder-names, mh-collect-folder-names-filter) - (mh-populate-sub-folders-cache): Functions to pre-cache folder - names. - (mh-exec-cmd): Produce more info in *MH-E Log*. - - * mh-index.el (mh-index-search): Call the correct function. - (mh-index-sequenced-messages): If folders is nil, then all mail - is searched. The change restores that. - -2003-04-30 Peter S Galbraith - - * mh-customize.el (mh-summary-height): Move variable integer out - of defcustom, and instead specify that `nil' means to calculate - that size dynamically. Fixes SF #723267. - - * mh-utils.el (mh-summary-height): New function. Return ideal - mh-summary-height value for current frame height. - (mh-show-msg): Use it. - -2003-04-30 Mark D. Baushke - - * mh-index.el (mh-index-ticked-messages): Fix prompt and - description string. - (mh-index-new-messages): Ditto. - - * mh-loaddefs.el: Regenerated. - - * mh-index.el (mh-index-sequenced-messages): Renamed from - mh-index-new-messages with minor argument change. - (mh-index-new-messages): Implement by calling - mh-index-sequenced-messages with the appropriate arguments. - (mh-index-ticked-messages): New function. Does the same thing as - mh-index-new-messages, but on its own set of folders and using the - mh-tick-seq instead of mh-unseen-seq. - - * mh-e.el (mh-folder-map): Add "F'" to the map for - mh-index-ticked-messages. - (mh-help-messages): Replace broken [t]hread with [n]ew messages. - - * mh-customize.el (mh-index-ticked-messages-folders): New user - customizable flag that controls the folders to be searched by - mh-index-ticked-messages. - - * mh-utils.el (mh-show-index-ticked-messages): Wrapper for - mh-index-ticked-messages. - (mh-show-folder-map): Add "F'" to the map for - mh-index-ticked-messages. - -2003-04-30 Satyaki Das - - * mh-index.el (mh-index-search): The old cur in the source folder - might not exist. This could cause mh-exec-cmd to fail. So don't - add an error message in that case. - -2003-04-29 Satyaki Das - - * mh-e.el (mh-folder-from-address): Modified to allow multiple - Cc: headers to work properly. - (mh-inc-folder, mh-visit-folder): Fix an off by one error. - - * mh-utils.el (mh-notate): Update the scan line map. This fixes a - tiny bug. In threaded view, if a message is replied to then the - message is notated with a "-". Now if inc is done then the "-" - added is lost. The change fixes this. - - * mh-seq.el (mh-translate-range): Use the correct function. - (mh-thread-update-scan-line-map): New function that updates the - scan line map when a message is notated. - -2003-04-28 Satyaki Das - - * mh-index.el (mh-index-parse-search-regexp): Avoid compiler - warning in GNU Emacs 21.3. - - * mh-seq.el (mh-widen): Ditto. - -2003-04-28 Satyaki Das - - * mh-customize.el (mh-interpret-number-as-range-flag): New user - customizable flag that controls whether a single number, N is - interpreted as the range last:N. - - * mh-seq.el (mh-read-range): Generalize it for use when reading - range to scan. - (mh-interactive-range): Modified to use the new mh-read-range. - - * mh-speed.el (mh-speed-view): Use mh-read-range instead of the - now removed mh-read-msg-range function. - - * mh-funcs.el (mh-pack-folder): Ditto. - - * mh-e.el (mh-rescan-folder, mh-visit-folder): Ditto. - (mh-read-msg-range): Removed. - - * mh-loaddefs.el: Regenerated - -2003-04-27 Satyaki Das - - * mh-loaddefs.el: Regenerated. - - * mh-seq.el (mh-range-completion-function): Fix checkdoc warning. - (mh-iterate-on-range): Mention that the macro can iterate over a - MH message range too. - -2003-04-27 Bill Wohler - - * mh-unit.el (mh-unit): As it turns out, lm-crack-copyright has - been updated to handle multiple-line copyrights in 21.3, so - updated code to run lm-verify only if user has 21.3 or greater. - Delete buffers after use, unless user already had buffer open. - -2003-04-27 Satyaki Das - - * mh-loaddefs.el: Regenerated. - - * mh-index.el (mh-index-search): The MH command "refile" changes - cur. The change restores cur in source folders. - (mh-index-new-messages): Use the appropriate arguments for - mh-read-seq. - - * mh-seq.el (mh-read-seq-default, mh-read-seq): Restore these - functions to just read sequence names. - (mh-range-seq-names, mh-range-history, mh-range-completion-map) - (mh-range-completion-function, mh-read-range): New function which - reads MH range with completion and history. - (mh-interactive-range): Use mh-read-range instead of - mh-read-seq-default. - (mh-put-msg-in-seq): Change documentation about MH message range. - - * mh-junk.el (mh-junk-blacklist, mh-junk-whitelist): Change - documentation about MH message range. - - * mh-funcs.el (mh-copy-msg, mh-print-msg): Ditto. - - * mh-e.el (mh-delete-msg, mh-delete-msg-no-motion) - (mh-refile-msg, mh-undo, mh-delete-msg-from-seq): Ditto. - - * mh-comp.el (mh-forward): Ditto. - -2003-04-26 Satyaki Das - - * mh-comp.el, mh-e.el, mh-funcs.el, mh-junk.el, mh-seq.el: - Replace msg-or-seq with range everywhere. - - * mh-loaddefs.el: Regenerated. - -2003-04-25 Satyaki Das - - * mh-e.el (mh-index-sequence-search-flag, mh-folder-mode): New - local variable to remember that a folder buffer contains results - from a sequence search. This is needed so that "C-u F i" will work - as expected. - (mh-visit-folder): Create sequences in the index folder. - (mh-process-commands, mh-delete-msg-from-seq): If speedbar is on - then update the speedbar message counts immediately. - (mh-delete-msg-from-seq): Make the code faster by calling "mark" - just once. Also update source folder sequence if messages are - being deleted from a sequence in an index folder. - (mh-undefine-sequence): Simplified to remove the speedbar updating - code. Also DTRT and don't change any sequence when called with an - empty list of messages. - (mh-refile-msg, mh-delete-msg): Move to next message only if the - current message has been deleted or refiled, as the case may be. - - * mh-utils.el (mh-show-msg): Update the message counts in the - speedbar, if it is on, immediately. - (mh-speed-flists-active-p, mh-speed-flists-inhibit-flag): A new - flag has been added which inhibits updating of the speedbar. This - is used to avoid needless speedbar updates when - mh-execute-commands is called in index folders. - - * mh-speed.el (mh-speed-flists): Extended so that multiple - folders can be given as arguments. Also the code that kept track - of the current folder, needed since flists adds an extra ?+ char - at the end of the current folder name, wasn't entirely correct. - That has also been fixed. - - * mh-seq.el (mh-delete-seq, mh-put-msg-in-seq): Modified so that - sequence in source folder is updated if we delete a sequence in an - index folder. - (mh-read-seq, mh-read-seq-default, mh-translate-range) - (mh-interactive-msg-or-seq): The mh-interactive-msg-or-seq - function can read in an arbitrary MH message range. - (mh-iterate-on-msg-or-seq): The macro has been extended to work on - a MH range. - (mh-subject-to-sequence, mh-subject-to-sequence-unthreaded) - (mh-subject-to-sequence-threaded, mh-thread-find-msg-subject): Fix - the mh-subject-to-sequence function so that it will work in - threaded folders too. - (mh-tick-add-overlay): Fix a leak of overlays. - (mh-toggle-tick): Ticking, or unticking, messages in the index - folder is propagated to the source folders (closes SF #709664). - - * mh-index.el (mh-flists-results-folder, mh-flists-sequence) - (mh-flists-called-flag): New variables to implement searching for - arbitrary sequences. - (mh-index-generate-pretty-name): Updated so that folder names are - generated for flists search that can take any sequence name. - (mh-index-search): Since sequences are now properly maintained the - unseen-flag argument isn't needed and hence removed. Also redoing - a sequence search with "C-u F i" is handled correctly. Finally - the speedbar is updated to reflect the new index folder created. - (mh-index-create-sequences): New function that creates sequences - in the index folder. - (mh-index-matching-source-msgs, mh-index-execute-commands): - Improved so that scan lines for refiled/deleted messages are - removed from the source folders as well. - (mh-index-add-to-sequence, mh-index-delete-from-sequence): New - functions to update sequences in source folder to reflect changes - in index folder. - (mh-index-quote-for-shell): A utility function to that quotes - characters with special meaning to /bin/sh. - (mh-flists-execute, mh-index-new-messages): Updated to search for - arbitrary sequences (closes SF #718833). - - * mh-loaddefs.el: Regenerated. - -2003-04-25 Bill Wohler - - * mh-customize.el (mh-kill-folder-suppress-prompt-hook): New hook - used by mh-kill-folder to suppress the prompt. - - * mh-funcs.el (mh-kill-folder): Suppress prompt not if - mh-index-data is non-nil, but if any functions in - mh-kill-folder-suppress-prompt-hook return non-nil. - - * mh-index.el (mh-index-p): New function with returns non-nil if - the current folder was generated by an index search for use by - mh-kill-folder-suppress-prompt-hook - - * mh-unit.el (mh-unit): Commented out lm-verify step until code - updated to handle split Copyright lines. - - * mh-e.el (mh-version): Set to 7.3+cvs. - -2003-04-24 Bill Wohler - - Released MH-E version 7.3. - - * MH-E-NEWS, README: Updated for release 7.3. - - * mh-e.el (Version, mh-version): Updated for release 7.3. - -2003-04-24 Satyaki Das - - * mh-xemacs-compat.el (mh-utils): Require mh-utils at compile - time, since the mh-do-in-xemacs macro is used. - - * mh-inc.el (cl): Require cl at compile time since we are using - the loop and setf macros. - -2003-04-24 Satyaki Das - - * mh-unit.el (mh-files): Fix the list of files to check. - -2003-04-24 Bill Wohler - - * ChangeLog: Appended copyright to end of file. - - * Makefile: Added copyright and license. - - * README: Added copyright. - - * import-emacs: Changed copyright from Newt Software to Bill - Wohler and use license from mh-e.el, except that this file is - a part of MH-E, not GNU Emacs. - - * mh-alias.el: Updated copyright so that it doesn't wrap upon - advice from Richard Stallman who said to use two-digit years when - they are surrounded by 4-digit years that are in the same century - and to break up copyrights on multiple lines. - * mh-comp.el: Ditto. - * mh-e.el: Ditto. - * mh-funcs.el: Ditto. - * mh-identity.el: Ditto. - * mh-mime.el: Ditto. - * mh-seq.el: Ditto. - * mh-utils.el: Ditto. - * mh-xemacs-compat.el: Ditto. - - * mh-unit.el: New file. Unit tests for MH-E. This version merely - runs checkdoc and lm-verify which is useful before releasing the - software. It can and should be expanded to do real unit tests. - -2003-04-22 Mark D Baushke - - * mh-alias.el: Update Copyright. - * mh-comp.el: Ditto. - * mh-customize.el: Ditto. - * mh-e.el: Ditto. - * mh-funcs.el: Ditto. - * mh-identity.el: Ditto. - * mh-index.el: Ditto. - * mh-mime.el: Ditto. - * mh-pick.el: Ditto. - * mh-seq.el: Ditto. - * mh-speed.el: Ditto. - * mh-utils.el: Ditto. - * mh-xemacs-compat.el: Ditto. - -2003-04-22 Satyaki Das - - * mh-utils.el (mh-normalize-folder-name): Make the completion - code work properly with XEmacs. This change is neeeded since - split-string behaves differently in XEmacs than it does in GNU - Emacs. - (mh-exec-cmd-error): Add a comment, so that we change it later on. - -2003-04-18 Steve Youngs - - * mh-xemacs-icons.el (mh-xemacs-icons): Provide 'mh-xemacs-icons' - not 'mh-xemacs-toolbar'. - - * mh-xemacs-compat.el (mh-xemacs-toolbar): Remove require, it's - now called 'mh-xemacs-icons' and it is required from - 'mh-customize'. - - * mh-customize.el: Require 'mh-xemacs-icons' instead of - 'mh-xemacs-toolbar'. - -2003-04-17 Peter S Galbraith - - * mh-xemacs-icons.el: New file (renamed from mh-xemacs-toolbar.el). - Holds XEmacs icons. - - * mh-xemacs-toolbar.el: Deleted. - - * Makefile: Incorporate the file renaming. - -2003-04-15 Bill Wohler - - * mh-comp.el (mh-forward): Pass a list of messages into - mh-compose-and-send-mail instead of msg-or-seq. - (mh-annotate-msg): The previous version called - mh-iterate-on-msg-or-seq in the letter buffer. The new version - simply adds the ability to operate on message lists. Thanks to - Satyaki for the fix and suggestion for passing a list from - mh-forward. - -2003-04-14 Bill Wohler - - * mh-comp.el (mh-annotate-msg): Updated to handle msg-or-seq for - mh-forward was passing a msg-or-seq to mh-compose-and-send-mail - which in turn passed the msg-or-seq to mh-annotate-msg. In - particular, forwarding a region failed. Note that the msgs - argument in much of mh-comp.el should really be converted to - msg-or-seq accordingly. But not now, unless something is broken as - was the case here. We can revamp after the release. - -2003-04-13 Bill Wohler - - * mh-funcs.el (mh-kill-folder): Added space after prompt to give - the (yes or no) bit a little elbow room. - - * mh-xemacs-toolbar.el: Removing a copyright is a no-no. - Reinstated Steve's copyright. - -2003-04-12 Satyaki Das - - * mh-utils.el (mh-do-in-gnu-emacs, mh-do-in-xemacs): Add - indentation hooks for the macros. - -2003-04-11 Bill Wohler - - * mh-alias.el, mh-comp.el, mh-customize.el, mh-funcs.el, - mh-identity.el, mh-inc.el, mh-index.el, mh-junk.el, mh-utils.el: - Merged in changes from CVS GNU Emacs. These included the removal - of trailing whitespace. - - * mh-customize.el: The "anti-entropy" check-in. Moved groups - around slightly to reflect commentary. Moved defcustoms around - to preserve alphabetization. Big diff, little content. - (mh-xemacs-use-toolbar-flag): Doc fix. - (mh-xemacs-toolbar-position): Fixed typo in docstring. - (mh-default-folder-list): Updated docstring to reflect new Check - Recipient tag. Also, set type of Address to regexp. - (mh-x-mailer-string): Moved to mh-comp.el where it is used. - - * mh-comp.el (mh-x-mailer-string): Moved here from customize.el. - Not quite sure how it got to mh-customize.el in the first place. - - * mh-e.el (mh-folder-folder-menu): Added Folder -> View New - Messages menu item. - - * mh-utils.el (mh-show-folder-menu): Ditto. - - * mh-inc.el: Added Change Log comment (lm-verify fix). - - * mh-index.el (mh-index-search): Added documentation about prefix - argument for users, in addition to documentation for programmers. - - * mh-mime.el (mh-edit-mhn, mh-edit-mhn, mh-mml-to-mime): Docstring - fixes germaine to the change whereby we now check for MIME - directives before sending. - - * mh-xemacs-toolbar.el: Fixed copyright. Added Change Log comment - (lm-verify fix). Added standard MH-E local variables. Removed - time-stamp stuff. - -2003-04-11 Satyaki Das - - * mh-seq.el (mh-iterate-on-msg-or-seq): Add a missed comma. - -2003-04-10 Satyaki Das - - * mh-index.el (mh-index-visit-folder): Prompt before reusing - existing folder buffer. - - * mh-xemacs-toolbar.el (require): Require mh-utils at compile - time to avoid compilation error when doing "make bootstrap" in - CVS Emacs. - - * mh-inc.el (mh-inc-spool-list): Declare it so that a compile - time warning is avoided when doing "make bootstrap" in CVS Emacs. - -2003-04-10 Peter S Galbraith - - * mh-inc.el (mh-inc-spool-generator): Changed to a defun instead - of a defmacro, applying Satyaki's patch. - (mh-inc-spool-def-key): same. - (mh-inc-spool-make): same. - - * mh-utils.el: define-key "I" in mh-show-mode-map for - mh-inc-spool-map. - - * mh-comp.el (mh-modify-header-field): Remove debug message. - -2003-04-10 Peter S Galbraith - - * mh-inc.el (mh-inc-spool-map-help): Default to nil. - (mh-inc-spool-map): Make "?" key display message when - `mh-inc-spool-map-help' is nil (instead of mh-inc-spool-map-help - containing the message). - - * mh-e.el: require mh-inc.el - * mh-e.el: define-key "I" in mh-folder-mode-map for mh-inc-spool-map. - (mh-help-messages): Add help string for "I" key. - -2003-04-09 Peter S Galbraith - - * mh-inc.el: New file. New feature to `inc' mail from various - spool files into different folders. - - * mh-loaddefs.el: Regenerate for mh-inc's mh-inc-spool-list-set. - - * Makefile (MH-E-IMG): Add highlight icon. - (MH-E-SRC): Add mh-inc.el file. - - * mh-customize.el (mh-inc-spool-list): New variable for new - feature to `inc' mail from various spool files into different - folders. - -2003-04-09 Satyaki Das - - * mh-utils.el (mh-mail-delivery-buffer): Add a defconst for - mh-mail-delivery-buffer. - - * mh-comp.el (mh-send-letter): Use mh-mail-delivery-buffer. - - * mh-mime.el (mh-small-image-p): Add mh-funcall-if-exists to - avoid compiler warning in GNU Emacs. - -2003-04-08 Satyaki Das - - * mh-mime.el (mh-small-image-p): Make the function slightly more - error-resistant in XEmacs. - - * mh-seq.el (mh-narrow-to-seq, mh-widen): Update tool-bar-map in - the show buffer if needed. This allows us to display the widen - button in the show buffer only when the folder is narrowed. - - * mh-customize.el (mh-tool-bar-define): Changed so that a - separate tool-bar-map is used in show-mode when folder is - narrowed to a sequence. - -2003-04-08 Satyaki Das - - * mh-seq.el (mh-iterate-on-msg-or-seq): Reinstate the use of - make-symbol since using gensym causes compiler warnings in CVS - Emacs. - -2003-04-08 Bill Wohler - - * mh-comp.el (mh-forward): Function didn't handle a region of - messages. Use new function mh-msg-or-seq-to-msg-list to get a list - of messages in all circumstances. Also, use mh-coalesce-msg-list - on message list before submitting to forw since this should always - be done when calling a program to reduce the chance of exceeding - command-line limits. - - * mh-seq.el (mh-iterate-on-msg-or-seq): Backed out previous - change. A nil msg-or-seq should mean no messages, and Satyaki is - going to use gensym instead of make-symbol. - (mh-msg-or-seq-to-msg-list): New function to convert a msg-or-seq - to a list of message numbers. - - * mh-e.el (mh-coalesce-msg-list): Touched up the docstring a - little. - - * mh-funcs.el (mh-print-msg): Can now print regions, message - lists, sequences and, of course, single messages. This version - works a little differently from the old version. Instead of - calling mhl | lpr once on all messages, mhl | lpr is called once - per message in order to put each message's number in the header. - Thanks to Satyaki for some code and ideas. - - * mh-seq.el (mh-iterate-on-msg-or-seq): The argument msg-or-seq - can now be nil which means the current message. Make local symbols - so that local variables don't step on user's symbols (the msgs - symbol got me). - -2003-04-06 Bill Wohler - - * mh-comp.el (mh-forward): Updated docstrings to indicate that a - list of messages is acceptable as well. - - * mh-e.el (mh-delete-msg, mh-delete-msg-no-motion, mh-refile-msg) - (mh-undo, mh-notate-user-sequences, mh-delete-msg-from-seq): Ditto. - - * mh-funcs.el (mh-copy-msg, mh-print-msg): Ditto. - - * mh-junk.el (mh-junk-blacklist, mh-junk-whitelist): Ditto. - - * mh-seq.el (mh-put-msg-in-seq, mh-iterate-on-msg-or-seq) - (mh-interactive-msg-or-seq): Ditto. - -2003-04-06 Satyaki Das - - * mh-junk.el (mh-junk-blacklist, mh-junk-whitelist): Call - mh-refile-a-msg and mh-delete-a-msg with nil as the message - number since that is more efficient. - - * mh-seq.el (mh-iterate-on-msg-or-seq): Extended so that it will - handle lists of messages numbers as well. - (mh-put-msg-in-seq): Use mh-iterate-on-msg-or-seq to simplify the - function. - - * mh-funcs.el (mh-copy-msg): Same as above. - - * mh-e.el (mh-refile-msg): Make it more efficient. Using nil in - mh-refile-a-msg avoids needing to re-search-forward to that - message. - (mh-undo): Fix typo in interactive spec. - (mh-notate-user-sequences): Generalize the function to take a - msg-or-seq as argument. - (mh-delete-msg-from-seq): Extend the function so that it is now - able to subtract messages belonging in one sequence from another. - (mh-undo): Unify the region and sequence handling. The message - number branch of the function does extra stuff, so we can't merge - that in. - -2003-04-06 Bill Wohler - - * mh-comp.el (mh-forward): Use mh-interactive-msg-or-seq. Inserted - consistent verbiage in docstring for msg-or-seq. - (mh-reply): Don't mention default in opening line in all - docstrings. - - * mh-e.el (mh-delete-msg, mh-refile-msg) - (mh-undo, mh-delete-msg-from-seq): Use mh-interactive-msg-or-seq. - Inserted consistent verbiage in docstring for msg-or-seq. In - mh-delete-msg-from-seq, renamed msg-or-region to msg-or-seq. - - * mh-funcs.el (mh-copy-msg, mh-print-msg): Use - mh-interactive-msg-or-seq. Inserted consistent verbiage in - docstring for msg-or-seq. - - * mh-junk.el (mh-junk-blacklist, mh-junk-whitelist): Inserted - consistent verbiage in docstring for msg-or-seq. - - * mh-seq.el (mh-msg-is-in-seq): Don't mention default in opening - line in all docstrings. - (mh-put-msg-in-seq): Use mh-interactive-msg-or-seq. Inserted - consistent verbiage in docstring for msg-or-seq. - - * mh-e.el (mh-delete-msg, mh-delete-msg-no-motion, mh-refile-msg): - Rewritten to use new mh-interactive-msg-or-seq function and - mh-iterate-on-msg-or-seq macro. mh-delete-msg-no-motion gained the - ability to operate on regions. - - * mh-junk.el (mh-junk-blacklist, mh-junk-whitelist): Rewritten to - use new mh-interactive-msg-or-seq function and - mh-iterate-on-msg-or-seq macro thereby gaining the ability to - operate on sequences or regions. - - * mh-seq.el (mh-iterate-on-msg-or-seq): New macro to execute code - on a message, a region of messages, or a sequence. This macro - should be in all functions that operate on messages to provide a - uniform interface. - (mh-interactive-msg-or-seq): New function used in interactive - calls to obtain a message number, region, or sequence. This - function should be in all functions that operate on messages to - provide a uniform interface. - - * mh-utils.el (with-mh-folder-updating, mh-in-show-buffer): Use - 'defun lisp-indent-hook property instead of 1 to fix indentation - of these macros. - -2003-04-05 Peter S Galbraith - - * mh-loaddefs.el: Regenerated. - * mh-funcs.el (mh-ephem-message): autoload. - -2003-04-04 Peter S Galbraith - - * mh-e.el (mh-folder-from-address): Minor Fix. Wrong ending of - `when' block. - -2003-04-04 Satyaki Das - - * mh-mime.el (mh-mml-directive-present-p): The regexp has been - modified to recognize directives to encrypt/sign messages. - -2003-04-03 Mark D. Baushke - - * mh-e.el (mh-folder-from-address): E-mail messages missing the - To: field, but which have a Cc: field should also be handled. - -2003-04-03 Bill Wohler - - * mh-e.el (mh-inc-folder): Modified the prompt text to read - better. - - * mh-comp.el (mh-forward): Deleted local variable `compose'. - Deleted obsolete setting of mh-{mmh|mml}-compose-insert-flag. - (mh-letter-menu): Use mh-{mmh|mml}-directive-present-p instead of - obsolete. mh-{mmh|mml}-compose-insert-flag. - (mh-letter-mode): Deleted obsolete setting of - mh-{mmh|mml}-compose-insert-flag. - (mh-send-letter): This function now automatically runs the - directive-to-MIME conversion if any directives are detected, - rather than relying on the unreliable - mh-{mmh|mml}-compose-insert-flag variables. Updated docstring - accordingly. - - * mh-identity.el (mh-insert-identity): Use - mh-{mmh|mml}-directive-present-p instead of obsolete. - mh-{mmh|mml}-compose-insert-flag. - - * mh-loaddefs.el: Regenerated. - - * mh-mime.el (mh-mhn-compose-type, mh-mhn-compose-external-type) - (mh-mhn-compose-forw, mh-edit-mhn, mh-mml-to-mime) - (mh-mml-forward-message, mh-mml-attach-file) - (mh-mml-secure-message-sign-pgpmime) - (mh-mml-secure-message-encrypt-pgpmime): Deleted obsolete setting - of mh-{mmh|mml}-compose-insert-flag. - (mh-mml-directive-present-p): Checkdoc fix. - - * mh-utils.el (mh-mhn-compose-insert-flag, - mh-mml-compose-insert-flag): Deleted. Replaced by - mh-{mhn|mml}-directive-present-p. - -2003-04-03 Mark D. Baushke - - * mh-e.el (mh-folder-from-address): Fix minor problem with To: - address processing. - - * mh-e.el (mh-folder-from-address): Bugfix match ?+ character not - a "?+" string. - -2003-04-03 Peter S Galbraith - - * mh-e.el (mh-inc-folder): Add second optional argument for the - folder to inc new mail into instead of mh-inbox. - -2003-04-03 Peter S Galbraith - - * mh-e.el (mh-folder-from-address): The first match found in - `mh-default-folder-list' is used. - - * mh-customize.el (mh-default-folder-list): Tweak docs - -2003-04-03 Satyaki Das - - * mh-loaddefs.el: Regenerated. - - * mh-mime.el (mh-mhn-directive-present-p): New function to test if - a MHN directive is present in the current buffer. - (mh-mml-directive-present-p): New function to test if a MML - directive is present in the current buffer. - - * mh-comp.el (mh-letter-mode): Originally this function checked if - a #forw directive was present and set mh-mhn-compose-insert-flag - to t. The modification generalizes this test so that one of the - variables mh-{mml|mhn}-compose-insert-flag will get set if we have - any sort of MHN or MML directive is already present. - - * mh-seq.el (tool-bar-map): Add a defvar to avoid compiler - warnings in CVS version of GNU Emacs. - - * mh-utils.el (tool-bar-map): Same as above. - - * mh-e.el (tool-bar-map): same as above. - -2003-04-02 Satyaki Das - - * mh-xemacs-toolbar.el (mh-xemacs-toolbar-toggle-tick-icon): - Change color to match mh-folder-tick-face. - - * highlight.xpm: Same as above. - -2003-04-02 Peter S Galbraith - - * mh-e.el (mh-folder-from-address): Check `mh-default-folder-list' - for cases against the recipient instead of the originator. - - * mh-customize.el (mh-default-folder-list): Add extra boolean flag - to conditionally check the recipient address instead of the - originator. - -2003-04-02 Peter S Galbraith - - * mh-customize.el (mh-folder-tick-face): Change tick highlight - face to a background yellow-green, as suggested by Bill. - -2003-04-01 Peter S Galbraith - - * highlight.xpm: New icon for mh-toggle-tick. - - * mh-xemacs-toolbar.el (mh-xemacs-icon-map): Add tool-bar entry - for mh-toggle-tick. - (mh-xemacs-toolbar-toggle-tick-icon): New constant. - - * mh-customize.el: Add tool-bar entry for mh-toggle-tick. - -2003-03-31 Satyaki Das - - * mh-loaddefs.el: Regenerated. - - * mh-utils.el (mh-show-narrow-to-tick, mh-show-limit-map) - (mh-show-sequence-menu): Add new interactive function - mh-show-narrow-to-tick callable from the show buffer and arrange - for a key binding and a menu entry. - - * mh-seq.el (mh-narrow-to-tick): New interactive function that - narrows to the tick sequence. - - * mh-e.el (mh-folder-sequence-menu, mh-limit-map): Arrange for a - key binding and a menu entry for mh-narrow-to-tick. - - * mh-comp.el (mh-letter-mode): Enable undo since we could be - reusing a show buffer where undo is disabled (closes SF #712777). - -2003-03-31 Peter S Galbraith - - * mh-e.el (mh-folder-sequence-menu): Add entry for mh-toggle-tick. - - * mh-utils.el (mh-show-sequence-menu): Add entry for - mh-show-toggle-tick. - -2003-03-28 Satyaki Das - - * mh-seq.el (mh-delete-seq): If the tick sequence is killed with - "S k" then the highlighting wasn't getting removed. The change - fixes this. - -2003-03-27 Satyaki Das - - * mh-e.el (mh-notate-user-sequences): Extend it so that only the - messages in a part of the folder are notated. - (mh-delete-msg-from-seq): Extend it so that it will delete all - messages in the marked region. - (mh-delete-a-msg-from-seq): New function that deletes a single - message from a sequence. - (mh-clear-text-properties): If there is a ticked unseen message - and the message is removed from the unseen list with "S d" then - unticking the message doesn't change the highlight. This change - fixes this. - -2003-03-27 Peter S Galbraith - - * mh-xemacs-toolbar.el (mh-xemacs-toolbar-*-icon): Use original - 24x24 icons, changing background only. - -2003-03-27 Satyaki Das - - * mh-junk.el (mh-spamassassin-identify-spammers): Remove unused - variable buffer-exists. - (mh-spamassassin-identify-spammers): Remove unused variable user. - - * mh-customize.el (mh-junk-choose): Tweak it to remove XEmacs - compiler warning. - -2003-03-26 Satyaki Das - - * mh-seq.el (mh-thread-print-scan-lines): Handling of a boundary - condition when messages from the last source folder had been - removed was incorrect. This caused a folder header to appear - without any messages listed under it. This change fixes this. - (mh-thread-forget-message): Remove the entry from the scan line - table as well. This is needed for proper display of threaded view - of index folders. - -2003-03-26 Bill Wohler - - * Makefile, README, import-emacs, mh-alias.el, mh-comp.el, - mh-customize.el, mh-e.el, mh-funcs.el, mh-identity.el, - mh-index.el, mh-loaddefs.el, mh-mime.el, mh-pick.el, mh-seq.el, - mh-speed.el, mh-utils.el, mh-xemacs-compat.el, - mh-xemacs-toolbar.el: Removed RCS keywords per Emacs conventions - (closes SF #680731). - - -2003-03-26 Satyaki Das - - * mh-index.el: Fix commentary to mention that mairix is supported - as well. - - * mh-loaddefs.el: Regenerated. - - * mh-utils.el (mh-show-junk-blacklist, mh-show-junk-whitelist): - Interactive functions callable from the show buffer. - (mh-show-junk-map): Key bindings in show mode. - - * mh-e.el (mh-junk-map): Key bindings to call spam program. - (mh-help-messages): Update help text. - - * mh-customize.el (mh-junk): New customization group for spam - program interface. - (mh-junk-choice, mh-junk-function-alist, mh-junk-choose): - Functions and variables that decide which junk program is used. - (mh-junk-program, mh-junk-mail-folder): User customizable - variables that control the choice of spam program and the action - performed on received spam. - - * Makefile (MH-E-SRC): Add mh-junk.el. - -2003-03-26 Satyaki Das - - * mh-loaddefs.el: Regenerated. - - * mh-utils.el (mh-show-toggle-tick, mh-show-mode-map): New - interactive function callable from the show buffer and a key - binding for it. - - * mh-seq.el (mh-delete-seq): Remove highlight from tick sequence. - (mh-put-msg-in-seq): Disable adding messages to tick sequence. - (mh-widen): Reset mh-tick-seq-changed-when-narrowed-flag. - (mh-tick-add-overlay, mh-tick-remove-overlay, mh-notate-tick) - (mh-toggle-tick): New functions to highlight/unhighlight tick - sequence and the interactive function that is used to toggle - tick. - - * mh-e.el (mh-tick-seq-changed-when-narrowed-flag): New variable - that remembers if we are narrowed to the tick sequence. In that - case the highlighting isn't shown, since it adds no extra info. - (mh-folder-mode): Initialize mh-tick-seq-changed-when-narrowed-flag. - (mh-notate-user-sequences): Notate the tick sequence. - (mh-internal-seq): Treat mh-tick-seq like an internal sequence. - (mh-delete-msg-from-seq): Don't allow deletion from tick sequence. - (mh-folder-mode-map): Add key binding for "'" - - * mh-customize.el (mh-tick-seq, mh-folder-tick-face): New - customizable variables that contain the name of the tick sequence - and the face to use to highlight it. - -2003-03-25 Satyaki Das - - * mh-loaddefs.el: Regenerated. - - * mh-seq.el (mh-thread-print-scan-lines): New function which - prints out thread tree. It maintains the original folder info if - the folder was created by index search (closes SF #709672). - (mh-copy-seq-to-eob, mh-thread-inc, mh-thread-folder): Use - factored out function mh-thread-print-scan-lines. - (mh-toggle-threads): Since threading is allowed in index folders - there can be lines in the folder which aren't valid message scan - lines. So it is OK for mh-get-msg-num to fail once in a while. - - * mh-index.el (mh-index-update-maps): Make the parsing of messages - that need to annotated with the X-MHE-Checksum header more robust. - If the search yielded no results then an error was being produced. - (mh-index-search): Enable automatic threading of index folders if - mh-show-threads-flag is non-nil (closes SF #709667). - (mh-index-next-folder): Relax error checking since index folder - can be threaded while the source folder info is visible. - (mh-index-group-by-folder): New function that is used in - mh-thread-folder to keep source folder info visible during - threading. - -2003-03-25 Bill Wohler - - * mh-loaddefs.el: Regenerated. - - * mh-customize.el (mh-index-new-messages-folders): New variable - that controls which folders "F n (mh-index-new-messages)" - accesses. Was mh-flists-search-folders. - - * mh-index.el (mh-flists-search-folders): Still used internally, - but users now use new option mh-index-new-messages-folders. - Removed documentation since to avoid duplication with - mh-index-new-messages-folders. - (mh-flists-recursive-search-flag): Deleted. Use - mh-recursive-folders-flag instead. - (mh-flists-execute): Updated docs to specify which global - variables are used. Use mh-recursive-folders-flag instead of - mh-flists-recursive-search-flag. - (mh-index-new-messages): Edited doc, and refer to new option - mh-index-new-messages-folders. Ditto within code. Don't need to - prepend + to folder name as flists does that for us. Use - -2003-03-24 Satyaki Das - - * mh-e.el (mh-refile-msg): Add optional argument that controls - whether mh-last-destination-folder is updated or not. - -2003-03-22 Satyaki Das - - * mh-customize.el (mh-tool-bar-define): Fix a problem in the - XEmacs version which caused the show mode toolbar to have the - buttons in the reverse order. Also the add-hooks are no longer - needed since mh-toolbar-init is called in the appropriate modes. - - * mh-comp.el (mh-letter-mode): Call mh-toolbar-init in XEmacs to - initialize toolbar. - - * mh-utils.el (mh-show-mode): Same as above. - - * mh-e.el (mh-folder-mode): Same as above. - -2003-03-21 Satyaki Das - - * mh-utils.el (mh-exec-cmd-env-daemon): New function which - executes a command asynchronously with its own environment. - - * mh-comp.el (mh-redistribute): The function has been modified so - that /bin/sh isn't used to run send. It has also been refactored - so that the same code isn't repeated. - -2003-03-21 Bill Wohler - - * mh-customize.el (mh-invisible-header-fields): Added X-Bogosity - for bogofilter. - -2003-03-21 Satyaki Das - - * mh-loaddefs.el: Regenerated. - - * mh-xemacs-toolbar.el: Remove the code since that gets generated - when mh-tool-bar-define is expanded. - (mh-xemacs-icon-map): A alist to map GNU Emacs icon names to the - actual icons to be used in XEmacs. This is used in - mh-tool-bar-define. - - * mh-customize.el (mh-toolbar): Use this group in XEmacs as well. - (mh-tool-bar-item-*): All these constants have been removed since - they aren't needed in the new scheme. - (mh-tool-bar-reply-3-buttons-flag): This variable has been - removed. - (mh-tool-bar-search-function): This is now used in XEmacs as well. - (mh-tool-bar-folder-set, mh-tool-bar-folder-buttons-set) - (mh-tool-bar-letter-buttons-set, mh-tool-bar-show-set) - (mh-tool-bar-letter-set): These functions aren't defined at the - top level any more. - (mh-tool-bar-reply-generator): A macro to generate the required - functions for the three reply buttons. - (mh-tool-bar-search, mh-tool-bar-customize) - (mh-tool-bar-folder-help, mh-tool-bar-letter-help) - (mh-tool-bar-reply-from, mh-show-tool-bar-reply-from) - (mh-tool-bar-reply-to, mh-show-tool-bar-reply-to) - (mh-tool-bar-reply-all, mh-show-tool-bar-reply-all): New - interactive functions that are called when tool bar buttons are - clicked. - (mh-xemacs-use-toolbar-flag, mh-xemacs-toolbar-position): - Additional customizable variables that are present only for - XEmacs. - (mh-tool-bar-define): A macro that generates the required code - for GNU Emacs and XEmacs tool bar. - (mh-tool-bar-define): Define the MH-E tool bar. - -2003-03-17 Satyaki Das - - * mh-seq.el (mh-notate-cur): Notate current message only if it - hasn't been marked for deletion or refiling. - -2003-03-15 Bill Wohler - - * mh-customize.el (mh-invisible-header-fields): Added - X-Spam-Checker-Version. - (mh-auto-fields-list): checkdoc fix. - -2003-03-12 Satyaki Das - - * mh-index.el (mh-index-new-messages): If the destination folder - where the unseen messages are supposed to be copied to was - already present, but MH-E doesn't have it open, then a new folder - was being created. The change fixes this. - (mh-index-update-unseen, mh-flists-recursive-search-flag): Fix - checkdoc warnings. - - * mh-loaddefs.el: Regenerated. - -2003-03-11 Satyaki Das - - * mh-index.el (mh-flists-results-folder): Subfolder under - +mhe-index where the results of the flists call is put. - (mh-index-generate-pretty-name): Make sure that normal index - searching will never use the folder reserved for the flists - results. - (mh-index-search): Add an extra parameter that marks all the - messages in the index folder to the unseen sequence. - (mh-index-update-unseen): Function to keep unseen sequence of - index folder synced with the actual folders from where the - messages were copied. This works only if the unseen messages are - displayed with mh-show. Killing the unseen sequence in the index - folder or adding/removing messages to it doesn't change the - unseen sequence in the source folders yet. - (mh-flists-search-folders): Variable that decides the folders on - which flists is run. - (mh-flists-recursive-search-flag): If non-nil, flists is passed - the -recurse option. - (mh-flists-execute): Function which uses /bin/sh to execute - flists and then print out the list of message files that match. - (mh-index-new-messages): New interactive function which searches - for messages in the unseen sequence (closes SF #701756). - - * mh-utils.el (mh-show-folder-map): Add binding for - mh-index-new-messages. - (mh-show-msg): Update the unseen sequence in the source folder. - - * mh-e.el (mh-folder-font-lock-unseen): The function assumes that - the end of buffer is reached when there isn't a valid scan line - on the current line. This doesn't work in the index folder since - we have lines containing the folder name and empty lines in - between the actual scan lines. The modification removes this - assumption. - (mh-folder-map): Add key binding for "Fn" - - * mh-seq.el (mh-iterate-on-messages-in-region): If the point is - not at the beginning of the line, then the first message in the - region would be missed. The fix avoids this. - - * mh-mime.el (mh-inline-vcard-p): Don't try to inline vcards if - we don't have the right libraries. - -2003-03-10 Satyaki Das - - * mh-e.el (mh-next-undeleted-msg, mh-previous-undeleted-msg) - (mh-next-msg): Add optional argument wait-after-complaining-flag. - If non-nil and there are no undeleted messages after (or before) - the current one, then pause for a second after printing out the - message. - (mh-refile-or-write-again): Modify call to mh-next-msg to use the - wait-after-complaining-flag. - -2003-03-10 Satyaki Das - - * mh-e.el (mh-refile-or-write-again): If mh-next-msg fails to find - a message to go to it prints out a diagnostic, which overwrites - the diagnostic about the folder the message was refiled to. The - change fixes this. - -2003-03-09 Satyaki Das - - * mh-seq.el (mh-widen, mh-narrow-to-seq): Update - mh-narrowed-to-seq before notating sequences. This is a bit - helpful for mh-tick.el. - (mh-put-msg-in-seq): Fix a minor bug. No internal sequence should - be notated -- the original code was doing the right thing only for - the "unseen" sequence. - - * mh-index.el (mh-index-choose): Add autoload cookie for - mh-index-choose. This is needed for GNU Emacs 20.5. - - * mh-loaddefs.el: Regenerated. - -2003-03-09 Bill Wohler - - * mh-mime.el (mh-display-smileys): This function originally had a - test to see if font-lock-maximum-size was bound, but this was - recently removed. The test was put in for a reason; if - font-lock-maximum-size isn't bound, void-variable errors would - ensue. I put the bound test back in. - -2003-03-08 Steve Youngs - - * mh-mime.el (mh-mime-security-button-map): Use 'mh-push-button' - in XEmacs as well. - -2003-03-07 Satyaki Das - - * mh-xemacs-toolbar.el: Declare a whole bunch of stuff for GNU - Emacs, so that we don't get so many compiler warnings. Also - surround calls to set-specifier and toolbar-make-button-list with - mh-funcall-if-exists. Maybe GNU Emacs shouldn't try to compile - this file in the first place. - - * mh-xemacs-compat.el (mh-modeline-glyph): Declare it within - mh-do-in-xemacs to avoid compiler warning in GNU Emacs. - (mh-xemacs-push-button): Removed. - - * mh-mime.el (mh-mime-button-map): Use the generalized - mh-push-button function. - (mh-push-button): Enhance it so that it works on XEmacs too. - -2003-03-08 Steve Youngs - - * mh-xemacs-compat.el (mh-modeline-logo): New constant holding the - modeline image. - (mh-modeline-glyph): Use it. - -2003-03-08 Steve Youngs - - * mh-xemacs-toolbar.el: New file that defines and displays a - toolbar in XEmacs. - - * mh-xemacs-compat.el (mh-xemacs-toolbar): Require it here. - - * Makefile (MH-E-SRC): Add mh-xemacs-toolbar.el. - - * mh-customize.el (mh-toolbar): - (mh-tool-bar-letter-buttons): - (mh-tool-bar-letter-buttons-set): - (mh-tool-bar-folder-buttons): - (mh-tool-bar-folder-buttons-set): - (mh-tool-bar-search-function): - (mh-tool-bar-reply-3-buttons-flag): - (mh-tool-bar-item-inc): - (mh-tool-bar-item-save-mime): - (mh-tool-bar-item-prev-msg): - (mh-tool-bar-item-page-msg): - (mh-tool-bar-item-next-msg): - (mh-tool-bar-item-delete): - (mh-tool-bar-item-refile): - (mh-tool-bar-item-undo): - (mh-tool-bar-item-perform): - (mh-tool-bar-item-toggle-show): - (mh-tool-bar-item-reply-from): - (mh-tool-bar-item-reply-to): - (mh-tool-bar-item-reply-all): - (mh-tool-bar-item-reply): - (mh-tool-bar-item-alias): - (mh-tool-bar-item-compose): - (mh-tool-bar-item-rescan): - (mh-tool-bar-item-repack): - (mh-tool-bar-item-search): - (mh-tool-bar-item-visit): - (mh-tool-bar-item-prefs): - (mh-tool-bar-item-help): - (mh-tool-bar-item-widen): - (mh-tool-bar-item-send): - (mh-tool-bar-item-attach): - (mh-tool-bar-item-spell): - (mh-tool-bar-item-save): - (mh-tool-bar-item-undo-op): - (mh-tool-bar-item-kill): - (mh-tool-bar-item-copy): - (mh-tool-bar-item-paste): - (mh-tool-bar-item-kill-draft): - (mh-tool-bar-item-comp-prefs): - The MH-E toolbar for XEmacs is defined differently from the - GNU/Emacs version, so only define these if we're in GNU/Emacs. - XEmacs doesn't need to see them and it's always good to cut down - on pollution. - -2003-03-08 Steve Youngs - - * mh-mime.el (mh-mime-button-map): Bind the 2nd mouse button to - `mh-xemacs-push-button' in XEmacs. - (mh-mime-security-button-map): Ditto. - - * mh-xemacs-compat.el: Shush the byte-compiler. - (mh-xemacs-push-button): New function to make MIME buttons work in - XEmacs. - -2003-03-08 Steve Youngs - - * mh-mime.el (mh-display-emphasis): Don't test - `font-lock-maximum-size' to see if it is bound, just test for a - non-nil value. This variable can have a nil value which makes it - bound and dividing nil by 8 throws an error. - This fixes a bug in MH-E under XEmacs when - `font-lock-maximum-size' is nil that prevented article emphasis - and smiley display which in turn was causing the "Flush changes in - article x y/n" errors. - (mh-display-smileys): Ditto. - -2003-03-08 Steve Youngs - - * mh-utils.el (mh-logo-display): Display logo in XEmacs as well. - - * mh-xemacs-compat.el (mh-modeline-glyph): New. The MH-E modeline - logo for XEmacs. - -2003-03-06 Satyaki Das - - * mh-utils.el (mh-allow-root-folder-flag): New global variable - that decides if "+" is an acceptable folder name. - (mh-folder-completion-function): Refine the test for existing - folders to take mh-allow-root-folder-flag into account. - (mh-folder-completing-read, mh-prompt-for-folder): Use the - allow-root-folder-flag argument of mh-prompt-for-folder and add a - similar argument to mh-folder-completing-read. - (mh-exec-cmd-error): Make the function nicer by using - process-environment to pass the environment variable assignments. - -2003-03-05 Satyaki Das - - * mh-mime.el (mh-push-button): Preserve point in the show buffer - if the mouse is used to expand/contract a button. - - * mh-customize.el (mh-x-face-file): Mention X-Image-URL in - documentation. - - * mh-comp.el (mh-insert-x-face): Modified to allow insertion of - X-Image-URL header field. - -2003-03-04 Satyaki Das - - * mh-utils.el (mh-face-display-function): Modified to facilitate - display of X-Image-URL images. - (mh-find-path): Initialize X-Image-URL cache directory. - (mh-x-image-url-cache-canonicalize, mh-x-image-url-fetch-image) - (mh-x-image-scale-and-display, mh-x-image-url-display) - (mh-x-image-display): New functions for X-Image-URL image display - and cache management. - - * mh-customize.el (mh-show-use-xface-flag): Add info about - requirements for X-Image-URL display. - (mh-fetch-x-image-url): New customizable variable that controls - fetching of X-Image-URL. - -2003-03-04 Satyaki Das - - * mh-utils.el (mh-make-local-hook): New macro which works around - API changes in add-hook. Version of GNU Emacs before 21.1 and - XEmacs require a call to make-local-hook and just the LOCAL - argument of add-hook is not sufficient. - (mh-show-mode): Make kill-buffer-hook buffer local. - - * mh-e.el (mh-folder-mode): Same as above. - - * mh-comp.el (mh-compose-and-send-mail): Same as above. - -2003-03-02 Satyaki Das - - * mh-mime.el (mh-push-button): Clicking on a MIME button used to - cause the window with the show buffer to be selected. With this - change the selected window doesn't change. - -2003-03-01 Satyaki Das - - * mh-speed.el (mh-speed-flists): Avoid a potential race condition. - When flists is called manually, or when an unseen message is read, - mh-speed-partial-line was not reinitialized. - - * mh-e.el (mh-visit-folder): If mh-visit-folder is used to visit - the folder currently being visited (effectively doing a rescan) - then mh-previous-window-config is erroneously set. The change - fixes this. - - * mh-customize.el (mh-index-show-hook): Remove unused variable. - -2003-02-28 Satyaki Das - - * mh-e.el (mh-scan-folder): Call mh-reset-threads-and-narrowing - only after the user has replied to question. This avoids premature - clearing of the folder. - (mh-rescan-folder, mh-visit-folder): Remove calls to - mh-reset-threads-and-narrowing since it is now called in - mh-scan-folder anyway. - - * mh-funcs.el (mh-sort-folder): Same as above. - -2003-02-26 Satyaki Das - - * mh-alias.el (mh-alias-alist): Change initial value to a symbol, - so that it is different from the empty list, which could also - mean that there are no aliases. - (mh-alias-reload-maybe): Change test so that empty alist of - aliases is properly handled (closes SF #693859). - -2003-02-25 Satyaki Das - - * mh-mime.el (mh-decode-message-header): The message header could - be encoded, for instance the author's name could contain - characters not in ASCII. This function will decode such header - fields. - (mh-mm-inline-message): Use mh-decode-message-header. - - * mh-utils.el (mh-display-msg): Use mh-decode-message-header. - (mh-message-number-width): Use mh-scan-prog instead of "scan". - - * mh-loaddefs.el: Regenerated. - -2003-02-24 Satyaki Das - - * mh-utils.el (mh-truncate-log-buffer): Refine it so that the - function will do the right thing even if called from a buffer - other than mh-log-buffer. - -2003-02-22 Peter S Galbraith - - * mh-alias.el (mh-alias-add-alias): Really fix SF #690216. - This functions needs to strip brackets on standalone addresses as - well. - -2003-02-21 Satyaki Das - - * mh-xemacs-compat.el (replace-regexp-in-string): Remove the - definition since it isn't used any more. - -2003-02-20 Peter S Galbraith - - * mh-alias.el (mh-alias-which-file-has-alias): Bug fix. Needed to - specify `noerror' on search. - - * mh-alias.el (mh-alias-suggest-alias): Add condition for input - string being an email address in brackets. We need to strip out - the brackets. (closes SF #690216) - -2003-02-20 Satyaki Das - - * mh-pick.el (mh-search-folder): The function was setting the - global value of the variables mh-current-folder and - mh-previous-window-config. This can lead to problems in code which - assumes that these variables are nil when we aren't in a folder - buffer. So make the variables local before setting them. - -2003-02-19 Satyaki Das - - * mh-mime.el (mh-mime-display): All the MIME display code has been - wrapped in a condition-case so that if something goes wrong, the - raw message will be displayed. - - * mh-funcs.el (mh-undo-folder): Comment out call to sit-for that - seems unnecessary. - - * mh-e.el (mh-scan-folder): Messages marked for deletion or - refiling weren't getting annotated properly. The change fixes - this. - (mh-process-or-undo-commands): Change prompt to reflect what - really happens in the code. - -2003-02-18 Satyaki Das - - * mh-comp.el (mh-folder-expand-at-point): The function - mail-abbrev-complete-alias often returns nil. This had the - unfortunate consequence of always causing an error. The change - fixes this. - - * mh-alias.el (mh-alias-canonicalize-suggestion): New function - which obviates the our need replace-regexp-in-string. - (mh-alias-suggest-alias): Use mh-alias-canonicalize-suggestion to - eliminate calls to replace-regexp-in-string. This avoids problems - in Emacs20. - - * mh-utils.el (mh-notate): Handle the case when nil is passed as - notation gracefully. - (mh-speed-flists-active-p): New function that returns non-nil if - flists is being used in the speedbar to update message counts. - - * mh-seq.el (mh-put-msg-in-seq): Fix a bug which made it - impossible to add messages to the unseen sequence. Also adding - messages to the unseen sequence will now update the speedbar - message counts immediately. - - * mh-e.el (mh-get-new-mail, mh-process-commands) - (mh-undefine-sequence): Update speedbar message counts, if the - speedbar is active and is displaying message counts. - (mh-delete-msg-from-seq): In addition to updating message counts, - unhighlight the message so that interactively removing messages - from the unseen sequence makes the bold highlight of unseen - messages in the scan buffer go away. - (mh-clear-text-properties): New function that removes all text - properties from the current scan line. - -2003-02-15 Satyaki Das - - * mh-utils.el (mh-face-display-function): Wrap call of - insert-image in mh-funcall-if-exists. This avoids a compiler - warning in Emacs20. - - * mh-speed.el (mh-speed-flists): Weaken test a bit to avoid - compiler warning in Emacs20. - (mh-speedbar-change-expand-button-char): Wrap call of - speedbar-insert-image-button-maybe in mh-funcall-if-exists. This - function isn't present in the speedbar that ships with Emacs20, so - calling it there causes an error. - - * mh-seq.el (mh-msg-is-in-seq): Adjust loop call a bit to avoid - compiler warning in XEmacs. The XEmacs compiler should be improved - so that such spurious warnings from builtin macros are suppressed. - - * mh-index.el (mh-index-search): Same as above. - - * mh-e.el (tool-bar-mode): The declaration is needed for Emacs20 - too. - - * mh-comp.el (mailabbrev): Try loading it any way. Some day XEmacs - will get it and then MH-E will just use it. - (tool-bar-mode, tool-bar-map): These declarations are needed for - Emacs20 too. - (mh-mail-abbrev-make-syntax-table, mh-folder-expand-at-point): - Remove mh-mail-abbrev-make-syntax-table since mh-funcall-if-exists - can be used instead. - - * mh-alias.el (require): Avoid autoloading functions that may not - be defined. - (mh-read-address, mh-alias-letter-expand-alias): Rewrite using - mh-funcall-if-exists. - -2003-02-15 Satyaki Das - - * mh-loaddefs.el: Regenerated. - - * mh-speed.el (mh-folder-speedbar-buttons, mh-speed-add-buttons) - (mh-speed-toggle): Reuse markers instead of creating more of them. - (mh-speed-flists-folder, mh-speed-flists): Add optional folder - argument to mh-speed-flists so that message counts are updated - only for that one folder. - (mh-speed-parse-flists-output): If no change in counts then avoid - consing. - - * mh-index.el (mh-index-execute): Rewritten to use a temporary - buffer that is not left behind. - - * mh-funcs.el (mh-store-buffer): Use mh-log-buffer instead of the - special purpose *Store Output* buffer. - -2003-02-14 Satyaki Das - - * mh-customize.el (mh-show-xface-face): Make it always be black - foreground on a white background (the reverse of that can make - some X-Face images look creepy). - - * mh-utils.el (mh-truncate-log-buffer): Modify the function to - return the current size of mh-log-buffer. Also we are now a bit - more careful in adding separators between consecutive messages. - (mh-exec-cmd): Fix a bug where the the log buffer would be - displayed even if no error happened in the current command but - the log buffer had messages from a previous error. - - * mh-mime.el (mh-mime-save-parts): Use mh-log-buffer to show - error messages. - - * mh-alias.el (mh-alias-local-users): Add a space between parens. - -2003-02-14 Steve Youngs - - * mh-utils.el (mh-face-display-function): Call - `x-face-xmas-wl-display-x-face' using `mh-funcall-if-exists'. - - * mh-xemacs-compat.el (replace-regexp-in-string): New. - -2003-02-13 Satyaki Das - - * mh-utils.el (mh-log-buffer-lines): New variable that keeps - track of the number of lines to keep in mh-log-buffer. - (mh-truncate-log-buffer): New function that is used to make sure - that the log buffer doesn't grow to unbounded size. - (mh-exec-cmd, mh-exec-cmd-daemon, mh-handle-process-error): Use - mh-truncate-log-buffer instead of erase-buffer to keep some - number of previous log messages around (closes SF #685476). - -2003-02-13 Satyaki Das - - * mh-e.el (tool-bar-mode): Declare it in XEmacs. - (mh-folder-mode): Use mh-funcall-if-exists to call hl-line-mode. - - * mh-utils.el (mh-funcall-if-exists): New macro that calls a - function only if it exists. - (mh-logo-display, mh-defun-show-buffer): Use mh-funcall-if-exists - to call the functions find-image and deactivate-mark. - - * mh-mime.el (mh-mime-cleanup, mh-small-image-p) - (mh-mm-display-part): Use mh-funcall-if-exists to call the - functions image-size and remove-images. - - * mh-comp.el (tool-bar-map, tool-bar-mode): Declare the variables - in XEmacs. - (mh-folder-expand-at-point): Use mh-funcall-if-exists to call - mail-abbrev-complete-alias if it exists. - - * mh-alias.el (mh-read-address): Use mh-funcall-if-exists for - future extensibility. - -2003-02-13 Satyaki Das - - * mh-utils.el (mh-logo-display): The function find-image is - present only in GNU Emacs. - (mh-defun-show-buffer): The function deactivate-mark is present - only in GNU Emacs. - (default-enable-multibyte-characters): Declare it in XEmacs to - avoid compiler warning. - (mh-face-display-function): Avoid inserting space if there isn't - any Face or X-Face header field to display. - - * mh-seq.el (mh-thread-last-ancestor): Move declaration of - variable before its first use to silence XEmacs warning. - - * mh-mime.el (default-enable-multibyte-characters, dots, type): - Declare these in XEmacs to remove compiler warnings in XEmacs. - (mh-mime-cleanup, mh-mm-display-part): Call remove-images only in - GNU Emacs. - (mh-small-image-p): Call image-size only in GNU Emacs. - - * mh-index.el (mh-mairix-next-result): Fix a bug where a quote - was missing. - (mh-swish++-regexp-builder): Remove the unused binding meta. - - * mh-e.el (mh-folder-size): Pass on an extra value to remove - XEmacs warning. - (mh-folder-mode): Surround calls to hl-line-mode and - tool-bar-mode with mh-do-in-gnu-emacs since these functions - aren't present in XEmacs. - - * mh-customize.el (mh-tool-bar-show-set, mh-tool-bar-letter-set) - (mh-tool-bar-folder-set): These functions call tool-bar-* - functions which are present only in GNU Emacs. So surround them - with mh-do-in-gnu-emacs. - - * mh-comp.el (mh-letter-mode, mh-folder-expand-at-point): Only - call these functions in GNU Emacs. - (mail-abbrevs): Declare it in XEmacs. - - * mh-alias.el (mh-read-address): Call completing-read-multiple - only in GNU Emacs. - (mail-abbrevs): Declare it in XEmacs. - (mh-alias-add-alias-to-file): Remove unused code. - -2003-02-14 Ville Skyttä - - * mh-comp.el: Add autoloaded auto-mode-alist association. - -2003-02-13 Satyaki Das - - * mh-utils.el (mh-face-display-function): Make the XEmacs part a - little simpler. - -2003-02-14 Steve Youngs - - * mh-customize.el (mh-show-xface-face): XEmacs doesn't have the - ':inherit' keyword for defface, rewrite with sane defaults. - - * mh-utils.el (mh-face-display-function): Fix bug that was - corrupting xface images when displayed with XEmacs' internal - xface image support. Also make XEmacs honour 'mh-show-xface-face' - when using internal xface image support. - -2003-02-12 Peter S Galbraith - - * mh-comp.el (mh-modify-header-field): New function. To header - FIELD add VALUE. If OVERWRITE-FLAG is non-nil then the old value, - if present, is discarded. This is more flexible than before. - (mh-insert-auto-fields): Use it. This and the new function are a - courtesy of Satyaki. Thanks! - - * mh-customize.el (mh-auto-fields-list): Doc tweaks suggested by - Bill. - -2003-02-12 Satyaki Das - - * mh-comp.el (mh-folder-expand-at-point): Tweak the error - message. Completion in the Fcc header field is only supported in - GNU Emacs 21. - -2003-02-12 Peter S Galbraith - - * mh-customize.el (mh-auto-fields-list): Reorder after - `mh-identity-list' since it needs it to be defined. Move to - mh-identity customization group. - -2003-02-11 Peter S Galbraith - - * mh-customize.el (mh-insert-mail-followup-to-flag): Removed. - Obsolete. - (mh-insert-mail-followup-to-list): Removed. Obsolete. Use - `mh-auto-fields-list' instead, which is a more general solution. - (mh-auto-fields-list): New defcustom. Alist of addresses for - which header lines are automatically inserted. Replaces - `mh-insert-mail-followup-to-list'. - - * mh-comp.el (mh-insert-mail-followup-to): Removed. Obsolete. - (mh-insert-auto-fields): New function. Insert custom fields if To - or Cc match `mh-auto-fields-list', replacing - mh-insert-mail-followup-to with a more general solution. - (mh-compose-and-send-mail): Call mh-insert-auto-fields instead of - mh-insert-mail-followup-to. Also don't call mh-insert-identity to - insert default setting if mh-insert-auto-fields inserted an - identity. - -2003-02-11 Satyaki Das - - * mh-utils.el (mh-show-xface-function): Try to load the external - x-face library only if XEmacs doesn't have xface support. - (mh-face-display-function): Renamed. Also handle various - permutations of x-face and xface support in XEmacs better. - - * mh-customize.el (mh-show-use-xface-flag): Any emacs whose - major version is greater than or equal to 21 supports display of - X-Face and Face header fields. - -2003-02-11 Satyaki Das - - * mh-utils.el (mh-do-in-gnu-emacs, mh-do-in-xemacs): Macros that - execute code only in GNU Emacs and XEmacs respectively. - (mh-emacs21-face-display-function): Refactor to make it slightly - nicer. Get rid of compiler warnings in GNU Emacs by using the - above macros. Also check for presence of xface feature (in XEmacs - specific code) before trying to display X-Face header field image. - -2003-02-11 Steve Youngs - - * mh-customize.el (mh-show-use-xface-flag): If using XEmacs and - can't find the external x-face pkg still enable X-Face images if - feature 'xface is present. - Update the doc string. - - * mh-utils.el (mh-emacs21-face-display-function): Make it work in - XEmacs. - (mh-show-xface-function): If using XEmacs without xface support, - use x-face.el pkg. If using XEmacs with xface support, or Emacs - 21, use mh-emacs21-face-display-function. - -2003-02-11 Mark D. Baushke - - * mh-customize.el (mh-invisible-header-fields): Add - "X-Notes-Item:" which is generated by Lotus Notes Domino. See - URL for details on how Domino - users may disable (restore the default) generation of these headers. - -2003-02-10 Satyaki Das - - * mh-comp.el (mh-folder-expand-at-point): Add function doc string - and produce a nicer error message for Emacs versions that lack - mail-abbrev-complete-alias. - - * mh-utils.el (mh-handle-process-error): Check doc fix. - - * mh-e.el (mh-folder-from-address): Same as above. - -2003-02-10 Peter S Galbraith - - * mh-comp.el: require mailabbrev, except in XEmacs. - (mh-mail-abbrev-make-syntax-table): New defmacro to call - mail-abbrev-make-syntax-table introduced in Emacs21. - (mh-folder-expand-at-point): Handle nested folders. - All of the above was written by Satyaki. I just applied the patch - and tested. - -2003-02-09 Satyaki Das - - * mh-comp.el: Fixes to keep the byte compiler happy. - - * mh-customize.el (mh-invisible-header-fields): Modified to - remove space after ":" in header field names. - -2003-02-09 Peter S Galbraith - - * mh-comp.el (mh-letter-complete): Add completion for fcc lines. - (mh-folder-expand-at-point): Do completion at point for folder - name. Like `mh-alias-letter-expand-alias' for aliases, it doesn't - work on XEmacs because it relies on `mail-abbrev-complete-alias' - to do completion. Maybe Steve could update XEmacs' mailabbrev.el? - -2003-02-09 Peter S Galbraith - - * mh-customize.el (mh-invisible-header-fields): Remove trailing - space in "X-Face: " and "Face: " entries since those line often - break there. - -2003-02-08 Satyaki Das - - * mh-utils.el (mh-emacs21-face-display-function): Use - mh-show-xface-face to colorize X-Face image. - - * mh-customize.el (mh-invisible-header-fields): Add extra headers - to ignore. - (mh-show-xface-face): Allow customization of the X-Face colors. - -2003-02-07 Satyaki Das - - * mh-utils.el (mh-uncompface-executable, mh-uncompface): Remember - the path of the uncompface executable so that we don't need to - search for it every time. - (mh-emacs21-face-display-function): If more than one X-Face (or - Face) header field was present then the fields would get - concatenated, leading to garbled output. The change only displays - the first image. - - * mh-customize.el (mh-x-face-file): Change documentation since it - can now be used to insert a Face header field. - - * mh-comp.el (mh-insert-x-face): Generalized to allow insertion - of Face header field. - -2003-02-06 Bill Wohler - - * mh-utils.el (mh-emacs21-face-display-function): Updated - docstring. It is a common mistake to refer to a header field as a - header. The term header refers to the entire header while the term - header field refers to a single field. - - * mh-customize.el (mh-show-use-xface-flag): Ditto. - -2003-02-06 Satyaki Das - - * mh-utils.el (mh-show-xface-function): Modified to use - mh-emacs21-face-display-function if we are running GNU Emacs 21. - (mh-face-to-png): New function to convert a Face header to a png - image. - (mh-uncompface): New function which converts an X-Face header to - a pbm image. - (mh-icontopbm): New function that does the job of icontopbm. - (mh-emacs21-face-display-function): New function that displays - Face/X-Face image in GNU Emacs 21. - (mh-show-xface): Modified to test if we are running in X. - Otherwise face display is suppressed. - - * mh-customize.el (mh-show-use-xface-flag): Tweak it, now that - MH-E supports face display natively on Emacs 21. Also remove the - check for window-system since it doesn't belong in a customizable - variable. - -2003-02-06 Satyaki Das - - * mh-utils.el (sendmail): Require it so that XEmacs can find - rfc822-goto-eoh. - (mh-mail-header-end): A substitute for mail-header-end that - doesn't widen the buffer. This is essential to avoid problems when - dealing with nested messages. - (mh-in-header-p, mh-letter-header-font-lock) - (mh-header-field-font-lock, mh-show-font-lock-fontify-region) - (mh-show-unquote-From): Use mh-mail-header-end instead of - mail-header-end. - - * mh-mime.el (mh-decode-message-body): same as above (closes SF - #681518). - - * mh-comp.el (mh-yank-cur-msg): same as above. - -2003-02-05 Satyaki Das - - * mh-utils.el (mh-display-msg): Call mh-show-mode before invisible - headers are cleaned. This means that any surviving X-Face header - can be removed unconditionally in mh-clean-msg-header. - (mh-clean-msg-header): Since the function is now called with a - read-only buffer, make the buffer temporarily writable. - - * mh-mime.el (mh-mm-inline-message): Do X-Face display before - invisible headers are removed. - - * mh-customize.el (mh-invisible-headers): Simplified since the - X-Face header isn't treated specially any more. - (mh-invisible-header-fields): Add Face: and X-Face: to list of - invisible headers. - - * mh-mime.el (mh-mime-display): If body is empty the headers would - be treated like the body. The change fixes this (closes SF #681162). - (mh-mime-display): This change really fixes the above problem. - -2003-02-04 Satyaki Das - - * mh-utils.el (mh-current-folder-name): Global variable that - keeps track of current folder. - (mh-normalize-folder-name): Substitute @ with - mh-current-folder-name (closes SF #666774). - (mh-prompt-for-folder): Bind mh-current-folder-name. Also - invalidate cache if we are visiting a folder that wasn't found in - the sub-folder cache. This is an indication that folders may have - been created outside of MH-E and so the cache may be stale. - -2003-02-03 Satyaki Das - - * mh-utils.el (mh-decode-content-transfer-encoded-message): Removed. - (mh-display-msg): Remove the use of the above function. - (mh-normalize-folder-name): Leading "/" characters were being - lost. The change fixes this (closes SF #676890). - - * mh-mime.el (mh-decode-message-body): New function, factored out - from mh-mime-display and enhanced, to decode message based on - charset and content-transfer-encoding. This eliminates the need - for the external mimencode (closes SF #674857). - (mh-mime-display): Use mh-decode-message-body. - - * mh-e.el (mh-header-display): Don't need the binding since the - variable isn't present any more. - (mh-inc-folder): Avoid calling mh-show if point is not on a valid - scan line (closes SF #678115). - - * mh-customize.el - (mh-decode-content-transfer-encoded-message-flag): Removed. - -2003-02-03 Bill Wohler - - * import-emacs: MH-E now has its own directory in Emacs. - - * mh-e.el: (mh-version): Set to 7.2+cvs. - -2003-02-03 Bill Wohler - - Released MH-E version 7.2. - - * MH-E-NEWS, README: Updated for release 7.2. - - * mh-e.el (Version, mh-version): Updated for release 7.2. - -2003-02-03 Bill Wohler - - * Makefile (dist): mkdir needs to happen *before* files are - copied. - - * MH-E-NEWS: Fixed some awkward verbiage. - -2003-02-02 Bill Wohler - - * mh-customize.el (mh-invisible-headers): Surround regexp-opt - expression in parens to avoid problems viewing certain messages. - -2003-01-30 Satyaki Das - - * mh-speed.el (mh-speed-flists): Search for flists in mh-progs. - The original was inadvertently searching for flists in the user's - path. - -2003-01-27 Bill Wohler - - * mh-customize.el (mh-default-folder-must-exist-flag): Changed - default to t according to the principle of least surprise. - -2003-01-26 Bill Wohler - - * mh-utils.el: Checkdoc fixes. - - * mh-pick.el (mh-do-search, mh-search-folder): Checkdoc fixes. - - * mh-loaddefs.el: Regenerated (lm-verify fixes). - - * mh-index.el (mh-mairix-next-result): Checkdoc fixes. - - * mh-alias.el: lm-verify fix. - - * Makefile (MH-E-SRC): Added ChangeLog, now that Emacs has a - lisp/mh-e directory. - (MH-E-ETC-ETC): Removed ChangeLog. - (dist): Moved creation of mail directory next to copy of files - into mail directory. - (install-emacs): Copy $(MH-E-SRC) into new directory - $(EMACS_HOME/lisp/mh-e. - (MH-E-SRC): Moved ChangeLog into new variable MH-E-OTHERS and - include MH-E-LOADDEFS there too. - (mh-loaddefs.el): Added lines so that lm-verify passes. - (dist, install-emacs): Use MH-E-OTHERS instead of MH-E-LOADDEFS. - -2003-01-26 Jeffrey C Honig - - * mh-comp.el (mh-tidy-draft-buffer, mh-compose-and-send-mail): - Rename mh-kill-draft-hook to mh-tidy-draft-buffer. - -2003-01-25 Jeffrey C Honig - - * mh-utils.el (mh-exec-cmd, mh-exec-cmd-daemon) - (mh-process-daemon): Use mh-log-buffer for the output of commands - from mh-exec-cmd. - - * mh-utils.el (mh-temp-folders-buffer): Sequences and folders - loose the -temp from their buffer names as they are interesting to - the user. - - * mh-seq.el (mh-list-sequences): New name, mh-sequences-buffer as - it is intended to be interesting to the user. - - * mh-funcs.el (mh-list-folders): New name, mh-folders-buffer as it - is intended to be interesting to the user. - - * mh-comp.el (mh-check-whom, mh-compose-and-send-mail): Use - mh-recipients-buffer constant. Add a kill buffer hook to delete - the recipients buffer when a draft buffer is killed. - -2003-01-25 Satyaki Das - - * mh-customize.el (mh-customize): New interactive argument - deletes other windows. - (mh-tool-bar-show-set, mh-tool-bar-letter-set) - (mh-tool-bar-folder-set): Modified so that clicking the customize - and help buttons deletes the other windows in the frame. - - * mh-mime.el (mh-mm-inline-message): Remove unused code. - - * mh-seq.el (mh-notate-deleted-and-refiled): Fix a small bug where - the wrong notation was being used. - (mh-toggle-threads): The function had a bug if you did the - following starting from an unthreaded wide folder: - (1) Create a sequence with S p - (2) Narrow to new sequence with S n - (3) Thread narrowed folder with T t - (4) Kill sequence with S k - (5) Unthread narrowed folder with T t - At this point we would have an empty folder. The change fixes - this. - (mh-toggle-threads): Fix documentation. - - * mh-customize.el (mh-invisible-header-fields): Add - X-MHE-Checksum to invisible headers. - - * mh-comp.el (mh-insert-x-mailer): Slightly more informative - X-Mailer header. - -2003-01-24 Satyaki Das - - * mh-e.el (mh-header-display): Modified so that quoted-printable - or base64 encoded messages are left untouched. - - * mh-utils.el (mh-decode-content-transfer-encoded-message): Munge - the Content-Transfer-Encoding header so that the MIME decoding - routines of Gnus doesn't get confused. - (mh-display-msg): Use insert-file-contents-literally so that - display will work for non-ascii. - - * mh-mime.el (mh-mime-display): Use charset info to decode - message file (closes SF #655123). - -2003-01-24 Bill Wohler - - * mh-alias.el (mh-alias-add-alias-to-file): Removed period from - error message and added parens around error function. - -2003-01-24 Satyaki Das - - * mh-customize.el (mh-decode-quoted-printable-flag): Removed. - (mh-decode-content-transfer-encoded-message-flag): This replaces - mh-decode-quoted-printable-flag. - - * mh-utils.el (mh-decode-content-transfer-encoded-message): New - function which handles messages that are encoded as base64 or - quoted-printable (closes SF #674190). - (mh-decode-quoted-printable): Removed. - (mh-display-msg): Use mh-decode-content-transfer-encoded-message - instead of mh-decode-quoted-printable. - -2003-01-23 Satyaki Das - - * mh-seq.el (mh-thread-generate-scan-lines): Fix a little bug - that would occasionally cause angles ('<' and '>') to appear at - root level. - -2003-01-21 Satyaki Das - - * mh-seq.el (mh-notate-cur): Enable overlay arrow display in text - mode too. - - * mh-e.el (mh-folder-mode): Initialize overlay-arrow-string so - that a '>' is displayed in text mode. - -2003-01-20 Satyaki Das - - * mh-utils.el (mh-scan-msg-overflow-regexp): Change the variable - so that a space is always maintained in the beginning of the scan - line. - - * mh-seq.el (mh-notate-seq, mh-notate-cur): Make the functions - faster by cutting down on the use of mh-goto-msg. - (mh-toggle-threads): Add call to mh-notate-cur, since inserting - the folder names in a search results folder screws up the - location of the overlay arrow. - - * mh-index.el (mh-index-delete-folder-headers): Position the - point on a message line if possible. - - * mh-funcs.el (mh-copy-msg): Use the mh-iterate macro to make the - function faster. - - * mh-e.el (mh-scan-folder): Reuse mh-notate-deleted-and-refiled. - - * mh-loaddefs.el: Regenerated. - - * mh-utils.el (mh-add-msgs-to-seq): Add a new parameter that - suppresses the annotation of the sequence since it is - inefficient. - - * mh-seq.el (mh-delete-seq): Speed up the part of the function - that removes the sequence notation. - (mh-put-msg-in-seq, mh-notate-deleted-and-refiled): Use - mh-iterate-on-messages-in-region to make the function fasters when - operating on regions. The key idea is to loop over the folder - buffer exactly once and do all annotations. The existing algo - would walk over the buffer multiple times thereby slowing things - down. - (mh-iterate-on-messages-in-region): Added an extra parameter which - is bound to the message index as the loop is executed. - (mh-region-to-msg-list, mh-thread-delete, mh-thread-refile): Use - the new mh-iterate-on-messages-in-region macro. - - * mh-e.el (mh-delete-msg-no-motion, mh-refile-msg, mh-undo): Same - as above. - (mh-notate-user-sequences): Change algorithm to make notating of - user sequences fast. - -2003-01-19 Satyaki Das - - * mh-logo.xpm: New image file that contains the MH-E logo. - Change foreground color to the blue in the MH-E logo. - - * Makefile (MH-E-IMG): Add mh-logo.xpm to list of image files. - - * mh-utils.el (mh-show-buffer-mode-line-buffer-id): Adjust it to - keep space in the beginning for the logo. - (mh-logo-cache): New variable that caches the logo image file - location. - (mh-logo-display): Display the MH-E logo on the mode line. - (mh-display-msg): Display logo in mh-show-mode. - - * mh-e.el (mh-make-folder-mode-line): Display logo in - mh-folder-mode. - - * mh-comp.el (mh-compose-and-send-mail): Display logo in - mh-letter-mode. - - * mh-loaddefs.el: Regenerated. - - * mh-seq.el (mh-iterate-on-messages-in-region): New macro to - iterate on all messages in a region. - (mh-region-to-msg-list): Simplified since it uses - mh-iterate-on-messages-in-region now. - - * mh-e.el (mh-delete-msg, mh-refile-msg): Change interactive spec - to pass the region that is to be deleted when appropriate. - (mh-delete-msg-no-motion, mh-refile-msg, mh-undo): Operate on - regions directly without creating the list of messages to be - deleted/refiled. - (mh-delete-a-msg, mh-refile-a-msg, mh-undo-msg): The msg - parameter in these functions can now be nil. If so, the current - message is deleted, refiled or undone respectively. Avoids the - use of mh-goto-msg in this case and speeds up operations on - regions quite a bit. - -2003-01-19 Peter S Galbraith - - * mh-alias.el (mh-read-address): Bug Fix. In XEmacs and Emacs20, - it would always prompt using "To: " instead of using the command - argument (closes SF #670913). - -2003-01-19 Satyaki Das - - * mh-utils.el (mh-folder-completion-function): If there is a - +foo/bar folder and the user types foo//bar then the completion - function would say a match happened without showing the - normalized folder name. This change fixes that. - -2003-01-18 Satyaki Das - - * mh-e.el (mh-rmail): Modified so that new and unseen messages - are shown (closes SF #667542). - -2003-01-17 Satyaki Das - - * mh-index.el (mh-index-generate-pretty-name): Generate nicer - names. In particular all '-' characters are removed. - -2003-01-16 Satyaki Das - - * mh-customize.el (mh-index-program): Documentation fix. - - * mh-loaddefs.el: Regenerated. - - * mh-customize.el (mh-index-program): Add choices for mairix and - pick. - - * mh-index.el (mh-indexer-choices): Add search interfaces for - mairix and pick. - (mh-index-search): Add links for mairix and pick. - (mh-index-pick-folder, mh-pick-binary): Variables needed to - implement pick support. - (mh-pick-execute-search, mh-pick-next-result): New functions to - implement pick support. - (mh-mairix-binary, mh-mairix-directory, mh-mairix-folder): New - variables for mairix support. - (mh-mairix-execute-search, mh-mairix-next-result) - (mh-mairix-regexp-builder, mh-mairix-convert-to-sop*): New - functions for mairix. - - * mh-funcs.el (mh-kill-folder): Move message to the end. - - * mh-e.el (mh-folder-mode): Make overlay-arrow-position and - overlay-arrow-string local variables so that the arrow will - remain even if some other folder is visited. - (mh-remove-cur-notation, mh-remove-all-notation): The test isn't - required any more since overlay-arrow-position is local. - (mh-goto-cur-msg): Remove overlay arrow if current message - doesn't exist. - - * mh-seq.el (mh-notate-cur): Don't need to set - overlay-arrow-string any more since it is local and has been set - at initialization. - -2003-01-15 Satyaki Das - - * mh-speed.el (mh-speed-current-folder): Keep track of current - folder when flists is called. - (mh-speed-flists, mh-speed-parse-flists-output): Try to avoid - ambiguity when folders are present with + at the end of the name. - Unfortunately it can't always be avoided. - - * mh-e.el (mh-folder-size): Remove the unnecessary error check. - (mh-parse-flist-output-line): Add extra argument which - occasionally avoid problems with folder names that end with '+'. - - * mh-utils.el (mh-sub-folders-actual): Fix the folder name - parsing so that it doesn't get confused by trailing '+' chars in - the folder name. - -2003-01-14 Satyaki Das - - * mh-utils.el (mh-normalize-folder-name): Enhanced so that it can - now handle ".." and "." correctly during folder name completion. - (mh-normalize-folder-name): Avoid error in boundary condition - where the folder string is empty. - -2003-01-14 Mark D. Baushke - - * mh-e.el (mh-visit-folder): Pass `current-prefix-arg' to - the `mh-read-msg-range' function as the optional - always-prompt-flag. - -2003-01-14 Satyaki Das - - * mh-utils.el (mh-normalize-folder-name): New function that - normalizes folder names. - (mh-sub-folders): Use mh-normalize-folder-name. Also the function - has been modified so that a trailing slash is only added if the - folder potentially has subfolders. - (mh-sub-folders-actual): Simplified since the folder has already - been normalized in mh-sub-folders. - (mh-remove-from-sub-folders-cache): Modified so that the cached - results of two of the folders ancestors are invalidated. - (mh-folder-completion-map): Ugly hack to make the error go away - when minibuffer-complete-word is called. - (mh-folder-completion-function): The completion function will now - be more selective in adding '/' at the end of completed folder - names. - (mh-folder-completing-read): The folder name is normalized before - return. The minibuffer-local-completion-map is shadowed to avoid - error with SPC (bound to minibuffer-complete-word). We really - need a better solution. - -2003-01-13 Bill Wohler - - * mh-seq.el: Edited comment and docstring text to conform with RFC - 2822 terminology. Message-ID is the header field. It contains a - message identifier. - -2003-01-13 Satyaki Das - - * mh-utils.el (mh-sub-folders): Add an argument that returns - sub-folders with a / character appended at the end. - (mh-folder-completion-function): Modify the function so that one - tab is now sufficient to complete the folder name and add a - trailing /. - (mh-folder-completing-read): Remove the trailing / that the - completion function now adds to the folder name. Also multiple / - characters in the folder input are removed. So if the user inputs - +foo///bar//baz///// then that will be converted to +foo/bar/baz. - This will improve the performance of caching. - - * mh-seq.el (mh-notate-cur): Check that a valid current message - exists before trying to notate (closes SF #667331). - (mh-message-id-regexp): New variable to store regexp to recognize - message-ids. - (mh-thread-generate): Use mh-message-id-regexp to filter out non - message-id's from the References: header. - -2003-01-12 Satyaki Das - - * mh-seq.el (mh-notate-cur): Disable overlay-arrow display if we - aren't on a graphic display. - -2003-01-11 Satyaki Das - - * mh-seq.el (mh-notate-cur): New function to notate the current - message. The marker in the fringe is updated too. - (mh-narrow-to-seq, mh-widen, mh-thread-inc, mh-thread-folder): Use - the specialized function mh-notate-cur instead of mh-notate-seq. - - * mh-e.el (mh-arrow-marker): New buffer local variable to store - the position where the marker in the fringe is going to be - displayed (closes SF #664824). - (mh-folder-mode): Create a marker for the fringe. - (mh-update-sequences, mh-get-new-mail, mh-goto-cur-msg): Call the - specialized function mh-notate-cur instead of mh-notate-seq or - mh-notate. - (mh-remove-cur-notation, mh-remove-all-notation): Reset the - overlay-arrow-position if needed. - - * mh-loaddefs.el: Regenerated. - -2003-01-10 Satyaki Das - - * mh-utils.el (mh-remove-from-sub-folders-cache): Modified so that - creating nested folders doesn't produce inconsistent results. - (mh-prompt-for-folder): Remove call of mh-folder-list-change-hook. - - * mh-funcs.el (mh-kill-folder): Don't ask for confirmation if - called on a folder holding index search results. Also the now - removed mh-folder-list-change-hook is called no more. - - * mh-customize.el (mh-auto-folder-collect-flag) - (mh-folder-list-change-hook): Removed. - - * mh-loaddefs.el: Regenerated. - -2003-01-10 Bill Wohler - - * mh-customize.el (mh-default-folder-must-exist-flag): New - variable to suppress suggested folder if the folder doesn't - already exist (closes SF #657096). - (mh-default-folder-list): New variable that - holds mapping between an address and the desired folder for - filing (closes SF #657096). - (mh-default-folder-prefix, mh-default-folder-must-exist-flag): In - docstring, refer to documentation for mh-prompt-for-refile-folder - and mh-folder-from-address. - (mh-highlight-citation-p, mh-compose-insertion, - (mh-insert-mail-followup-to-list, mh-index-program, - (mh-identity-default): Fixed case of tags. - - * mh-e.el (mh-folder-from-address): Use new variable - mh-default-folder-must-exist-flag to return nil if this variable - is t and the folder doesn't already exist. In addition, can now - look up a default folder in the new variable - mh-default-folder-list (closes SF #657096). - (mh-prompt-for-refile-folder): In docstring, refer to - documentation in mh-folder-from-address. - - * mh-index.el (mh-swish-execute-search): Changed \..* to \\..* in - the FileRules filename in the sample config file. Otherwise, the - users don't see the backslash at all, and no files are indexed! - (closes SF #665888). - -2003-01-10 Satyaki Das - - * mh-seq.el (mh-thread-folder): Get headers for exactly the - messages that are present. If only messages 1-10 and 3800-3900 - are being shown then we will now scan exactly those messages and - not the full range from 1-3900 as was being done earlier. - (mh-toggle-threads): When converting from threaded to normal view - only the messages present in the buffer are scanned. Earlier all - messages from the minimum to the maximum would be scanned (closes - SF #626117). - - * mh-pick.el (mh-search-folder): Fix typo. - (mh-pick-do-search): Fix bug from cut and paste. Also set window - config properly. - - * mh-utils.el (mh-prompt-for-folder): Add new argument to allow - it to accept + as a folder name. This allows the user to search - all folders when "Fs" is used. - - * mh-pick.el (mh-search-folder): Fix interactive spec of function. - (mh-pick-do-search): Rewritten to call pick in one go. This will - make adding pick as a default index search program easier. Also - pick now accepts the same query syntax as the index search - programs (closes SF #664816). - (mh-next-pick-field): Removed. - (mh-pick-parse-search-buffer): New function to parse the search - buffer. - (mh-pick-construct-regexp, mh-pick-regexp-builder): New function - to produce a pick query from the parsed representation. - - * mh-index.el (mh-index-do-search): Refactor the search pattern - parser into a new function and use that instead. - - * mh-loaddefs.el: Regenerated. - -2003-01-10 Satyaki Das - - * mh-loaddefs.el: Regenerated. - - * mh-utils.el (mh-remove-from-sub-folders-cache) - (mh-prompt-for-folder): Replace mh-update-sub-folders-cache with - mh-remove-from-sub-folders-cache. - (mh-exec-cmd-daemon): Mention set-process-filter in documentation. - - * mh-pick.el (mh-searching-function): New buffer local variable - that keeps track of the default searching function to be used. - (mh-pick-mode): Make mh-searching-function buffer local. - (mh-search-folder): Set mh-searching-function to use pick. - (mh-search-folder, mh-pick-menu, mh-pick-mode-help-messages) - (mh-pick-mode, mh-do-pick-search, mh-pick-do-search): Rename - mh-do-pick-search to mh-pick-do-search. But keep - mh-do-pick-search as a deprecated function. - (mh-do-search): New interactive function that performs the - default search. - (mh-pick-mode-map): Update keymap. - - * mh-index.el (mh-index-search): Set mh-searching-function to do - index search. - (mh-index-new-folder): Replace mh-update-sub-folders-cache with - mh-remover-from-sub-folders-cache. - - * mh-funcs.el (mh-kill-folder): Same as above. - - * mh-index.el (mh-index-evaluate, mh-swish++-regexp-builder): - Checkdoc fixes. - - * mh-customize.el: Fixes to make byte compiler in CVS Emacs - perfectly happy. - -2003-01-09 Bill Wohler - - * mh-e.el (mh-folder-from-address): New function that proposes the - name of a folder with an alias for the address in the current message. - (mh-prompt-for-refile-folder): Use it (closes SF #657096). - - * mh-customize.el (mh-default-folder-prefix): New variable used by - mh-folder-from-address. - (mh-invisible-header-fields): Edited docstring. - - * mh-alias.el (mh-alias-address-to-alias): Added ;;;###mh-autoload - cookie (used by mh-folder-from-address in mh-e.el). Edited text in - comment. - - * mh-utils.el: Provided naming conventions for buffer and buffer - variable names. - (mh-temp-folders-buffer): Renamed buffer to " *mh-folders*". - (mh-temp-sequences-buffer): Renamed buffer to " *mh-sequences*". - (mh-info-buffer): Renamed from mh-temp-info-buffer. - (mh-log-buffer): New buffer variable to hold name of "*MH-E Log*" - buffer which is expected to be used for the output of MH commands. - Perhaps we always create this buffer at initialization and append - to it rather than erase it each time? - - * mh-e.el (mh-quit): Loop over all buffers and delete MH-E - temporary and working buffers. As long as the buffer naming - conventions are followed, new buffers will be automatically - killed. - (mh-version): Renamed mh-temp-info-buffer to mh-info-buffer. - - * mh-comp.el (mh-insert-x-mailer): Renamed mh-temp-info-buffer to - mh-info-buffer. - -2003-01-09 Satyaki Das - - * mh-e.el (mh-folder-size): If the user doesn't have a - Unseen-Sequence definition in .mh_profile then an error was - produced. This change fixes that. - - * mh-seq.el (mh-thread-generate): Replace the *mh-thread* buffer - with a temporary buffer which is cleaned up when the function - exits. - - * mh-e.el (mh-prompt-for-refile-folder): New function which - refactors out the intelligent folder guessing code from - mh-refile-msg. - (mh-refile-msg): Use mh-prompt-for-refile-folder. - - * mh-seq.el (mh-thread-refile): Use mh-prompt-for-refile-folder to - do the same intelligent destination folder guessing as - mh-refile-msg (closes SF #664829). - - * mh-utils.el (mh-folder-list, mh-make-folder-list-process) - (mh-folder-list-temp, mh-folder-list-partial-line) - (mh-set-folder-list): Removed. - (mh-sub-folders-cache, mh-sub-folders, mh-sub-folders-actual): - Moved over from mh-speed.el to implement hierarchical completion. - (mh-update-sub-folders-cache): Utility function called when - new folders are created or folders are removed. - (mh-folder-completion-function): New function is the folder name - completion function used in completing-read. - (mh-folder-completing-read): A thin wrapper function that is used - instead of completing-read directly. In the future we might want - to allow the user a customizable variable which will turn off - folders based completion. - (mh-prompt-for-folder): Use mh-folder-completing-read to read in - the folder name with hierachical completion (closes SF #664821). - - * mh-speed.el (mh-speed-folders, mh-speed-folders-cache) - (mh-speed-folders-actual): Moved to mh-utils.el as mh-sub-folders, - mh-sub-folders-cache and mh-sub-folders-actual respectively. - (mh-speed-invalidate-map, mh-speed-invalidate-map) - (mh-speed-add-folder): Use the new names. - - * mh-funcs.el (mh-kill-folder): Remove code that used to update - mh-folder-list which is no longer present. Instead - mh-update-sub-folders-cache is called. - - * mh-index.el (mh-index-new-folder): Same as above. - -2003-01-08 Satyaki Das - - * mh-utils.el (mh-exec-cmd-daemon): An argument was added which - controls what is done with the process output. - - * mh-funcs.el (mh-kill-folder): Use mh-previous-window-config to - restore window configuration. Also the call to mh-exec-cmd-daemon - only displays output if an error happened (closes SF #664828). - (mh-rmf-daemon): Check rmf output and display it only if - something went wrong. - (mh-print-msg): Pass in nil argument to mh-exec-cmd-daemon. - - * mh-comp.el (mh-redistribute, mh-send-letter): Pass in nil - argument to mh-exec-cmd-daemon so that the functions will behave - as before. - - * mh-pick.el (mh-search-folder): The current window config is - stored. - (mh-make-pick-template): Make the message headers read-only. - (mh-pick-mode-help-messages): Update help message. - (mh-do-pick-search): Fix problem when buffer isn't showing any - messages. - (mh-next-pick-field): Use buffer-substring-no-properties is - better. - (mh-pick-mode-map): Add key bindings (partially addresses - SF #664816) - - * mh-index.el (mh-indexer-choices): Add a new field for each - index program choice. If it is non-nil then it is the name of a - function that given a lisp expression to search for generates a - pattern that is acceptable to the search program. - (mh-index-regexp-builder): New variable that stores the function - to be used to convert from the lisp expression syntax to - something that the search program understands. - (mh-index-generate-pretty-name): Generalized so that it can take - a list of strings as input. - (mh-index-search): Modified so that if the configured program has - a corresponding regexp-builder then a search buffer like pick - search is produced. Otherwise the previous behavior is maintained. - (mh-index-do-search): New interactive function that takes the - contents of the search buffer, generates an appropriate query and - produces the search results buffer by calling mh-index-search. - (mh-replace-string, mh-index-parse-search-regexp) - (mh-index-add-implicit-ops, mh-index-evaluate): New functions - which parses the infix search expression that the user enters. A - parse tree from which queries for different search programs can - be produced is produced. - (mh-swish++-regexp-builder, mh-swish++-print-regexp): Takes the - internal form of the query and produces input suitable for - swish++. - - * mh-loaddefs.el: Regenerated. - -2003-01-08 Bill Wohler - - * Makefile (emacs-logs): New target for viewing CVS Emacs logs. - Useful to see if an Emacs developer has changed MH-E. - - * MH-E-NEWS: Fixed case of MH-E in the "Changes" title. - - * mh-utils.el (mh-temp-info-buffer): New variable to hold name of - buffer that contains version info. - - * mh-e.el (mh-version): Use mh-temp-info-buffer instead of - mh-temp-buffer since version information was getting clobbered by - the aliasing code before it could be seen (closes SF #664467). - (mh-quit): Delete mh-temp-info-buffer. - - * mh-comp.el (mh-insert-x-mailer): Use mh-temp-info-buffer to find - version info instead of mh-temp-buffer. You kind of need this - patch to send mail. - -2003-01-07 Bill Wohler - - * mh-e.el (Version, mh-version): Set to 7.1+cvs. - -2003-01-07 Bill Wohler - - Released MH-E version 7.1. - - * MH-E-NEWS, README: Updated for release 7.1. - - * mh-e.el (Version, mh-version): Updated for release 7.1. - -2003-01-07 Bill Wohler - - * mh-customize.el (mh-auto-folder-collect-flag, - mh-alias-system-aliases, mh-alias-insert-file): Edited docstrings. - - * Makefile (MH-E-IMG): Added alias.pbm and alias.xpm. - - * mh-alias.el (mh-alias-insert-file, mh-alias-add-alias): Fixed - checkdoc warnings. - -2003-01-07 Satyaki Das - - * mh-utils.el (mh-search-from-end): New function that is used to - replace our usage of the CL function search. - (font-lock): The library is loaded to avoid compilation warning - in CVS Emacs. - - * mh-speed.el (mh-speed-goto-folder, mh-speed-add-folder) - (mh-speed-extract-folder-name, mh-speed-invalidate-map): Use - mh-search-from-end instead of search. - - * mh-seq.el (mh-thread-remove-parent-link): Use loop instead of - remove*. - (mh-thread-process-in-reply-to): Use mh-search-from-end instead - of search. - - * mh-index.el (mh-md5-parser): Fix name of function. - (mh-index-update-single-msg, mh-index-update-maps): Avoid using - destructuring-bind since Emacs-20.7 can't handle this particular - usage. - (mh-namazu-next-result): Use mh-search-from-end instead of - search. - - * mh-e.el (recursive-load-depth-limit): Add a defvar since CVS - emacs which doesn't have the variable defined causes a compiler - warning. - (mh-refile-a-msg): Rewritten to avoid using pushnew. - (mh-undo-msg): Use loop instead of remove-if. - - * mh-comp.el (mh-show-buffer-message-number): Use - mh-search-from-end instead of search. - -2003-01-01 Satyaki Das - - * mh-e.el (mh-visit-folder): Modified so that if RANGE is nil then - all messages are displayed. Documentation modified so that this is - explicitly stated. - (mh-visit-folder): Really fix it this time. - -2003-01-01 Mark D Baushke - - * mh-alias.el (mh-alias-from-has-no-alias-p): Needs the - mh-autoload comment or mh-customize may have problems finding the - function. - - * mh-loaddefs.el: Regenerated. - -2002-12-28 Satyaki Das - - * mh-index.el (mh-namazu-execute-search): Fix bug in documentation. - -2002-12-28 Bill Wohler - - * mh-comp.el (mh-letter-mode): Mention mh-compose-insertion - variable in docstring, explain how to expand directives, and - don't mention mh-mhn-compose-insertion which isn't used directly - any more. - (mh-send-letter): Mention that X-Mailer and X-Face are inserted - automatically so that a user isn't tempted to do so himself in - mh-before-send-letter-hook. - (mh-insert-letter): Use "variable" prefix for mh-invisible-headers - now that we have both a function and a variable. Clarified - language a bit. - -2002-12-26 Satyaki Das - - * mh-utils.el (mh-show-xface-function): Only load x-face-e21 if - the emacs is not XEmacs. - - * mh-index.el (mh-index-new-folder): The folder created should - always be added to mh-folder-list. Otherwise folder name - completion doesn't find the new folder created. - -2002-12-24 Satyaki Das - - * mh-customize.el (mh-clean-message-header-flag) - (mh-visible-headers, mh-invisible-headers) - (mh-invisible-header-fields-set): Reworded to satisfy checkdoc. - - * mh-loaddefs.el: Regenerated. - - * mh-e.el (mh-inc-folder, mh-visit-folder, mh-read-msg-range): - Handle nil value of mh-large-folder properly. - - * mh-customize.el (mh-tool-bar-show-set, mh-tool-bar-letter-set) - (mh-tool-bar-folder-set, mh-tool-bar-folder-buttons) - (mh-invisible-headers, mh-invisible-header-fields-set): Checkdoc - fixes. - (mh-large-folder): Updated to allow for infinity. If - mh-large-folder is nil then all folders are deemed small. - -2002-12-23 Satyaki Das - - * mh-e.el (mh-inc-folder, mh-visit-folder): Emit a message if - threading was suppressed because the number of messages exceed - mh-large-folder. - -2002-12-23 Peter S Galbraith - - * mh-utils.el (mh-invisible-headers): Deleted. Moved to - mh-customize.el - - * mh-customize.el (mh-invisible-header-fields): New - defcustom. Simple user interface to change mh-invisible-headers. - (mh-invisible-header-fields-set): New function called when - mh-invisible-header-fields is set. - (mh-invisible-headers): New function. Does the actual work of - building the variable mh-invisible-headers from - mh-invisible-header-fields. - (mh-invisible-headers): defvar moved from mh-utils.el - -2002-12-22 Satyaki Das - - * mh-speed.el (mh-speed-folder-size): Removed. Something very - similar appears as mh-folder-size. - (mh-speed-view): Simplified since the range selection logic has - been moved to mh-read-msg-range. - (mh-speed-parse-flists-output-line): Moved to mh-e.el as - mh-parse-flist-output-line. - - * mh-funcs.el (mh-pack-folder): Use the new mh-read-msg-range. - - * mh-e.el (mh-rescan-folder): Use the new mh-read-msg-range. - (mh-parse-flist-output-line): Moved from mh-speed.el where this - function was called mh-speed-parse-flists-output-line. - (mh-folder-size): Renamed from mh-speed-folder-size. The function - has been made more general and can be called from any buffer and - not just the speedbar buffer. - (mh-visit-folder): Use the new mh-read-msg-range (addresses SF - #655891). - (mh-read-msg-range): Rewritten. - -2002-12-21 Satyaki Das - - * mh-seq.el (mh-delete-subject-or-thread): New interactive - function that intelligently deletes messages based on threading, - if the folder is threaded, or on subject if folder isn't threaded. - - * mh-utils.el (mh-show-delete-subject-or-thread): New interactive - function, callable from the show buffer, to intelligently delete - messages based on threading info or subject. - (mh-show-mode-map): Change binding of "k" to call - mh-show-delete-subject-or-thread. - - * mh-e.el (mh-folder-mode-map): Change binding of "k" to call - mh-delete-subject-or-thread. - - * mh-comp.el (mh-letter-mode-map): Add key binding for - mh-insert-identity. - - * mh-loaddefs.el: Regenerated. - -2002-12-21 Peter S Galbraith - - * mh-customize.el (mh-tool-bar-letter-set): Bug fix. The - `tool-bar-add-item-from-menu' items were broken. I can't use my - constants there. - -2002-12-21 Peter S Galbraith - - * mh-alias.el (mh-alias-insert-file): Bug fix. I never checked - that an AliasFile entry existed in .mh_profile. - -2002-12-21 Peter S Galbraith - - * mh-customize.el (mh-alias-insertion-location): New defustom. - Specifies where new aliases are entered in alias files. - - * mh-alias.el (mh-alias-add-alias-to-file): Use it. - -2002-12-21 Peter S Galbraith - - * mh-alias.el (mh-alias-add-alias-to-file): If ALIAS matches - exactly, prompt to [i]nsert before old value or [a]ppend after it. - (mh-alias-insert-file): Make sure we don't edit the passwd file. - Add optional argument for alias; If ALIAS is specified and it - already exists, try to return the file that contains it. - (mh-alias-which-file-has-alias): New function. Return the name of - writable file which defines ALIAS from list FILE-LIST. - (mh-alias-add-alias): Remove prompts for case of alias already - defined; done in mh-alias-add-alias-to-file. - -2002-12-21 Satyaki Das - - * mh-speed.el (mh-speed-folders-actual): Fix bug in parsing of - folder names that have spaces in them. The original function would - truncate the folder name at the first space. - (mh-speed-flists): Add -sequence option to flists. This guards - against the user specifying something other than the unseen - sequence in his .mh_profile. - (mh-speed-parse-flists-output-line): New function that parses a - single line in the output of flists to find the folder name and - the counts of unseesn and total messages. - (mh-speed-parse-flists-output): Fix parsing bug which truncates - the folder names at the first space. - - * mh-index.el (mh-index-generate-pretty-name): New function which - generates a nicer name for the search results. It trims white - space at the beginning and end and replaces white space with - underscores within the search regexp. - (mh-index-search): Use mh-index-generate-pretty-name. - - * mh-loaddefs.el: Regenerated. - -2002-12-20 Satyaki Das - - * mh-index.el (mh-index-new-folder): Add new folder to - mh-folder-list to enable name completion. - (mh-glimpse-execute-search, mh-swish-execute-search) - (mh-swish++-execute-search): Fix documentation. - - * mh-seq.el (mh-thread-generate): Fixed a stupid bug where the wrong - folder could get 'scan'ed when generating the threaded view. - - * mh-index.el (mh-index-search): If optional prefix arg is given - then the search in the current index buffer is redone. - (mh-glimpse-execute-search, mh-swish-execute-search) - (mh-namazu-execute-search): Documentation fixes. - - * mh-e.el (mh-index-previous-search): New buffer local variable - stores parameters of search that created the buffer. - (mh-folder-mode): Make mh-index-previous-search buffer local. - (mh-visit-folder): Tweak the function so that only a single window - with the folder buffer is shown if mh-showing-mode is nil. - - * mh-loaddefs.el: Regenerated. - -2002-12-19 Peter S Galbraith - - * mh-alias.el (mh-alias-add-alias): Bug fix. - -2002-12-19 Peter S Galbraith - - * mh-alias.el (mh-alias-add-alias): New interactive command. Add - ALIAS for ADDRESS in personal alias file. - (mh-alias-grab-from-field): New interactive command. Add ALIAS for - ADDRESS in personal alias file. - (mh-alias-add-address-under-point): New interactive - command. Insert an alias for email address under point. - (mh-alias-suggest-alias): New function. Suggest an alias for STRING. - (mh-alias-insert-file): New function. Return the alias file to - write a new entry in. - (mh-alias-address-to-alias): New function. Return the ADDRESS - alias if defined, or nil." - (mh-alias-from-has-no-alias-p): New function. Return t is From has - no current alias set. Used as tool-bar button enable function. - (mh-alias-add-alias-to-file): New function. Add ALIAS for ADDRESS - in alias FILE without alias check or prompts. - - * alias.xpm, alias.pbm: New tool-bar icon for - mh-alias-grab-from-field. - - * mh-e.el (mh-folder-line-matches-show-buffer-p): New function. - Return t if the message under point in folder-mode is in the show - buffer. - - * mh-utils.el (mh-goto-address-find-address-at-point): New - function copied from goto-addr.el, which we don't want to - force-load on users. Find e-mail address around or before point. - (mh-address-mail-regexp): New defvar. A regular expression - probably matching an e-mail address. - - * mh-customize.el (mh-alias-insert-file): New defcustom. - Filename to use to store new MH-E aliases. - (mh-tool-bar-folder-buttons): Enable mh-tool-bar-item-alias icon. - - * mh-comp.el (mh-extract-from-header-value): New function. - Extract From: string from header. - -2002-12-19 Satyaki Das - - * mh-index.el (mh-index-update-single-msg): New defvar controls - max number of command line args. - (mh-index-execute): New function which is to be used - instead of xargs so that we don't give the shell too many command - line args. - (mh-index-update-maps): Use mh-index-execute instead of xargs. - (mh-index-search): Remove unused code. Also the first message in - folder buffer is made current. - -2002-12-18 Peter S Galbraith - - * mh-loaddefs.el: Regenerated. - - * mh-comp.el (mh-letter-tool-bar-map): Moved to mh-customize.el - - * mh-e.el (mh-folder-tool-bar-map): Moved to mh-customize.el - - * mh-utils.el (mh-get-msg-num): autoloaded. - (mh-show-tool-bar-map): Moved to mh-customize.el - - * mh-customize.el (mh-tool-bar-item-*): 33 new defconsts for - tool-bar setup and customization. - (mh-tool-bar-folder-buttons-set): New function to setup the - tool-bar after customization. - (mh-tool-bar-folder-buttons): New defcustom to specify which icons - appears in the tool-bar. - (mh-tool-bar-letter-buttons-set): New function to setup the - tool-bar after customization. - (mh-tool-bar-letter-buttons): New defcustom to specify which icons - appears in the tool-bar. - (mh-tool-bar-show-set): New function to setup mh-letter-tool-bar-map. - (mh-tool-bar-letter-set): New function to setup - mh-letter-tool-bar-map. - -2002-12-18 Satyaki Das - - * mh-e.el (mh-folder-mode-map): Change entries for "\t", "\M-\t" - and backtab to call mh-index-next-folder and - mh-index-previous-folder as appropriate. - - * mh-index.el (mh-index-next-folder, mh-index-previous-folder): - New interactive functions which jumps to search results of next - and previous folders respectively. - - * mh-loadddefs.el: Regenerated. - - * mh-index.el (mh-index-delete-folder-headers): Arrange for - mh-goto-cur-msg to just go to the current message. - - * mh-e.el (mh-visit-folder): Since mh-scan-folder erases the whole - buffer anyway, we don't need to delete the folder headers. Also - index-data is non-nil only when the buffer folder doesn't exist. - So we need to call mh-make-folder. - (mh-folder-mode): Fix bug in that mh-index-checksum-origin-map was - not being made buffer local! - -2002-12-17 Satyaki Das - - * mh-e.el (mh-visit-folder): Fix bug. - - * mh-index.el (mh-md5sum-buffer): Buffer from which md5sum is run. - (mh-index-folder-first, mh-index-folder-last) - (mh-index-original-msg-list): Convenience macros aren't needed - anymore since the data structure has been changed. - (mh-index-update-single-msg): New function to update maps that - relate MD5 checksums to actual messages and vice-versa for a - single message. - (mh-index-update-maps): Do the above for all messages. If some - messages don't have MD5 checksums, they are annotated with the - result of md5sum. - (mh-index-search): Updated for the new version of mh-index-data. - (mh-msg-exists-p): New function to test a message exists. - (mh-index-insert-folder-headers): Updated for new mh-index-data. - (mh-index-delete-folder-headers): New function used to eliminate - original folder names from the buffer and make it look like a - plain folder buffer. This is used from mh-process-commands. - (mh-index-visit-folder): Use new version of mh-index-data. - (mh-index-match-checksum): New function which checks if the - X-MHE-Checksum header of a message matches. - (mh-index-execute-commands): New function that rmm's the original - messages. Then after mh-execute-commands executes it will seem - that the original messages were executed upon. This completes the - fix of SF #623321. - (mh-checksum-buffer): Renamed from mh-md5sum-buffer. - (mh-checksum-cmd, mh-checksum-parser): New globals to allow - different checksum programs to be used. - (mh-checksum-choose): New functions to find a checksum program. - (mh-openssl-parser, mh-md5sum-parser, mh-md5-parser): Functions to - parse the output of md5, md5sum and openssl. - (mh-index-update-maps): Use checksum parsing function. - (mh-index-search): Set checksum choice. Add a call to recenter, - otherwise the window point in the index buffer doesn't get set - properly. - - * mh-funcs.el (mh-pack-folder, mh-sort-folder): Enable these - functions in folders created by index search. - - * mh-e.el (mh-index-msg-checksum-map) - (mh-index-checksum-origin-map): New buffer local variables that - keep track of message checksums (used to implement - refiling/deletion for folders created by index folders). - (mh-last-msg): Make the function behave like mh-first-msg. - (mh-visit-folder): Add new optional argument which initializes - folders created by mh-index-search. - (mh-folder-mode): Make the variables mh-index-msg-checksum-map and - mh-index-checksum-origin-map buffer local. - (mh-process-commands): Call mh-index-execute-commands when called - from an index search buffer. This will reflect the changes being - made in the search folder to the original folders. - - * mh-loaddefs.el: Regenerated. - -2002-12-16 Satyaki Das - - * mh-index.el (mh-index-insert-folder-headers): Fix a bug which - caused the folder buffer to be marked as modified after rescanning - an index folder. - -2002-12-15 Satyaki Das - - * mh-e.el (mh-visit-folder): The function should insert folder - names if it is visiting a folder created by index search. - - * mh-index.el (mh-index-insert-folder-headers): The function now - maintains the old value of buffer-modified-p and temporarily makes - the buffer writable. - - * mh-utils.el (mh-show-index-visit-folder): New interactive - function callable from show buffer that displays search results - from one folder. - (mh-show-mode-map): Key binding for "v". - - * mh-speed.el: Fix credits. - (mh-index-folder-speedbar-buttons) - (mh-index-show-speedbar-buttons) - (mh-index-folder-speedbar-key-map) - (mh-index-show-speedbar-key-map) - (mh-index-folder-speedbar-menu-items) - (mh-index-show-speedbar-menu-items): Removed since the modes - mh-index-folder-mode and mh-index-show-mode no longer exist. - (mh-speed-extract-folder-name): Remove the bits about - mh-index-folder-mode and mh-index-show-mode. - - * mh-seq.el (mh-copy-seq-to-eob): Updated to work properly with - index search results. - (mh-region-to-msg-list): Skip over non-scan lines. - (mh-thread-inc, mh-thread-add-spaces, mh-thread-folder): Skip - non-scan lines when populating mh-thread-scan-line-map. - (mh-thread-folder, mh-toggle-threads): Move the check for buffer - modification from mh-thread-folder to mh-toggle-threads. - (mh-toggle-threads): When returning to unthreaded view insert the - folder names if called from a index folder. - - * mh-index.el: Fix credits and update commentary. - (font-lock-defaults, mh-index-buffer, mh-index-show-buffer) - (mh-index-ma-x-msg-index, mh-index-other-buffer) - (mh-index-matches, mh-index-previous-window-configuration) - (mh-index-current-msg, mh-index-folder-mode-keymap) - (mh-index-button-map, mh-index-folder-mode-help-messages): Remove - eliminated variables. - (mh-index-folder): New variable sets the MH folder under which the - index searches are stored. - (mh-index-folder-first, mh-index-folder-last) - (mh-index-original-msg-list): Convenience macros used to pull data - elements out of a list. If needed setf can be used to change them - as well. - (mh-index-search): Rewritten to create real folders where all the - normal folder operation. This partially fixes SF #623321 (refiles - and deletes doesn't work on original messages). - (mh-index-find-max-width, mh-index-search-again) - (mh-index-insert-scan, mh-index-callback, mh-index-search) - (mh-index-notate, mh-index-show, mh-index-header-display) - (mh-index-next, mh-index-folder-mode, mh-index-show-mode): - Functions, macros and modes removed. - (mh-folder-exists-p): New function to check if a folder exists. - (mh-index-new-folder): Generate a new folder name from a given - base string that mimics the way emacs generates buffer names. - (mh-index-insert-folder-headers): Insert folder names among the - search results. - (mh-index-visit-folder): New interactive function to show the - search results of one individual folder. - (mh-swish++-execute-search): Update documentation. - - * mh-funcs.el (mh-pack-folder, mh-sort-folder): Disable these - functions if index search results are being viewed. - - * mh-e.el (mh-folder-font-lock-keywords): Add highlight for - folder. - (mh-index-data): New buffer local variable that will be used to - store info about index search results. - (mh-rescan-folder): Implement rescanning for index search results. - (mh-folder-mode): Make mh-index-data buffer local. - (mh-remove-all-notation): Modified to take into account not all - lines in the folder buffer are normal scan lines. - (mh-folder-mode-map): Add key binding for "v" to jump to original - folder narrowed to search results. - - * mh-customize.el (mh-index-folder-face): Make it bold so that it - will look like before. - - * mh-loaddefs.el: Regenerated. - -2002-12-12 Satyaki Das - - * mh-seq.el (mh-map-to-seq-msgs): Modified so that it can be given - a list of messages in addition to a sequence. - (mh-region-to-sequence, mh-region-to-msg-list): The function - mh-region-to-msg-list replaces mh-region-to-sequence. The new - function avoids creating a dummy sequence in MH-E. - (mh-thread-delete, mh-thread-refile, mh-put-msg-in-seq): Modified - to use mh-region-to-msg-list. - - * mh-funcs.el (mh-copy-msg): Modified to use mh-region-to-msg-list. - - * mh-e.el (mh-delete-msg, mh-refile-msg, mh-undo): Modified to use - mh-region-to-msg-list. - - * mh-comp.el (mh-forward): Modified to use mh-region-to-msg-list. - The buffer-local variable mail-header-separator is no longer - bound. This fixes a bug where the default value of - mail-header-separator gets used if mh-forward is called in a fresh - emacs session. - (mh-annotate-msg): Update this so that it will handle message - lists too. - (mh-insert-letter): Make the test stronger. Since %d is being used - the argument better be an integer. - - * mh-loaddefs.el: Regenerated. - -2002-12-11 Satyaki Das - - * mh-funcs.el (mh-copy-msg): Add support for transient-mark-mode. - If mark is active and transient-mark-mode is enabled then all the - messages in the region are copied. - - * mh-seq.el (mh-list-sequences): Use mh-coalesce-msg-list to print - messages in sequence nicely. The prompt for the folder is removed - (the current folder is always used) and the output is made nicer - by not overflowing the screen width. - - * mh-loaddefs.el: Regenerated. - -2002-12-09 Satyaki Das - - * mh-comp.el (mh-letter-complete): Checkdoc fix. - - * mh-seq.el (mh-thread-current-indentation-level): New function - which returns the thread indentation level of current message. - (mh-thread-next-sibling, mh-thread-previous-sibling): New - interactive functions to jump to the next and previous siblings in - thread tree respectively. - (mh-thread-immediate-ancestor): New function to jump to ancestor - of current message in thread tree. - (mh-thread-ancestor): New interactive function to jump to - immediate ancestor or to root message of current thread depending - on optional argument. - - * mh-utils.el (mh-show-thread-ancestor) - (mh-show-thread-next-sibling, mh-show-thread-previous-sibling): - Interactive functions callable from the show buffer. - (mh-show-thread-map): Bindings for Tu, Tp and Tn. - - * mh-e.el (mh-thread-map): Bindings for Tu, Tp and Tn. - - * mh-loaddefs.el: Regenerated. - -2002-12-09 Satyaki Das - - * mh-seq.el (mh-region-to-sequence): Change name of region - sequence created to 'mhe-region. This avoids any chance of - collision with actual MH sequences. - (mh-put-msg-in-seq, mh-thread-delete, mh-thread-refile): Change - name of region sequence used to 'mhe-region. Also delete the - 'mhe-region sequence when done. - - * mh-e.el (mh-delete-msg, mh-refile-msg, mh-undo): Same as above. - - * mh-comp.el (mh-forward): Same as above. - - * mh-loaddefs.el: Regenerated. - -2002-12-08 Bill Wohler - - * mh-alias.el: Edited documentation. Broke up file into 2 - sections: Alias Loading and Alias Expansion. Made terminology - consistent (replaced expand, substitute, and translate with - expand). - (mh-alias-reload): Brought message in line with coding conventions - and made more concise too. - (mh-alias-translate): Renamed to mh-alias-expand. - (mh-alias-substitute-aliases-flag): Renamed to - mh-alias-expand-aliases-flag. - (mh-alias-reload-local-users): Renamed to mh-alias-local-users. - Now just returns an alist of local users rather than have - side-effects. - (mh-alias-reload): Set timestamp at beginning of function to catch - edge case when alias added just after ali runs. Changed logic to - reflect return value of mh-alias-local-users. - - * mh-customize.el (mh-alias-substitute-aliases-flag): Renamed to - mh-alias-expand-aliases-flag. - (mh-alias-local-users): Fixed documentation. - - * mh-loaddefs.el: Regenerated - -2002-12-08 Satyaki Das - - * mh-e.el (require): Load Gnus at compile time so that the - constant gnus-version is defined when MH-E is being compiled. - (mh-macro-expansion-time-gnus-version, mh-run-time-gnus-version): - Use the constant gnus-version instead of the function gnus-version - to find out about gnus version information. - (gnus-version): Remove the autoload since it is not needed any - more. - -2002-12-08 Bill Wohler - - * mh-e.el (mh-version): Moved compilation information in front of - Emacs information. The idea is that you start at MH-E and move - outwards. Show N/A if Gnus not compiled (be explicit). Matched - coding style with other output statements. (Aside: not that - efficiency matters here, but fewer calls to format have to be - faster, right? ;-). Matched output style of old output to new - statement--liked Satyaki's indentation better ;-). - -2002-12-08 Satyaki Das - - * mh-e.el (gnus-version): Autoload the function for use in - mh-version. - (mh-macro-expansion-time-gnus-version): New macro that finds the - Gnus version at macro expansion time. - (mh-run-time-gnus-version): New function to find the Gnus version - at run time. - (mh-version): Add information about Gnus versions available at - compile time and run time. - -2002-12-07 Peter S Galbraith - - * mh-alias.el (mh-alias-ali): Add optional argument. if USER is - t, then assume ALIAS is an address and call ali with option -user. - - * mh-alias.el (mh-alias-filenames): if ARG is t, appends list of - files from `mh-alias-system-aliases' to output list obtained from - mhparam output user list only. - (mh-alias-tstamp): Use it. - -2002-12-05 Satyaki Das - - * mh-mime.el (mh-inline-vcard-p): A new function which decides if - a vcard should be displayed inline. - (mh-mime-display-single): Use mh-inline-vcard-p to display - attached vcard as a signature if no other signature is present - (this partially addresses SF #649216). - -2002-12-05 Peter S Galbraith - - * mh-comp.el (mh-send-letter): Edits docs for mh-mml-to-mime - getting run if variable `mh-mml-compose-insert-flag' is set. - (mh-get-header-field): use buffer-substring-no-properties instead - of buffer-substring. - -2002-12-04 Peter S Galbraith - - * mh-loaddefs.el: Regenerated. - - * mh-customize.el (mh-customize): Add ;;;###mh-autoload tag. - -2002-12-04 Peter S Galbraith - - * mh-loaddefs.el: Regenerated. - - * mh-comp.el (mh-letter-complete): New command to do alias or word - completion in letter-mode. - (mh-letter-mode-map): Add \M-\t binding for mh-letter-complete. - - * mh-alias.el (mh-alias-letter-mode-expand-alias-hook): Obsolete. - Replaced by mh-letter-complete command. - (mh-alias-reload-maybe): New function to rebuild alias table if - out of date. - (mh-alias-letter-expand-alias): No longer interactive. Use - mh-letter-complete instead. - -2002-12-04 Peter S Galbraith - - * mh-customize.el (mh-letter-complete-function): New defcustom. - Function to call when completing outside of fields specified to - aliases. - - * mh-alias.el (mh-alias-filenames): - s/mh-mhparam-component/mh-profile-component/ - (mh-profile-component): Move to mh-utils.el and make interactive. - (mh-read-address): Make it autoloaded. - - * mh-loaddefs.el: Regenerated. - - * mh-comp.el (mh-read-address): Removed. Replaced by mh-alias - version. - - * mh-utils.el (mh-profile-component): Moved from mh-alias.el. - -2002-12-04 Satyaki Das - - * mh-seq.el (mh-msg-is-in-seq): Formatting change. - - * mh-index.el (mh-index-insert-scan): Remove unused variable. - -2002-12-04 Bill Wohler - - * mh-loaddefs.el: Regenerated. - - * Makefile (MH-E-SRC): Moved mh-loaddefs.el into MH-E-LOADDEFS as - this was causing a cycle. - (MH-E-LOADDEFS): New variable to house mh-loaddefs.el. - (emacs): Reintroduced autoloads. - (autoloads): We're baaa-aack! - (dist, install-emacs): Use MH-E-LOADDEFS. - - * mh-comp.el (mh-customize): Moved to mh-customize.el. - - * mh-customize.el (mh-customize): Moved here from mh-comp. Makes - more sense, doesn't it? - - * mh-alias.el, mh-comp.el, mh-e.el, mh-index.el, mh-mime.el, - mh-pick.el, mh-speed.el: Added mh-autoload cookie to all - interactive functions. - -2002-12-04 Satyaki Das - - * Makefile (world): Remove target. - (mh-loaddefs.el): Add comment that only GNU Emacs can be used to - regenerate mh-loaddefs.el. - - * mh-make.el: Removed. - -2002-12-04 Mark D. Baushke - - * mh-e.el (recursive-load-depth-limit): Only modify the limit - if it is an integer. - -2002-12-04 Peter S Galbraith - - * mh-utils.el (mh-header-field-beginning): New function. Move to - the beginning of the current header field. - -2002-12-04 Satyaki Das - - * mh-make.el (mh-files): Read in the MH-E filenames from the - environment variable where the Makefile puts it. - (mh-generate-autoloads, step2): Simplified since we now have the - complete file names. - - * Makefile (world): Pass the MH-E files into the script, so that - the filenames don't need to be repeated in the script. - -2002-12-04 Bill Wohler - - * mh-loaddefs.el: New file. Check in automatically generated file - and include in package for the benefit of those who don't want to - or can't compile. - - * Makefile (MH-E-SRC): Added mh-loaddefs.el now that it is checked - in and will be packaged. - (emacs): Removed autoloads. Adding mh-loaddefs.el to MH-E-SRC is - sufficient to build it. - (compile): Depend on MH-E-SRC instead of MH-E-OBJ and pass $? into - emacs so that Emacs is only invoked once to compile files. This - speeds things up by a factor of 3. It would be nice to only pass - those files that have been modified, but Emacs 21.4 will have - batch-byte-compile-if-not-done which we might be able to copy into - mh-make.el (or my proposed mh-e-dev.el which would be more - general-purpose). - (.SUFFIXES): Removed. Now that compile works directly on the - sources, the implicit rule is obsolete. - (autoloads): Deleted. See emacs change above. - -2002-12-03 Bill Wohler - - * Makefile (MH-E-SRC, emacs): - -2002-12-03 Satyaki Das - - * mh-make.el (mh-emacs): Make failing condition more strict. - (mh-loaddefs-end): Remove redundant statement. - - * Makefile (world): A little typo. The bug didn't seem to make any - difference though. - - * mh-make.el: New script that compiles MH-E. - (mh-loaddefs-beginning, mh-loaddefs-end): Don't save the autoloads - file in between. Only save at the end. - (mh-emacs-generate-autoloads, mh-xemacs-generate-autoloads) - (mh-generate-autoloads): Replace the separate functions in Emacs - and XEmacs with one that works in both variants. This simplifies - the script a lot. - (mh-generate-autoloads): doc fix. - - * Makefile (world): New target which works for both GNU Emacs and - XEmacs. - -2002-12-03 Peter S Galbraith - - * mh-alias.el (mh-mhparam-component): Don't raise error if call to - mhparam fails. - - * mh-alias.el (mh-alias-letter-expand-alias): Build alias table if - not already available. - -2002-12-03 Bill Wohler - - * mh-customize.el (mh-show-threads-flag): Alphabetized. - -2002-12-03 Jeffrey C Honig - - * Makefile: Moved .PHONY rule after all rule for compatibility - with BSD/OS's old pmake. - -2002-12-03 Mark D Baushke - - * mh-e.el (mh-get-new-mail): Simplify no-new-mail test. - (mh-add-cur-notation): Remove unnecessary function. - -2002-12-03 Peter S Galbraith - - * mh-identity.el (mh-identity-make-menu): Check if - 'mh-letter-mode-map' is bound, since this code also gets run when - mh-customize.el is loaded at startup. - -2002-12-03 Satyaki Das - - * mh-customize.el (mh-show-threads-flag): New customizable - variable which controls if new folders start of in threaded mode - (closes SF #646794). - - * mh-e.el (mh-rescan-folder): Fix the function so that threading - is preserved across rescans. - (mh-visit-folder, mh-inc-folder): The folder is threaded if it was - already threaded or if mh-show-threads-flag is non-nil and the - number of scan lines is fewer than mh-large-folders (closes SF - #646794). - -2002-12-02 Mark D Baushke - - * mh-e.el (mh-add-cur-notation): New function to mark the - current message with the mh-note-cur character. - (mh-get-new-mail): Use mh-add-cur-notation to undo the work of - mh-remove-cur-notation if there was no new mail (closes SF #647681). - - * mh-e.el (mh-set-cmd-note): Do not update the default mh-cmd-note - value (closes SF #643701). - -2002-12-02 Peter S Galbraith - - * mh-alias.el (mh-alias-reload): Renamed from mh-alias-learn-aliases. - (mh-alias-load-local-users): Renamed from mh-alias-learn-local-users. - (mh-alias-passwd-alist): New variable, holding aliases extracted - from the passwd file. - (mh-alias-tstamp): New variable storing the timestamp for alias - list generation. - (mh-read-address, mh-alias-reload, mh-alias-reload-local-users): - Complete rewrite. - (mh-alias-minibuffer-confirm-address): Use mh-alias-translate. - (mh-alias-translate): New function. Return translation for alias, - checking if in blind or passwd list. - (mh-alias-letter-expand-alias): Rewrite using - mail-abbrev-complete-alias from mailabbrev.el - (mh-alias-expand-alias-map): New variable. - (mh-alias-ali): New function. Return formatted string of - translated ALIAS from ali. - (mh-mhparam-component): New function. Return COMPONENT value from - mhparam, or nil if unset. - (mh-alias-filenames): New function. Provide list of alias - filenames from mhparam, or nil if none are set. - - * mh-customize.el (mh-alias-display-blind-name-on-completion-flag): - Obsoleted. - (mh-alias-timestamp): Renamed to mh-alias-system-aliases. - -2002-12-02 Bill Wohler - - * Makefile (mh-loaddefs.el): Suppress creation of backup file. - -2002-12-02 Mark D. Baushke - - * Makefile (mh-loaddefs.el): Simplify rule. - - * Makefile (clean): Remove mh-loaddefs.el* for good measure. - ($(MH-E-OBJ)): Depend on mh-loaddefs.el to compile these. - (autoloads, mh-loaddefs.el): Revamp rules. - (mh-loaddefs.el-tail, autoloads-gen): Remove rules. - - * mh-e.el (recursive-load-depth-limit): Do not try to - bump the value unless the variable exists. - - * mh-e.el (recursive-load-depth-limit): Bump value of - recursive-load-depth-limit to 50 to allow emacs 21.1 which - normally has a default value of 10 to be able to compile MH-E. - -2002-12-02 Satyaki Das - - * mh-funcs.el (mh-pack-folder, mh-sort-folder): Fix the functions - so that threading is preserved (needed for SF #646794). - - * mh-identity.el (mh-identity-signature-start) - (mh-identity-signature-end): Checkdoc fixes. - - * mh-e.el (mh-previous-unread-msg, mh-next-unread-msg): Checkdoc - fixes. - -2002-12-01 Satyaki Das - - * mh-identity.el (compile): Make mh-identity.el compile without - warnings. - - * mh-e.el (mh-previous-unread-msg, mh-next-unread-msg): New - interactive functions that go to next and previous unread - messages (closes SF #630328). - (mh-folder-mode-map): Add key bindings for M-n and M-p to - mh-folder-mode-map. - - * mh-utils.el (mh-show-next-unread-msg) - (mh-show-previous-unread-msg): New interactive functions that go - to the next and previous unread messages respectively. These are - callable from the show buffer. - (mh-show-mode-map): Add key bindings for M-n and M-p to - mh-show-mode-map. - -2002-12-01 Bill Wohler - - * mh-mime.el (mh-defun-compat): Make it indent like a defun. - - * mh-index.el (mh-defun-index): Make it indent like a defun. - - * mh-customize.el: New file (closes SF #643722). - - * Makefile (MH-E-SRC): Added mh-customize.el (closes SF #643722). - - * mh-speed.el, mh-pick.el, mh-mime.el, mh-index.el, mh-e.el, - mh-comp.el: Moved all defgroups, defcustoms, and deffaces to - mh-customize.el (closes SF #643722). - - * mh-utils.el (mh-xemacs-flag): Moved here from below since - needed by mh-customize.el. - (mh-customize): Required. mh-invisible-headers) - (mh-bury-show-buffer-flag, mhl-formfile): - Moved all defgroups, defcustoms, and deffaces to mh-customize.el - (closes SF #643722) . - - * mh-identity.el (mh-comp-loaded): New variable in a desparate - attempt to prevent an infinite loop. - (eval-when-compile): Was able to remove these defvars as they are - now predefined in mh-loaddefs and mh-customize. - (mh-identity-list-set): Added ;;;###mh-autoload cookie. - Moved all defgroups, defcustoms, and deffaces to mh-customize.el - (closes SF #643722). - - * mh-alias.el (mh-e): Require this, as it needs defcustoms, which - is in mh-customize which is required by mh-utils which is required - by mh-e. - Moved all defgroups, defcustoms, and deffaces to mh-customize.el - (closes SF #643722). - -2002-11-30 Satyaki Das - - * mh-e.el (mh-thread-map): Add key bindings "Td" and "To" (closes - SF #630493). - (mh-help-messages): Update help message for prefix map. - (mh-help-messages): Doc fix. - (mh-help-messages): Really fix it. - - * mh-utils.el (mh-show-thread-delete, mh-show-thread-refile): New - interactive functions corresponding to mh-thread-delete and - mh-thread-refile callable from the show buffer. - (mh-show-thread-map): Add key bindings for "Td" "To". - - * mh-seq.el (mh-narrow-to-seq, mh-put-msg-in-seq, mh-rename-seq) - (mh-narrow-to-subject, mh-delete-subject, mh-toggle-threads): Add - mh-autoload cookies. - (mh-thread-find-children): New function which finds the region - containing all children of a message. - (mh-thread-delete): New interactive function that marks for - deletion the current message and its children. - (mh-thread-refile): New interactive function that marks for - refiling the current message and its children. - -2002-11-30 Bill Wohler - - * mh-funcs.el, mh-identity.el, mh-index.el, mh-pick.el, mh-seq.el: - Removed MH-E autoloads. These are now provided by mh-loaddefs.el. - Added ;;;###mh-autoload tag to selected functions so that - autoloads for those functions can be automatically created in - mh-loaddefs.el (closes half of SF #643722). - - * mh-mime.el (mh-buffer-data): Moved to mh-utils where it is used. - Added ;;;###mh-autoload tag to selected functions so that - autoloads for those functions can be automatically created in - mh-loaddefs.el (closes half of SF #643722).. - - * mh-utils.el (mh-loaddefs): Added require. - (mh-buffer-data): Moved here from mh-mime.el as it is used in - mh-display-msg. - (mh-set-cmd-note): Moved to mh-e.el. - Removed MH-E autoloads. These are now provided by mh-loaddefs.el. - Added ;;;###mh-autoload tag to selected functions so that - autoloads for those functions can be automatically created in - mh-loaddefs.el (closes half of SF #643722).. - - * mh-e.el (mh-set-cmd-note): Moved here from mh-utils.el since it - uses mh-scan-format-file which is defined here. - Removed MH-E autoloads. These are now provided by mh-loaddefs.el. - Added ;;;###mh-autoload tag to selected functions so that - autoloads for those functions can be automatically created in - mh-loaddefs.el (closes half of SF #643722).. - - * mh-comp.el, mh-speed.el (mh-utils): Removed require. mh-utils is - provided via mh-e.el. - Removed MH-E autoloads. These are now provided by mh-loaddefs.el. - Added ;;;###mh-autoload tag to selected functions so that - autoloads for those functions can be automatically created in - mh-loaddefs.el (closes half of SF #643722).. - - * Makefile (emacs): Add dependency on autoloads. - (clean): Remove mh-loaddefs.el too. - (autoloads): New target. Builds mh-loaddefs.el. - (mh-loaddefs.el): New target. Initializes mh-loaddefs.el. - (mh-loaddefs.el-tail): New target. Appends to mh-loaddefs.el. - (autoloads-gen): Runs batch-update-autoloads to populate - mh-loaddefs.el (closes half of SF #643722).. - (auto-autoloads.elc): Renamed from autoloads to be explicit about - file that's created. - (custom-load.elc): Ditto. - -2002-11-30 Satyaki Das - - * mh-seq.el (mh-thread-last-ancestor): New variable which keeps - track of oldest ancestor of last message. If due to narrowing the - common ancestor of two messages is lost then one of them is - promoted to be the parent of the other. This variable helps in - this process. - (mh-thread-generate-scan-lines): Group messages which belong to - the same thread tree, even if a common ancestor is no longer - present. - (mh-thread-folder, mh-copy-seq-to-eob, mh-thread-inc): Bind - mh-thread-last-ancestor to nil when calling - mh-thread-generate-scan-lines. - - * mh-mime.el (font-lock): Font-lock required at compile time to - avoid warning about font-lock-maximum-size - (mh-display-smileys, mh-display-emphasis): Show graphical smileys - and emphasis only if message isn't too large. - - * mh-e.el (mh-visit-folder): Revisiting a buried folder which has - been threaded or narrowed confuses MH-E. Even though the folder is - displayed as not threaded and not narrowed, MH-E still believes - the folder is in the previous state. This can cause problems when - trying to narrow/thread the folder. The change fixes this. - - * mh-mime.el (mh-mime-display-alternative): The setting of - mh-display-buttons-for-inline-parts-flag was not being used when - displaying one of the alternatives. This change fixes that. - - * mh-comp.el (mh-show-buffer-message-number): Replace subseq with - substring. - (mh-filter-out-non-text): When filtering out MIME buttons from - yanked text, the last line of the MIME part was getting lost. The - fix avoids that and removes only the last new line instead. - -2002-11-29 Peter S Galbraith - - * Makefile (MH-E-SRC): Add mh-alias. - - * mh-alias.el: Assign copyright to FSF instead of myself. - (mh-read-address): Add support for emacs-21's - completing-read-multiple to prompt for multiple entries. - (mh-alias-PC-complete-address): Deleted. - (mh-alias-learn-aliases): Use mh-exec-cmd-quiet instead of old kludge. - (mh-alias-letter-mode-expand-alias-hook): Simplify. - (mh-alias-hostname): Deleted. - (mh-alias-substitute-aliases-flag): Change default to nil. - (mh-alias-display-blind-name-on-completion-flag) Change default to - nil. - (mh-alias-alist): Now holds alias values. - (mh-alias-lowercase-alist): Deleted. - (mh-alias-minibuffer-confirm-address, mh-alias-learn-aliases) - (mh-alias-learn-local-users, mh-alias-letter-expand-alias): Use - new mh-alias-alist instead of old mh-alias-lowercase-alist. - - * mh-alias.el: Moved from contrib/ directory. Now part of MH-E! - - * Makefile (MH-E-SRC): Add mh-identity. - - * mh-identity.el (mh-compose-and-send-mail, mh-insert-identity) - (mh-identity-make-menu, mh-identity-default, mh-identity-menu): - Moved to mh-comp.el. - - * mh-comp.el (mh-compose-and-send-mail): Add mh-identity support. - (mh-insert-identity, mh-identity-make-menu, mh-identity-default) - (mh-identity-menu): Added from mh-identity.el - -2002-11-29 Bill Wohler - - * mh-comp.el, mh-e.el, mh-funcs.el, mh-identity.el, mh-index.el, - mh-mime.el, mh-pick.el, mh-seq.el, mh-speed.el, mh-utils.el: - Ran indent-region, reformatted long lines, ran untabify. - (indent-tabs-mode): Set file local variable to nil. - -2002-11-29 Bill Wohler - - Released MH-E version 7.0. - - * mh-e.el (Version, mh-version): Updated for release 7.0. - - * mh-comp.el (subseq, search): Require cl instead of autoloading - these due to compilation warnings in CVS Emacs. - -2002-11-23 Bill Wohler - - * MH-E-NEWS: Emphasize the renaming of the variables at the top of - the notes. - -2002-11-22 Satyaki Das - - * mh-utils.el (mh-show-mode-map): Remove binding for RET since it - is not needed and the binding is more useful to toggle display of - MIME parts. - - * mh-mime.el (mh-mime-button-commands): Remove bindings for "i" - and "o" from MIME buttons. - (mh-insert-mime-button): Change comment to reflect change in - button key map. - -2002-11-21 Bill Wohler - - Released MH-E version 6.1.91. - - * mh-e.el (Version, mh-version): Updated for release 6.1.91. - - * MH-E-NEWS: Inline HTML parts supported with Gnus 5.10, not 5.9. - -2002-11-21 Mark D. Baushke - - * mh-comp.el (mh-letter-insert-signature-hook): This should be in - customize-group mh-compose. - -2002-11-21 Satyaki Das - - * mh-utils.el (load): Load mm-view.el here so that - mm-inline-text-html would be defined if available. - (mh-mm-inline-media-tests): If mm-inline-text-html is available - then use it, otherwise fall back on using mm-inline-text (closes - SF #641482). - - * mh-mime.el (load): Remove the load of mm-view here since it - happens in mh-utils.el now. - -2002-11-15 Bill Wohler - - Released MH-E version 6.1.90. - - * README (Compile): New section. Users must now compile MH-E due - to the vagaries of the various versions of gnus. - - * Makefile (MH-E-IMG): Added reply-all.pbm, reply-all.xpm, - reply-from.pbm, reply-from.xpm, reply-to.pbm, reply-to.xpm. - (MH-E-ETC-ETC): Added Makefile and README. - (dist): Depend on all, so clean happens. Don't add .elc files to - tarball as they are built upon installation now. - -2002-11-15 Satyaki Das - - * mh-e.el (mh-process-commands): Fix a bug in mh-execute-commands. - If called in threaded mode, cur was always getting set to the last - message in the folder. - -2002-11-14 Bill Wohler - - * mh-e.el (Version, mh-version): Updated for release 6.1.90. - - * MH-E-NEWS, README: Updated for release 7.0. - - * mh-utils.el (mh-index-search): Added full docstring which new - users will need before they run a search! - (mh-swish++-execute-search, mh-swish-execute-search, - mh-namazu-execute-search mh-glimpse-execute-search): Added - autoloads with full docstrings for the same reason! - - * mh-e.el (mh-limit-map): Removed / / alias for - mh-narrow-to-subject. - - * mh-utils.el (mh-show-thread-map): Removed / / alias for - mh-show-narrow-to-subject. - - * mh-seq.el (mh-delete-subject): Checkdoc fix. - - * mh-e.el (mh-help-messages): Added / prefix character to help - string. Tweaked / helpstring a little. - -2002-11-14 Mark D. Baushke - - * mh-utils.el (mh-set-cmd-note): Fix nitpick by adding one to the - width for cosmetic reasons. - -2002-11-14 Peter S Galbraith - - * mh-identity.el (mh-insert-identity): Fix a few things undone by - Jeff's patch. - (mml-insert-tag): Add autoload. - -2002-11-13 Mark D. Baushke - - * mh-identity.el (mh-insert-identity): A value of either nil or - "" should cause the field to be removed. - (mh-identity-list): Update the docstring. - -2002-11-13 Peter S Galbraith - - * mh-e.el (mh-limit-map): New key map for limits (subject for now). - * mh-utils.el (mh-show-limit-map): Same. - - * mh-seq.el (mh-delete-subject): Renamed from - mh-delete-subject-sequence. - (mh-narrow-to-subject): Renamed from mh-narrow-to-subject-sequence. - (mh-next-unseen-subject-sequence): Removed. :-( - * mh-e.el: Use 'em - * mh-seq.el: Use 'em. - -2002-11-13 Mark D. Baushke - - * mh-e.el (mh-alt-show): New defalias for mh-show. - (mh-alt-refile-msg): New defalias for mh-refile-msg. - (mh-alt-send): New defalias for mh-send. - (mh-folder-mode-map): Use mh-alt-show, mh-alt-refile-msg and - mh-alt-send for the alias bindings. - (mh-alt-visit-folder): New defalias for mh-visit-folder. - (mh-folder-map): Use it. - (mh-folder-message-menu): Revert previous change. - -2002-11-13 Peter S Galbraith - - * mh-e.el (mh-folder-message-menu): Make key binding "o" appear in - menu for mh-refile-msg. - -2002-11-13 Satyaki Das - - * mh-seq.el (mh-thread-generate-scan-lines): In threaded view, - scan lines of duplicate messages were too long. The change fixes - that. - -2002-11-13 Bill Wohler - - * mh-utils.el (mh-adaptive-cmd-note-flag): Improved grammar in - docstring. - - * mh-speed.el (mh-speed-run-flists-flag): While documenting this - variable in the release notes, I was unsure what would happen if - set to nil. So, I clarified the docstring and indicated - implications of setting this variable to nil, and offered manual - workaround. - -2002-11-13 Satyaki Das - - * mh-index.el (mh-index-quit): Fix documentation and run - mh-before-quit-hook and mh-quit-hook. - -2002-11-13 Bill Wohler - - * mh-utils.el (with-mh-folder-updating): Renamed local variable - mh-save-modification-flag to save-modification-flag. - -2002-11-12 Bill Wohler - - * mh-index.el (mh-index-keymap): Renamed to - mh-index-folder-mode-keymap to be a closer to the usual keymap - naming convention. Since we want our own keymap and not inherit - the one in mh-folder-mode, we need to use a suffix other than - -map. - - * mh-e.el (mh-folder-sequence-menu): s/Msg/Message. - s/Seq/Sequence. - (mh-folder-message-menu): s/Msg/Message. Removed redundant refile - item. - (mh-folder-folder-menu): Aligned symbols. - - * mh-index.el (mh-index-folder-message-menu): s/Msg/Message. - - * mh-utils.el (mh-show-sequence-menu): s/Msg/Message. - s/Seq/Sequence. - (mh-show-message-menu): s/Msg/Message. Removed redundant refile - item. - (mh-show-folder-menu): Aligned symbols. - -2002-11-12 Satyaki Das - - * mh-index.el (mh-index-matches, mh-index-current-match): Remove - these variables since they were only used for glimpse and grep. - Now the functionality of all the indexing programs will be - uniform. - (mh-index-search, mh-index-insert-scan, mh-defun-index) - (mh-index-show): Simplify functions since matches are no longer - shown. - (mh-index-parse-match): Remove function. - - * mh-e.el (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): New - variables to keep track of the widths of the different fields in - the scan lines. - (mh-scan-field-from-start-offset, mh-scan-field-from-end-offset) - (mh-scan-field-subject-start-offset): Offsets that are computed - from the scan line widths. - - * mh-seq.el (mh-copy-seq-to-eob, mh-thread-inc) - (mh-thread-parse-scan-line): Use new variables that remember the - various offsets in place of integer constants. - (mh-thread-generate-scan-lines): Space shouldn't be added here! - -2002-11-12 Bill Wohler - - * mh-e.el (mh-scan-format-mh, mh-scan-format-nmh): Noted that the - first column is column number 0 and changed "sixth column" to - "fifth column" accordingly. - - * mh-index.el (mh-index-folder-mode): Clarified method of replying - in mode documentation. - (mh-index-folder-tool-bar-map): s/mh-e/MH-E/. - - * mh-e.el (mh-generate-new-cmd-note): Try not to mention internal - variable mh-cmd-note in docstrings. - - * mh-utils.el (mh-adaptive-cmd-note-flag): Set default value to t. - Reworded docstring so it doesn't mention internal variable - mh-cmd-note. Added information about using fixed-width message - numbers. - (mh-cmd-note): Mention mh-set-cmd-note in docstring. Also suggest - that it is updated dynamically only if mh-scan-format-file is t. - (mh-set-cmd-note): Grammer fix in docstring. - (mh-cmd-note): Noted that the first column is column number 0. - - * mh-e.el (mh-scan-format-file): Added information about - mh-set-cmd-note and mh-adaptive-cmd-note-flag to docstring. - - * mh-index.el (mh-index-keymap): Added bindings for i - (mh-inc-folder), m (mh-send alias), and s (mh-send) since these - appear to be supported and are found in the toolbar. - (mh-index-folder-key-map): Ditto for f (mh-visit-folder alias), o - (mh-visit-folder) alias, and v (mh-visit-folder). - (mh-index-folder-mode-help-messages): Changes for above. - (mh-index-folder-message-menu, mh-index-folder-folder-menu): New - menus. I decided to delete the unavailable items since greying out - implies that the user can do something to access them. In this - case, that's not the case. Well, that's not entirely true--the - user could write code for those functions ;-). - (mh-index-folder-mode): Use new menus. - - * mh-utils.el (mh-prompt-for-folder): Added optional argument - default-string which can be used in case the string for default - isn't intuitive enough. - - * mh-index.el (mh-index-search): Made default prompt more - intuitive (I hope!). - -2002-11-11 Peter S Galbraith - - * mh-identity.el (mh-header-field-delete): Remove save-excursion. - Strange that this worked for me before... Thanks to Jeff for the - patch. - (mh-insert-identity): Numerous tweaks and fixes from Jeff who also - adds a nicer-looking MIME header for signatures inserted after - MIME insertions. - -2002-11-11 Satyaki Das - - * mh-seq.el (mh-thread-parse-scan-line): Generalize this function - so that it can take a string containing the scan-line as argument - in addition to using the line at point. - (mh-thread-add-spaces): New function to pad each scan line to the - appropriate length. This is called when mh-cmd-note is increased. - - * mh-e.el (mh-generate-new-cmd-note): Make this work on a threaded - folder by using mh-thread-add-spaces to pad the pre-existing lines - in mh-thread-scan-line-map appropriately. - (mh-thread-add-spaces): Autoload from mh-seq. - -2002-11-11 Mark D. Baushke - - * mh-index.el: Fix checkdoc nit. - - * mh-mime.el (mh-display-buttons-for-inline-parts-flag): Renamed - from mh-display-buttons-for-inline-parts. - (mh-mime-display-single): Use it. - This addresses part of SF #627015. - - * mh-e.el (mh-print-background-flag): Renamed from - mh-print-background. - * mh-funcs.el (mh-print-msg): Use it. - This addresses part of SF #627015. - - * mh-comp.el (mh-delete-yanked-msg-window-flag): Renamed from - mh-delete-yanked-msg-window. - (mh-yank-from-start-of-msg, mh-yank-cur-msg): Use it. - This addresses part of SF #627015. - - * mh-utils.el (mh-update-sequences-after-mh-show-flag): Renamed - from mh-update-sequences-after-mh-show. - (mh-show-msg): Use it. - This addresses part of SF #627015. - - * mh-utils.el (mh-decode-quoted-printable-flag): Renamed from - mh-decode-quoted-printable - (mh-display-msg, mh-decode-quoted-printable-have-mimedecode): - Use it. - This addresses part of SF #627015. - - * mh-utils.el (mh-recursive-folders-flag): Renamed from - mh-recursive-folders. - (mh-make-folder-list-background): Use it. - * mh-funcs.el (mh-list-folders): Ditto. - This addresses part of SF #627015. - - * mh-utils.el (mh-auto-folder-collect-flag): Renamed from - mh-auto-folder-collect. - (mh-find-path): Use it. - This addresses part of SF #627015. - - * mh-utils.el (mh-decode-mime-flag): Renamed from - mh-decode-mime. - * mh-utils.el (mh-show-mode, mh-show-xface) - (mh-decode-quoted-printable, mh-display-msg, mh-display-msg): Use it. - * mh-mime.el (mh-graphical-smileys-flag) - (mh-graphical-emphasis-flag): Ditto. - * mh-index.el (mh-index-search, mh-index-show): Ditto. - * mh-e.el (mh-header-display): Ditto. - This addresses part of SF #627015. - - * mh-e.el (mh-make-folder-mode-line): Use save-window-excursion - to get back to the current message. - -2002-11-10 Satyaki Das - - * mh-index.el (mh-index-keymap, mh-index-page-msg) - (mh-index-folder-tool-bar-map): Replace mh-index-scroll-up with - mh-index-page-msg. - (mh-index-keymap, mh-index-previous-page): Replace - mh-index-scroll-down with mh-index-previous-page. - -2002-11-09 Satyaki Das - - * mh-index.el (autoload/require): Load mh-mime when mh-index.el is - loaded. This fixes the infinite load loop. I am not sure what the - actual problem is. Also removed the nop requires/autoloads. - (mh-defun-index): Use the right argument for mh-recenter. - Otherwise it misbehaves for the default value of - mh-summary-height. - - * mh-e.el (mh-goto-next-button): Fix infinite loop when S-Tab was - used on first line of index folder buffer. - -2002-11-09 Peter S Galbraith - - * mh-index.el (mh-index-folder-tool-bar-map): Tool-bar for - mh-index-mode. - (mh-index-folder-mode): Use it. - (mh-index-keymap): Added mouse-2 binding, like in regular - folder-mode. - -2002-11-08 Satyaki Das - - * mh-index.el (mh-index-folder-mode): Fix doc string for major - mode. It was pointing to the wrong keymap. - (mh-index-show-mode): Fix doc string for mode. Also add mh-help - support. - - * mh-comp.el (mh-forward, mh-yank-cur-msg): Use new macro - mh-mark-active-p instead. This does the right thing for different - variants of Emacs. - (mh-yank-cur-msg): Add a space between sexprs. - - * mh-utils.el (mh-mark-active-p): New macro which papers over - diffences between GNU Emacs and XEmacs. The variables mark-active - and transient-mark-mode are used in GNU Emacs while zmacs-regions - and region-active-p are used in XEmacs. - - * mh-seq.el (mh-put-msg-in-seq, mh-thread-ancestor-p): Use - mh-mark-active-p as above. - - * mh-e.el (mh-delete-msg, mh-refile-msg, mh-undo): Use - mh-mark-active-p as above. - -2002-11-06 Peter S Galbraith - - * mh-comp.el (mh-yank-cur-msg): Fix for XEmacs. It didn't work - with a selected region, and left the inserted text selected (in - reverse video). I didn't use SF patch #402315 to implement this. - -2002-11-05 Peter S Galbraith - - * mh-utils.el (mh-show-tool-bar-map): Change call to - mh-tool-bar-search-command such that user can customize it for the - current session. - - * mh-e.el (mh-folder-tool-bar-map): Same. - -2002-11-05 Bill Wohler - - * mh-utils.el, mh-e.el (mh-tool-bar-search-function): Renamed from - mh-tool-bar-search-command. - - * mh-index.el (mh-index-search): Backed out previous change to - prompt. There ain't no folder named "all." - - * mh-utils.el (mh-tool-bar-search-command): Added mh-search-folder - and mh-index-search to the docstring so that user can easily click - on them for more information. - - * mh-pick.el (mh-search-folder): Mention that this function uses - the MH pick command to give the user more information when - choosing between mh-search-folder and mh-index-folder. - - * mh-index.el (mh-index-search): Edited the docstring. Direct the - user to mh-index-program if necessary. - (mh-index-program): Edited this docstring too. Viewing the help - in a *Help* buffer really exposes grammatical flaws. - -2002-11-05 Peter S Galbraith - - * mh-utils.el (mh-tool-bar-search-command): New defcustom to set - what search function to use in tool-bar. - (mh-show-tool-bar-map): Use it. - - * mh-e.el (mh-folder-tool-bar-map): Use it. - -2002-11-05 Bill Wohler - - * mh-index.el (mh-index-search): Changed default prompt from "+" - to "all". mh-prompt-for-folder doesn't seem to mind. - - * mh-e.el (mh-folder-folder-menu): Added menu entry for - mh-index-search. - - * mh-utils.el (mh-show-folder-menu): Added menu entry for - mh-index-search. - - * mh-index.el: Added commentary on supported search engines and - for getting started (initializing database). - -2002-11-04 Satyaki Das - - * mh-index.el (mh-index-keymap, mh-index-folder-key-map): Move key - binding of "i" to "Fi". - (mh-index-folder-mode-help-messages): Change help message to - reflect above change. - -2002-11-04 Bill Wohler - - * mh-index.el (mh-index-program, mh-indexer): Swapped names since - the former seems like a better user variable name. If you've - customized mh-indexer, be sure to toss it out and customize - mh-index-program. - -2002-11-04 Satyaki Das - - * mh-index.el (mh-indexer-choices): Not having the quotes in the - binary names is a bit nicer since that maintains uniformity with - the other names. - (mh-index-choose): Use symbol-value instead of eval. Eval should - be avoided except when it can't be :-). - -2002-11-04 Bill Wohler - - * mh-index.el (mh-index-program): New variable to hold the name of - the indexer that was found; use this instead of clobbering - user-customizable variable mh-indexer. - (mh-index-search): Use it. Added comments to keep others from - doing what I had done (fortunately, I caught myself before - checking it in ;-). - (mh-index-choose): Set mh-index-program instead of mh-indexer. - Update docstring to describe side-effects. - - * mh-index.el (mh-indexer): Added swish++ to docstring. Chances - are good that if someone has both swish++ and swish, they want to - use the much faster, much smaller swish, so move it up in the - list. - (mh-indexer-choices): Ditto for rationale for moving swish++ up in - priority over swish. Also, use -binary symbols instead of - hard-coding binary names. This allows package installers to - customize the location of the binaries in site-lisp and still have - the auto-detection code work. It also allows one to have alternate - binary names (see mh-swish++-binary). - (mh-index-search): Ditto (moving swish++ up). - (mh-swish++-binary): Look for search++, then search. The rationale - is that a package maintainer may rename search to search++ if - search is already in use (e.g., Debian) so try it first. - (mh-swish++-execute-search): Replaced Satyaki's path with dummy - path in docstring. Also removed RecurseSubdirs since this is the - default. Added comment that index might be named index++ on some - systems (e.g., Debian). - (mh-index-choose): Updated to work with new mh-indexer-choices. - -2002-11-04 Peter S Galbraith - - * mh-identity.el (mh-identity-list-set): Don't call easy-menu-add - here, since that adds the menu to the Customize buffer in XEmacs. - -2002-11-04 Peter S Galbraith - - * mh-comp.el (mh-mhn-compose-insert-flag) - (mh-mml-compose-insert-flag): Removed eval-when-compile defvar. - - * mh-mime.el (mh-mhn-compose-insert-flag) - (mh-mml-compose-insert-flag): Move variables to mh-utils.el. - Fixes mh-letter-menu for XEmacs. - -2002-11-04 Eric Ding - - * mh-comp.el (mh-rejected-letter-start): add another string - -2002-11-04 Eric Ding - - * mh-comp.el (mh-rejected-letter-start): regexp-opt doesn't take - regexps as args, only regular strings - -2002-11-04 Peter S Galbraith - - * mh-comp.el (mh-insert-mail-followup-to): Don't modify a - pre-existing M-F-T field. If a nmh replgroupcomps propagates a - M-F-T field in a message reply, then we have to have it alone. - -2002-11-02 Bill Wohler - - * mh-comp.el, mh-e.el, mh-funcs.el, mh-identity.el, mh-index.el, - mh-mime.el, mh-pick.el, mh-seq.el, mh-speed.el, mh-utils.el, - mh-xemacs-compat.el: Added Local Variables section. Defined - sentence-end-double-space to be nil so that those who might not - buy my setting of this variable can at least run checkdoc without - a whole lot of noise. - -2002-11-02 Peter S Galbraith - - * mh-identity.el: New file. Multiple Identify support for MH-E. - Used to easily set different fields such as From and Organization, - as well as diffrent signature files. This file won't be included - with V7.0. - -2002-11-02 Bill Wohler - - * mh-mime.el (mh-mm-save-part): New function to wrap mm-save-part - from Gnus 5.10 to make it explicit which code has been - commandeered. - (mh-mime-save-part): Call mh-mm-save-part instead of cut-n-pasted - code from Gnus 5.10. - -2002-11-02 Peter S Galbraith - - * mh-comp.el (mh-yank-from-start-of-msg): Edit docstring to - mention related variables mh-reply-show-message-flag and - mh-delete-yanked-msg-window. - (mh-reply): Change the "Reply to whom" prompt. - -2002-11-01 Bill Wohler - - * mh-e.el (mh-show-hook): Moved to mh-utils.el where it is used. - (mh-folder-list-change-hook): Converted this from defvar in other - files to defcustom here. It is called, not documented as - obsolete, and might as well be documented. - (mh-inc-folder, mh-quit, mh-delete-a-msg, mh-refile-a-msg, - mh-process-commands, mh-update-unseen): Added missing - documentation about hook, or made verbiage about hook consistent - throughout, even if the function isn't interactive. - - * mh-utils.el (mh-folder-list-change-hook): Moved defvar to mh-e - and made it a defcustom. - (mh-show-mode-hook): Put it back in (actually, it was in mh-e.el, - but this is the place where it is called). - (mh-show-hook): Moved here from mh-e.el since it's called here. - (mh-show-mode): Call mh-show-mode-hook. - (mh-show-mode, mh-show-msg, mh-find-path, mh-prompt-for-folder, - mh-prompt-for-folder, mh-set-folder-list): Added missing - documentation about hook, or made verbiage about hook consistent - throughout, even if the function isn't interactive. - - * mh-comp.el (mh-send-letter): Made verbiage about hook consistent - throughout. - (mh-insert-prefix-string): Made docstring more descriptive of what - is going on. - - * mh-funcs.el (mh-kill-folder): Added missing documentation about - hook. - - * mh-index.el (mh-index-show-hook): Moved defvar to defcustom. - (mh-index-show): Made verbiage about hook consistent throughout. - - * mh-mime.el (mh-edit-mhn-hook): Moved defvar to defcustom. - (mh-edit-mhn): Added missing documentation about hook. - - * mh-pick.el (mh-pick-mode): Made verbiage about hook consistent - throughout. Call the damn hook. - -2002-11-01 Satyaki Das - - * mh-comp.el (mh-insert-mail-followup-to-list): Fix typo so that - it will look right in info. - - * mh-index.el (mh-index-search): Change argument name from - new-buffer-p to new-buffer-flag. - (mh-index-search-again, mh-index-search): New index-buffers were - being named *mh-index*<2>, *m-index*<2><2> and so on. This problem - is fixed. - (mh-index-scroll-up, mh-index-scroll-down): Scrolling in index - show buffers (after the first one) was broken. - (mh-index-quit): Bury show buffer instead of killing it. Killing - it, without killing the corresponding folder buffer, can cause - confusion with two folder buffers trying to display in the same - show buffer. - - * mh-seq.el (mh-thread-prune-containers): Rewritten without - recursion. Also removed the top-level-p argument since it isn't - required anymore. - (mh-thread-sort-containers): New function factored out from - previous definition of mh-thread-prune-containers. It sorts - message containers in ascending order wrt their message indices. - (mh-thread-generate): Use new mh-thread-prune-containers. - - * mh-e.el (mh-remove-all-notation): Fix the test. It was testing - at the wrong place! - -2002-10-31 Bill Wohler - - * Makefile, README, import-emacs, mh-comp.el, mh-e.el, - mh-funcs.el, mh-index.el, mh-mime.el, mh-pick.el, mh-seq.el, - mh-speed.el, mh-utils.el: Replaced mh-e with MH-E. - -2002-10-31 Satyaki Das - - * mh-seq.el (mh-thread-parse-scan-line): Modified to remove user - sequence notation and leave notation for other things alone. This - ensures that threading doesn't lose notations for replied-to - messages. - - * mh-e.el (mh-inc-folder): Remove call to mh-widen here and - instead do it in mh-get-new-mail. This way the widening happens - only if new mail is incorporated. - (mh-generate-new-cmd-note): The function now returns the point - from which the new messages start. This will allow threading to do - the right thing. - (mh-get-new-mail): Always call mh-remove-cur-notation. Otherwise - adaptive scan mode leaves two messages marked as current in - certain cases. Fix indentation of if statement. If there are - messages to be incorporated, the folder is widened. If mh-cmd-note - changes set start-of-inc correctly. - (mh-remove-all-notation): Change this function to only remove user - sequence notation and leave notation for replied-to messages and - similar notation alone. This means operations like narrowing to - subject sequence and widening don't lose notations. - -2002-10-31 Bill Wohler - - * mh-comp.el (mh-insert-mail-followup-to-list): Fixed typo in - docstring and other minor edits. Checkdoc removed trailing spaces. - (mh-insert-signature): Checkdoc flagged docstring. Reverted to - previous value. Added specific name of hook that is run. - (mh-regexp-in-field-p, mh-insert-letter): Checkdoc removed - trailing spaces. - -2002-10-31 Jeffrey C Honig - - * mh-e.el (mh-show-mode-hook): Remove the unused - mh-show-mode-hook, mh-show-hook is the one that is used. - - * mh-utils.el (mh-show-mode): Change the documentation to refer to - mh-show-hook instead of the unused mh-show-mode-hook. - -2002-10-31 Peter S Galbraith - - * mh-comp.el (mh-insert-mail-followup-to-list): Set default to nil - and include example in doc string. - -2002-10-31 Satyaki Das - - * mh-index.el (mh-indexer): Add customization choice for swish++. - (mh-indexer-choices): Add swish++ choice. - (mh-index-search): Change doc to reflect addition of swish++ option. - (mh-swish++-binary, mh-swish++-directory): New variables for - swish++ interface. - (mh-swish++-execute-search): New function to execute swish++ - search. - (mh-swish++-next-result): Function aliased to mh-swish-next-result - since the result format of swish++ is the same as that of swish-e. - (mh-index-search): Always overwrite window-configuration with new - value. This is needed since we don't kill the index-buffer when - quitting which means the window configuration wasn't getting set - properly. - (mh-index-search-again): If index buffer is reused, reset the old - window config to its original value. - -2002-10-30 Bill Wohler - - * Makefile (emacs, xemacs): New targets. - (all): Use these targets instead of calling specific targets. - (.PHONY): Added emacs, xemacs, autoloads, custom-loads. Broke up - target and moved pieces into their own sections. - - -2002-10-30 Peter S Galbraith - - * mh-utils.el (mh-show-font-lock-keywords): Wrap an - 'eval-and-compile around its defvar, otherwise byte-compilation - fails on `mh-show-font-lock-keywords-with-cite'. - -2002-10-29 Jeffrey C Honig - - * mh-comp.el (mh-letter-insert-signature-hook) - (mh-insert-signature): Add a hook to be called before inserting - the signature. Do not attempt to insert the signature if - mh-insert-signature-file-name is nil. - -2002-10-29 Peter S Galbraith - - * mh-e.el (mh-inc-folder): Call mh-widen when mh-narrowed-to-seq - (Closes SF #629233: inc in narrowed folder suboptimal) - - * mh-comp.el (mh-insert-letter): Stop using mhl to include a - message before it mangles the header, and supercite fails - (Closes SF #629153: mh-insert-letter uses mhl?). - (mh-insert-prefix-string): Leave point at beginning instead of - end, since that's what sc-cite-original does. - (mh-yank-cur-msg): Adjust for mh-insert-prefix-string change. - -2002-10-30 Steve Youngs - - * mh-e.el (mh-folder-mode): Check for 'font-lock-auto-fontify' - when in XEmacs so we don't do font-locking unconditionally. - - * mh-utils.el (mh-show-mode): Ditto. - -2002-10-29 Peter S Galbraith - - * mh-e.el (mh-folder-refiled-face, mh-folder-cur-msg-number-face) - (mh-folder-to-face, mh-folder-body-face): Define faces instead of - copying them from font-lock faces. This mh-e will look the same - in XEmacs as it does in Emacs. - * mh-utils.el (mh-show-cc-face, mh-show-date-face) - (mh-show-header-face): Ditto. - -2002-10-29 Jeffrey C Honig - - * mh-comp.el (mh-send-letter): I meant to use - mh-goto-header-field, not mh-get-header-field. The former returns - nil if the header is not found and doesn't need a conditional. - -2002-10-29 Peter S Galbraith - - * mh-comp.el (mh-forward): Bug fix. Change 'kill-line for a - 'delete-region, because I don't want that text yanked with C-y. - - * mh-seq.el (mh-put-msg-in-seq): Add support for selected - region (Closes SF feature request #630324). - -2002-10-28 Satyaki Das - - * mh-seq.el (mh-thread-prune-subject): Make the regexp a little - general so that a subject of the form "Re[218]: howdy" would be - properly pruned. - - * mh-mime.el (mh-mime-save-part): Copy function definition of - mm-save-part from cvs gnus since that function is buggy in gnus - that comes with emacs21.2. - -2002-10-28 Peter S Galbraith - - * mh-e.el (mh-scan-subject-regexp): Add an expression to match an - optional bracketed number after "Re", such as in "Re[2]:" - (Patch by Satyaki; I checked it and applied). - (mh-folder-font-lock-subject): Adapt to new mh-scan-subject-regexp. - * mh-seq.el (mh-subject-to-sequence): Ditto. - - * mh-e.el (mh-folder-sequence-menu): Remove "Toggle Subject - Thread" from menu. mh-toggle-threads is in the Folder menu. - - * mh-e.el (mh-folder-sequence-menu): Minor menu text edits. - - * mh-utils.el (mh-show-update-sequences): Added to - mh-defun-show-buffer builds; needed for menu. - (mh-show-sequence-menu, mh-show-message-menu) - (mh-show-folder-menu): 3 new menus in mh-show-mode-map that mirror - the menus used in mh-folder-mode. - (mh-show-mode): easy-menu-add the 3 menus. - -2002-10-28 Satyaki Das - - * mh-utils.el (mh-goto-msg): Fix the regexp to search so that we - go to the right message. In a threaded folder message 2 may be - present after 26 and the previous regexp would go to 26 when we - really wanted to go to 2! - - * mh-seq.el (mh-widen): Add call to mh-recenter to make it like - mh-narrow-to-seq. - -2002-10-28 Bill Wohler - - * mh-utils.el (mh-show-mime-save-parts): Deleted definition. - (mh-show-mime-map, tool-bar-map): Use mh-mime-save-parts instead - of mh-show-mime-save-parts. - -2002-10-28 Peter S Galbraith - - * mh-comp.el (mh-letter-tool-bar-map): tool-bar-add-item key name - bug fix. - * mh-utils.el (mh-show-tool-bar-map): Same. - * mh-e.el (mh-folder-tool-bar-map, mh-folder-seq-tool-bar-map): Same - -2002-10-27 Satyaki Das - - * mh-seq.el (mh-toggle-threads): Add call to mh-recenter to make - its behavior like that of mh-narrow-to-seq. - -2002-10-27 Bill Wohler - - * mh-mime.el (mh-mime-save-parts): Renamed from - mh-store-mime-parts for consistency with mh-mime-save-part. Fixed - bug whereby mh-mime-save-parts-directory was not getting - initialized properly from a string-valued - mh-mime-save-parts-default-directory. - (mh-mime-save-parts-default-directory): Ditto. Check your - customizations! - (mh-mime-save-parts-directory): Ditto. - - * mh-utils.el (mh-show-mime-save-parts): Renamed from - mh-store-mime-parts. - (mh-show-mime-map): Added keybinding "K a" for - mh-show-mime-save-parts. - - * mh-e.el (mh-mime-save-parts) Renamed from mh-store-mime-parts. - (mh-mime-map): Added keybinding "K a" for mh-mime-save-parts. - (mh-help-messages): Added help for "K a". - -2002-10-27 Peter S Galbraith - - * mh-comp.el (mh-search-addr-regexp, mh-regexp-in-field-p): Rename - the first to the second (and recode a bit). - (mh-insert-mail-followup-to): Use it. - -2002-10-27 Bill Wohler - - * mh-utils.el (mh-invisible-headers): Backed out change. Removed - Mail-Followup-To due to objections from Peter and Mark. - -2002-10-27 Satyaki Das - - * mh-seq.el (mh-msg-is-in-seq): Modified to show info about - whether the message being queried about has been marked to be - deleted or refiled. - - * mh-mime.el (mh-insert-mime-security-button): Make - pressed-details a local. - -2002-10-27 Steve Youngs - - * .cvsignore: New file. - -2002-10-26 Steve Youngs - - * mh-seq.el (mh-notate-deleted-and-refiled): Don't bind local - variable 'dest', it isn't used anywhere. - - * mh-pick.el (mh-do-pick-search): Don't bind local variable - 'finding-messages', it isn't used anywhere. - - * mh-utils.el: Byte-compiler warning suppression. - (mh-gnus-article-highlight-citation): Rather than redefining - 'gnus-cite-face-list', just re-order it. - (mh-show-mode): Force turning on font-lock in XEmacs. - - * mh-seq.el: Byte-compiler warning suppression. - - * mh-index.el: Byte-compiler warning suppression. - - * mh-comp.el: Byte-compiler warning suppression. - - * mh-xemacs-compat.el: Add defaliases for 'timerp' & - 'cancel-timer' to the equivalent 'itimer' functions. - (rfc822): Require it for 'rfc822-goto-eoh'. - Byte-compiler warning suppression. - - * mh-e.el (mh-folder-mode): Force turning on font-lock in XEmacs. - (mh-toggle-threads): Remove duplicate autoload. - Byte-compiler warning suppression. - (mh-folder-unseen-seq-list): Use 'with-temp-buffer' to fix a bug - in XEmacs when font-lock is on. - (mh-folder-unseen-seq-name): Ditto. - -2002-10-27 Mark D. Baushke - - * Makefile: Reorganize to allow for building also compiling for - XEmacs too. Sanitize so that it will work using least-common - denominator versions of 'make'. Tested using GNU make, Solaris make, - and Berkely make. - (all): Use recursive invokation based on the emacs or xemacs - executable passed on the 'make EMACS=xemacs' command line. - (XEMACS_OPTIONS): The incantation to be passed to an xemacs editor - to compile things properly. - (AUTO_PRELOADS): Magic XEmacs glue. - (clean): Ditto. - (autoloads): Ditto. - (custom-loads): Ditto. - -2002-10-26 Satyaki Das - - * mh-e.el (mh-last-msg): Add call to mh-recenter. - -2002-10-26 Peter S Galbraith - - * mh-comp.el (mh-search-addr-regexp, mh-re-search-to-cc): Remove - `mh-re-search-to-cc' in favour of more generalized new function - `mh-search-addr-regexp'. - (mh-insert-mail-followup-to): Use it. - -2002-10-26 Satyaki Das - - * mh-seq.el (mh-copy-seq-to-eob): Avoid rethreading when the - folder is already threaded. This is more efficient and also avoids - problems when the folder is widened. - (mh-thread-inc): Don't try to restore the point to original - location since mh-inc-folder from where this is called changes - point location after calling this function. - - * mh-e.el (mh-make-folder-mode-line): Fix a small bug where the - test was wrong. - -2002-10-26 Peter S Galbraith - - * mh-comp.el (mh-insert-mail-followup-to): Fix for new defcustom. - -2002-10-26 Satyaki Das - - * mh-seq.el (mh-notate-deleted-and-refiled): Remove unused binding - of dest. The problem was pointed out by Steve as well. - - * mh-e.el (mh-toggle-threads): Remove duplicate autoload as - pointed out by Steve. - -2002-10-26 Bill Wohler - - * mh-utils.el (mh-invisible-headers): Added Mail-Followup-To. - -2002-10-26 Peter S Galbraith - - * mh-comp.el (mh-insert-mail-followup-to-list): Change defvar to - defcustom. - -2002-10-25 Satyaki Das - - * mh-e.el (mh-remove-all-notation): New function that removes all - notation. - - * mh-seq.el (mh-narrow-to-seq): When hiding the original folder - remove all notation. This avoids stale notation hanging around. - Also changes in show buffer and position in folder buffer are - avoided if possible. - (mh-widen): When widening the scan-lines are notated based on the - current state of the folder. This means any changes made when the - folder was narrowed are shown consistently. - (mh-notate-deleted-and-refiled): Update the documentation. - (mh-thread-parse-scan-line): For some reason the ASCII value of - the space character was being used here. This is fixed. - (mh-thread-inc, mh-toggle-threads): Avoid change of point in - folder and message being displayed in shown buffer. - - * mh-utils.el (mh-recenter): Rewrite mh-recenter to show fewer - blank lines when point is towards the end of the folder buffer. - -2002-10-25 Peter S Galbraith - - * mh-comp.el (mh-insert-mail-followup-to-flag): New boolean - defcustom to append a Mail-Followup-To field to the header. The - insertion is done if the To: or Cc: fields matches an entry in - `mh-insert-mail-followup-to-list'." - (mh-insert-mail-followup-to-list): New defvar. List of addresses - for which a Mail-Followup-To field is inserted. - (mh-re-search-to-cc): New function. Search for REGEXP in To: and - Cc: fields. - (mh-insert-mail-followup-to): New function. Insert - Mail-Followup-To: if To or Cc match `mh-insert-mail-followup-to-list'. - (mh-compose-and-send-mail): Call mh-insert-mail-followup-to if - mh-insert-mail-followup-to-flag is true. - -2002-10-25 Mark D. Baushke - - * mh-utils.el (mh-show-maximum-size): New variable to control - the display of large messages. - (mh-display-msg): Use it (Closes SF #488696). - - * mh-seq.el (mh-toggle-threads): Checkdoc fix. - - * mh-e.el (mh-reset-threads-and-narrowing): Checkdoc fix. - - * mh-comp.el (mh-insert-x-mailer-flag): Renamed from - mh-insert-x-mailer-p. Update docstring. - (mh-send-letter): Use it. - (mh-reply-show-message-flag): Renamed from - mh-reply-show-message-p. Update docstring. - (mh-reply): Use it. - This addresses part of SF #627015. - - * mh-e.el (mh-recenter-summary-flag): Renamed from - mh-recenter-summary-p. Update docstring. - (mh-set-scan-mode): Use it. - This addresses part of SF #627015. - -2002-10-25 Satyaki Das - - * mh-e.el (mh-reset-threads-and-narrowing): New function which - resets all thread and narrowing state to completely unthreaded and - widened state. As a side effect, the folder buffer is erased. - (mh-rescan-folder): Reset threads and narrowing state. - - * mh-funcs.el (mh-pack-folder-1): Reset threads and narrowing state. - - * mh-seq.el (mh-copy-seq-to-eob): Change mh-view-ops after - threading is over so that if user aborts threading, it doesn't - leave mh-e in an inconsistent state. - (mh-toggle-threads): Use mh-scan-folder to populate the folder - buffer instead of mh-rescan-folder which resets threading and - narrowing state. - -2002-10-24 Bill Wohler - - * mh-e is completely checkdoc clean now. - - * mh-utils.el (mh-clean-message-header-flag): Renamed from - mh-clean-message-header. - (mh-bury-show-buffer-flag): Renamed from mh-bury-show-buffer. - (mh-show-use-goto-addr-flag): Renamed from mh-show-use-goto-addr. - This addresses part of SF #627015. - - * mh-mime.el (mh-clean-message-header-flag): Renamed from - mh-clean-message-header. - Checkdoc fixes. This addresses part of SF #627015. - - * mh-index.el (mh-clean-message-header-flag): Renamed from - mh-clean-message-header. This addresses part of SF #627015. - - * mh-funcs.el (mh-do-not-confirm-flag): Renamed from - mh-do-not-confirm. This addresses part of SF #627015. - - * mh-e.el (mh-do-not-confirm-flag): Renamed from - mh-do-not-confirm. - (mh-clean-message-header-flag): Renamed from - mh-clean-message-header. - This addresses part of SF #627015. - - * mh-comp.el: checkdoc fixes. - -2002-10-24 Satyaki Das - - * mh-seq.el (mh-copy-seq-to-eob): Rewritten to scan the headers - fresh instead of yanking from buffer. This is needed to get - correct threading in copied sequence. - (mh-thread-inc, mh-thread-update-scan-line-map) - (mh-thread-parse-scan-line): Eliminate the use, and hence the - definition of, the kludgy mh-thread-update-scan-line-map. Instead - the functions mh-notate-deleted-and-refiled and - mh-notate-user-sequences are used to get the message marks right. - (mh-thread-generate-scan-lines): Updated to allow the thread tree - to be used in a narrowed folder buffer. - (mh-thread-folder, mh-toggle-threads): Remove - mh-folder-threaded-view-flag. - (mh-thread-old-scan-line-map): New buffer-local variable that - remembers the original scan-line map so that the sequence thread, - narrow, widen will work. - (mh-narrow-to-seq, mh-widen): Remember the scan-line map when - narrowing and restore it when widening. - - * mh-e.el (mh-folder-threaded-view-flag, mh-folder-folder-menu) - (mh-regenerate-headers, mh-get-new-mail) - (mh-make-folder-mode-line, mh-process-commands) - (mh-delete-scan-msgs): Remove mh-folder-threaded-view-flag. - Instead (memq 'unthread mh-view-ops) is used to test if the folder - is threaded. - - * mh-mime.el (mh-display-emphasis): Shadow article-goto-body here - since we want to do emphasis on the whole of the region and not - just after the first blank line. - (mh-mm-display-part): When displaying a text part show smilies and - emphasis. - - * mh-index.el (mh-index-insert-scan): Attempt to keep number of - args to scan small if there are lots of adjacent matches. - (mh-index-quit): Bury index-buffer on quit instead of killing it. - This behavior is more like that of mh-quit. - - * mh-seq.el (mh-widen): If folder was threaded after narrowing - then make mh-widen undo the threading instead of erroring out. - -2002-10-24 Peter S Galbraith - - * mh-seq.el (mh-toggle-threads): Add a cond (as suggested by - Satyaki) to properly unthread a narrowed-to-sequence. - - * mh-seq.el (mh-thread-generate-scan-lines): Fix threading - breakage from partial switch to mh-container-real-child-flag and - to dupl-flag. - - * mh-comp.el (mh-yank-cur-msg): Bug fix: specify - (eq t mh-yank-from-start-of-msg) when that's what we want. - -2002-10-24 Mark D. Baushke - - * mh-seq.el (mh-thread-prune-subject): Renamed subject-pruned-p as - subject-pruned-flag. - (mh-thread-inc): Renamed old-buffer-modified-p as - old-buffer-modified-flag. - (mh-thread-generate-scan-lines): Renamed dupl-p as dupl-flag. - This addresses part of SF #627015. - - * mh-index.el (mh-index-advance): Renamed backward-p - local variable as backward-flag. - (mh-index-next-button): Renamed backward-p - argument as backward-flag. - (mh-index-show): Renamed display-headers-p argument as - display-headers-flag. - This addresses part of SF #627015. - - * mh-e.el (mh-scan-format, mh-version): Use mh-nmh-flag. - (mh-folder-mime-action): Renamed include-security-p - argument as include-security-flag. - (mh-goto-next-button, mh-next-button): Renamed backward-p - argument as backward-flag. - (mh-get-new-mail): Renamed new-mail-p local variable as - new-mail-flag. - (mh-goto-cur-msg): Renamed minimal-changes-p argument as - minimal-changes-flag. - (redraw-needed-flag): Renamed redraw-needed-p local variable as - redraw-needed-flag. - (mh-seq-containing-msg): Renamed include-internal-p argument as - include-internal-flag. - (mh-page-msg): Use mh-page-to-next-msg-flag. - This addresses part of SF #627015. - - * mh-mime.el (mh-mhn-compose-insert-flag): Renamed from - mh-mhn-compose-insert-p. Make it buffer-local. - (mh-mhn-compose-type, mh-mhn-compose-external-type, - mh-mhn-compose-forw, mh-edit-mhn): Use mh-mhn-compose-insert-flag. - (mh-mml-to-mime, mh-mml-secure-message-encrypt-pgpmime, - mh-mime-display-part, mh-mime-display-single): Use - mh-gnus-pgp-support-flag renamed from mh-gnus-pgp-support-p. - (mh-mime-display-single): Renamed small-image-p local - variable as small-image-flag. - (mh-mime-inline-part): Renamed local variable inserted-p as - inserted-flag. - (mh-mime-inline-part): Renamed local variable displayed-p as - displayed-flag. - This addresses part of SF #627015. - - * mh-comp.el (mh-letter-menu, mh-letter-mode, mh-send-letter): - mh-mhn-compose-insert-flag. - (mh-repl-group-formfile, mh-forward): Use mh-nmh-flag - renamed from mh-nmh-p. - (mh-reply, mh-insert-x-mailer, mh-send-letter): Use mh-nmh-flag. - (mh-letter-mode-map): Use mh-gnus-pgp-support-flag renamed from - mh-gnus-pgp-support-p. - (mh-mml-secure-message-sign-pgpmime): Use - mh-gnus-pgp-support-flag. - This addresses part of SF #627015. - - * mh-utils.el (mh-page-to-next-msg-flag): Renamed from - mh-page-to-next-msg-p. - (mh-show-msg): Use mh-page-to-next-msg-flag. - (mh-gnus-pgp-support-flag): Renamed from - mh-gnus-pgp-support-p. - (mh-show-font-lock-fontify-region): Fix docstring per checkdoc. - (with-mh-folder-updating): Renamed argument - save-modification-flag-p as mh-save-modification-flag. - (mh-prompt-for-folder): Renamed new-file-p local - variable as new-file-flag. - This addresses part of SF #627015. - -2002-10-24 Mark D Baushke - - * mh-comp.el (mh-forward): Fix mh-mml-compose-insert-p reference - in last commit to be mh-mml-compose-insert-flag. - (mh-mml-compose-insert-flag): Move defvar to fix compiler warning. - -2002-10-24 Jeffrey C Honig - - * mh-comp.el (mh-forward): Add support for transient-mark mode. - When using nmh, always specify -mime so as to preserve the - original message(s). If mh-compose-insertion is 'gnus, convert - the mhbuild format forwarding directives into MML. - -2002-10-24 Eric Ding - - * mh-comp.el (mh-send-letter): Fix for earlier change that added - "-mime" for bcc'ed MIME mail; still doesn't work with nmh 1.0, but - at least no longer triggered for every outgoing message! - -2002-10-24 Peter S Galbraith - - * mh-comp.el (mh-yank-cur-msg): Fix selected regions for supercite - (see text below). - - * mh-comp.el (mh-yank-cur-msg): Fix for supercite. Someone played - with the point and mark setting prior to the call to - 'mh-insert-prefix-string and that broke supercite. I put comments - to make it obvious to future coders why those settings exists. - Note that supercite is still broken when a region is selected in - the show buffer. Presumably it's been like that for a long time. - We need to insert the header as well as the selected region oin - that case. I'll submit an SF bug. - -2002-10-24 Jeffrey C Honig - - * mh-comp.el (mh-yank-from-start-of-msg, mh-reply): Use -noformat - flag to reply when 'autosupercite or 'autoattrib are specified to - prevent duplicate cites of the body of a message. - -2002-10-23 Satyaki Das - - * mh-utils.el (font-lock-default-fontify-region): Add autoload to - avoid compiler warning. - -2002-10-23 Peter S Galbraith - - * mh-comp.el (mh-letter-mode): set fill-paragraph-function to our - own 'mh-fill-paragraph-function instead of simply - 'mail-mode-fill-paragraph (because it doesn't handle a non-nil - fill-prefix correctly). - (mh-fill-paragraph-function): New function for mh-letter-mode - fill-paragraph-function in order to handle non-nil fill-prefix. - Call sendmail's mail-mode-fill-paragraph if in the mail header, - else call default fill-paragraph with fill-prefix set to nil. - (Closes SF #489927) - - * mh-comp.el (mh-letter-mode): Let's use font-lock even if gnus is - used in show-mode. The reason is that gnus uses static text - properties which are not appropriate for a buffer that will be - edited. So the choice here is either fontify the citations and - header or the header only. - - * mh-utils.el (mh-show-font-lock-fontify-region): Limit font-lock - in mh-show-mode to the header. Used when mh-highlight-citation-p - is set to gnus, leaving the body to be dealt with by gnus - highlighting. This fixes gnus text emphasis in mh-show-mode. - (mh-show-mode): In font-lock-defaults, set - font-lock-fontify-region-function to mh-show-font-lock-fontify-region. - -2002-10-23 Bill Wohler - - * mh-mime.el (mh-mml-attach-file): Prompt for disposition should - be Disposition, not Content-Type. The Content-Type has been - determined automatically. - -2002-10-23 Mark D. Baushke - - * MH-E-NEWS: - s/mh-adaptive-cmd-note/mh-adaptive-cmd-note-flag/ - s/mh-show-use-xface/mh-show-use-xface-flag/ - s/mh-tool-bar-reply-3-buttons/mh-tool-bar-reply-3-buttons-flag/ - This addresses part of SF #627015. - - * mh-comp.el: - s/mh-mml-compose-insert-p/mh-mml-compose-insert-flag/ - s/mh-xemacs-p/mh-xemacs-flag/ - (mh-letter-menu): Use mh-mml-compose-insert-flag. - (mh-insert-x-mailer): Use mh-xemacs-flag. - (mh-mml-compose-insert-flag): Renamed from - mh-mml-compose-insert-p. - (mh-send-letter): Use mh-mml-compose-insert-flag. - This addresses part of SF #627015. - - * mh-e.el: - s/mh-folder-threaded-view-p/mh-folder-threaded-view-flag/ - s/mh-adaptive-cmd-note/mh-adaptive-cmd-note-flag/ - s/mh-xemacs-p/mh-xemacs-flag/ - (mh-folder-threaded-view-flag): Renamed from - mh-folder-threaded-view-p. Make it buffer local. - (mh-folder-tool-bar-map): Use mh-tool-bar-reply-3-buttons-flag. - (mh-remove-xemacs-horizontal-scrollbar): Use mh-xemacs-flag. - (mh-make-folder, mh-regenerate-headers, mh-get-new-mail): Use - mh-adaptive-cmd-note-flag. - (mh-folder-folder-menu, mh-regenerate-headers, mh-get-new-mail, - mh-make-folder-mode-line, mh-process-commands, - mh-delete-scan-msgs): Use mh-folder-threaded-view-flag. - This addresses part of SF #627015. - - * mh-index.el: - s/mh-adaptive-cmd-note/mh-adaptive-cmd-note-flag/ - (mh-index-search): Use mh-adaptive-cmd-note-flag. - This addresses part of SF #627015. - - * mh-mime.el: - s/mh-mml-compose-insert-p/mh-mml-compose-insert-flag/ - s/mh-xemacs-p/mh-xemacs-flag/ - (mh-mml-compose-insert-flag): Renamed from - mh-mml-compose-insert-p. Make it buffer local. - (mh-mml-attach-file, mh-mml-secure-message-sign-pgpmime, - mh-mml-secure-message-encrypt-pgpmime): Use it. - (gnus-local-map-property): Use mh-xemacs-flag. - This addresses part of SF #627015. - - * mh-seq.el: - s/mh-folder-threaded-view-p/mh-folder-threaded-view-flag/ - (mh-thread-generate, mh-thread-folder, mh-toggle-threads): Use - mh-folder-threaded-view-flag. - This addresses part of SF #627015. - - * mh-speed.el: - s/mh-speed-run-flists-p/mh-speed-run-flists-flag/ - s/mh-speed-refresh-p/mh-speed-refresh-flag/ - (mh-speed-run-flists-flag): Renamed from mh-speed-run-flists-p. - (mh-folder-speedbar-buttons): Use it. - (mh-speed-refresh-flag): Renamed from mh-speed-refresh-p. - (mh-speed-update-current-folder, mh-speed-invalidate-map, - mh-speed-add-folder): Use it. - This addresses part of SF #627015. - - * mh-utils.el: - s/mh-xemacs-p/mh-xemacs-flag/ - s/mh-tool-bar-reply-3-buttons/mh-tool-bar-reply-3-buttons-flag/ - s/mh-show-use-xface/mh-show-use-xface-flag/ - (mh-xemacs-flag): Renamed from mh-xemacs-p. - (mh-show-xface-function): Use it. - (mh-tool-bar-reply-3-buttons-flag): Renamed from - mh-tool-bar-reply-3-buttons. - (mh-show-tool-bar-map): Use it. - (mh-adaptive-cmd-note-flag): Renamed from mh-adaptive-cmd-note. - (mh-cmd-note): Use it in description. - (mh-show-use-xface-flag): Renamed from mh-show-use-xface. Use - mh-xemacs-flag. - (mh-show-xface): Use mh-show-use-xface-flag. - This addresses part of SF #627015. - -2002-10-23 Bill Wohler - - * Makefile (all): Rather than have to run "make clean all" all the - time, make the default target do a clean so all you have to say is - "make". - - * mh-e.el (mh-folder-map): Moved "t (mh-toggle-threads)" to T - prefix. - -2002-10-22 Satyaki Das - - * mh-index.el (mh-indexer-choices, mh-swish-binary): The - executable swish-e can be used to search (just like swish-search). - However the Makefile in swish-e-2.2.2 doesn't install - swish-search. So it is preferable to use swish-e. - -2002-10-22 Bill Wohler - - * mh-comp.el (mh-letter-mode-map): Added aliases for keybindings. - For example, you now have "C-c C-m C-i" in addition to "C-c C-m - i". - -2002-10-22 Mark D. Baushke - - * mh-mime.el (mh-graphical-smileys-flag): Renamed from - mh-graphical-smileys-p. - (mh-display-smileys): Use it. - (mh-graphical-emphasis-flag): Renamed from - mh-graphical-emphasis-p. - (mh-display-emphasis): Use it. This addresses part of SF #627015. - -2002-10-22 Satyaki Das - - * mh-mime.el (mh-insert-mime-security-button): A message is - produced if PGP decryption/verification fails. This addresses - SF# 627025. - -2002-10-21 Bill Wohler - - * mh-seq.el (mh-widen): Checkdoc removed the period in the error. - The info node (elisp) Coding Conventions says: "An error message - should start with a capital letter but should not end with a - period." - - * mh-e.el, mh-utils.el (mh-tool-bar-reply-3-buttons): Moved - defcustom to mh-utils because I got an error about a nil value for - mh-tool-bar-reply-3-buttons when I fired up mh-rmail. - - * mh-comp.el, mh-funcs.el, mh-mime.el, mh-pick.el: Moved (provide) - to the end of the file to be consistent with most other files (see - additional rationale in mh-e.el description below). - - * mh-e.el: Had to remove eval-when-compile from the (require 'cl) - here too (because the remove-if generated a warning in CVS Emacs). - Moved (provide) to the end of the file to be consistent with most - other files. My guess is that this is good to keep a feature from - being "provided" if the file craps out while being loaded. - -2002-10-21 Satyaki Das - - * mh-utils.el (mh-reply, Info-goto-node): Add autoloads to avoid - compiler warnings. - (mh-tool-bar-reply-3-buttons): Add defvar to avoid compiler - warning. - - * mh-seq.el (mh-narrow-to-seq): Remember that a narrowing has - occurred. - (mh-valid-view-change-operation-p): New function that checks if - the widening or unthreading that we are about to perform is - allowed. - (mh-widen): Check if widening is applicable. - (mh-thread-inc, mh-thread-folder): Use delete-region instead of - erase-buffer. This means if the buffer is narrowed then the hidden - parts aren't removed. This allows widening of the folder later on. - (mh-toggle-threads): Maintain mh-view-ops. - - * mh-e.el (mh-view-ops, mh-folder-mode): New buffer-local variable - that keeps track of the sequence in which threading and narrowing - of the folder buffer has been carried out. This is needed so that - narrowing followed by threading (or vice versa) behaves in a - reasonable manner. - (mh-regenerate-headers): Use delete-region instead of - erase-buffer. - (mh-make-folder-mode-line): Change mh-first-msg-num and - mh-last-msg-num conservatively. This might show a larger range in - the mode-line but allows the unthreading to not miss messages - present initially. - -2002-10-21 Bill Wohler - - * mh-mime.el (mh-graphical-emphasis-p): Added _underline_ to the - docstring, as well as the source of the strings, - gnus-emphasis-alist. - (mh-graphical-emphasis-p, mh-graphical-smileys-p): Set the default - to t. - -2002-10-21 Peter S Galbraith - - * mh-utils.el (mh-show-mode): Invoke new toolbar. - (mh-show-tool-bar-map): New tool-bar for mh-show-mode, similar to - mh-letter-mode. - -2002-10-21 Satyaki Das - - * mh-utils.el (mh-display-msg): Call the smiley display function - after the call to mh-show-mode. This is needed since mh-show-mode - kills all buffer-local variables and resets the variable that - controls display of graphical smileys. - -2002-10-21 Bill Wohler - - * mh-e.el (mh-folder-mime-action): Change mime to MIME in message. - - * mh-comp.el (mh-mml-to-mime autoload): Ditto. - -2002-10-21 Mark D Baushke - - * mh-mime.el (smiley-region): Use load for a non-fatal dependency - on the smiley library. - -2002-10-21 Jeffrey C Honig - - * mh-comp.el (mh-forward): Search for a blank line as well as - mail-header-separator. - (mh-letter-mode): Search for a blank line as well as - mail-header-separator. - (mh-send-letter): The default BCC encapsulation will make a MIME - message unreadable. If we are running nmh and the letter contains - a Bcc: and a Content-Type: field, add the -mime switch to to the - arguments to send. - -2002-10-21 Peter S Galbraith - - * mh-utils.el: Add a mh-defun-show-buffer call to define - mh-show-pack-folder. - -2002-10-21 Peter S Galbraith - - * mh-mime.el (mh-store-mime-parts): Simplify code a bit. - - * mh-e.el (mh-help-messages): Update help message for changed - keybindings. - -2002-10-21 Satyaki Das - - * mh-speed.el (mh-speed-invalidate-map): Invalidate - mh-speed-folders-cache before it is used by mh-speed-folders. Also - fix indentation of if statement. - (mh-speed-folder-size): The folder name should be extracted from - the speedbar buffer and not from the temp buffer has was happening - before. - (mh-speed-folder-size): Harden the function some more. It - shouldn't produce errors any more unless flist really didn't work. - -2002-10-21 Bill Wohler - - * mh-seq.el (mh-put-msg-in-seq): Formatting only. The reason I was - in there is because I was trying to use mh-put-msg-in-seq and - mh-msg-is-in-seq non-interactively and found that although the - docstring says it uses the current message by default, I got - errors if I passed in nil for the message. Is this expected, or is - this a bug? I suppose the fix would be to make the arguments - optional, right? This would cause the arguments in - mh-put-msg-in-seq to be reversed, however. Might be a backwards - compatibility problem. - - * mh-speed.el (mh-speed-view): Convert default size to string - before passing it to read-string. This was done because XEmacs - can't handle a numeric value for the default. - -2002-10-20 Satyaki Das - - * mh-utils.el (mh-show-mode-map, mh-show-folder-map) - (mh-show-sequence-map, mh-show-thread-map, mh-show-extract-map) - (mh-show-digest-map, mh-show-mime-map): Interactive functions - callable in show buffer are now prefixed with mh-show. - - * mh-seq.el (mh-notate-deleted-and-refiled): Take into account the - changes to mh-refile-list and the removal of the 'deleted - sequence. - (mh-toggle-threads): Changing from threaded to normal view doesn't - try to push out message refiles and deletions to MH. - - * mh-e.el (mh-rescan-folder, mh-scan-folder): Add a new optional - argument to both functions that prevents them from carrying out - pending refiles and deletes. - (mh-undo): Remove dead code. - (mh-delete-a-msg, mh-undo-msg): Get rid of the 'deleted sequence. - The same information is present in mh-delete-list any way. - (mh-refile-a-msg, mh-undo-msg, mh-process-commands): Change the - semantics of mh-refile-list to make it self-contained. This - variable now contains a list of lists. The first element of each - sublist is the destination folder name. The remaining elements are - the messages that are to be refiled to the destination folder. - (mh-toggle-threads, mh-folder-folder-menu): Use mh-toggle-threads - instead of mh-thread-folder. - -2002-10-20 Peter S Galbraith - - * mh-mime.el (mh-store-mime-parts): Bug fix? Make this command - work when in the show buffer, and not just in the folder buffer - pointing to a message. - -2002-10-20 Peter S Galbraith - - * mh-seq.el (mh-narrow-to-subject-sequence): Renamed from - mh-narrow-to-subject-thread. - (mh-subject-to-sequence): Renamed from mh-subject-thread-to-sequence. - (mh-delete-subject-sequence): Renamed from mh-delete-subject-thread. - (mh-next-unseen-subject-sequence): Renamed from - mh-next-unseen-subject-thread. - (mh-toggle-subject-thread): Removed. :-( - - * mh-e.el: s/subject-thread/subject-sequence/ - (mh-thread-map): Bind mh-widen to "w". - - * mh-utils.el: s/subject-thread/subject-sequence/ - (mh-show-thread-map): Bind mh-widen to "w". - -2002-10-20 Satyaki Das - - * mh-seq.el (mh-thread-folder): This function is no longer - interactive. The mh-toggle-threads is the interactive function - that gets called by the user. Also the already computed values in - mh-first-msg-num and mh-last-msg-num are used instead of - recomputing the first and last message indices in the current - folder. - (mh-toggle-threads): New interactive function that toggles - threaded view of the folder. - - * mh-utils.el (mh-letter-toggle-threads): New interactive function - which toggles thread view from show buffer. This function replaces - mh-letter-thread-folder. - (mh-show-folder-map): Use mh-letter-toggle-threads instead of - mh-letter-thread-folder. - - * mh-e.el (mh-folder-map): Use mh-toggle-threads instead of - mh-thread-folder. - -2002-10-20 Bill Wohler - - * mh-e.el (mh-scan-folder): Formatting only. - (mh-goto-cur-msg): Removed call to mh-last-msg in those cases - where there isn't a current message. Since I've started using the - speedbar to read my mh-e mail, I've had to use M-< every time to - go to the beginning of the new messages. Very annoying! Thus, if - there isn't a current message, the cursor is left alone, which - sounds like the right thing to do anyway. - -2002-10-19 Peter S Galbraith - - * mh-seq.el (mh-subject-thread-to-sequence): Bug fix. After - making the 'subject sequence real, I now have to delete it globally. - - * mh-seq.el (mh-toggle-subject-thread): Make toggle back to full - scan exactly mh-widen (removed moving to current message). - - * mh-seq.el (mh-subject-thread-to-sequence): Make 'subject - sequence a real one, exported to MH. This means you can, for - example, mh-forward it. But it also shows up with a mark in the - scan output. (Closes SF #489445). - -2002-10-19 Bill Wohler - - * mh-speed.el (mh-speed-view): If there weren't any unseen - messages, and you specified a string (a sequence like "last") when - prompted for the number of messages to display, you got an error. - This has been fixed. - -2002-10-19 Mark D Baushke - - * mh-e.el (mh-last-destination-folder): Destination of last refile - command. - (mh-last-destination-write): Destination of last write command. - (mh-refile-msg): Use 'mh-last-destination-folder and update both it - and 'mh-last-destination. - (mh-write-msg-to-file): Use 'mh-last-destination-write and update - both it and 'mh-last-destination (Closes SF #580772). - -2002-10-19 Bill Wohler - - * mh-comp.el (mh-yank-from-start-of-msg): Changed default to - 'attribution. - (mh-letter-mode-map): Removed commented-out keybindings as well as - alias "C-c C-m a (mh-compose-insertion)." Prefer "C-c C-m i." - - * mh-utils.el: Removed autoload of help. It no longer appears to - be necessary in cvs Emacs (21.4). - -2002-10-18 Bill Wohler - - * mh-e.el (mh-execute-commands): Doc fix. - (mh-compat-write-file-hook): Renamed to - mh-write-file-functions-compat. - (mh-folder-mode): Add mh-write-file-functions-compat instead of - mh-compat-write-file-hook - -2002-10-18 Peter S Galbraith - - * mh-utils.el (mh-invisible-headers-show-xface): Killed this - variable. - (mh-invisible-headers): Use 'mh-show-use-xface instead of - 'mh-invisible-headers-show-xface to determine whether to render - the X-Face header line visible or not. - -2002-10-18 Satyaki Das - - * mh-e.el (mh-compat-write-file-hook, mh-folder-mode): Use the new - macro mh-compat-write-file-hook to use write-file-functions for - Emacs 21.4 and local-write-file-hooks for older versions. - -2002-10-18 Mark D Baushke - - * mh-utils.el (mh-invisible-headers): Add more anti-spam headers. - -2002-10-18 Peter S Galbraith - - * mh-mime.el (mh-mml-forward-message): mml-attach-file constructs - a malformed composition if the description string is empty, so - test for that and call mml-attach-file without that argument if - it's an empty string (closes SF #625168). - -2002-10-17 Satyaki Das - - * mh-index.el (mh-index-keymap): Removed extra binding of " ". - (mh-index-folder-mode-help-messages): Made the cheat sheet entry - of quit like the others. - (mh-index-search): If space was pressed in the index buffer before - a search result has been shown with ".", the old show buffer would - be scrolled. This is confusing since the index and show buffer - contents are contradictory. Killing the show buffer here avoids - this problem. - (mh-index-configure-windows): Refine the window configuration - logic. Avoid the two window view unless there is a message being - displayed in the show buffer. - (mh-index-scroll-up): Rewrite this function. The old version had a - bizarre problem where the show buffer wouldn't be scrolled if the - speedbar was present. - (mh-index-scroll-down): Rewritten because of similar reason as - above. - -2002-10-17 Peter S Galbraith - - * mh-comp.el (mh-reply): Add an undo boundary in the undo list - before calling 'mh-yank-cur-msg (closes SF #623693). - -2002-10-17 Satyaki Das - - * mh-e.el (mh-folder-mode): Use local-write-file-hooks instead of - write-file-hooks. This is required for XEmacs and also the right - thing according to GNU Emacs21 documentation. - -2002-10-16 Satyaki Das - - * mh-seq.el (mh-thread-generate): Get threading to work correctly - on partial folders. The fix here disregards messages that aren't - already present in the buffer. - (mh-thread-folder): When querying scan about thread info try to - avoid asking about messages that aren't present in the folder - buffer. A more efficient fix would be to ask scan about just the - messages that are present instead of a range of messages. However - that runs the risk of sending long command lines to scan. Another - change was to populate the mh-scan-line-map early so that the - change in mh-thread-generate would work. - (mh-thread-generate-scan-lines): In case duplicates are present - make one of them the pseudo parent of the rest. This makes it look - prettier if there are multiple duplicates at top level. - - * mh-comp.el (mh-edit-again): If a buffer in show-mode is being - reused then reinsert message file. This should fix SF #624283. - - * mh-mime.el (mh-mm-display-part): Make sure mh-display-part is - always called when we want to remove the displayed MIME part. - -2002-10-16 Bill Wohler - - * mh-speed.el (mh-speed-folder-size): checkdoc fix. - (mh-speed-view): Tweaked output to mirror gnus verbiage. Offer - to view number of messages in folder rather than mh-large-folder. - Replaced (intern mh-unseen-seq) with mh-unseen-seq since the - former was generating errors. - -2002-10-15 Satyaki Das - - * mh-speed.el (mh-large-folder): New customizable variable to - control mh-e's perception of large folders. - (mh-speed-folder-size): New function which computes the size of - folder on current line. - (mh-speed-view): Modified to handle large folders. If the folder - being clicked has unseen messages then only those messages are - shown. Otherwise if number of messages in folder is larger than - mh-large-folders then the user is asked for the number of messages - to be shown. If the folder satisfies neither of the above cases - then it is displayed in its entirety - -2002-10-15 Bill Wohler - - * mh-index.el (mh-index-keymap): Use gnus-define-keys. Sorted. - Noticed that there were two key bindings for SPACE... - - * mh-speed.el (mh-folder-speedbar-key-map): Ditto (except for the - dup SPACE binding). - - Completed help in other modes: - - * mh-utils.el (mh-xemacs-p): Fixed doc. - (mh-show-mode-map, mh-show-folder-map, mh-show-sequence-map) - (mh-show-thread-map, mh-show-extract-map): Added binding for - mh-help. - - * mh-pick.el (mh-search-folder): Added startup help message. - (mh-pick-mode-help-messages): New variable that contains help - messages for pick buffer. - (mh-pick-mode): Set local buffer variable mh-help-messages to - mh-pick-mode-help-messages. - - * mh-index.el (mh-index-keymap): Added binding for mh-help - (mh-index-folder-mode-help-messages): New variable that contains - help messages for MH Index buffer. - (mh-index-folder-mode): Set local buffer variable mh-help-messages - to mh-index-mode-help-messages. - - * mh-funcs.el (mh-help, mh-prefix-help): Call - substitute-command-keys on the help messages. - - * mh-e.el (mh-help-messages): Added ,. Ran C-M-q. - (mh-help): This autoload doc is now used for more than just the - MH-Folder, so drop that specific text. - - * mh-comp.el (mh-edit-again, mh-extract-rejected-mail) - (mh-forward, mh-reply, mh-send-sub): Call mh-letter-mode-message - to display a help message at startup. - (mh-letter-mode): Set local buffer variable mh-help-messages to - mh-letter-mode-help-messages. - (mh-letter-mode-help-messages): New variable with help messages - for the MH-Letter buffer. - (mh-letter-mode-message): New function that displays a startup - help message. - (mh-letter-mode-map): Added binding for mh-help. Sorted. - -2002-10-15 Satyaki Das - - * mh-speed.el (mh-speedbar-selected-folder-with-unseen-messages-face) - (mh-speedbar-folder-face, mh-speedbar-selected-folder-face) - (mh-speedbar-folder-with-unseen-messages-face): New faces for mh-e - speedbar. - (mh-folder-speedbar-buttons, mh-speed-update-current-folder) - (mh-speed-add-buttons): Use the new faces. - (mh-speed-normal-face, mh-speed-bold-face): Functions to convert - to bold face and back to normal face. - (mh-speed-set-face): Removed. - (mh-speed-highlight): Modified to allow it to be used instead of - mh-speed-set-face. Also changes were made to fontify folders with - unread messages. - (mh-speed-parse-flists-output, mh-speed-parse-flists-output) - (mh-speed-invalidate-map): Use mh-speed-highlight instead of - mh-speed-set-face. - -2002-10-15 Bill Wohler - - * mh-mime.el, mh-seq.el, mh-speed.el, mh-utils.el: It appears that - the cl package has been restructured in 21.4 in such a way that - the use of eval-when-compile no longer suppresses warnings when - compiling so that (require 'cl) must be called directly (maybe - this is a bug in 21.4 ;-). Thus the autoloads of cl are no longer - needed. Now compiles clean under 21.4. - - * mh-e.el (mh-folder-mode): The use of local-write-file-hooks is - deprecated in Emacs 21.4, so use add-hook write-file-functions (or - write-file-hook for older versions) with the LOCAL argument - instead. Now compiles clean under 21.4. - - * mh-comp.el (mh-yank-cur-msg): Push a mark at the opposite end of - the included text to make it easy to jump or delete to the other - end of the included text. - -2002-10-15 Satyaki Das - - * mh-comp.el (mh-insert-prefix-string): Remove the erroneous use - of set-mark and other related functions. - -2002-10-14 Bill Wohler - - * mh-comp.el (mh-yank-from-start-of-msg): Fixed documentation. It - isn't ignored if there is a region. It is still used for the - attribution. - (mh-yank-cur-msg): Removed unnecessary push-mark when snarfing the - entire message. Move the cursor to the end of the snarfed message - if there is a region. In this case, push a mark so user can pop to - the beginning of the snarfed fragment. - (mh-insert-prefix-string): This calls set-mark which I find - suspect since I found that my last user mark was deleted after - yanking a message. Added a comment to this effect. Will probably - add a bug report... - - * README (Installed, Supported versions): To appear in GNU Emacs - 21.3; supported on Emacs 21, 20.7 and XEmacs 21. - - * mh-funcs.el (mh-concat-list): Deleted. Use mapconcat instead. - (mh-help, mh-prefix-help): Use mapconcat instead of mh-concat-list. - (mh-ephem-message): Use "%s" in message. - - * mh-funcs.el (mh-concat-list): New function to concatenate a list - of strings into a single string. I would have thought elisp - already contained a function like this, but I couldn't find it. - (mh-ephem-message): New function to display a message in the - minibuffer ephemerally. minibuffer-message seemed like the right - function, but it writes to the current buffer oddly enough. - (mh-help, mh-prefix-help): New functions to display command - cheat sheets in the minibuffer (closes SF #493740). It would be - nice to refactor these two into a single function if possible. - - * mh-e.el (mh-folder-mode-map, mh-folder-map, mh-sequence-map) - (mh-thread-map, mh-extract-map): Added ? keybinding for `mh-help' - and `mh-prefix-help' (closes SF #493740). - (mh-help-messages): New variable to hold various help messages. - (mh-help, mh-prefix-help): Autoload from mh-funcs.el. - -2002-10-13 Bill Wohler - - * mh-index.el (mh-glimpse-directory, mh-swish-directory, - mh-namazu-directory): New variables that hold the name of the - configuration and indexing directory. All are now hidden `.' - directories. - - * mh-e.el, mh-funcs.el, mh-index.el, mh-mime.el, mh-pick.el, - mh-seq.el, mh-xemacs-compat.el (Docstrings): Converted comments to - docstrings, reworded some docstrings to conform to Emacs - documentation conventions, and eliminated all checkdoc warnings - (except for -flag, which we'll fix after 6.2 is released). - -2002-10-13 Satyaki Das - - * mh-index.el (mh-swish-next-result): Fix a bug in a corner case - where the lack of a trailing "/" caused the function to wrongly - filter out correct hits. This should fix SF #622679. - -2002-10-12 Steve Youngs - - * mh-utils.el (mh-xemacs-p): Simplify it, don't test for - 'defvaralias' and don't use 'running-xemacs'. - -2002-10-11 Bill Wohler - - * mh-comp.el: (Docstrings): Eliminated all checkdoc warnings by - converting comments to docstrings and rewording some docstrings to - conform to Emacs documentation conventions. - -2002-10-11 Steve Youngs - - * mh-utils.el (mh-xemacs-p): New. - (mh-show-use-xface): Use it. - (mh-show-xface-function): Ditto. - - * mh-e.el (toplevel): Ditto. - (mh-remove-xemacs-horizontal-scrollbar): Ditto. - (mh-folder-mode-map): Ditto. - - * mh-comp.el (mh-insert-x-mailer): Ditto. - - * mh-mime.el (gnus-local-map-property): Ditto. - (mh-mml-to-mime): Move (require 'mh-utils) to toplevel. - (mh-prompt-for-folder): Autoloading this not needed because - mh-utils is now required at toplevel. - (mh-show-xface): Ditto. - (mh-show-addr): Ditto. - -2002-10-11 Bill Wohler - - * Makefile (EMACS_HOME): Set default to $(TOP)/../emacs so it - would be useful. - - * mh-utils.el (mh-invisible-headers): Added various spam header - fields. - (mh-path-search): Removed argument `func-p' and related code. It - was not documented and no one used it. - (Docstrings): Converted comments to docstrings, reworded some - docstrings to conform to Emacs documentation conventions, and - basically eliminated all checkdoc warnings (except for -flag - warnings). - -2002-10-11 Satyaki Das - - * mh-seq.el (mh-thread-generate): Kill dead code. - -2002-10-10 Satyaki Das - - * mh-seq.el (mh-region-to-sequence): Don't include point-max in - region (closes SF #621632). - - * mh-utils.el (mh-defun-show-buffer): Fix call of - frame-first-window to work with XEmacs. Also avoid warning about - cur-buffe-name in XEmacs. - (mh-modify, mh-goto-msg): Remove dead code. - - * mh-speed.el (mh-speed-toggle, mh-speed-add-buttons): Remove dead - code. - - * mh-seq.el (mh-subject-thread-to-sequence, mh-thread-get-message, - mh-thread-generate, mh-thread-folder): Remove dead code. - - * mh-mime.el (mh-mm-inline-message): Remove dead code. - - * mh-index.el (mh-index-search): Remove dead code. - - * mh-comp.el (mh-open-line): Remove dead code. - - * mh-e.el (mh-folder-mode): Use the macro - mh-remove-xemacs-horizontal-scrollbar to avoid compiler-warning in - Emacs. - (mh-remove-xemacs-horizontal-scrollbar): New macro to avoid - compiler-warnings. - -2002-10-10 Mark D Baushke - - * Makefile (EMACS_OPTIONS): New macro for command-line compile - options. - (EMACS): Allow the user to specify which emacs command to use for - the compile. - (COMPILE_COMMAND): Combine the compile command with its options. - (.el.elc): Use the new $(COMPILE_COMMAND). - -2002-10-10 Mark D Baushke - - * mh-speed.el (mh-speed-select-attached-frame): Define a new - compatibility macro for getting to the attached-frame. - (mh-speed-update-current-folder): Use it. - -2002-10-10 Mark D Baushke - - * mh-speed.el (mh-speed-update-current-folder): Use - 'dframe-select-attached-frame if we are in a newer speedbar - version that no longer supports the 'speedbar-attached-frame - variable. - -2002-10-10 Steve Youngs - - * mh-speed.el (mh-speed-update-current-folder): Use - 'dframe-select-attached-frame' if we're in XEmacs. - - * mh-e.el (mh-folder-mode): Remove the horizontal scrollbar from - the MH-Folder buffer if we're in XEmacs. - -2002-10-09 Satyaki Das - - * mh-utils.el (mh-show-xface-function): New global that stores - what function needs to be called to display X-Face. - (mh-show-xface): Rewritten to avoid compiler warning. - -2002-10-09 Peter S Galbraith - - * mh-utils.el (mh-exchange-point-and-mark-preserving-active-mark): - Simplify code for all emacsen to avoid byte-compilation warnings. - -2002-10-09 Satyaki Das - - * mh-mime.el (mh-mm-display-part): If a sub-part of the current - part is an inline image then clicking the button keeps the image - around. The change fixes this bug. - -2002-10-09 Peter S Galbraith - - * mh-utils.el (mh-exec-cmd-output): Use new function - 'mh-exchange-point-and-mark-preserving-active-mark instead of - 'exchange-point-and-mark. Fixes a bug in emacs20 and XEmacs21. - (mh-exchange-point-and-mark-preserving-active-mark): New function. - Does like 'exchange-point-and-mark but doesn't activate the mark. - - * mh-comp.el (mh-letter-menu): Allow access to "Pull in All - Compositions" menu entries when edits have really occurred. - Works with "forw: -mime" mh_profile entry, so this fixes a bug. - - * mh-mime.el (mh-mime-inline-part, mh-mm-display-part): Use - line-beginning-position and line-end-position instead of - point-at-bol and point-at-eol XEmacs functions. - * mh-xemacs-compat.el: Added line-end-position and - line-beginning-position compatibility aliases. - -2002-10-08 Mark D. Baushke - - * mh-utils.el (mh-scan-msg-format-regexp): The regexp to find - %number(msg). - (mh-scan-msg-format-string): Format to be used with the current - maximum width of message number for the folder in the - `mh-upate-scan-format' function. - (mh-update-scan-format): Use `mh-scan-msg-format-regexp' for greater - flexibility. The message number is no longer anchored to the - beginning of the `mh-scan-format-nmh' or `mh-scan-format-mh' format - strings. The `mh-update-scan-format' allows for using zero-filled - message numbers. - -2002-10-08 Peter S Galbraith - - * mh-e.el (mh-folder-folder-menu): Add entry for "Thread Folder". - -2002-10-07 Satyaki Das - - * mh-seq.el (mh-thread-generate): Use mh-progs to get path to mh - executables. - - * mh-speed.el (mh-speed-flists): Use mh-progs to get path to mh - executables right. - (mh-speed-folders-actual): Same as above. - -2002-10-05 Steve Youngs - - * mh-comp.el (mh-yank-from-start-of-msg): Make default setting 't' - a const. - - * mh-xemacs-compat.el (match-string-no-properties): Rewrite as a - defsubst using 'buffer-substring-no-properties' so we don't grab - any extents. - (rfc822-goto-eoh): Removed. This exists in the XEmacs mail-lib - package. - (mail-header-end): Ditto. - (mail-mode-fill-paragraph): Ditto. - -2002-10-05 Satyaki Das - - * mh-speed.el (mh-speed-invalidate-map): When called interactively - the function will clear mh-speed-folders-cache. - -2002-10-02 Satyaki Das - - * mh-mime.el (mh-insert-mime-button): Rewrite without using - replace-match. - -2002-10-01 Satyaki Das - - * mh-mime.el (mh-file-mime-type-substitutions): Reorder code to - avoid compiler warning. - -2002-10-01 Bill Wohler - - * Makefile (MH-E-ETC): Moved ChangeLog into MH-E-ETC-ETC since it - shouldn't get installed in Emacs. - (install-emacs): Install MH-E-IMG into Emacs' lisp/toolbar and - MH-E-IMG2 into Emacs' lisp/mail. - -2002-10-01 Peter S Galbraith - - * mh-e.el (mh-tool-bar-reply-3-buttons): New customization. - Non-nil means use three buttons for reply commands in tool-bar. - If you have room on your tool-bar because you are using a large - font, you may set this variable to expand the single reply - button into three buttons that won't lead to minibuffer prompt - about who to reply to. - (mh-folder-tool-bar-map): Use mh-tool-bar-reply-3-buttons to - decide how many buttons to use for replying. - - * mh-mime.el (mh-file-mime-type-substitutions) - (mh-file-mime-type-substitute): Fix typos and doc strings. - -2002-09-30 Peter S Galbraith - - * mh-mime.el (mh-file-mime-type): Run Content-Type string returned - by file command through mh-file-mime-type-substitute (see below). - (mh-file-mime-type-substitute): Possibly change Content-Type - string using mh-file-mime-type-substitutions variable. This is - mostly because all MS-Office file are seen as application/msword - by the file command. - (mh-file-mime-type-substitutions): New variable. Defines - substitutions to make for Content-Type returned from file command. - -2002-09-27 Bill Wohler - - * README: Moved Id to end of file since it broke outline mode at - the beginning. - - * import-emacs (release): Renamed "mainline" tag to - "emacs-mainline" to correspond with existing CVS tag. - (EMACS_HOME): Fixed typo in docstring. - - * mh-utils.el (mh-folder-name-p, mh-defun-show-buffer): Lowercase - NIL and T in docstring. - (mh-update-scan-format): Fixed typo. - - * mh-comp.el, mh-e.el, mh-pick.el, mh-utils.el: Updated from CVS - Emacs. The only new thing appears to be to downcase NIL and T in - the documentation. - -2002-09-26 Satyaki Das - - * mh-seq.el (mh-thread-generate): The threading code will now be - more resistant to corruption of messages. Before the change any - corruption of message x would cause all messages with indices - higher than x to be neglected when threading! - -2002-09-23 Peter S Galbraith - - * mh-mime.el (mh-store-mime-parts): Don't store value into - user-customizable variable mh-store-mime-parts-default-directory - and use mh-store-mime-parts-directory instead. - -2002-09-20 Satyaki Das - - * mh-seq.el (mh-thread-prune-subject): Use regular expressions to - make the subject pruning behave the way it is specified in the - imap-thread RFC. - - * mh-speed.el (mh-speed-folders-actual): Don't use pop when we - are not going to use the first element. This avoids a compilation - warning with cvs emacs. - -2002-09-19 Satyaki Das - - * mh-utils.el (mh-display-msg): Put the call to - set-buffer-modified after mh-show-mode. This is needed for CVS - emacs since calling mh-show-mode marks the buffer as modified if - font-lock is on. - -2002-09-17 Peter S Galbraith - - * mh-mime.el (mh-store-mime-parts-default-directory): Renamed from - mh-store-mime-parts-directory - (mh-store-mime-parts-directory): Renamed from - mh-store-mime-parts-directory-default. - -2002-09-16 Peter S Galbraith - - * mh-comp.el (mail-citation-hook): Doc tweaks suggested by Bill. - -2002-09-08 Satyaki Das - - * mh-e.el (autoloads): Reorder autoload of mh-reply to avoid - compiler warning. - -2002-09-03 Peter S Galbraith - - * mh-mime.el (mh-store-mime-parts-directory): New defcustom. - Default directory to use for mh-store-mime-parts. - (mh-store-mime-parts): New Command. Store the MIME parts of the - current message. - (mh-store-mime-parts-directory-default): New internal working - variable. Default to use for mh-store-mime-parts-directory, set - from last use. - - * mh-e.el (mh-folder-seq-tool-bar-map): Add mh-store-mime-parts to - toolbar. - - -2002-08-22 Satyaki Das - - * mh-seq.el (mh-thread-generate-scan-lines): In threaded view, - complete scan lines are printed for all messages (not just the - ones at the top of a thread). - - * mh-index.el (mh-index-insert-scan): Replace use of kill-line - since that pollutes the kill-ring. - - * mh-comp.el (autoloads): Add autoloads for search and subseq to - get rid of compiler warnings. - -2002-08-19 Peter S Galbraith - - * reply-to.xpm, reply-to.pbm, reply-from.xpm, reply-from.pbm, - * reply-all.xpm, reply-all.bpm: New icons for various reply methods. - * mh-e.el (mh-folder-tool-bar-map): Split reply button into three - that won't prompt for "from", "to" and "all". - * mh-comp.el (mh-reply): Put variable reply-to in the interactive - list since it's specified on the command line for the new toolbar. - - * mh-comp.el (mail-citation-hook): Tweak docs concerning - historical usage for supercite. - (mh-yank-from-start-of-msg): Add settings 'supercite and - 'autosupercite. Rename 'automatic to 'autoattrib. - (mh-insert-prefix-string): Invoke sc-cite-original if - mh-yank-from-start-of-msg is et to 'supercite or 'autosupercite. - -2002-08-17 Satyaki Das - - * mh-comp.el (compilation-fix): Reorder defvars to avoid warnings - during compilation. - -2002-08-17 Peter S Galbraith - - * mh-comp.el (mh-yank-from-start-of-msg): Add 'automatic choice. - Do as for `attribution' automatically when show buffer matches the - message being replied-to. - (mh-reply): Call 'mh-yank-cur-msg when mh-yank-from-start-of-msg - is set to 'automatic and show buffer matches message number being - replied-to. - (mh-show-buffer-message-number): New helper function to get the - message number of the current show-buffer. - (mh-yank-cur-msg): Handle 'automatic choice the same as 'attribution. - (mh-yank-cur-msg): Bug fix. It would bail on error if - mh-show-buffer didn't exists. - -2002-08-16 Peter S Galbraith - - * mh-comp.el (mh-insert-x-mailer): It wrongly assumed that Emacs - was used even when XEmacs was used. Fixed so X-Mailer header is - more exact about what we are using. - -2002-08-15 Peter S Galbraith - - * mh-e.el (mh-version): Change CVS version number to 6.1+cvs just - so X-Mailer header is more exact about what we are using. - - * mh-mime.el (mh-mhn-compose-insertion, mh-mhn-compose-anon-ftp, - mh-mml-attach-file): - "Jeffrey P. Morgenthaler" reported - that "require" in emacs 20.3 doesn't handle 3 arguments. We - use "load" at the top of file elsewhere anyway to handle such a - case of non-essential loading, so switch to that here. - -2002-08-06 Satyaki Das - - * mh-funcs.el (autoload): Add autoload for mh-speed-invalidate-map. - - * mh-speed.el (mh-speed-add-folder): New function to make the - speedbar aware of new folders when they are created by mh-e. - - * mh-utils.el (mh-prompt-for-folder): Use mh-speed-add-folder to - tell speedbar that new folder is being created. Also use folder - instead of mkdir to create new folders. - -2002-08-01 Peter S Galbraith - - * mh-utils.el (mh-decode-quoted-printable): Conditionalize the - limit of search for quoted-printable. If we're using mm-decode - for MIME decoding, it's possible that `mimedecode' could mess our - message, so we only run a full search for quoted-printable parts - when not using gnus' mm-decode. When using mm-decode, mimedecode - can still help by handling the case of the whole message being - quoted-printable as opposed to only a part. - -2002-07-31 Peter S Galbraith - - * mh-comp.el (mh-compose-insertion): Moved from mh-mime.el because - the pulldown menu were broken in XEmacs21 from this variable being - undefined. - -2002-07-28 Mark D. Baushke - - * mh-utils.el (mh-show-mode): Use the default paragraph-start - rather than the inherited text-mode value. - -2002-07-28 Satyaki Das - - * mh-seq.el (mh-thread-duplicates): New hash table to track - duplicate messages. - (mh-thread-get-message): Remove debug code. - (mh-thread-canonicalize-id): Modified to handle messages without - message-id header. Such messages are given distinct copies of the - empty string as message-id. - (mh-thread-generate): The function was inadvertently rebuilding - the thread tree when message refiles and message deletes are - processed. The change here fixes that. Also code has been added to - keep track of duplicate message-id's. - (mh-thread-generate-scan-lines): Modified to print scan lines for - duplicate messages (that is messages with the same message-id). - (mh-thread-forget-message): Modified to maintain - mh-thread-duplicates. - -2002-07-22 Satyaki Das - - * mh-speed.el (mh-speed-parse-flists-output): Use delete-region - instead of kill-region. Otherwise the kill ring gets polluted. - -2002-07-16 Satyaki Das - - * mh-seq.el (mh-thread-update-scan-line-map): New function to - refresh the stale scan lines. - (mh-thread-inc): Update old scan lines when mh-thread-inc is - called. Otherwise notations for deleted and refiled messages get - lost and the folder display gets out of sync with real mh-e state. - - * mh-mime.el (mh-mm-display-part): Call Gnus citation highlight - code when text part is displayed. Otherwise buttonized text parts - aren't correctly fontified when they are displayed. - -2002-07-15 Mark D. Baushke - - * mh-utils.el (mm-decode): Use load for the Non-fatal depencency - on the mm-decode library. - * mh-mime.el (mm-decode, mm-uu, mm-view): Use load for the - Non-fatal depencencies on the mm-decode, mm-uu and mm-view - libraries. - -2002-07-15 Satyaki Das - - * mh-utils.el (mh-require, mh-autoload): Remove these macros. - (mh-decode-mime): Initialized to t iff the mm-decode library is - present in the load-path. - * mh-mime.el (mh-require): Don't use it anymore. - -2002-07-15 Mark D Baushke - - * mh-utils.el (mh-update-scan-format): Rewrite for compatibility - with Xemacs as replace-match appears not to have identical - functionality with FSF emacs. - (mh-scan-msg-format-regexp): Deleted. This regexp is now hardcoded - into the mh-update-scan-format function. - -2002-07-12 Satyaki Das - - * mh-seq.el: Add message threading code. - - * mh-utils.el (mh-letter-thread-folder): New interactive function - that allows switching to threaded view from show buffer. - (mh-show-folder-map): Bound "F t" to call mh-letter-thread-folder. - (mh-goto-msg): Replace the function to not assume that messages - are sorted in the folder buffer. - - * mh-e.el (mh-folder-threaded-view-p): New buffer local variable - in the folder buffer that records whether threaded view is being - used currently. - (mh-scan-subject-regexp, mh-scan-format-regexp): Get font lock - working for threaded view as well. - (mh-regenerate-headers): Reset mh-folder-threaded-view-p to nil. - (mh-get-new-mail, mh-process-commands): Do incremental threading - if folder is in threaded view. - (mh-delete-scan-msgs): Update thread tables if folder is in - threaded view. - (mh-folder-map): Add "F t" as key binding for mh-thread-folder - - * mh-comp.el (mh-yank-cur-msg): Bug fix. mh-show-buffer is only - has a meaningful value in the folder buffer. - -2002-07-11 Peter S Galbraith - - * mh-comp.el (mh-yank-cur-msg): Run only if mh-show-buffer - actually exists (otherwise a back-traceable error occurred). - - * mh-utils.el (mh-find-progs): Run PATH search only when mh-progs, - mh-lib and mh-lib-progs are not all already set. This allows the - user to set them using a simple setq prior to loading mh-e. This - is useful for implementation of mh-e on win32. Note that many - commands still call mh-find-path which also parses the mh_profile - file (that may still fail on win32), so this is still done often. - But it lets us change the mh_profile file and have mh-e see the - changed file without exiting emacs and starting over so I left - that in. - -2002-07-04 Satyaki Das - - * mh-index.el (mh-index-show): Fixed a bug in mh-index-show which - caused it to lose track of point when called from show buffer. - -2002-07-04 Mark D. Baushke - - * Makefile: Add more information and common methods to allow both - GNU make and Berkeley make to properly build everything. - -2002-07-04 Satyaki Das - - * mh-mime.el (mh-push-button): Bug fix for mime display with - mouse. Select show window before executing the mime display - functions. - -2002-07-01 Mark D. Baushke - - * Makefile: Use a conditional variable assignment operator rather - than ifndef to let Makefile be used by both GNU make and Berkeley - make (or similar versions of make). This does not help Solaris - /usr/ccs/bin/make, but Solaris make has problems with the ifndef - syntax too. - -2002-07-01 Satyaki Das - - * mh-index.el (mh-index-search): Check for mh-decode-mime before - adding mh-mime-cleanup to kill-buffer-hook. - - * mh-mime.el (mm-destroy-parts): Add definition for old emacs. - -2002-06-30 Mark D Baushke - - * mh-utils.el (mh-update-scan-format): Add documentation string. - (mh-scan-msg-format-regexp): Update the regexp to find %(msg). - (mh-set-cmd-note): When mh-scan-format-file is not t, dynamic - update of mh-cmd-note is wrong. Do not assume that - mh-scan-format-nmh and mh-scan-format-mh can be kept in lock-step - with mh-cmd-note via mh-set-cmd-note. The mh-scan-format function - is now where the updated mh-cmd-note value is put into the scan - format. - - * mh-e.el (mh-generate-new-cmd-note): Add documentation string. - (mh-scan-format): Use mh-update-scan-format to get updated copies - of mh-scan-format-nmh and mh-scan-format-mh to avoid format skew. - (mh-get-new-mail): Do not try to adapt mh-cmd-note unless - mh-scan-format-file is equal to t. - (mh-scan-format-nmh): No longer buffer local. - (mh-scan-format-mh): No longer buffer local. - -2002-06-30 Satyaki Das - - * mh-index.el (mh-index-max-msg-index): New variable to keep track - of max message index among search results. If mh-adaptive-cmd-note - is non-nil this is used to compute the width of the index field. - (mh-index-search): Keep track of max index seen while parsing the - search results and set it if mh-adaptive-cmd-note is non-nil. - (mh-index-find-max-width): New function to find the required width - of the message index field. - (mh-defun-index): Binding buffer local variables is bad, so don't - do that. - (mh-index-show): New argument display-headers-p decides whether - the message is displayed in raw form or not. - (mh-index-header-display): New interactive function bound to "," - which shows the message in raw form. - (mh-index-keymap): Add appropriate bindings for backtab and ",". - (read-from-string): Add ignore-errors around it so that the code - doesn't die when it gets unexpected input. - -2002-06-29 Satyaki Das - - * mh-index.el (mh-count-windows): This function works around the - lack of the window-list builtin function in emacs20. - -2002-06-29 Mark D Baushke - - * mh-utils.el (mh-message-number-width): New function to scan - the last message of a folder and return its width. - (mh-adaptive-cmd-note): New variable, if Non-nil indicates that - mh-set-cmd-note should be called with the message width for the - folder. - (mh-cmd-note): Update documentation. - (mh-update-scan-format): Helper function for updating the - mh-scan-format-nmh and mh-scan-format-mh variables. - (mh-scan-msg-overflow-regexp): New variable to help find problem - messages after an inc. - (mh-scan-msg-format-regexp): New variable to find the old message - width in one of the mh-scan-format-nmh or mh-scan-format-mh - variables. - (mh-set-default-cmd-note): Replaced by mh-set-cmd-note. - (mh-set-cmd-note): New function to replace update mh-cmd-note - value. - - * mh-e.el (mh-regenerate-headers): If mh-adaptive-cmd-note is - non-nil, use mh-set-cmd-note on empty folder buffers. - (mh-make-folder): Ditto. - (mh-generate-new-cmd-note): New function to adapt the mh-cmd-note - to fit when mh-get-new-mail gets message number truncation. - (mh-get-new-mail): Maybe use mh-generate-new-cmd-note if - mh-adaptive-cmd-note is Non-nil. - -2002-06-29 Satyaki Das - - * mh-speed.el (mh-speed-view): The display gets confused if the - cursor is in the show buffer when mh-speed-view is called. This is - a fix for that. - -2002-06-27 Satyaki Das - - * mh-e.el (mh-next-undeleted-msg): Get rid of optional arg - reverse-p. If there are no more undeleted messages the the point - remains at its original position and a message is produced (closes - SF #494304). - (mh-previous-undeleted-msg): Change similar to - mh-next-undeleted-msg. - (mh-next-msg, mh-refile-msg, mh-delete-msg): Backout previous - change. - (mh-folder-map): Bind "S-tab" and "K S-tab" to mh-prev-button. - - * mh-utils.el (mh-show-mode-map): Bind "S-tab" and "K S-tab" to - mh-letter-prev-button. - - * mh-mime.el (gnus-newsgroup-name): Initialize it to nil, so that - mm-uu-dissect doesn't cause error. - -2002-06-27 Mark D Baushke - - * mh-utils.el (mh-cmd-note): Make buffer-local. Changes to this - variable should be made via the new mh-set-default-cmd-note - function. - (mh-set-default-cmd-note): New function to setq-default the - mh-cmd-note, mh-scan-format-mh and mh-scan-format-nmh values to - related values. - - * mh-e.el (mh-scan-format-mh): Make buffer-local. - (mh-scan-format-nmh): Ditto. - (mh-scan-good-msg-regexp): Use a more general regular expression - so that the width of message numbers, mh-cmd-note, may vary. - (mh-scan-deleted-msg-regexp): Ditto. - (mh-scan-refiled-msg-regexp): Ditto. - (mh-scan-cur-msg-number-regexp): Ditto. - (mh-scan-cur-msg-regexp): Ditto. - (mh-scan-subject-regexp): Ditto. - -2002-06-26 Satyaki Das - - * mh-speed.el: Speedbar support code. - - * Makefile: Add mh-speed.el to MH-E-SRC. - - * mh-utils.el (mh-prompt-for-folder): Add speedbar hook if - speedbar is being used. - - * mh-funcs.el (mh-kill-folder): Add speedbar hook if speedbar is - being used. - - * mh-e.el (speedbar-autoloads): Autoload speedbar initialization - functions so that speedbar can find them. - -2002-06-25 Satyaki Das - - * mh-index.el (mh-grep-execute-search, mh-grep-next-result): Allow - grep to be used to search mail. - (mh-index-font-lock-keywords): Modified to avoid bug when using - lazy font-lock. - - * mh-e.el (mh-delete-msg, mh-refile-msg): Modify so that if no - undeleted (or unrefiled) message exists in the current movement - direction then try to find an undeleted (or unrefiled) message in - the opposite direction instead. - (mh-next-undeleted-msg): Added a new optional argument. If non-nil - search for undeleted message backwards if none exists in the - forward direction. - (mh-previous-undeleted-msg): Added an optional argument. If - non-nil search for undeleted message in the forward direction if - none exists in the backward direction. - (mh-next-msg): Optional argument to change direction if undeleted - messages are not found in the current direction. - - * mh-index.el (mh-cmd-note): Use mh-cmd-note instead of hardcoding - the index field size to 4. - - * mh-utils.el (mh-show-addr, mh-show-xface): New functions added - to do xface display and goto-addr interface to allow reuse by the - mime display code. - (mh-show-mode): Use mh-show-addr and mh-show-xface. Only add - mh-mime-cleanup to kill-buffer-hook if mime decoding is enabled. - (mh-modify): Use mh-letter-mode instead of mh-show-mode when - editing messages. - - * mh-mime.el (mh-mm-inline-message): Arrange for xface and - highlighting to work in forwarded messages. - -2002-06-23 Peter S Galbraith - - * mh-comp.el (mh-yank-from-start-of-msg): Add 'attribution' option - to add an attribution line in mh-yank-cur-msg. - (mh-extract-from-attribution-verb): Verb to use for attribution - when a message is yanked by mh-yank-cur-msg. Provides a method - for setting a different language. - (mh-yank-cur-msg): Add support for 'attribution' option. - (mh-extract-from-attribution): Function to get the attribution - line, or the sender from the From: line in the current show buffer. - -2002-06-20 Satyaki Das - - * mh-index.el (mh-index-show): mh-display-msg was not being called - in the show buffer. This causes weird results on some mime messages. - - * mh-mime.el (gnus-newsgroup-charset): Defvar to avoid error in - pgp messages if gnus hasn't been used yet. - - * mh-comp.el (mh-letter-mode-map): Typo fix. - -2002-06-19 Satyaki Das - - * mh-mime.el (mh-mml-secure-message-encrypt-pgpmime): Typo fix. - (compiler-warnings): Add autoloads to remove compiler warnings. - - * mh-index.el (autoload-fixes): Fix autoload forms. - -2002-06-18 Satyaki Das - - * mh-comp.el (mh-letter-mode-map): Change binding of "\C-c\C-ma" - to mh-compose-insertion. Remove duplicate binding for "C-c\C-mf". - (compiler-warnings): Add defvar to remove compiler-warning. - -2002-06-18 Peter S Galbraith - - * mh-comp.el (mh-letter-menu): Conditionalize GPG function on - mh-gnus-pgp-support-p. - - * mh-mime.el (mh-mml-forward-message): s/subseq/substring/. - (mh-compose-forward): cut&paste typo: s/messages/message/. - (mml-minibuffer-read-file): autoload added. - (mml-minibuffer-read-description): autoload added. - (mml-insert-empty-tag): autoload added. - (mh-mml-secure-message-sign-pgpmime): Check mh-gnus-pgp-support-p. - (mh-mml-secure-message-encrypt-pgpmime): Check mh-gnus-pgp-support-p. - -2002-06-17 Peter S Galbraith - - * mh-utils.el (mh-show-use-xface): Check for availability of - `uncompface' executable on system. - - * mh-mime.el (mh-compose-forward): New front end for both - mh-mml-forward-message and mh-mhn-compose-forw. - (mh-compose-insertion): New front end for both mh-mml-attach-file - and mh-mhn-compose-insertion. - (mh-mml-to-mime): New function. Compose mime message from mml - directives. - (mh-mml-forward-message): New function. Forward a message as - attachment. - (mh-mml-attach-file): New function. Attach a file to the outgoing - MIME message. - (mh-mml-compose-insert-p): New variable. Buffer-local variable to - know whether MIME insertion was done. Triggers an automatic call - to `mh-mml-to-mime' in `mh-send-letter'. - (mh-mml-secure-message-sign-pgpmime): New function. - Front end to mml-secure-message-sign-pgpmime. - (mh-mml-secure-message-encrypt-pgpmime): New function. - Front end to mml-secure-message-encrypt-pgpmime. - - * mh-comp.el (mh-send-letter): automatic call to `mh-mml-to-mime' - if mh-mml-compose-insert-p is set. - (mh-letter-mode-map): Add keys for new mh-mime functions above. - * mh-comp.el: Added autoloads for new mh-mime functions above. - -2002-06-17 Peter S Galbraith - - * mh-utils.el (mh-show-use-xface): new defcustom to determine - whether to call external package x-face to display the x-face. - (mh-invisible-headers-show-xface): variable now defaults to value - of mh-show-use-xface. - (mh-show-mode): When mh-show-use-xface is t, invoke - external package x-face to display the x-face. - -2002-06-15 Satyaki Das - - * mh-e.el (mh-prev-button): New interactive function which moves - point to the previous mime button in the show buffer. - (mh-folder-mode-map): Bind M-TAB and K M-TAB to mh-prev-button. - - * mh-utils.el (mh-show-mode-map): Bind M-TAB and K M-TAB to call - mh-letter-prev-button (which is analogous to mh-prev-button). - (mh-gnus-pgp-support-p): New global variable to replace the - variable mh-recent-gnus-p. The name better describes what it is - used for. - - * mh-mime.el (mh-mime-display-part, mh-mime-display-single): Use - mh-gnus-pgp-support-p instead of mh-recent-gnus-p. - -2002-06-12 Satyaki Das - - * mh-mime.el (mh-display-buttons-for-inline-parts): New - customizable variable. When non-nil inline parts have are - displayed with a button (that is initially expanded). - (mh-maybe-insert-newline): The function has been removed. - (mh-mime-display-single): Add code to display buttons for inline - parts. Reduce the insertion of extra newlines between inline parts - and also for pgp signature parts. - (mh-mm-display-part): The function has been rewritten and cleaned - up. There was a bug which could change the show buffer if the user - pressed C-g while a mime part was being displayed has been fixed. - (mh-press-button, mh-push-button): Use unwind-protect to make sure - that set-buffer-modified-p is always called after mime display. - (mh-mime-inline-part): The behavior of the function has been - changed so that it toggles the display of the raw bytes. - (mh-mime-display-security): Remove the display of too many - newlines. - (documentation): Remove most check-doc warnings. - - * mh-comp.el (mh-filter-out-non-text): Updated since whitespace - added around mime buttons have changed. - -2002-06-10 Satyaki Das - - * mh-index.el (mh-index-last-search, mh-index-search): The default - prompt in mh-index-search has been removed since currently there - is no good way of reading "+" with mh-prompt-for-folder. - (mh-index-folder-mode, mh-index-show-mode): New major modes - derived from mh-folder-mode and mh-show-mode respectively. They - use a restricted keymap compared to the parent modes. - (mh-index-folder-face): New customizable face to display folder - names in the index buffer. - (documentation): Change two spaces after period back to one. - -2002-06-08 Satyaki Das - - * mh-e.el (mh-folder-toggle-mime-part): New interactive function - to control mime display from folder buffer. - (mh-folder-inline-mime-part): New interactive function to inline - raw mime part from folder buffer. - (mh-folder-save-mime-part): New interactive function to save mime - part from folder buffer. - (mh-folder-mode-map): Add keybindings for "K v", "K o", "K i" and - "K \t" to mh-folder-mode-map. - (mh-goto-next-button): Modified to allow searching for next button - that satisfies some condition. - (mh-folder-mime-action): Support function for - mh-folder-save-mime-part, mh-folder-inline-mime-part and - mh-folder-toggle-mime-part. - - * mh-utils.el (mh-show-mode-map): Modify keymap to add appropriate - bindings for "K v", "K o", "K i" and "K \t". - - * mh-index.el (documentation): Fix docs according to checkdoc - format. - -2002-06-07 Satyaki Das - - * mh-seq.el, mh-funcs.el (Compiler): Remove (require 'view) and - instead add defvar for view-exit-action. - -2002-06-06 Satyaki Das - - * mh-comp.el (mh-insert-x-face): If transient-mark-mode is enabled - the call to mark returns error. So avoid using mark. - - * mh-index.el: Support for new interactive function - mh-index-search. - - * mh-e.el (mh-next-button, mh-goto-next-button): Refactor - mh-next-button so that the code may be reused by mh-index.el. - (mh-folder-map): Add key "F i" to call mh-index-search. - - * mh-utils.el (mh-recent-gnus-p): Fix documentation. - (mh-msg-folder, mh-display-msg): The new function mh-msg-folder - maps a MH folder name to the buffer displaying it. In normal - operation the two names are identical but they are different in a - folder buffer generated by index search. Minor modification to - mh-display-msg to use mh-msg-folder to enable mh-index-search to - reuse code. - (mh-show-mode-map): Add key "F i" to call mh-index-search. - - * Makefile: Add mh-index.el - -2002-06-05 Peter S Galbraith - - * mh-e.el (mh-folder-message-menu): Add an entry for mh-modify. - -2002-05-31 Satyaki Das - - * mh-utils.el (mh-decode-quoted-printable): Only decode if the - whole message is encoded. So restrict the search for the - content-transfer-encoding header to the headers of the message - itself. - - * mh-mime.el (mh-mime-display-alternative): Make sure that point - is moved after mm-display-part is called. - -2002-05-29 Satyaki Das - - * mh-mime.el (mh-mime-display-single): Fix the logic that - determines when an attachment is buttonized. For inline parts that - can't be displayed a button is now created. - -2002-05-29 Satyaki Das - - * mh-e.el (mh-regenerate-headers): Fix an error in which the - mh-mode-line-annotation was not being set properly. - - * mh-mime.el, mh-utils.el (compilation): Macros mh-require and - mh-autoload are used to make sure that emacs20 doesn't croak when - it tries to load non-existent mm-* files. - (mh-decode-mime): Make it default to nil for Emacs major version - below 21. - -2002-05-28 Satyaki Das - - * mh-e.el (mh-regenerate-headers): Generalize the function to - handle multiple ranges. - -2002-05-25 Satyaki Das - - * compilation: Reduce use of eval-when-compile so that load-path - is not changed if lisp files are loaded without compilation. Small - changes were made to Makefile, mh-comp.el mh-e.el, mh-funcs.el, - mh-seq.el, mh-utils.el - - * mh-e.el (mh-next-button, mh-folder-mode-map): New interactive - function to advance point to next MIME button. It is bound to TAB. - - * mh-utils.el (mh-letter-next-button, mh-show-mode-map): New - interactive function mh-letter-next-button has been added to - advance point to the next MIME button. It is bound to TAB. - - * mh-mime.el (comments): Added some comments. - -2002-05-24 Satyaki Das - - * mh-mime.el (compilation): Replace (eval-when-compile ...) by - (eval-when (compile) ...) to remove a bug when mh-e is loaded - without compilation. - -2002-05-23 Satyaki Das - - * mh-comp.el (compilation): Some code was rearranged to avoid - compiler warnings. - - * mh-e.el (compilation): Code rearrangement and extra autoloads to - remove compiler warnings - (mh-quit): Add call to mh-destroy-postponed-handles to remove - handles that are associated with external viewers. Also fixed a - bug that I accidentally introduced by adding an extra line when - cut and pasting my changes. - - * mh-func.el (compilation): Code rearrangement to remove compiler - warnings. - - * mh-mime.el (compilation): Code rearrangement to remove compiler - warnings. - (mh-defun-compat): New macro to define to useful functions that - aren't present present in old Gnus. - (mh-destroy-postponed-handles): New function to cleanup handles - that are associated with external viewers. - (mh-handle-set-external-undisplayer): New function to replace - mm-handle-set-external-undisplayer. It associates handles for - external viewers with the folder buffer. These are released when - the user quits the folder. - (mh-mime-display, mh-press-button, mh-push-button): Hook in - mh-handle-set-external-undisplayer. - (mh-maybe-insert-newline): New function to avoid inserting too - many newlines between mime parts. - (mh-mm-display-part): Workaround for Gnus bug which causes new - lines to be inserted when images are shown inline. - (mh-mime-display-security): Cut down on newlines inserted. - - * mh-pick.el (compilation): Code rearrangement to remove compiler - warnings. - - * mh-seq.el (compilation): Code rearrangement to remove compiler - warnings. - (comments): Remove @SD from comments. - - * mh-utils.el (compilation): Slight code rearrangement. - (mh-defun-show-buffer): Fix documentation so that the first line - is not too long as was the case earlier. Use - mh-previous-window-config to remember where the cursor should - return functions like mh-reply. - (mh-display-msg): Initialize handles data-structure for the folder - buffer so that postponed handles can be added to it. - (mh-add-msgs-to-seq): Always keep messages in the sequences - sorted. This removes some unexpected behavior when working with - sequences that go out of sync with the corresponding MH sequences. - (mh-canonicalize-sequence): New function to sort and remove - duplicates from mh-e sequence. - -2002-05-21 Satyaki Das - - * mh-utils.el (require): Load mm-decode.el here so that - mm-inline-media-tests is properly initialized. - - * mh-comp.el (mh-yank-cur-msg): Don't try to remove the displayed - mime parts when yanking the message. This also fixes the problem - of regions not being respected during the yank. - -2002-05-20 Satyaki Das - - * mh-utils.el (compiler-warnings): Some code was rearranged to - remove all compiler warnings. - (mh-decode-mime): New defcustom to control whether - mime attachments are shown using Gnus. - (mh-globals-hash): New global variable which maps a given buffer - to the corresponding mime data structures. - (mh-recent-gnus-p): New global variable which checks if Gnus is - recent enough so that PGP/GPG encrypted messages can be handled. - (mh-mm-inline-media-tests): Tests to determine whether a mime part - can be shown inline. - (mh-gnus-article-highlight-citation): Shadow the Gnus function, - gnus-article-add-button before gnus-article-highlight-citation is - called. This prevents the insertion of useless buttons in the - message. - (mh-show-mode): Don't set font-lock-support-mode to nil. Modify - kill-buffer-hook to call mh-mime-cleanup. - (mh-modify): Only the edit buffer is shown. - (mh-display-msg): Add call to mh-mime-display, mh-display-smileys, - mh-display-emphasis when mh-decode-mime is non-nil. - - * mh-mime.el (mh-buffer-data): New structure to keep track of - per-buffer mime information. - (compiler-warnings): Some code was rearranged to get rid of all - compiler warnings. - (mh-graphical-smileys-p): New defcustom which controls whether - graphical smileys are shown. - (mh-graphical-emphasis-p): New defcustom for graphical emphasis. - (mh-max-inline-image-width, mh-max-inline-image-height): New - defcustoms for inlining image. - (gnus-local-map-property, mm-merge-handles): Copy utility - functions for use with version of Gnus that ships with Emacs21.1. - (mh-mime-cleanup): New function to free mime data-structures. - (mh-add-missing-mime-version-header): New function to add missing - Mime-Version header if a Content-Type header exists. - (mh-display-smileys): New function to show graphical smileys. - (mh-display-emphasis): New function to show graphical emphasis. - (new-globals): New variables mh-mime-button-* and - mh-mime-security-* were added to control mime buttons. - (mh-mime-display): New function to display mime messages. The - functions mh-mime-display-part, mh-mime-display-alternative, - mh-mime-display-mixed, mh-mime-part-index, mh-small-image-p, - mh-mime-display-single, mh-insert-mime-button, mh-mm-display-part, - mh-press-button, mh-push-button, mh-mime-save-part, - mh-mime-inline-part, mh-widget-press-button, mh-mm-inline-message, - mh-mime-display-security, mh-mime-security-show-details, - mh-mime-security-press-button and mh-insert-mime-security-button - were added to support mh-mime-display. - - * mh-e.el (mh-header-display): Bind mh-decode-mime to nil when - mh-show-msg is called, so that mime isn't decoded when headers are - displayed. - (mh-quit): The show buffer is killed instead of invalidating and - burying it. - - * mh-comp.el (mh-yank-cur-msg): Filter out the mime buttons from - the yanked message. - (mh-filter-out-non-text): New function to filter out attachments - from message being yanked. - -2002-05-20 Bill Wohler - - * mh-utils.el (mh-invisible-headers-show-xface): First sentence of - docstring was not entirely on first line so was truncated in - customize and help buffers. Reworded so first sentence could fit - within 80 columns per checkdoc recommendation. - (mh-defun-show-buffer): Reworded per checkdoc recommendations. - Removed @SD while I was in there. - -2002-05-18 Satyaki Das - - * mh-seq.el (mh-narrow-to-seq): This function now removes the - current message notation in the folder. Otherwise, two current - message notations may be present after mh-widen is called. Also - mh-copy-seq-to-eob is called instead of mh-copy-seq-to-point since - the latter has a bug. - (mh-copy-seq-to-point): This function has a tricky problem. It - calls mh-map-to-seq-msgs which uses mh-goto-msg. mh-goto-msg - assumes that the folder is sorted (since it uses binary - search). The assumption isn't true, so it may not copy all the - messages. Since this function is not used any more it has been - removed. - (mh-copy-seq-to-eob): This function is a specialized (and - hopefully correct) replacement for mh-copy-seq-to-point. - -2002-05-17 Satyaki Das - - * mh-utils.el (mh-gnus-article-highlight-citation): Workaround for - problem caused by low value of recursive-load-depth-limit in - Emacs21.1 and CVS version of Gnus. - (mh-show-mode-map): New keymap variable to facilitate use of - summary commands from the show buffer. - (mh-show-folder-buffer): New local variable which keeps track of - the folder-buffer corresponding to the message being shown. - (mh-defun-show-buffer): New macro to convert interactive functions - callable in the summary buffer to interactive functions callable - in the show buffer. - (mh-show-mode): Make buffer read-only and use mh-show-mode-map as - keymap (closes SF #527946). - (mh-modify): New interactive function to edit a message in-place. - - * mh-e.el (mh-goto-cur-msg): Add an optional argument, - minimal-changes-p. If non-nil, the function will just change - the point to current message and do not change folder display. - (mh-folder-mode-map): Make "M" call mh-modify. - -2002-05-07 Peter S Galbraith - - * mh-utils.el (mh-invisible-headers-show-xface): New defcustom - variable. If non-nil, the X-Face header line will be excluded from - the variable `mh-invisible-headers'. Set this when using a - package such as x-face-el to display X-Face icons in mh-show-mode. - This variable's setting will eventually be set automatically when - mh-e does its own X-Face decoding (or this variable will be replaced - by one telling mh-e to decode the X-Face). We may not ship the - next release with this variable. - -2002-05-07 Peter S Galbraith - - * mh-comp.el (mh-x-face-file): New defcustom variable. File name - containing the encoded X-Face string to insert in outgoing mail. - (mh-insert-x-face): New function. Appends an X-Face field to the - header, but only if it doesn't already exist and if 'mh-x-face-file' - is non-nil and points to an existing file. - (mh-send-letter): Invoke mh-insert-x-face. - -2002-04-29 Mike Kupfer - - * mh-e.el (mh-delete-msg, mh-refile-msg, mh-undo): Check - whether XEmacs region is actually active (needed at least for 21.1). - [Patch committed by psg] - -2002-04-29 Mike Kupfer - - * mh-utils.el (mh-prompt-for-folder): Remove "default" argument - from completing-read as XEmacs-21.1 doesn't have it (21.4 does - however) and using the argument adds no functionality. - [Patch committed by psg] - -2002-04-11 Peter S Galbraith - - * mh-e.el (mh-delete-msg, mh-refile-msg, mh-undo): Add support for - XEmacs to act on selected region when active. - -2002-04-10 Peter S Galbraith - - * mh-e.el (mh-delete-msg, mh-refile-msg, mh-undo): XEmacs fix; Add - check to see if mark-active is bound, because Mandrake Linux include - XEmacs initialization code that binds transient-mark-mode. This - fix gets around a problem in Mandrake only. It wasn't a problem - on XEmacs generally. Fixes SF #541915. - -2002-04-08 Bill Wohler - - Released mh-e version 6.1. - - * mh-e.el (mh-folder-unseen-seq-name): Use "mhparam -component - Unseen-Sequence" command and "Unseen-Sequence: \\(.*\\)$" regexp - to increase robustness. - (mh-folder-unseen-seq-list): Use `expand-file-name' as - `mh-expand-file-name' isn't needed and the former saves function - call. - (Version, mh-version): Updated for release 6.1. - -2002-04-08 Peter S Galbraith - - * mh-e.el (mh-folder-unseen-seq-list): Specify mh-progs path in - call to mark command. Fixes a bug in which unseen messages - weren't highlighted if "mark" wasn't in the path. - -2002-04-07 Bill Wohler - - * MH-E-NEWS: Updated for release 6.1. - - * README: Updated for release 6.1. Updated verbiage about reading - MH-E-NEWS. - - * mh-comp.el, mh-e.el, mh-funcs.el, mh-mime.el, mh-seq.el, - mh-utils.el, mh-xemacs-compat.el: Updated copyright in files - modified this year. - - * mh-xemacs-compat.el: Put Author field back in, but set to FSF. - - * mh-comp.el, mh-funcs.el, mh-mime.el, mh-seq.el, - mh-utils.el: Fixed all checkdoc errors, except for no - documentation, and documentation in comments. Also removed the- - prefix from certain local variables. - - * mh-e.el: Fixed all checkdoc errors, except for no documentation, - and documentation in comments. Also removed the- prefix from - certain local variables. - (mh-folder-unseen-seq-name): Refactored to make default sequence - name more explicit and to handle undefined Unseen-Sequence MH - profile entry better. - -2002-04-02 Peter S Galbraith - - * mh-e.el: 'defvar mh-folder-unseen-seq-name' called a function to - set it's value, and this happens also on byte-compilation (where - it can fail if the user's MH environment is not setup correctly). - I now set the value of mh-folder-unseen-seq-name at runtime when I - first need it. This should fix Debian bugs - http://bugs.debian.org/140232 and http://bugs.debian.org/140817 - -2002-03-25 Peter S Galbraith - - * mh-utils.el: remove "(require 'mh-e)" since mh-utils.el should - be at the bottom of the dependency tree. - * mh-e.el (mh-folder-unseen-seq-name): Make sure mh-progs is set - and use it as path to mhparam command in call-process. - -2002-01-23 Peter S Galbraith - - * mh-e.el (mh-folder-font-lock-keywords): Add call to - mh-folder-font-lock-unseen to fontify unseen messages in bold. - (mh-folder-unseen-seq-name): Provide name of unseen sequence from - mhparam. Used as default for variable of same name. - (mh-folder-unseen-seq-list): Returns a list of unseen messages - numbers for current folder. - (mh-folder-unseen-seq-cache): Cache variable to hold list of - unseen message numbers while font-lock iterates. This variable is - buffer-local. - (mh-folder-font-lock-unseen): Returns unseen message lines to - font-lock one by one. - -2002-01-15 Peter S Galbraith - - * mh-comp.el (mh-insert-prefix-string): Wrap a - "(let ((zmacs-regions nil))" around (mark) so it works in XEmacs. - Bug reported and fix suggested by Will Partain - Indeed, this is how it appears in XEmacs-21's mh-comp.el. - -2001-12-16 Jeffrey C Honig - - * mh-comp.el (mh-forward): Move the assignment to `fwd-msg-file' - to before the assignment to `draft' as the later changes buffers - and invalidates `mh-seq-list' (which is used in a function called - by (mh-seq-to-msgs)). Resolves SF #489448. - - * mh-utils.el: Add defcustoms for `mh-temp-folders-buffer' and - `mh-temp-sequences-buffer'. - - * mh-e.el (mh-quit): If they exist, kill 'mh-temp-buffer, - 'mh-temp-folders-buffer and 'mh-temp-sequences-buffer when - quitting. - - * mh-funcs.el (mh-list-folders): Use `mh-temp-folders-buffer' - (a defcustom initialized to "*Folders*") for folder listing. Put - into view mode and set it up to kill the buffer when exiting view - mode. - - * mh-seq.el (mh-list-sequences): Use `mh-temp-sequences-buffer' - (a defcustom initialized to "*Sequences") for sequences listing. - Put into view mode and set it up to kill the buffer when exiting - view mode. - -2001-12-16 Bill Wohler - - Released mh-e version 6.0. - - * MH-E-NEWS: Be a little more specific about incompatible changes. - Added info about outdated manual. - Removed variables in mh-scan regexp table that did not exist in - 5.0.2. - Added helpful documentation about finding relevant variables - containing regexps to mh-scan-format-file's description. - - * mh-e.el (mh-scan-format-file): Added information about getting a - list of regexp variables that you'll need to change if you - customize your scan's output. - (mh-folder-mode): Added documentation about `mh-scan-format-file' - for those users who modify their scan formats. - - * README: New file. Describes packages and provides simple - installation instructions. - - * Makefile (clean, dist, install-emacs): Replaced $(RM) with rm - -rf (closes SF #488661). - -2001-12-14 Bill Wohler - - Released mh-e version 5.0.93. - - * Makefile (MH-E-SRC): Added mh-xemacs-compat.el. - (MH-E-IMG): Added .pbm images for all. Removed mail_ prefix from - all. - (MH-E-IMG2): New variable to hold images in mail sub-directory. - (dist): Updated target to make mail sub-directory and copy - MH-E-IMG2 images there. - - * mh-xemacs-compat.el: Modified docs per GNU coding conventions. - - * mh-e.el: Reorganized variables having to do with the scan line. - Moved some random variables that were interspersed out of the - middle. Moved `mh-scan-format-file' first and let the variables - flow from there. - - As the number of variables increases, it is becoming important to - organize the mh-e namespace. Several variables having to do with - the format of scan lines were renamed, as follows: - (mh-good-msg-regexp): Renamed to mh-scan-good-msg-regexp. - (mh-deleted-msg-regexp): Renamed to mh-scan-deleted-msg-regexp. - (mh-refiled-msg-regexp): Renamed to mh-scan-refiled-msg-regexp. - (mh-valid-scan-line): Renamed to mh-scan-valid-regexp. - (mh-cur-msg-number-regexp): Renamed to mh-scan-cur-msg-number-regexp. - (mh-cur-msg-line-regexp): Renamed to mh-scan-cur-msg-regexp. - (mh-scan-rcpt-addr-regexp): Renamed to mh-scan-rcpt-regexp. - (mh-scan.font-lock-regexp): Renamed to mh-scan-format-regexp. - (mh-folder-scan-font-lock-face): Renamed to - mh-folder-scan-format-face. - (mh-folder-cur-msg-line-face): Renamed to mh-folder-cur-msg-face). - -2001-12-13 Bill Wohler - - * mh-utils.el (mh-msg-number-regexp): Renamed to - mh-scan-msg-number-regexp. - (mh-msg-search-regexp): Renamed to mh-scan-msg-search-regexp. - - * Corrected typos, quoted variables in doc strings, and made minor - wording changes in docs. - -2001-12-13 Peter S Galbraith - - * mh-xemacs-compat.el: defalias 'match-string-no-properties to - 'match-string for XEmacs. I've seen a better function for this - that actually removes text properties, but this will do for now. - - * mh-utils.el (mh-decode-quoted-printable): deactivate-mark not - bound in XEmacs. - - * mh-xemacs-compat.el: GNU Emacs Functions needed by XEmacs. - New file. - * mh-e.el: (require 'mh-xemacs-compat) when running XEmacs. - -2001-12-12 Peter S Galbraith - - * mh-comp.el (mh-send-letter): function local-variable-p needs two - arguments in XEmacs. - (mh-send-letter): sendmail-coding-system not bound in XEmacs. - (mh-send-letter): default-buffer-file-coding-system not bound in - Xemacs. - - * mh-e.el (mh-delete-msg, mh-refile-msg, mh-undo): - transient-mark-mode not bound in XEmacs. The feature of - operations made on all messages in the selected range when - transient-mark-mode is on doesn't work in XEmacs. - - * mh-e.el, mh-utils.el: Conditionalize calls to - 'add-to-list 'facemenu-unlisted-faces for XEmacs. - -2001-12-11 Jeffrey C Honig - - * mh-e.el (mh-scan-format): Add `mh-scan-format-file' variable to - specify the scan format string or file to use. Define formats for - MH and nmh that are compatible with the standard format, but - provide hints for font-lock. Define (mh-scan-format) for use by - (mh-regenerate-headers) and (mh-get-new-mail) to specify the args - necessary to inform the scan program which scan format string or - file to use. - -2001-12-07 Peter S Galbraith - - * mh-e.el (scan.font-lock): New format file documented in comments. - (mh-scan.font-lock-regexp): Adapted to new format. - (mh-folder-font-lock-keywords): Use new format. - - * mh-e.el (page-down.xpm): Icon renamed from nextpage. - - * mh-utils.el (mh-decode-quoted-printable): Bug fix. Better check - on what actually is a quoted-printable attachment. - -2001-12-06 Eric Ding - - * mh-mime.el (mh-mhn-compose-insertion, mh-mhn-compose-anon-ftp): - require mailcap.el here rather than using autoload at top of - mh-mime. - (mh-file-mime-type): get rid of unused variables (why were they - there to begin with?) - -2001-12-06 Peter S Galbraith - - * mh-e.el (mh-cur-msg-number-regexp, mh-cur-msg-line-regexp): - mh-cur-scan-msg-regexp splits into these two variables. - The whole-line fontification is disabled, but easily restored by a - user (although it could be a defcustom with choices DISABLED or - the correct regexp?) - (mh-folder-cur-msg-line-face): mh-folder-current-msg-face renamed - to this. - (mh-folder-cur-msg-number-face): mh-folder-current-face renamed to - this. - - * cabinet.xpm: Revert to rescan icon name. - * mh-e.el (mh-folder-tool-bar-map): s/cabinet/rescan/ - - * mh-e.el (mh-folder-font-lock-keywords): Reorder and tweak such - that current message line highlight doesn't mess up other highlights. - -2001-12-05 Eric Ding - - * mh-utils.el (mh-show-from-face): Change mh-show-from-face to - cyan on dark backgrounds; through a series of changes, it had - become the same color as mh-show-subject-face! - -2001-12-05 Bill Wohler - - * mh-e.el, mh-utils.el: Fixed typos in face definitions, and made - a couple of small doc string tweaks while I was in there. Peter, - if you don't agree, let me know and I'll back them out. I thought - the "mh-e" in the text was redundant since the variables start - with "mh"; I was also thinking ahead to how the documentation may - read. - -2001-12-05 Peter S Galbraith - - * mh-e.el (mh-cur-scan-msg-regexp): Match 0 is the whole line. - (mh-folder-current-msg-face): New face with only a background - settings, used in font-lock for the current message. - (mh-folder-font-lock-keywords): Use mh-folder-current-msg-face for - mh-cur-scan-msg-regexp. - - * mh-utils.el (mh-show-from-face): Use red3 instead of red for - light backgrounds. It's not as bright on the eyes. - (mh-show-subject-face): copy from mh-folder-subject-face instead. - Makes the look consistent with folder-mode. - - * mh-e.el (mh-folder-subject-face): Moved to mh-utils since we - need it to copy to mh-show-subject-face. - -2001-12-05 Bill Wohler - - * mh-e.el (mh-folder-mode-map): Moved `mh-extract-rejected-mail' - from "a" to "E". Better mnemonic, nicer to folks used to using a - for `mh-reply'. - -2001-12-04 Bill Wohler - - * mh-e.el (mh-folder-map): Added "S" for `mh-sort-folder'. - -2001-12-04 Peter S Galbraith - - * mh-e.el (mh-folder-subject-face et al.): Yet another attempt at - colours for folder-mode. Still themed, but fewer and darker - colours (Blame Eric this time!). I'll get to underlining tomorrow - night. - - * mh-e.el (mh-folder-tool-bar-map): Renamed all icons so they - don't have the word mail in them. Also generated a pbm format of - each icon for users without XPM support conpiled into Emacs. - -2001-12-04 Eric Ding - - * mh-utils.el (mh-show-font-lock-keywords): Use - mh-header-subject-font-lock instead of regexp for subject headers, - which may go multiple lines. - (mh-header-subject-font-lock): New function. - Fix typos (hightlight -> highlight). - -2001-12-04 Eric Ding - - * mh-e.el: changes to face colors on dark backgrounds. - (mh-folder-followup-face): change to LightGoldenRod. - (mh-folder-date-face): change to snow3. - (mh-folder-msg-number-face): change to snow4. - -2001-12-04 Bill Wohler - - Released mh-e version 5.0.92. - - * mh-utils.el (gnus-cite-face-list) - (mh-gnus-article-highlight-citation): Don't autoload. Revert to - requiring in `mh-gnus-article-highlight-citation' as before. With - the autoloads, if you ran mh-e before gnus, you'd get an undefined - gnus variable when viewing an article in gnus. Go figure. - -2001-12-03 Bill Wohler - - Released mh-e version 5.0.91. - - * MH-E-NEWS: Removed info about bumping up `max-specpdl-size' now - that workaround has been implemented. - - * Makefile (MH-E-OBJ): New variable to hold .elc files. - (all): Just compile. - (clean): New target that blows away MH-E-OBJ. - (dist): Added $(MH-E-OBJ) to tarball. - - - Attempt to quiet compilation errors to a dull roar. - - * mh-e.el: Require easymenu, added autoload of info. - (mh-smail, mh-smail-other-window): Comment says these were needed - by Emacs 18. Out! - - * mh-utils.el: Don't require sendmail, but require mh-e. - Moved autoloads to top of file, and autoload gnus-cite and - sendmail too. - - * mh-pick.el: Require easymenu. Remove cond on - `easy-menu-define'--it exists. - - * mh-mime.el: Autoload mailcap. - - * mh-comp.el: Require mh-e and easymenu, moved autoloads to top of - file. - - - * Makefile: (EMACS): New constant to hold emacs calling sequence. - (install): Renamed to install-emacs. - (compile): New target to compile all files. - (dist): Make dependent on compile. - (import): Renamed to import-emacs. - (%.elc): New implicit rule to compile elisp files. - - * mh-e.el (mh-thread-map): Added "Td" for - mh-delete-subject-thread. - -2001-12-03 Peter S Galbraith - - * mh-e.el (mh-folder-tool-bar-map): Change tooltip for exec icon. - - * mh-e.el (mh-folder-subject-face): Change to IndianRed1. - (mh-folder-followup-face): Change to IndianRed. - (mh-folder-deleted-face): Use sedate face instead of bright one. - -2001-12-03 Bill Wohler - - * mh-utils.el (mh-invisible-headers): Increase size of - `max-specpdl-size' locally to work around insufficient default. - (mh-invisible-headers): Added X-Info and X-VSMLoop (NTMail). - -2001-12-03 Jeffrey C Honig - - * mh-utils.el (mh-find-progs): Searches should not stop if the - strings are not found, there is error detection at the end of the - routine (closes SF #488231). - -2001-12-02 Bill Wohler - - * MH-E-NEWS: Added info about bumping up `max-specpdl-size'. - - * Makefile (MH-E-IMG): New variable that contains images used by - mh-e. Add these files to release. - - * MH-E-NEWS: Second draft of mh-e 6.0 (was 5.1) release notes. - - * mh-e.el (mh-folder-updated-hook): Reworded to avoid ambiguity. - Is the hook called when you type `d' or when you type `x'? - (mh-unseen-updated-hook): Reworded to be consistent with - `mh-folder-updated-hook.' - - * mh-utils.el (mh-recenter): Accepted Gerd's change which is - evaluated at compile time. - -2001-12-02 Bill Wohler - - * mh-e.el Major, major keymap changes. The specific changes are - listed below, but view the sources, or use "C-h m" in MH Folder - mode for the complete list. - - Use of sub-keymaps inspired by gnus. The changes tripped me up at - first too, but after about 5 minutes of shock (which is to be - expected, I've been using the old keybindings for 16 years), I - honestly found the new bindings to be nice indeed. It will also - provide flexibility to allow for future functionality. I hate to - do this on the eve of the beta release, but you asked for it! It's - likely I'll have to pull an Eric and back this change out, but if - we can live with pink subjects, this can't be so bad ;-). - Question: will the users revolt? If they do, I suppose we can - release 6.0.1 the next day ;-). - (mh-folder-map, mh-sequence-map, mh-extract-map, mh-digest-map): - New keymaps which start with F, S, X, and D, respectively. The - mhstore commands can go in the mh-extract-map eventually. - (mh-thread-map): Renamed from mh-folder-thread-map. - - Keymap changes and rationale. The sub-keymaps allowed some - consistency (e.g., esp. with l(ist) and k(ill). - - e Deleted. Already have x. Now used by mh-edit-again. - a Deleted. Already have r. Now used by mh-extract-rej.. - j Deleted. Already have g. - - M-a -> e Better mnemonic. Matches rmail. Frees movement cmd. - M-e -> a Try `a'gain! - - M-f -> Fv Frees movement command - M-f -> Ff Alias (keep?) - M-f -> Fo Alias (keep?) - M-k -> Fk No reason but to keep with folder commands - M-l -> Fl No reason but to keep with folder commands - M-p -> Fp No reason but to keep with folder commands - M-r -> Fr Frees movement command - M-s -> Fs No reason but to keep with folder commands - M-u -> Fu No reason but to keep with folder commands - - M-% -> Sd Better mnemonic - M-# -> Sk Better mnemonic - M-q -> Sl Better mnemonic - C-xn -> Sn Frees up standard key binding - % -> Sp Better mnemonic for putting a message in a sequence - ? -> Ss Shows sequences that message is in - C-xw -> Sw Frees up standard key binding - - M-n -> Xs Better mnemonic (shar) - M-n -> Xu Better mnemonic (uuencode) - - M-SPC -> DSPC Frees mark command - M-\177 -> D\177 No reason but to keep with digest commands - M-b -> Db Frees movement command - -2001-12-01 Bill Wohler - - * mh-e.el: Use gnus style of keymaps. Now requires gnus-util. - (mh-folder-thread-map): New map, created by gnus-define-keys. - Reached when typing T in mh-folder-mode-map. Moved threading - functions to this new keymap so we can use dired again. - (mh-folder-mode-map): Defined by gnus-define-keys. Otherwise than - the new threading functions, no changes to the UI were made at - this point--saving that for the next check-in. - - * mh-pick.el (mh-pick-mode-map): Use gnus-define-keys. Now - requires gnus-util. - - * mh-comp.el (mh-letter-mode-map): Use gnus-define-keys. Now - requires gnus-util. - -2001-12-01 Jeffrey C Honig - - * mh-e.el: Update the documentation for the regexps used by - `mh-folder-font-lock-keywords' to specify how many parethesized - expressions they are expected to have and what those expressions - are expected to match. - -2001-12-01 Bill Wohler - - * mh-e.el (mh-folder-mode): Removed iteration of key bindings, - \\{mh-folder-mode-map} suffices. Removed variable documentation - also as this is already out of date and a maintenance hassle. - Reference new mh customization group instead. - - * mh-comp.el (mh-letter-mode): Ditto. Also added new information - about MIME directives getting processed automatically if inserted - via mh-e commands. - - * mh-pick.el (mh-pick-mode): Edited documentation so it reads like - the other modes. - - * mh-e.el (mh-compat-quit): Deleted obsolete and unused function. - Comment in this function said that `b' shouldn't be used for - burst-digest, as it is used for `back' in info, less, and rn. But - what does `back' mean in MH Folder? I suppose if you visit a - folder, you would go `back' to the original folder. Hmmm, I guess - we'll leave the `b' binding alone for now. - - * mh-utils.el: Moved some of the variable comments to the first - column so they wouldn't wrap in such an ugly fashion. - (mh-showing-mode): Renamed variable and function from mh-showing - to conform with minor mode conventions. Added optional arg to - function so it would behave like a normal minor mode: no or nil - arg toggles mode, 0 arg turns off, non-nil turns on. It also turns - out that desktop-create-buffer would barf when recreating mh-e - buffers because it was calling mh-show with an arg. - (mh-show-mode): Use define-derived-mode to simplify definition a - *lot*. - (mh-set-mode-name): Deprecated by use of define-derived-mode. - Removed. - - * mh-pick.el (mh-pick-mode): Use define-derived-mode to simplify - definition a *lot*. - - * mh-e.el (mh-scan-prog): Removed message about "Buffer local" as - this message will appear in a future version of Emacs. - (mh-inc-folder): mh-showing renamed to mh-show-mode and made a - real minor mode. - (mh-folder-mode): Use define-derived-mode to simplify definition a - *lot*. - - * import-emacs (release): Change `(none)' to `mainline' so import - doesn't choke after running `cvs up -A' on Emacs. - (COPYING): Moved from $EMACS_HOME/etc to $EMACS_HOME. - (cvs update): Whoops! Forgot the second join (-jemacs). - make import works fine again. - -2001-11-30 Peter S Galbraith - - * mh-e.el (mh-folder-font-lock-keywords): Change order of - font-lock patterns such that subject body text doesn't get date - fontification. - - * mh-e.el (mh-scan-subject-regexp): Bug fix. Remove a dot. - scan.font-lock users have to setq it separately. - -2001-11-30 Eric Ding - - * mh-utils.el (mh-clean-msg-header): Go back to using - mh-delete-line. Using invisible text property is nicer in some - ways, but winds up with somewhat mysterious behavior should user - kill/yank stuff from the header (i.e., text gets yanked invisibly - and won't be seen by user until file is reloaded). - -2001-11-29 Bill Wohler - - * mh-e.el (mh-page-msg): Use mh-next-direction to page in the - right direction. - -2001-11-29 Jeffrey C Honig - - * mh-e.el (mh-scan-folder): Fix logic to not attempt to go to - the current message if there are no messages in the folder. - -2001-11-29 Peter S Galbraith - - * mh-e.el (mh-folder-font-lock-subject): New fontifier function - for subject lines in folder-mode - (mh-scan-followup-regexp): Deleted obsolete regexp. Use - mh-scan-subject-regexp instead. - (mh-folder-font-lock-keywords): Use mh-folder-font-lock-subject - instead of obsolete mh-scan-followup-regexp variable. - (mh-folder-date-face, mh-folder-msg-number-face): - (mh-folder-subject-face, mh-folder-followup-face): - Now defined as proper faces instead of copied from font-lock - faces. - - * mh-mime.el (mh-media-type-regexp): New variable. Regexp matching - valid media types used in MIME attachment compositions. - (mh-file-mime-type): Use mh-media-type-regexp instead of - hard-wiring its value. - - * mh-utils.el (mh-show-unquote-From): New function to unquote - "^>From" in mh-show-mode (not saved to disk). - (mh-show-mode): Call mh-show-unquote-From. - -2001-11-29 Eric Ding - - * mh-utils.el (mh-clean-msg-header): Use mh-make-line-invisible - rather than mh-delete-line. - (mh-make-line-invisible): New function to make line(s) invisible - rather than deleting line(s). Optional argument specifies number - of lines to delete. - (mh-show-msg): screen-height has been deprecated; use no more. - (mh-notate): screen-width has been deprecated; use no more. - -2001-11-29 Jeffrey C Honig - - * mh-utils.el: (mh-find-progs): Change mh-find-progs to rely on - the existence of mhparam. The location of mhparam is used to find - `mh-progs'. It uses the libdir and etcdir to find the - `mh-lib-progs' and `mh-lib' directories. If etcdir doesn't return - anything we assume `mh-lib-progs' is the same as `mh-lib' and that - we are using MH instead of nmh. - -2001-11-29 Peter S Galbraith - - * mh-e.el (mh-scan.font-lock-regexp): Change docs to reflect that - second paren expression is the user match. - (mh-folder-font-lock-keywords): Change from 1st to 2nd parenthesized - expression to match user name, after Jeffrey's change to the regexps. - -2001-11-29 Bill Wohler - - * mh-utils.el (mh-clean-message-header): Default is now t. - (mh-invisible-headers): Padded out to contain all the headers that - the mh-e developers don't like to see (closes SF #415759). - -2001-11-28 Bill Wohler - - * mh-comp.el (mh-rejected-letter-start): Added MIME MDN. While - this allows mh-extract-rejected-mail to strip the start of the - MDN, there is still a closing MIME marker at the end. This should - be cleaned up eventually. - -2001-11-28 Peter S Galbraith - - * mh-e.el (mh-folder-seq-tool-bar-map): New tool-bar used for - folder-mode when narrowed to sequence. - * mh-seq.el (mh-narrow-to-seq): Set tool-bar to - mh-folder-seq-tool-bar-map. - (mh-widen): Set tool-bar to mh-folder-tool-bar-map. - * widen.xpm: New icon used in mh-folder-seq-tool-bar-map. - - * mh-mime.el (mh-file-mime-type): Much better check on validity of - 'file' output. - - * mh-e.el (mh-scan-subject-regexp): New regexp variable for - subject string in folder mode. Used to extract subject sequence, - and will be used for font-lock soon. - * mh-seq.el (mh-subject-thread-to-sequence): More robust code by - using mh-scan-subject-regexp, allows users with non-standard - scan format to use subject sequences. - - * mh-comp.el (mh-letter-fill-column): Fill column to use in - mh-letter-mode. (Yes, I'm doing this in spite of what Bill said; - Someone can always undo it later) - (mh-letter-mode): setq fill-column to mh-letter-fill-column. - -2001-11-28 Bill Wohler - - * mh-e.el (mh-page-msg): The first time the end of page is hit, - set mh-page-to-next-msg-p to t. The second time the end of page is - hit, go to the next message. - - * mh-utils.el: (mh-show-msg): Initialize mh-page-to-next-msg-p to - nil. - -2001-11-27 Bill Wohler - - * mh-mime.el (mh-mime-content-types): Updated list of types to - contain types used by mh-e developers, but not including types not - listed in - http://www.isi.edu/in-notes/iana/assignments/media-types/media-types. - -2001-11-27 Peter S Galbraith - - * mh-seq.el (mh-subject-thread-to-sequence) New function placing - all messages with similar subject line into a sequence named - 'subject. - (mh-narrow-to-subject-thread): New command to narrow to all - messages with similar subject line into a sequence named 'subject. - (mh-toggle-subject-thread): New command to toggle between a new - 'subject sequence or the wide view of a folder. - (mh-delete-subject-thread): New command to delete all following - messages with similar subject lines (leaving preceeding ones - untouched). - (mh-next-unseen-subject-thread): New command to create and move to - a new subject thread created from the next unseen message as a - starting point. - * mh-e.el (mh-folder-message-menu): New menu entries for subject - threads. - (mh-folder-mode-map): New keybindings for subject threads. - (mh-lessp): New function to sort messages. - - * mh-utils.el (mh-show-font-lock-keywords): and various - faces... scoped within eval-after-load "font-lock" to avoid - requiring font-lock to use its faces. - * mh-e.el (mh-folder-font-lock-keywords): Same. - -2001-11-27 Jeffrey C Honig - - * mh-mime.el (mh-file-mime-type): Use mh-temp-buffer instead of - " *mh-temp". - - * mh-comp.el (mh-insert-x-mailer): Kill mh-temp-buffer after use. - -2001-11-26 Eric Ding - - * mh-utils.el: revert to using external mimedecode to decode - MIME quoted-printable parts - -2001-11-26 Jeffrey C Honig - - * mh-e.el (mh-process-commands): Added mh-folder-updated-hook. - * mh-e.el (mh-update-unseen): Added mh-unseen-updated-hook. - -2001-11-26 Peter S Galbraith - - * mh-mime.el (mh-file-mime-type): Make sure output from file - command is known to mailcap file, otherwise prompt the user. - (mh-mime-content-types): Add "image/png" type. - - * mh-e.el (mh-folder-font-lock-keywords): Use a bunch of new - mh-folder-*-face faces. - * mh-utils.el (mh-show-font-lock-keywords): Use a bunch of new - mh-show-*-face faces. - - * mh-utils.el (mh-letter-header-font-lock): Bug fix. Fix infinite - loop in emacs20 font-locking. - (mh-header-field-font-lock): Preventive fix with similar change. - - * mh-comp.el (mh-reply-show-message-p): Typo. diplayed -> displayed. - * MH-E-NEWS: Same. - - * mh-e.el (mh-folder-tool-bar-map): Bug fix. I had - mh-repack-folder instead of mh-pack-folder. - -2001-11-26 Bill Wohler - - * mh-e.el: - Updated header for consistency and to conform with (elisp)Library - Headers. - (mh-do-not-confirm): Updated documentation string to reflect - reality (e.g., is no longer used by mh-kill-folder and is used by - more functions than just mh-undo-folder). - (mh-page-msg): Now shows the next undeleted message if looking at the - bottom of the current message. - (mh-process-or-undo-commands): Fixed indentation. - - * mh-mime.el: - (mh-mhn-compose-insertion, mh-mhn-compose-anon-ftp): If MIME type - cannot be determined with file command, use mailcap-mime-types (if - available) to provide list for completing read. - - * MH-E-NEWS: First draft of mh-e 5.1 release notes. - -2001-11-26 Eric Ding - - * mh-utils.el (mh-decode-quoted-printable): Implement - quoted-printable decoding in elisp (starting with code copied - from FLIM). - (mh-decode-quoted-printable-region): Move (require 'hexl) outside - while loop. - (mh-decode-quoted-printable): give user a choice between using - internal code or external program to decode quoted-printable - content. Resurrect code that calls external mimedecode program. - -2001-11-25 Peter S Galbraith - - * mh-utils.el (mh-highlight-citation-p): New variable to determine - whether to hightlight citations in message body with gnus, - font-lock or not at all. - (mh-show-font-lock-keywords): removed citations from keywords. - (mh-show-font-lock-keywords-with-cite): New variable, equivalent - to prior mh-show-font-lock-keywords. - (mh-gnus-article-highlight-citation): hook into gnus for - multi-level citation highlighting. - (mh-show-mode): Use either mh-show-font-lock-keywords or - mh-show-font-lock-keywords-with-cite, depending on value of - mh-highlight-citation-p, and possibly call - mh-gnus-article-highlight-citation. - * mh-comp.el (mh-letter-mode): Same as for mh-show-mode above. - -2001-11-25 Jeffrey C Honig - - * mh-comp.el (mh-redistribute): Added mh-redist-background - variable to cause mh-redistribute to run the redist command in the - background. This causes the transaction log to be visible, like - with send. - -2001-11-25 Peter S Galbraith - - * mh-e.el (mh-inc-folder): 'inc' finishes by displaying the first - new message if already showing messages. - -2001-11-22 Peter S Galbraith - - * mh-utils.el (mh-prompt-for-folder): Exit with error if no folder - specified, otherwise mh-refile-msg may try to create a folder with - empty name, and this creates problems; even mh-undo can't handle - it (Closes SF #476824). - - * mh-comp.el (mh-letter-tool-bar-map): Info button needed to - require 'info. Also tweaked help texts. - (mh-letter-menu): Use headline capitalization (Closes SF #483203). - * mh-e.el (mh-folder-tool-bar-map): Same as above. - (mh-folder-folder-menu, mh-folder-message-menu): - (mh-folder-sequence-menu): Same as above. - * mh-pick.el (mh-pick-menu): Same as above. - -2001-11-21 Peter S Galbraith - - * mh-comp.el (mh-reply-show-message-p): The setting of this - variable determines whether the MH show-buffer is diplayed with - the current message when using mh-reply without a prefix argument. - Set it to nil if you already include the message automatically in - your draft using "repl: -filter repl.filter" in your ~/.mh_profile - file. - (mh-reply): Don't show message in other window if - mh-reply-show-message-p is nil. - - * mh-e.el (mh-folder-tool-bar-map): Add mail_exec.xpm icon for - mh-execute-commands. - - * mh-utils.el (mh-show-mouse): New function to click on a message - in folder-mode and show that message. - * mh-e.el (mh-folder-mode-map): Bind mh-show-mouse to mouse-2. - - * mh-e.el (mh-page-msg): Show buffer first if not displayed, - instead of simply complaining there's no other window. - - * mh-e.el (mh-folder-tool-bar-map): New tool-bar for folder mode! - (mh-folder-mode): Setup tool-bar. - - * mh-mime.el (mh-have-file-command): try to non-fatally load - executable.el because emacs20 doesn't autoload it. - * mh-utils.el (load "executable" t t): Idem. - - * mh-utils.el (mh-clean-msg-header): Bug fix. locally bind - after-change-functions to nil, working around a strange font-lock - bug in emacs20 when (add-hook 'mh-show-mode-hook 'turn-on-font-lock) - was used. - - * mh-comp.el (require 'sendmail): Moved from mh-comp.el to - mh-utils.el because it is needed in reading mail too. - (mh-header-field-end, mh-in-header-p): Moved to mh-utils.el - because they are needed by mh-show-mode's font-lock code. - Unfortunately, this splits the field related code into two files. - Perhaps it should all go into mh-utils? - -2001-11-20 Eric Ding - - * mh-utils.el (mh-show-from-face): Fix typo in defface - -2001-11-20 Bill Wohler - - * mh-utils.el (mh-mail-header-separator): Set to -------- as - defined by MH (components, and replcomps files). This variable - cannot be a regexp since it is used as an argument to insert and - is passed through regexp-quote before being used. The previous - value broke a lot of code, including mailcrypt. - - * mh-comp.el (mh-letter-mode, mh-send-letter): Insert X-Mailer - header field from mh-send-letter. - (mh-edit-again, mh-extract-rejected-mail): Call - mh-insert-header-separator to ensure that there is a separator. - Packages such as mailcrypt depend on it. - (mh-insert-header-separator): New function to insert - mh-mail-header-separator if it doesn't exist. - -2001-11-20 Peter S Galbraith - - * mh-comp.el (mh-letter-mode): Make font-lock-defaults a local variable - * mh-e.el (mh-folder-mode): Same. - * mh-utils.el (mh-show-mode): Same. - - * mh-e.el (mh-scan-msg-num-regexp): Delete variable and replace - with mh-good-msg-regexp. - - * mh-utils.el (mh-mail-header-separator): Bug fix. Moved from - mh-comp.el to mh-utils.el (which mh-comp.el loads). - - * mh-comp.el (mh-in-header-p): Recycle sendmail.el code (as - suggested by Bill). - * mh-utils.el (mh-letter-header-font-lock): Use mh-in-header-p. - - * mh-comp.el (mh-letter-tool-bar-map): tool-bar customize button goes - to customizing mh-compose group. - - * mh-utils.el (mh-show-mode): font-lock bug fix. Locally set - font-lock-support-mode to nil. - (mh-letter-header-font-lock, mh-header-field-font-lock): font-lock - bug fix. Don't return match beyond font-lock search limit. - - * mh-comp.el (mh-letter-mode): Emacs20 bug fix. tool-bar-mode is - not a bound variable. - -2001-11-19 Peter S Galbraith - - * mh-comp.el (mh-letter-tool-bar-map): tool-bar help button goes - to 'Draft Editing' info node. - - * mh-utils.el (mh-show-from-face, mh-show-to-face): New faces used - for font-lock. - (mh-header-to-font-lock, mh-header-cc-font-lock) - (mh-header-field-font-lock): New helper function returning whole - header field arguments to font-lock. - (mh-show-font-lock-keywords): Heavily modified using the above. - - * mh-e.el (mh-scan-msg-num-regexp): Regexp matching the message - number in scan lines. - (mh-scan-date-regexp): Regexp matching a valid date in scan lines. - (mh-scan-rcpt-addr-regexp): Regexp specifying the recipient in - scan lines for messages we sent. - (mh-scan-followup-regexp): Regexp matching a followup subject - line, starting with Re: - (mh-scan-body-regexp): - Regexp matching the message body beginning displayed in scan lines. - (mh-scan.font-lock-regexp): Regexp matching output of the the - optional scan.font-lock format file. - (mh-folder-font-lock-keywords): New font-lock for folder-mode that - uses the above regexps. - -2001-11-19 chad - - * mh-comp.el (mh-letter-tool-bar-map): made both references to - mh-letter-tool-bar-map conditional on tool-bar-mode, instead of - just one. - -2001-11-19 Bill Wohler - - * mh-comp.el (mh-position-on-field): Move to the end of the header - if the field is not present. This function was documented to do - this, but wasn't doing so. - (mh-insert-x-mailer): Simplified by using existing - mh-goto-header-field and mh-insert-fields functions. Now that - mh-insert-fields is used to insert X-Mailer header field, no - longer need to include X-Mailer in mh-x-mailer-string. - -2001-11-18 Peter S Galbraith - - * mh-comp.el (mh-letter-tool-bar-map): New version of - mh-letter-mode tool-bar. Changed order of buttons; made customize - and info buttons specific to mh-e. - - * mh-e.el (mh-folder-font-lock-keywords): New font-lock regexp - uses variables mh-deleted-msg-regexp, mh-refiled-msg-regexp and - mh-cur-scan-msg-regexp, so will better adapt to non-default scan - formats. Also, lines marked for refiling are now fontified. - -2001-11-18 Bill Wohler - - * mh-utils.el (mh-show-mode): Added local variable - mail-header-separator which is initialized to - mh-mail-header-separator. - - * mh-comp.el (mh-mail-header-separator): Updated to include ^$. - Needed when running mh-edit-again, since by then the separator is - gone. Added documentation saying one should use - mail-header-separator and initialize it from - mh-mail-header-separator. - (mh-forward): Initialize mail-header-separator since - mh-letter-mode hasn't kicked in yet (which does initialize - mail-header-separator). - (mh-letter-mode): Initialize mail-header-separator from - mh-mail-header-separator, not hard-coded string. - - * mh-comp.el (mh-insert-x-mailer-p): New variable to control - whether X-Mailer string is inserted. Default: t. - (mh-x-mailer-string): New variable that caches actual X-Mailer - string. - (mh-letter-mode): Call mh-insert-x-mailer if mh-insert-x-mailer-p - is t. - (mh-insert-x-mailer): New function that inserts X-Mailer header - field. - -2001-11-17 Peter S Galbraith - - * mh-utils.el (mh-letter-header-font-lock): New function to return - the entire mail header to font-lock for sedate font-locking. - (mh-show-font-lock-keywords): Modified to fontify whole lines and use - mh-letter-header-font-lock above to fontify whole header. - -2001-11-17 Bill Wohler - - * mh-comp.el (mail-header-separator): Added ^ and $ to make more - specific. - (mh-forward, mh-letter-mode): Replaced hard-coded string with - mail-header-separator. - -2001-11-16 Bill Wohler - - * mh-e.el (mh-e-RCS-id): Renamed to mh-version. - (mh-version): The variable: Set to a number instead of Id since - the Id didn't have the mh-e version number, and both Emacs and - gnus do it this way too. - (mh-version): The function: Fixed for nmh. Now displays mh-e - version correctly. Cleaned up output and display mh-progs, etc. - (Closes SF #405620.) - -2001-11-15 Peter S Galbraith - - * mh-comp.el (mh-letter-tool-bar-map): New tool-bar support for - mh-letter-mode in emacs21. Uses icons from gnus/message.el. - * mh-comp.el (mh-letter-mode): Add buffer-local binding of - tool-bar-map to mh-letter-tool-bar-map. - -2001-11-15 Peter S Galbraith - - * mh-mime.el (mh-have-file-command): Add check for existence of - executable-find command, which Jeffrey didn't exist in emacs-20.4. - * mh-utils.el (mh-decode-quoted-printable-have-mimedecode): same - as above. - * mh-mime.el (mh-file-mime-type): Bug Fix. Some versions of - 'file' output a string like "file: Using regular magic file..." - to stderr, so discard stderr when using call-process with 'file'. - -2001-11-14 Peter S Galbraith - - * mh-mime.el (mh-have-file-command): Check if 'file' command on - system accepts arguments -i -b before accepting it for our use. - -2001-11-14 Peter S Galbraith - - * mh-utils.el (mh-find-progs): Use expand-file-name instead of - concatenating together strings into a path. - -2001-11-14 Peter S Galbraith - - * mh-e.el (mh-folder-sequence-menu): Enable mh-widen in sequence - menu only when mh-narrowed-to-seq is t. - -2001-11-14 Peter S Galbraith - - * mh-mime.el (mh-have-file-command): Use 'executable-find' instead - of more complicated and error-prone call-process to which command. - * mh-utils.el (mh-decode-quoted-printable-have-mimedecode): Same - change as above. - -2001-11-14 Jeffrey C Honig - - * mh-e.el (mh-make-folder-mode-line): Bug fix. Properly deal with - folders that do not have any lines in them. Print "no msgs" - instead of "0 msgs". Do not try to print a range when there are - no messages. - * mh-e.el (mh-regenerate-headers): Bug fix. Catch and remove the - "scan: band message list" message. - -2001-11-13 Jeffrey C Honig - - * mh-utils.el (mh-find-progs): Bug fix. Add "mh/etc" to the - subdirectories to search for "components". On BSD/OS, nmh is in - "/usr/contrib/mh/*". - -2001-11-13 Peter S Galbraith - - * mh-comp.el (mh-letter-mode): Bug fix. Load mh-mime before - setting mh-mhn-compose-insert-p (when looking at a "forw: -mime" - message containing a MIME composition) such that the variable is - properly declared as buffer-local. - -2001-11-12 Bill Wohler - - * mh-funcs.el (mh-print-msg): mhl is in the mh-lib-progs - directory, not mh-lib (closes SF #481128). - -2001-11-12 Peter S Galbraith - - * mh-seq.el (mh-widen): Bug fix (closes SF #481036). - In a sequence with pending deletes and refiles, running mh-widen - would wipe out their notations, even though the sequences are still - defined. Fixed by calling a new function, - mh-notate-deleted-and-refiled. Also changed the coping of - mh-goto-msg-num since it didn't work consistently. - * mh-seq.el (mh-notate-deleted-and-refiled): New functions written - to fix above mh-widen bug. It's a first cut, we may want to clear - all notations first, and notate the current-message sequence and - user sequences. Time will tell. - -2001-11-12 Peter S Galbraith - - * mh-seq.el (mh-widen): Make it attempt to stay on the same - message number (closes SF bug #480922). - -2001-11-11 Bill Wohler - - * import-emacs: New shell script to import Emacs changes to mh-e. - - * Makefile (import): New target to import Emacs changes. - -2001-11-09 Peter S Galbraith - - * mh-mime.el (mh-file-mime-type): Bug fix. Change regexp to - extract mime type from 'file -i' command output. - -2001-11-08 Peter S Galbraith - - * mh-utils.el (mh-update-sequences-after-mh-show): - New customizable variable telling whether to run - mh-update-sequences in mh-show-mode. Default is t. - * mh-utils.el (mh-show-msg): Run mh-update-sequences when - mh-update-sequences-after-mh-show is set. - -2001-11-08 Peter S Galbraith - - * mh-utils.el (mh-decode-quoted-printable-have-mimedecode): - New variable telling whether command 'mimedecode' is on system. - (http://www.freesoft.org/CIE/FAQ/mimedeco.c) - * mh-utils.el (mh-decode-quoted-printable): - New customizable variable telling whether to run mimedecode on - MIME message containing quoted-printable parts. mimedecode will - only alter quoted-printable parts , leaving others intact, and the - resulting message is still fully MIME. - * mh-utils.el (mh-decode-quoted-printable): New function to run - mimedecode on the current buffer. - * mh-utils.el (mh-display-msg): Conditionnaly call - mh-decode-quoted-printable function if mh-decode-quoted-printable - variable is set, to view messages containing quoted-printable - characters into 8-bit. - -2001-11-08 Peter S Galbraith - - * mh-comp.el (mh-letter-mode): Set mh-mhn-compose-insert-p if - looking at a "forw: -mime" message containing a MIME composition. - * mh-mime.el (mh-file-mime-type): Bug fix. Failed on files like - "~/.mh_profile" because of shell construct. Wrapped filename with - expand-file-name. - * mh-comp.el (mh-letter-mode-map): C-cC-o keybinding in - mh-letter-mode-map for mh-open-line. - -2001-11-07 Peter S Galbraith - - * mh-comp.el (mh-open-line): New user function to split open a line - when editing a reply with included text. - * mh-comp.el (mh-current-fill-prefix): New function used by - mh-open-line to get the fill-prefix on the current line. - * mh-comp.el: Add mh-open-line to mh-letter-mode menubar. - -2001-11-06 Peter S Galbraith - - * mh-seq.el (mh-region-to-sequence): New function, creating a - sequence named 'region containing the message list in the selected - region. - * mh-e.el (mh-delete-msg): Mark messages in region for deletion if - mark is active and in transient-mark-mode. - * mh-e.el (mh-refile-msg): Mark messages in region for refiling if - mark is active and in transient-mark-mode. - * mh-e.el (mh-undo): Undo message marks for refile or deletion if - region if mark is active and in transient-mark-mode. - -2001-11-06 Peter S Galbraith - - * mh-comp.el (mh-letter-mode): Use sendmail.el's fill-paragraph. - Copy its settings for paragraph-start, paragraph-separate, - fill-paragraph-function, adaptive-fill-regexp and - adaptive-fill-first-line-regexp. This make M-q (fill-paragraph) - work correctly! - -2001-11-05 Peter S Galbraith - - * mh-funcs.el (mh-kill-folder): Remove mh-do-not-confirm condition - and always prompt the user for such a drastic step. Also change - the prompt a bit to clarify it. - -2001-11-04 Peter S Galbraith - - * mh-mime.el (mh-mhn-compose-insert-p): New buffer-local variable - to tell when a MIME insertion was done in a letter. - * mh-mime.el (mh-mhn-compose-type): Set mh-mhn-compose-insert-p. - * mh-mime.el (mh-mhn-compose-external-type): - Set mh-mhn-compose-insert-p. - * mh-mime.el (mh-mhn-compose-forw): Set mh-mhn-compose-insert-p. - * mh-mime.el (mh-edit-mhn): Clear mh-mhn-compose-insert-p. - * mh-comp.el (mh-send-letter): Run mh-edit-mhn when - mh-mhn-compose-insert-p is set. - -2001-11-03 Peter S Galbraith - - * mh-mime.el (mh-have-file-command): new function testing whether - file command is on the system. - * mh-mime.el (mh-file-mime-type): new function returning MIME type - from file command. - * mh-mime.el (mh-mhn-compose-insertion): Make use of - mh-file-mime-type function instead of prompting. - -2001-10-30 Peter S Galbraith - - * mh-utils.el (mh-show-use-goto-addr): defcustom this new - variable, determining whether to call goto-addr in mh-show-mode. - * mh-utils.el (mh-show-mode): Call goto-address when - mh-show-use-goto-addr is t. - -2001-10-25 Peter S Galbraith - - * mh-utils.el (mh-recenter): Clarify docs and change '(t) to - (list 4) to match elisp doc on what C-u prefix argument actually is. - -2001-10-23 Peter S Galbraith - - * mh-utils.el (mh-summary-height): In my quest to make mh-e more - useful out-of-the-box for new users, set mh-summary-height to a - minimum of 4 and a maximum of 10 depending on frame height. I - typically have 70 lines in my Emacs frame, so having a default of - 4 was silly for my case. - * mh-e.el (mh-update-sequences): Check for nil value of - mh-current-folder, which happens if mh-summary-height < 4 - although I haven't tracked doen why that happens. - -2001-10-22 Peter S Galbraith - - * mh-comp.el (mh-insert-fields): Test for nil value when inserting - field. - -2001-10-20 Peter S Galbraith - - * mh-comp.el (mh-user-agent-compose): Merged-in from XEmacs-21.4 source - * mh-comp.el (mh-letter-mode): Add easy-menu-add statement for XEmacs21 - * mh-pick.el (mh-pick-mode): Add easy-menu-add statement for XEmacs21. - * mh-e.el (mh-folder-mode): Add easy-menu-add statements for XEmacs21. - * mh-utils.el: defalias 'screen-height to 'frame-height for XEmacs21. - -2001-10-19 Peter S Galbraith - - * mh-mime.el (mh-edit-mhn): Use mhbuild in nmh context. - * mh-utils.el (mh-find-progs): The variable mh-nmh-p (t when nmh - is in use rather than MH) was set assuming that the string "nmh" - will be in mh-lib-progs or mh-lib. This failed on Debian systems. - Better to check for the existence of mhbuild in directory mh-progs. - (closes SF bug #441776) - -2001-10-18 Peter S Galbraith - - * mh-e.el: Add menubar entry from contrib/mh-menubar.el - * mh-comp.el: Add menubar entry from contrib/mh-menubar.el - * mh-pick.el: Add menubar entry from contrib/mh-menubar.el - -2001-07-30 Peter S Galbraith - - * mh-e.el: Change font-lock patterns for folders. - Fontify scan.font-lock patterns (which will be documented) - and fontify subject lines prefixed with "Re:" differently. - * mh-comp.el (mh-letter-mode): Add font-lock support as in - mh-show-mode. - -2001-04-14 chad brown - - Rearrange the font-lock keywords a bit. - -2001-04-12 chad brown - - Preliminary (somewhat boring) font-lock support for mh-e. More - interesting font-lock support probably wants to have better - support for multiple format files - -2001-02-24 chad brown - - Add default nmh paths to mh-find-prog in mh-utils.el. - change to mh-kill-folder in mh-funcs.el to make it more general. - -2001-02-19 Bill Wohler - - * Makefile (EMACS): Renamed to EMACS_HOME. Also, don't define if - EMACS_HOME already exists to give developer a chance to set - environment variable. - (install): $MH-E-SRC is copied to $(EMACS_HOME)/lisp/mail, not - $(EMACS_HOME)/src. - (dist): Leave release in current directory. - - - Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc. + Copyright (C) 2005 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright diff --git a/lisp/mh-e/ChangeLog.1 b/lisp/mh-e/ChangeLog.1 new file mode 100644 index 00000000000..1ef20c97616 --- /dev/null +++ b/lisp/mh-e/ChangeLog.1 @@ -0,0 +1,11414 @@ +2005-09-30 Bill Wohler + + * mh-customize.el (mh-refile-msg, mh-tool-bar-reply-from) + (mh-tool-bar-reply-to, mh-tool-bar-reply-all) + (mh-alias-grab-from-field, mh-pack-folder): Image files moved to + etc/images/mail so added "mail/" prefix. + (mh-reply): Ditto. Also renamed reply2.* to reply.*. + (mh-rescan-folder): Ditto. Renamed image file to refresh.* since + it can be used in the general sense. Does not have "mail/" + prefix. + +2005-09-29 Bill Wohler + + Merged in changes from CVS Emacs including: + + * mh-mime.el (mh-compose-forward, mh-mhn-compose-forw): + * mh-comp.el (mh-insert-letter): + * mh-utils.el (mh-prompt-for-folder): + Follow convention for reading with the minibuffer. Emilio C. Lopes + 2005-09-24. + +2005-09-26 Bill Wohler + + * mh-e.el (desktop-buffer-mode-handlers): Only add to this list if + the variable exists. Not present pre-version 22. + + Merged in changes from CVS Emacs including: + + * mh-print.el (mh-ps-print-msg-show): Fix misplaced parenthesis in + previous change. Juanma Barranquero 2005-09-19 + + * mh-alias.el (mh-alias-ali): Fix `message' call: first arg + should be a format spec. + + * mh-print.el (mh-ps-spool-buffer, mh-ps-spool-a-msg) + (mh-ps-print-msg, mh-ps-print-msg-show): Ditto. + + * mh-mime.el (mh-toggle-mh-decode-mime-flag): Ditto. + + * mh-index.el (mh-index-sequenced-messages): Ditto. + + * mh-e.el (mh-refile-or-write-again, mh-page-msg): Ditto. + + * mh-junk.el (mh-junk-blacklist, mh-junk-whitelist) + (mh-spamassassin-blacklist, mh-spamassassin-whitelist): Ditto. D + Goel 2005-09-18. + + * mh-customize.el: Do not use face-alias compatibility for + faces that did not appear in the previous Emacs release. Dan + Nicolaescu 2005-08-15. + + * mh-e.el: Add handler to desktop-buffer-mode-handlers. + (mh-restore-desktop-buffer): Remove autoload cookie. + (mh-folder-mode): Add autoload cookie. Lars Hansen + 2005-08-10. + + Update FSF's address in GPL notices Lute Kamstra + 2005-07-04 . + + * mh-customize.el (mh-folder-body-face, mh-folder-cur-msg-face) + (mh-folder-cur-msg-number-face): New backward-compatibility + aliases for renamed faces. Lute Kamstra 2005-06-17. + + * mh-customize.el (mh-folder-body, mh-folder-cur-msg) + (mh-folder-cur-msg-number, mh-folder-date, mh-folder-followup) + (mh-folder-msg-number, mh-folder-refiled, mh-folder-subject) + (mh-folder-tick, mh-folder-to, mh-index-folder) + (mh-letter-header-field, mh-show-cc, mh-show-date) + (mh-show-header, mh-show-pgg-good, mh-show-pgg-unknown) + (mh-show-pgg-bad, mh-show-signature, mh-show-to, mh-show-from) + (mh-show-xface, mh-speedbar-folder, mh-speedbar-selected-folder) + (mh-speedbar-folder-with-unseen-messages) + (mh-speedbar-selected-folder-with-unseen-messages) + (mh-folder-msg-number, mh-folder-subject, mh-folder-followup) + (mh-folder-subject): Remove "-face" suffix from face names. + (mh-folder-body, mh-folder-cur-msg, mh-folder-cur-msg-number) + (mh-folder-date-face, mh-folder-followup-face) + (mh-folder-msg-number-face, mh-folder-refiled-face) + (mh-folder-subject-face, mh-folder-tick-face, mh-folder-to-face) + (mh-index-folder-face, mh-letter-header-field-face) + (mh-show-cc-face, mh-show-date-face, mh-show-header-face) + (mh-show-pgg-good-face, mh-show-pgg-unknown-face) + (mh-show-pgg-bad-face, mh-show-signature-face, mh-show-to-face) + (mh-show-from-face, mh-show-xface-face, mh-speedbar-folder-face) + (mh-speedbar-selected-folder-face) + (mh-speedbar-folder-with-unseen-messages-face) + (mh-speedbar-selected-folder-with-unseen-messages-face): + New backward-compatibility aliases for renamed faces. + (mh-folder-body-face, mh-folder-cur-msg-face) + (mh-folder-cur-msg-number-face, mh-folder-date-face) + (mh-folder-followup-face, mh-folder-msg-number-face) + (mh-folder-deleted-face, mh-folder-refiled-face) + (mh-folder-subject-face, mh-folder-address-face) + (mh-folder-scan-format-face, mh-folder-to-face) + (mh-index-folder-face, mh-show-cc-face, mh-show-date-face) + (mh-show-header-face, mh-show-pgg-good-face) + (mh-show-pgg-unknown-face, mh-show-pgg-bad-face) + (mh-show-to-face, mh-show-from-face, mh-show-subject-face) + (mh-speedbar-folder-with-unseen-messages) + (mh-speedbar-selected-folder-with-unseen-messages): + Use renamed MH-E faces. + + * mh-utils.el (mh-letter-font-lock-keywords) + (mh-face-display-function): Use renamed MH-E faces. + * mh-speed.el (mh-folder-speedbar-buttons) + (mh-speed-update-current-folder, mh-speed-normal-face) + (mh-speed-bold-face, mh-speed-add-buttons) + (mh-speed-invalidate-map): Likewise. + * mh-mime.el (mh-signature-highlight): Likewise. Miles Bader + 2005-06-17. + + * mh-comp.el (mh-send-sub): + * mh-identity.el (mh-identity-field-handler): + * mh-mime.el (mh-secure-message): + Don't use `format' on `error' arguments. Juanma + Barranquero 2005-06-16. + + * mh-mime.el (mh-secure-message): Follow error conventions. + Juanma Barranquero 2005-06-14. + +2005-09-24 Bill Wohler + + * mh-unit.el (mh-unit): Changed lm-verify test to Emacs 22. + +2005-09-22 Bill Wohler + + * Makefile: Incorporated ideas from Clemens Fruhwirth to + generalize mh-loaddefs.el to make it work for both GNU Emacs and + XEmacs. + (EMACS_OPTIONS, XEMACS_OPTIONS): Use double-dash for all long + options. + (EMACS_LOADDEFS_COOKIE): New variable for generate-autoload-cookie + setting. Obsoletes XEMACS_LOADDEFS_COOKIE. + (EMACS_EXPORT_MH_LOADDEFS): New variable for GNU Emacs commands to + rebuild mh-loaddefs.el. + (XEMACS_EXPORT_MH_LOADDEFS): New variable for XEmacs commands to + rebuild mh-loaddefs.el. Obsoletes XEMACS_LOADDEFS_FILE and + XEMACS_LOADDEFS_PKG_NAME. + (MH-E-LOADDEFS-SRC): New variable which is set to $(MH-E-SRC) on + GNU Emacs, and adds $(MH-E-XEMACS-SRC) on XEmacs. + (all): Modify EMACS_EXPORT_MH_LOADDEFS and MH-E-LOADDEFS-SRC on + XEMacs. + (mh-loaddefs.el): Now depends on $(MH-E-LOADDEFS-SRC) and has + generic compile command that works on both GNU Emacs XEmacs. + (xemacs): Depend on autoloads instead of deleted loaddefs-xemacs. + (loaddefs-xemacs): Deleted. + +2005-07-19 Bill Wohler + + * README (INSTALL): Added info for Mac users. + +2005-07-16 Satyaki Das + + * mh-comp.el (mh-font-lock-field-data): Fix a bug where the + function would return t but match-data was being set to nil + (closes SF #1241017). + +2005-07-12 Jeffrey C Honig + + * mh-customize.el (mh-invisible-header-fields-internal) + (mh-invisible-header-fields-internal): Add Received-SPF header and + X-Gmail- prefixes seen from Gmail. + +2005-06-08 Peter S Galbraith + + * mh-comp.el (mh-insert-auto-fields): Inset identity regardless of + whether one was already set, since if one used a default identity + it would never be overridden. + +2005-06-02 Bill Wohler + + * mh-customize.el (mh-customize): Use customization group mh-e. + + * mh-init.el (mh-path): Use customization group mh-e. Thanks to + Peter Whaite for these patches (closes SF #1213716). + +2005-06-01 Bill Wohler + + * mh-mime.el (mh-compose-forward): Only use mh-sent-from-msg as a + default message if it's a number (as is done elsewhere). + Otherwise, an error is thrown if this function is called from a + draft created by mh-forward since this variable is a list. Also + added a space after the "Messages [%s]:" prompt. + +2005-05-30 Jeffrey C Honig + + * mh-mime.el (mh-compose-forward): Allow insertion of multiple + forwarded messages by range (including sequences). For the sent + folder the default message presented is the sent message. For + other folders, the default message is "cur", if it exists. + +2005-05-28 Bill Wohler + + * mh-e.el (Version, mh-version): Added +cvs to version. + +2005-05-28 Bill Wohler + + Released MH-E version 7.84. + + * MH-E-NEWS, README: Updated for release 7.84. + + * mh-e.el (Version, mh-version): Updated for release 7.84. + +2005-05-28 Bill Wohler + + * mh-e.el, mh-comp.el: Don't autoload Info-goto-node. It's not + used, and if it were, the code should use the info function + instead. + + Use full year in copyright notices (for example, 2005, not 05). + + * Makefile (mh-loaddefs.el, mh-e-autoloads.el): Added 2005 to + copyright notice. + + * mh-inc.el: Use three ;;; to precede Local Variables to be + consistent with other files. Will have to ask Stefan Monnier why + he changed it. + + * README: This version of MH-E to appear in GNU Emacs 22.1, not + 21.5. + + * ChangeLog: The * in a ChangeLog entry must only be used before a + filename. + + Fixed compilation warnings in CVS Emacs. This included using + "public" functions instead of "private" ones (info instead of + Info-goto-node, view-mode-enter instead of view-mode), and + removing a customization group that didn't have a parent group. In + addition, string-to-int was recently deprecated; use + string-to-number instead. + + * mh-customize.el (Info-goto-node): Deleted autoload. + (mh-e): Deleted mh group. Use single mh-e group instead. + (mh-tool-bar-folder-help, mh-tool-bar-letter-help): Use info + instead of Info-goto-node. + + * mh-e.el (mh-read-msg-list): string-to-int deprecated; use + string-to-number. + + * mh-funcs.el (mh-list-folders): Use view-mode-enter instead of + view-mode. + + * mh-seq.el (mh-list-sequences): Use view-mode-enter instead of + view-mode. + + * mh-utils.el (mh-get-msg-num): string-to-int deprecated; use + string-to-number. + + Merged in changes from CVS Emacs including: + + * mh-utils.el (mh-show-mode): + * mh-pick.el (mh-pick-mode): Remove spurious run-hooks. Lute + Kamstra 2005-05-26. + +2005-05-25 Bill Wohler + + Merged in changes from CVS Emacs including: + + * mh-customize.el (mh-speedbar-selected-folder-face): Special case + high number of colors displays. Dan Nicolaescu + 2005-04-08. + + * mh-e.el, mh-identity.el, mh-mime.el: Replace `legal' with + `valid'. Replace `illegal' with `invalid'. Werner Lemberg + 2005-03-25. + + * mh-inc.el (mh-inc-spool-list): Correctly declare the external + var. Stefan 2004-09-07. + +2005-05-18 Bill Wohler + + * mh-comp.el (mh-reply): Mention use of mh-repl-group-formfile in + docstring. + +2005-05-05 Bill Wohler + + * mh-e.el (Version, mh-version): Added +cvs to release number. + +2005-05-05 Bill Wohler + + Released MH-E version 7.83. + + * MH-E-NEWS, README: Updated for release 7.83. + + * mh-e.el (Version, mh-version): Updated for release 7.83. + +2005-05-05 Bill Wohler + + * README: To appear in Emacs 21.5, since 21.4 was released (but + without the latest MH-E). + + * release-utils (usage): Added --variable-changes. + +2005-05-04 Bill Wohler + + * mh-customize.el (*-face): Made docstrings consistent. + + * mh-seq.el (mh-pick-args-list): Extracted function for turning + string of pick arguments to list. Fixed list so that multi-word + arguments were put in a single string (closes SF #1122655). + (mh-edit-pick-expr): Use it. + + * mh-unit.el (mh-unit): Since 21.4 snuck out but didn't contain + updated lm-verify, don't run lm-verify on versions before 21.5. + (mh-unit-test-pick-args-list): Added. + + * mh-customize.el (mh-yank-from-start-of-msg): Use headline + capitalization. Changed wording of some choices to be more consistent. + (mh-invisible-header-fields-internal): Added fields from usa.net. + +2005-04-24 Satyaki Das + + * mh-mime.el (mh-mime-security-button-face): New function which + determines the face to use to colorize encrypted or signed emails. + (mh-insert-mime-security-button): Modified to colorize the button + differently based on whether the signature was valid or not, + whether the decryption was successful or not, etc. + + * mh-customize.el (mh-show-pgg-good-face) + (mh-show-pgg-unknown-face, mh-show-pgg-bad-face): Faces added to + highlight buttons introduced for encrpted or signed MIME parts. + +2005-03-19 Bill Wohler + + * mh-customize.el (mh-mml-method-default): Sorted alphabetically. + (mh-insert-x-mailer-flag, mh-reply-show-message-flag): Moved from + mh-letter group to mh-sending-mail group. The writing of the + documentation revealed that these options were misplaced. + +2005-03-17 Bill Wohler + + * mh-customize.el (mh-junk-background): Put in alphabetical order. + Synced with manual. + (mh-junk-program): Use double-quotes on non-symbols. + + * mh-pick.el: (mh-search-folder): Synced docstrings with manual. + + * mh-index.el: (mh-index-search, mh-pick-execute-search) + (mh-grep-execute-search, mh-mairix-execute-search) + (mh-swish-execute-search, mh-swish++-execute-search) + (mh-namazu-execute-search): Synced docstrings with manual. Note + that I'm now grabbing the output of an Info buffer which is why + the indents on the examples has changed a bit. If we all use that + methodology in the future, we shouldn't produce as many gratuitous + diffs. I also noticed that `grep' and `search' became links to + unrelated things, so let's use double-quotes for quoting + non-symbols in the docstrings. + + * mh-customize.el (mh-index-new-messages-folders) + (mh-index-ticked-messages-folders): Synced docstrings with manual. + +2005-02-16 Satyaki Das + + * mh-index.el (mh-swish-execute-search): Simplify the indexing + recipe for swish. Thanks to Eric Jensen for the suggestion. + +2005-02-11 Satyaki Das + + * mh-index.el (mh-swish-execute-search) + (mh-swish++-execute-search): Make the indexing recipes better. + (mh-swish-next-result): The indexer might find matches in files + that aren't messages. Make the function handle that case + gracefully. + +2005-02-07 Bill Wohler + + * mh-customize.el (mh-inc-prog, mh-inc-spool-list): Synced + docstrings with manual. + +2005-02-06 Bill Wohler + + * mh-junk.el (mh-spamassassin-blacklist): Removed trailing + whitespace. + + * mh-e.el (mh-refile-or-write-again): Checkdoc fix. + + * mh-identity.el (mh-identity-list-set) + (mh-identity-field-handler, mh-identity-handler-gpg-identity) + (mh-identity-handler-signature) + (mh-identity-handler-attribution-verb) + (mh-identity-handler-default, mh-identity-handler-top): Docstring + editing. + + * mh-customize.el (mh-identity-list, mh-auto-fields-list) + (mh-identity-default, mh-identity-handlers): Synced docstrings + with manual. + +2005-02-03 Bill Wohler + + * mh-xemacs.el (define-behavior 'mh): Moved Ben's code here from + mh-e.el and added standard documentation. + + * mh-e.el: Received patch from Ben Wing to add + define-behavior on XEmacs. + +2005-01-28 Jeffrey C Honig + + * mh-customize.el (mh-invisible-header-fields-internal): Added + X-Evolution header added by Evolution mai client. + +2005-01-18 Bill Wohler + + * mh-customize.el (mh-invisible-header-fields-internal): Added + DomainKey-Signature (http://antispam.yahoo.com/domainkeys/). + There's a Comment field that goes with it, but I thought it was + too general to add. + +2005-01-06 Bill Wohler + + * mh-junk.el (mh-spamassassin-blacklist): Fixed typo to fix an + error when junking spamassassin mail when mh-junk-background is + turned on. + +2004-12-25 Satyaki Das + + * mh-utils.el (mh-show-unquote-From): Make the buffer writable + before trying to change it (closes SF #1089870). + + * mh-comp.el (mh-complete-word): Fix a typo in a variable + name (closes SF #1089870) + +2004-11-28 Jeffrey C Honig + + * mh-comp.el (mh-complete-word): Kill the *Completions* buffer in + any cases where we belive we are done with it. Not perfect, but + better than just leaving it around. + +2004-11-08 Satyaki Das + + * mh-acros.el (mh-funcall-if-exists): In XEmacs, presence of a + function at compile time doesn't guarantee it's existence at run + time. So make the macro handle that situation better. + +2004-11-05 Satyaki Das + + * mh-acros.el (advice): Load advice, since it isn't loaded in + XEmacs causing compilation problems. + +2004-10-24 Satyaki Das + + * mh-index.el (mh-mairix-execute-search) + (mh-mairix-regexp-builder): Update the interface to mairix so that + it will work with versions of mairix 0.12 and later. + + * mh-funcs.el (mh-rmf-daemon): Avoid using + beginning-of-buffer since it clobbers the mark and it was pointed + out on the Emacs developers list to be the wrong thing to do. + + * mh-e.el (mh-inc-folder): Only remove the window on the show + buffer. This means if the user has BBDB enabled then the window + displaying BBDB information isn't clobbered. + (mh-refile-or-write-again): Don't use the function + interactive-p. There was a long thread on the Emacs developers + list where it was pointed out that it is incorrect to use this + function most of the time. + + * mh-comp.el (autoload): Don't set auto-mode-alist. This could + screw things up for users that don't use MH-E (closes SF #1032353). + +2004-10-13 Satyaki Das + + * mh-e.el (mh-refile-or-write-again): Generalize the function to + work on a range of messages (closes SF #1046330). + +2004-09-02 Satyaki Das + + * mh-e.el (mh-process-commands): The concurrent execution of mark + and refile can cause problems since both the commands change the + current folder. This change avoids that by getting rid of the + concurrency. Another change covers the corner case where we refile + messages to a previously empty folder. Before the modification + sequences weren't preserved even if the appropriate flag was + set. That is no longer the case. + +2004-08-26 Satyaki Das + + * mh-e.el (mh-get-new-mail): Also, update the unseen sequence from + disk. Otherwise, the new messages aren't highlighted. + + * mh-seq.el (mh-thread-inc): Fix a bug which appears when inc is + run in a narrowed folder. The user sequence notation was getting + lost. The change fixes that. + + * mh-e.el (mh-get-new-mail): Make inc more efficient by reusing + the existing user sequence notation and deleted/refiled notation. + +2004-08-24 Bill Wohler + + * mh-e.el (Version, mh-version): Added +cvs to release number. + +2004-08-24 Bill Wohler + + Released MH-E version 7.82. + + * MH-E-NEWS, README: Updated for release 7.82. + + * mh-e.el (Version, mh-version): Updated for release 7.82. + +2004-08-24 Bill Wohler + + * mh-init.el (mh-variant-set): Change MH to mh as that's what is + emitted by `mh-variant-mh-info' (closes SF #1014781). + (mh-variant-p): Add mu-mh to docstring. + +2004-08-23 Satyaki Das + + * mh-acros.el (mh-require-cl): Remove unneeded autoloads. + (require): Add an advice to the function so that at compile time + the uncompiled file is loaded. This avoids compilation problems + when built in the Emacs tree. + + * mh-mime.el (mh-identity-pgg-default-user-id): Defvar the + variable, to avoid compiler warnings. + + * mh-e.el (mh-seq): Load mh-seq since functions defined there are + used here. Without this, the state mh-seq.elc would be loaded. + + * mh-customize.el (mh-init, mh-identity): Load mh-init and + mh-identity at compile time manually, before the corresponding + stale elc files get autoloaded. + +2004-08-21 Bill Wohler + + * mh-e.el (Version, mh-version): Add +cvs to release number. + +2004-08-21 Bill Wohler + + Released MH-E version 7.81. + + * MH-E-NEWS, README: Updated for release 7.81. + + * mh-e.el (Version, mh-version): Updated for release 7.81. + +2004-08-21 Bill Wohler + + * release-utils (variable_changes): Check for checked-out + directory before proceeding. Remove temporary files. + Rename --variable-update flag to --variable-changes. + +2004-08-16 Mark D. Baushke + + * mh-mime.el (mh-toggle-mh-decode-mime-flag: New function. + * mh-e.el (mh-help-messages): Add [;] help string for it. + (mh-folder-mode-map): Add ";" key binding for it. + +2004-08-15 Satyaki Das + + * mh-acros.el (mh-defstruct): Distinguishing structures created + by mh-defstruct just based on the number of fields is not + sufficient, since both the mh-thread-message and + mh-thread-container structures have the same length. + +2004-08-15 Mark D. Baushke + + * mh-customize.el (mh-identity-handlers): Use ":default" instead of + "default" to avoid problems with "Default:" as a user defined field. + * mh-identity.el (mh-identity-field-handler): Ditto. + +2004-08-15 Bill Wohler + + * mh-e.el (Version, mh-version): Added +cvs to release number. + +2004-08-15 Bill Wohler + + Released MH-E version 7.4.80. + + * MH-E-NEWS, README: Updated for release 7.4.80. + + * mh-e.el (Version, mh-version): Updated for release 7.4.80. + +2004-08-15 Bill Wohler + + * mh-funcs.el, mh-gnus.el, mh-inc.el, mh-init.el, mh-junk.el, + mh-pick.el, mh-print.el, mh-xemacs.el: Added 2004 to Copyright. + + * mh-acros.el, mh-alias.el: Checkdoc fixes. + +2004-08-12 Satyaki Das + + * mh-acros.el (cl): Load cl in this file. That is all right, since + this file is only used at compile time, and so cl doesn't get + loaded at run time. This avoids problems with stale *.elc files + present in the Emacs source tree during compilation. + (mh-defstruct): Modify it to make it more CL like and in the + process simplify it a bit. This makes the argument list of the + constructor compatible with the previous version, thereby avoiding + a compilation error when an old version of mh-seq.elc is present. + + * mh-seq.el (mh-thread-id-container, mh-thread-get-message) + (mh-thread-get-message-container): Revert back to the CL style + of using keyword arguments, since the mh-defstruct now produces + code compatible to such usage. + +2004-08-11 Satyaki Das + + * mh-acros.el (mh-defstruct, mh-require-cl): Checkdoc fixes. + + * mh-utils.el (message-tokenize-header, message-fetch-field): Add + autoloads. + (mh-folder-completing-read): Make the folder completion look + better with CVS Emacs. + + * mh-init.el (mh-variant-set): Remove dead code. + +2004-08-11 Bill Wohler + + * *.el: Use the following at the top of each file which seems to + do a good job of suppressing compilation warnings in 21.3 and CVS + Emacs (21.4). This replaces (require 'cl) or (require + 'utils) (mh-require-cl) calls: + + (eval-when-compile (require 'mh-acros)) + (mh-require-cl) + +2004-08-10 Bill Wohler + + * release-utils (DESCRIPTION): Added one. + (FILES, SEE ALSO, VERSION): Deleted empty and incorrect sections. + + * mh-e.el (mh-colors-available-p): Call x-display-color-cells with + mh-funcall-if-exists since it no longer seems to be defined in + GNU Emacs 21.4. + +2004-08-10 Satyaki Das + + * mh-speed.el (mh-process-kill-without-query, mh-speed-flists): + Avoid a compiler warning in versions of Emacs where + process-kill-without-query is a deprecated function. + + * mh-seq.el (mh-thread-message, mh-thread-container): Use + mh-defstruct instead of defstruct. + (mh-thread-id-container, mh-thread-get-message-container) + (mh-thread-get-message): Use the slightly different structure + constructor function. + + * mh-acros.el (mh-defstruct): New macro which is a partial + replacement of the defstruct in CL. + (no-byte-compile): Don't compile the file since it isn't loaded at + run time, so efficiency isn't an issue. + + * mh-utils.el (mh-buffer-data): Use mh-defstruct instead of + defstruct. + +2004-08-09 Satyaki Das + + * mh-funcs.el, mh-junk.el, mh-print.el: Use mh-require-cl to avoid + compilation warnings in Emacs-21.3. + + * mh-acros.el (mh-require-cl): Add autoloads of CL functions used. + +2004-08-09 Bill Wohler + + * mh-customize.el (mh-show-use-xface-flag): Mention that `fetch' and + `curl' are supported as well. + +2004-08-08 Bill Wohler + + * mh-xemacs.el (mh-xemacs-has-toolbar-flag): Checkdoc fixes. + + * mh-mime.el (mh-display-with-external-viewer): Checkdoc fixes. + + * mh-identity.el: (mh-identity-attribution-verb-end): Stripped + trailing space; checkdoc fixes. + + * mh-e.el (mh-restore-desktop-buffer): Checkdoc fixes. + + * mh-customize.el: (mh-inc-spool-list, + mh-compose-forward-as-mime-flag, defcustom): Stripped trailing + space; checkdoc fixes. + + * mh-comp.el (mh-reply): Stripped trailing space. + + * mh-unit.el (mh-unit-files): Added mh-acros.el and mh-gnus.el. + (mh-unit): Don't lm-verify pre-21.4. Save buffers before killing + since we might have done some editing. + + * import-emacs: Deleted. Functionality subsumed by release-utils. + + * release-utils: New script. Performs import-emacs functionality + and displays new and deleted options. + + * Makefile (import-emacs): Call release-utils instead of + import-emacs. + + * mh-funcs.el (mh-undo-folder): Removed deprecated `ignore' + argument. + + * mh-e.el (mh-scan-date-regexp): Deleted as Peter claims it is + obsolete. + (mh-folder-font-lock-keywords): Removed reference to deleted + variable `mh-scan-date-regexp'. + + * mh-customize.el (mh-auto-fields-prompt-flag): Made reference to + `mh-auto-fileds-lists'. + (mh-forward-hook): Fixed docstring typo. + +2004-08-07 Bill Wohler + + * mh-acros.el: New file. Currently holds macros needed by + mh-customize.el but is planned to hold all macros to avoid + dependency problems when compiling. + + * mh-utils.el (mh-xemacs-flag): Defined in mh-customize.el now. + (mh-require-cl, mh-do-in-gnu-emacs, mh-do-in-xemacs) + (mh-funcall-if-exists, mh-make-local-hook, mh-mark-active-p): + Moved to new file mh-acros.el. + + * mh-customize.el: Require mh-acros and cl only when compiling and + mh-loaddefs at runtime instead of mh-utils. + (mh-xemacs-flag): Define it here instead of mh-utils.el. + + * Makefile (MH-E-SRC): Added mh-acros.el. + + * mh-gnus.el (default-enable-multibyte-characters): Don't define + any more. It doesn't seem to be needed. + + * mh-customize.el (mh-junk-background): New variable. If on, spam + programs are run in background. Running in foreground can be slow. + Defaults to nil to spare machines with little memory. + + * mh-junk.el (mh-spamassassin-blacklist, mh-bogofilter-blacklist) + (mh-bogofilter-whitelist, mh-spamprobe-blacklist) + (mh-spamprobe-whitelist): Use new option mh-junk-background. + +2004-07-25 Satyaki Das + + * mh-utils.el (mh-folder-completing-read): In recent CVS Emacs, + the first letter of the possible choices in the completion buffer + is highlighted. The change is needed for this feature to work + during folder name completion. This is not entirely sufficient, + since the leading "+" in folder names is still mishandled. A patch + is required in Emacs itself to address that. + +2004-07-22 Mark D. Baushke + + * mh-e.el (recursive-load-depth-limit): Move + recursive-load-depth-limit code to ... + * mh-utils.el (recursive-load-depth-limit): ... here to avoid + problems compiling mh-utils.el and mh-alias.el with gnus-5.10.6 + under emacs-21.1. Use eval-and-compile instead of eval-when. + +2004-07-20 Bill Wohler + + * mh-customize.el (mh-invisible-header-fields-internal): Added + header fields emitted by T-Mobile picture phones (X-Mms-*, and + commented out X-Operator field saying it's like X-Mailer). + +2004-07-12 Bill Wohler + + * mh-gnus.el: Set local variables indent-tabs-mode and + sentence-end-double-space to nil. + + * mh-customize.el: Checkpoint from option docstring updates and + manual synchronization from last summer. For the options listed + below, docstring was usually completely rewritten. Use "on" + instead of "t" in docstring to match what is seen in customization + buffer. Use headline capitalization. Standardize on "Auto-detect" + text when option has that capibility. + (mh): Since we work on more than one type of Emacs, use Emacs + instead of GNU Emacs. Prefer GNU mailutils over GNU Mailutils. + (mh-variant): s/Autodetect at startup/Auto-detect/. + (mh-alias-insertion-location): s/Sorted + alphabetically/Alphabetical/. s/At the top of file/Top/. s/At the + bottom of file/Bottom/. + (mh-alias-local-users-prefix): s/Use login instead of real + name/Use Login/. + (mh-identity-list): Sorted values by fields, attribution, + signature, GPG key. + (mh-auto-fields-list): Missing quote. + (mh-compose-insertion): s/Use Gnus/Gnus/. s/Use mhn/mhn/. + (mh-compose-space-does-completion-flag): s/SPACE//. + (mh-extract-from-attribution-verb): Since we have French, added + German too ;-). + (mh-letter-complete-function): Mention default in docstring. + (mh-invisible-header-fields-internal): Added X-ELNK-Trace from + Earthlink. + (mh-alias-flash-on-comma, mh-alias-insert-file) + (mh-alias-passwd-gecos-comma-separator-flag) + (mh-recenter-summary-flag, mh-default-folder-for-message-function) + (mh-default-folder-must-exist-flag, mh-index-program) + (mh-index-ticked-messages-folders, mh-ins-buf-prefix) + (mh-delete-yanked-msg-window-flag, mh-identity-default): See + summary above. + + * mh-init.el (mh-variant-set, mh-sys-path, mh-variant-mu-mh-info): + Prefer GNU mailutils over GNU Mailutils MH. + + * mh-comp.el (sc-cite-original, mh-smail, mh-smail-batch) + (mh-edit-again, mh-extract-rejected-mail, mh-forward) + (mh-smail-other-window, mh-reply, mh-send, mh-send-other-window): + Use `mh-send' instead of \\[mh-send]] since links in the docstring + are more useful than a key sequence in these cases. Use "See also" + instead of "See also documentation for". + + Merged in 7.4.4 changes, described below. + + * mh-e.el (Version, mh-version): Set to 7.4.4+cvs. + +2004-07-10 Bill Wohler + + Released MH-E version 7.4.4. + + * MH-E-NEWS, README: Updated for release 7.4.4. + + * mh-e.el (Version, mh-version): Updated for release 7.4.4. + + This patch release contains the following patches: + + * mh-xemacs.el: New file from concatenation of mh-xemacs-compat.el + and mh-xemacs-icons.el which were removed since their names + exceeded DOS 8+3 limits. + + * Makefile: + (mh-e-autoloads.el): Add target to make `mh-e-autoloads.el', a + file containg usual entry commands into MH-E to be used for users + installing MH-E separately from Emacs. + (XEMACS_LOADDEFS_FILE): New. Used to generate mh-loaddefs.el + in XEmacs. + (XEMACS_LOADDEFS_COOKIE): Ditto. + (XEMACS_LOADDEFS_PKG_NAME): Ditto. + (XEMACS_OPTIONS): Add '-no-autoloads' to give a cleaner build + environment. + (MH-E-SRC): Moved mh-xemacs.el to new variable MH-E-XEMACS-SRC. + (MH-E-XEMACS-SRC): New variable to hold XEmacs source files. + (MH-E-XEMACS-OBJ): New variable to hold XEmacs object files. + (clean): Moved XEmacs-specific code to clean-xemacs. + (xemacs): Added clean-xemacs prerequisite. Moved down to XEmacs + section of file. Add target to build mh-loaddefs.el in XEmacs + (loaddefs-xemacs): New rule to build mh-loaddefs.el in XEmacs. + (clean-xemacs): New target to remove XEmacs-specific files. + (compile-xemacs): New. It allows for the '-no-autoloads' option + and byte-compiles all the source files with a single instance of + XEmacs. + (dist): Added $(MH-E-XEMACS-SRC) to tarball. + (AUTO_PRELOADS): Removed, in favour of 'AUTOLOAD_PACKAGE_NAME' and + 'AUTOLOAD_FILE'. + (AUTOLOAD_PACKAGE_NAME): New. + (AUTOLOAD_FILE): New. + (all): Don't set $EMACS_HOME if building with XEmacs. + (xemacs): Use 'compile-xemacs' instead of 'compile'. + (auto-autoloads.elc): Use new $AUTOLOAD_* vars and allow for + '-no-autoloads'. + (custom-load.elc): Allow for '-no-autoloads'. + + * mh-e.el: Don't require mh-xemacs-compat which no longer exists. + The XEmacs stuff gets required by mh-customize.el which is + required by mh-utils.el which is required by mh-e.el. This all + happens before mh-xemacs-compat was required, so all should be + well. + (mh-restore-desktop-buffer): Move from desktop.el. Add Parameters. + (mh-restore-desktop-buffer): Delete with-no-warnings. + (mh-folder-mode): Bind desktop-save-buffer to t. + (Courtesy Lars Hansen). + + * mh-alias.el (mh-assoc-ignore-case): New macro to use + assoc-string when available (Emacs 21.4+); assoc-ignore-case + otherwise. + (mh-alias-reload, mh-alias-expand, + mh-alias-minibuffer-confirm-address): Use it. + + * mh-seq.el: Added mh-autoload to mh-read-seq-default. + + * mh-utils.el (mh-require-cl): The Emacs coding conventions + require that the cl package not be required at runtime. However, + the cl package in versions of Emacs prior to 21.4 left cl routines + in their macro expansions. Use mh-require-cl to provide the cl + routines in the best way possible (closes SF #930012). + (require 'mouse): To shush compiler. + + Use new function mh-require-cl throughout. + + Add arch taglines (courtesy Miles Bader). + + * mh-unit.el (mh-unit-files): Replaced mh-xemacs-compat.el and + mh-xemacs-icons.el with mh-xemacs.el. + + * import-emacs: Also grab the ChangeLog. + + * *.pbm: Regenerated using GIMP to be consistent with other Emacs + icons. + 1. Edit .xpm image in GIMP. + 2. Image > Mode > Indexed. Check Use Black/White Palette and No + Color Dithering. + 3. File > Save As file.xbm. + 4. Run xbmtopbm < file.xbm > file.pbm. + Thanks to jan.h.d@swipnet.se for the help. + +2004-07-07 Stephen Gildea + + * mh-customize.el (mh-invisible-header-fields-internal): + Add X-Greylist, X-Source*, and X-WebTV-Signature. + Replace specific X-Spam-* headers with general pattern. + +2004-06-15 Bill Wohler + + * README: Vladimir Ivanovic reports that mh-rmail works with + XEmacs 21.5.17, so updated requirements text accordingly (closes + SF #644321). + +2004-05-12 Satyaki Das + + * mh-utils.el (mh-mail-header-end): Replace call to + rfc822-goto-eoh with something that allows From_ lines in the mail + header. + +2004-04-14 Bill Wohler + + * mh-utils.el (mh-show-mouse): s/EVENT/event/. Thanks to John Paul + Wallington for pointing this out. + +2004-04-12 Satyaki Das + + * mh-e.el (mh-folder-size-flist): Add -showzero option so that the + parsing code doesn't get confused by the presence of -noshowzero + in the user's .mh_profile (closes SF #933954). + +2004-04-07 Satyaki Das + + * mh-mime.el (mh-insert-mime-button) + (mh-insert-mime-security-button): Add evaporate property to + overlays used in MIME part buttons. This avoids problems with + CVS Emacs. + +2004-03-16 Satyaki Das + + * mh-e.el (mh-folder-from-address): Go to the end of buffer if the + re-search-forward fails (closes SF #917096). + +2004-02-02 Satyaki Das + + * mh-customize.el (mh-compose-forward-as-mime-flag): New user + customizable variable that controls whether messages are forwarded + as MIME attachments (closes SF #827203). + + * mh-comp.el (mh-forward): Call forw with -mime option only if + mh-compose-forward-as-mime-flag is non-nil. + +2003-12-26 Jeffrey C Honig + + * mh-junk.el (mh-junk-blacklist, mh-junk-whitelist) + (mh-spamassassin-blacklist, mh-spamassassin-blacklist) + (mh-spamassassin-blacklist, mh-spamassassin-whitelist) + (mh-spamassassin-whitelist, mh-bogofilter-blacklist) + (mh-spamprobe-blacklist): Add progress messages. Change "Couldn't" + to "Unable" in error messages. Run bogofilter and spamprobe in + the foreground to prevent a large number of processes from + swamping the system. + +2003-12-25 Satyaki Das + + * mh-e.el (mh-prompt-for-refile-folder): Marking the whole folder + and then refiling all messages throws an error, since this + function expects point to be on a valid scan line. The change + relaxes this requirement, thereby avoiding the above problem. + +2003-12-14 Satyaki Das + + * mh-comp.el (mh-ascii-buffer-p): New function that checks if a + buffer is entirely composed of ASCII. + (mh-send-letter): Encode the draft if it contains non-ASCII + characters. + +2003-12-12 Satyaki Das + + * mh-customize.el (mh-invisible-headers): Keep only unique fields + in list of header fields to hide. This avoids problems in XEmacs. + +2003-12-10 Satyaki Das + + * mh-seq.el (mh-thread-print-scan-lines): The imenu index was not + getting created for threaded index buffers. The change fixes this. + + * mh-index.el (mh-index-insert-folder-headers): Always create the + imenu index. + (mh-index-create-imenu-index): Set which-func-mode to t. If + which-function-mode is turned on after the folder buffer has been + prepared, display of the folder info was being inhibited. The + change fixes that. + +2003-12-09 Satyaki Das + + * mh-comp.el (mh-letter-mode): Setup mh-mail-header-separator + based on draft contents. + (mh-letter-mode, mh-letter-mail-header-end-marker) + (mh-letter-header-end): Remove use of the variable + mh-letter-mail-header-end-marker. Instead use + mh-mail-header-separator. This avoids problems in font locking + draft buffers (closes SF #855479). + +2003-12-09 Satyaki Das + + * mh-index.el (mh-index-insert-folder-headers): Modified so that + imenu--index-alist is updated. + (mh-index-create-imenu-index): New function that generates an + index usable by imenu. This adds which-func-mode support to index + folders (closes SF #855520). + + * mh-e.el (which-func, which-func-modes): Tell which-func that + mh-folder-mode supports it. + (mh-folder-mode): Add support for imenu. + +2003-11-22 Peter S Galbraith + + * Makefile: renamed mh-startup.el to mh-e-autoloads.el + + * README: renamed mh-startup.el to mh-e-autoloads.el + + * .cvsignore: Added mh-e-autoloads.el + +2003-11-18 Bill Wohler + + Released MH-E version 7.4.3. + + * MH-E-NEWS, README: Updated for release 7.4.3. + + * mh-e.el (Version, mh-version): Updated for release 7.4.3. + + This patch release contains the following two patches: + + * mh-identity.el (mh-identity-make-menu): Removed condition on + mh-auto-fields-list. Use it to enable or disable menu item + instead. + + * mh-customize.el (mh-identity-list): Removed defvar and moved + defcustom before mh-auto-fields-list so that defvar wouldn't + clobber user's customization settings. + +2003-11-17 Jeffrey C Honig + + * mh-print.el (mh-print-msg): Do not print a message on deprecated + usage, the bindings have been removed. + + * mh-e.el (mh-folder-mode-map): Remove "l" binding for + mh-print-msg. + + * mh-utils.el (mh-show-mode-map): Remove "l" binding for + mh-print-msg. + +2003-11-16 Satyaki Das + + * mh-comp.el (mh-beginning-of-word): Use the function + mh-mail-abbrev-make-syntax-table instead of the function + mail-abbrev-make-syntax-table. + + * mh-gnus.el (mh-mail-abbrev-make-syntax-table): Add a wrapper + function that calls mail-abbrev-make-syntax-table if available. + This is needed so that MH-E built with CVS Emacs will work with + released versions of Emacs21 and vice versa. + +2003-11-14 Peter S Galbraith + + * mh-customize.el (mh-invisible-header-fields-internal): Add + "X-NAI-Spam-" and "X-Spam-Report:". + +2003-11-14 Mark D. Baushke + + * mh-customize.el (mh-invisible-header-fields-internal): + Add X-AntiAbuse and X-MailScanner. + (Patch from Stephen Gildea.) + +2003-11-13 Peter S Galbraith + + * mh-identity.el (mh-identity-handler-attribution-verb): New + function. A new Identity handler for the attribution verb (e.g. + "wrote:") to allow for different identities to use different + languages. + (mh-identity-insert-attribution-verb): New function. Insert the + attribution verb, placing special markers so it can be deleted and + replaced later. + (mh-identity-attribution-verb-start): New variable. Holds the + marker for the start of the attribution verb. + (mh-identity-attribution-verb-end): New variable. Holds the + marker for the end of the attribution verb. + + * mh-customize.el (mh-identity-handlers): Add new + ":attribution-verb" tag for the attribution-verb handler. + (mh-identity-list): Idem. + + * mh-comp.el (mh-yank-cur-msg): Insert attribution verb using + mh-identity-insert-attribution-verb. + (mh-extract-from-attribution): Extract only the name from the From + line, without appending `mh-extract-from-attribution-verb' since + markers need to be inserted around that now. + +2003-11-12 Bill Wohler + + * mh-e.el (mh-rmail, mh-nmail): Well, actually, we run in both GNU + Emacs and XEmacs, so removed the "GNU" in the docstrings unless + one is strictly talking about GNU Emacs. + + * mh-comp.el (mh-smail, mh-smail-batch, mh-smail-other-window): + Ditto. + +2003-11-11 Bill Wohler + + * mh-customize.el (mh-customize): Minor docstring change. + (mh, mh-e): The short description for MH-E is: The GNU Emacs + Interface to the MH Mail System. Therefore, updated docstrings + accordingly. + + * mh-comp.el (mh-smail, mh-smail-batch, mh-smail-other-window): + Ditto. + + * mh-e.el (mh-rmail, mh-nmail): Ditto. + +2003-11-10 Satyaki Das + + * mh-mime.el (mh-mml-to-mime): In case errors happen in + mml-to-mime, restore contents of the draft buffer (closes SF + #839303). + +2003-11-07 Bill Wohler + + * mh-customize.el (mh-letter-mode-hook): Moved to mh-sending-mail + group (where it is now documented in the manual). + (mh-pick-mode-hook): Moved to mh-index group (where it is now + documented in the manual). + + * mh-loaddefs.el: Deleted per our discussion on mh-e-devel. No + more conflicts! No more check-ins! Anyone pulling CVS MH-E is + expected to compile. This file shall be added to the tarball so + that users of the distribution are not. + +2003-11-07 Mark D. Baushke + + * mh-loaddefs.el: Regenerated. + + * mh-customize.el (mh-forward-hook): Define new hook. + * mh-comp.el (mh-forward): Use it. + +2003-11-07 Satyaki Das + + * mh-loaddefs.el: Regenerated. + + * mh-utils.el (mh-show-toggle-mime-buttons) + (mh-show-display-with-external-viewer): New interactive functions + callable from the show buffer. + (mh-show-mime-map): Add bindings for "K t" and "K e". + (mh-show-msg): Propagate change to + mh-display-buttons-for-inline-parts-flag to the show buffer. + + * mh-mime.el (mh-display-with-external-viewer): New interactive + function to display MIME parts with external viewer (closes SF + #839318). + + * mh-e.el (mh-folder-mode): Make the variable + mh-display-buttons-for-inline-parts-flag buffer-local so that + display of MIME buttons can be toggled. + (mh-toggle-mime-buttons): New interactive function to toggle + display of MIME buttons. + (mh-mime-map): Modified to add bindings for "K t" and "K e". + +2003-11-04 Steve Youngs + + * Makefile (XEMACS_LOADDEFS_FILE): New. Used to generate + mh-loaddefs.el in XEmacs. + (XEMACS_LOADDEFS_COOKIE): Ditto. + (XEMACS_LOADDEFS_PKG_NAME): Ditto. + (xemacs): Add target to build mh-loaddefs.el in XEmacs + (clean-xemacs): Remove `mh-loaddefs.el*' + (loaddefs-xemacs): New rule to build mh-loaddefs.el in XEmacs. + +2003-11-02 Peter S Galbraith + + * mh-init.el (mh-variant-set-variant): Reset `mh-x-mailer-string' + when we select an MH variant. + +2003-11-02 Jeffrey C Honig + + * mh-loaddefs.el: Regenerated. + + * mh-funcs.el (mh-print-msg): Move to mh-print.el. + + * mh-e.el (mh-folder-mode-map): Add mh-print-msg ("l") back, it + will print a message that this usage is deprecated. + + * mh-print.el (require, mh-ps-print-msg, mh-ps-print-msg-file): + Require mh-funcs for mh-note-printed. PS print functions were not + setting the printed notation. Move mh-print-msg here for + consistency. Print message if mh-print-msg invoked via deprecated + key binding. + +2003-11-01 Peter S Galbraith + + * Makefile: Add target to make `mh-startup.el', a file containg + usual entry commands into MH-E to be used for users installing + MH-E separately from Emacs. + + * README: Document the above for users. + +2003-10-29 Jeffrey C Honig + + * mh-utils.el (mh-show-ps-print-map): Add "?" and "l" to + mh-show-ps-print-map. + + * mh-e.el (mh-ps-print-map, mh-help-messages): Add "?" and "l" to + mh-ps-print-map. Add "l" to help message. + +2003-10-27 Bill Wohler + + * Makefile (MH-E-SRC): Moved mh-xemacs.el to new variable + MH-E-XEMACS-SRC. + (MH-E-XEMACS-SRC): New variable to hold XEmacs source files. + (MH-E-XEMACS-OBJ): New variable to hold XEmacs object files. + (clean): Moved XEmacs-specific code to clean-xemacs. + (xemacs): Added clean-xemacs prerequisite. Moved down to + XEmacs section of file. + (clean-xemacs): New target to remove XEmacs-specific files. + (compile-xemacs): Added $(MH-E-XEMACS-SRC) prerequisite. + (dist): Added $(MH-E-XEMACS-SRC) to tarball. + +2003-10-27 Satyaki Das + + * mh-loaddefs.el: Regenerated. + + * mh-index.el (mh-indexer-choices): Remove option for the non-free + glimpse indexer (closes SF #831276). + (mh-glimpse-binary, mh-glimpse-directory) + (mh-glimpse-execute-search, mh-glimpse-next-result): Functions + and variables to implement glimpse support are removed. + + * mh-customize.el (mh-index-program): Remove option for glimpse. + +2003-10-24 Satyaki Das + + * mh-customize.el: Remove top-level test for toolbar enabled + XEmacs since it is not needed. + (mh-tool-bar-define): Add test for XEmacs toolbar in the functions + mh-toolbar-init, mh-tool-bar-letter-buttons-set and + mh-tool-bar-folder-buttons-set. This enables proper compilation + irrespective of whether the XEmacs was built with toolbar support + or not. + + * mh-comp.el (mh-letter-mode): Remove conditional since it is not + needed. + + * mh-e.el (mh-folder-mode): Same as above. + + * mh-utils.el (mh-show-mode): Same as above. + + * mh-xemacs.el (mh-xemacs-icon-map): Remove condition on toolbar + presence since we want the build to work if XEmacs without + toolbars is used during compilation. + +2003-10-23 Bill Wohler + + * mh-customize.el: The Great Reorganization. Sorted groups + alphabetically. Aligned variables in customization groups with + manual sections. Group docstrings changed to match manual chapter + titles. + +2003-10-22 Satyaki Das + + * mh-speed.el (timer): Avoid compiler warning in XEmacs. + +2003-10-22 Steve Youngs + + * Makefile (XEMACS_OPTIONS): Add '-no-autoloads' to give a cleaner + build environment. + (AUTO_PRELOADS): Removed, in favour of 'AUTOLOAD_PACKAGE_NAME' and + 'AUTOLOAD_FILE'. + (AUTOLOAD_PACKAGE_NAME): New. + (AUTOLOAD_FILE): New. + (all): Don't set $EMACS_HOME if building with XEmacs. + (xemacs): Use 'compile-xemacs' instead of 'compile'. + (auto-autoloads.elc): Use new $AUTOLOAD_* vars and allow for + '-no-autoloads'. + (custom-load.elc): Allow for '-no-autoloads'. + (compile-xemacs): New. It allows for the '-no-autoloads' option + and byte-compiles all the source files with a single instance of + XEmacs. + + * mh-e.el (mh-folder-mode): Only load the toolbar in XEmacs if + toolbar support is available. + + * mh-comp.el (mh-letter-mode): Only load the toolbar in XEmacs if + toolbar support is available. + + * mh-customize.el: Require 'mh-xemacs' at toplevel when + 'mh-xemacs-flag' is non-nil. + Wrap all the toolbar code in a test that is true if using + GNU/Emacs or a toolbar-enabled XEmacs. + + * mh-print.el (mh-ps-spool-a-msg): Comment out + `clean-message-header-flag' because it isn't used anywhere. + + * mh-utils.el (mh-show-mode): Only load the toolbar in XEmacs if + toolbar support is available. + + * mh-xemacs.el: Autoload `regexp-opt', `customize-group', + `view-mode', `with-electric-help', `pp', `sort-numeric-fields', + `reverse-region', and `goto-address' at compile time. + (mh-xemacs-has-toolbar-flag): New. This is non-nil when XEmacs + has toolbar support. + (mh-xemacs-toolbar-*-icon): Use it. + +2003-10-21 Mark D. Baushke + + * mh-identity.el (mh-identity-field-handler): Fields that begin + with ":" must have an mh-identity-handler defined or the user + gets an error. + +2003-10-17 Peter S Galbraith + + * mh-customize.el (mh-identity-list): This change affects users! + The keyword "signature" becomes ":signature". The recently added + keyword "pgg-default-user-id" becomes ":pgg-default-user-id". + (mh-auto-fields-list): The keyword "Identity" becomes ":identity". + (mh-identity-handlers): Idem for signature and pgg-default-user-id. + + * mh-comp.el (mh-insert-auto-fields): Idem for Identity. + +2003-10-17 Peter S Galbraith + + * mh-xemacs.el: Add eval-and-compile call to (load "toolbar" t t) to + make sure `toolbar-make-button-list' is defined. We can't use + require because Emacs doesn't have this library. + +2003-10-16 Bill Wohler + + * mh-customize.el (mh-signature-file-name) + (mh-letter-insert-signature-hook): Merge docstring with manual. + + * mh-comp.el (mh-file-is-vcard-p): Checkdoc fix. + (mh-insert-signature): Merge docstring with manual. + + * mh-customize.el (mh-junk): Changed manual link in defgroup from + Customizing mh-e to Junk. + (mh-junk-function-alist): Moved SpamAssassin to first in list on + the hunch that it is the most popular and should be chosen if + other anti-spam programs exist. + (mh-junk-mail-folder): Since the variable can accept values other + than folder names, renamed to mh-junk-disposition to more + accurately reflect the content. Merge docstring with manual. + (mh-junk-program): Moved SpamAssassin to the top of the menu for + the same reason presented in mh-junk-function-alist. Also, fixed + case of spam programs to match official usage. Merge docstring + with manual. + + * mh-junk.el (mh-junk-blacklist): + s/mh-junk-mail-folder/mh-junk-disposition/. Merge docstring with + manual. + (mh-junk-whitelist): Merge docstring with manual. + (mh-bogofilter-blacklist): No longer suggest using automatic + classification so use -s instead of -Ns. + (mh-bogofilter-whitelist): No longer suggest using automatic + classification so use -n instead of -Sn. + (mh-spamassassin-blacklist, mh-spamassassin-whitelist): Merge + docstring with manual. Moved spamassassin functions to top of file + so functions appear in same order that they are presented in menu. + +2003-10-09 Peter S Galbraith + + * mh-customize.el (mail-citation-hook): Moved from mh-comp.el and + made into a defcustom. + +2003-10-09 Satyaki Das + + * mh-loaddefs.el: Regenerated. + + * mh-comp.el (mh-get-header-field): Add autoload cookie. + + * mh-utils.el (mh-show-ps-print-toggle-mime) + (mh-show-ps-print-toggle-color, mh-show-ps-print-toggle-faces) + (mh-show-ps-print-msg-file, mh-show-ps-print-msg) + (mh-show-ps-print-msg-show): New interactive functions callable + from the show buffer. + (mh-show-ps-print-map): New key map for printing. + + * mh-e.el (mh-folder-mode-map): Remove key binding for + mh-print-msg. + (mh-ps-print-map): Add new key map for printing. + + * Makefile (MH-E-SRC): Add mh-print.el. + +2003-10-07 Satyaki Das + + * mh-utils.el (mh-x-image-url-fetch-image): In XEmacs, + make-temp-file is not present. So to avoid security problems, use + a temporary file in the user's home directory. This avoids issues + in creating files in a world-writable directory. + + * mh-mime.el (mh-signature-highlight): In Emacs, arrange for the + overlay to be freed when it is no longer needed. Also, implement + signature highlighting in XEmacs. + +2003-10-05 Satyaki Das + + * mh-mime.el (mh-mime-display, mh-mm-inline-message): Respect the + value of `mm-verify-option' and `mm-decrypt-option'. + (mh-mime-display-security): Rearrange code a bit to avoid too many + new lines being inserted when message verification/decryption is + carried out while the message is being read. Also use the + point-m{in|ax}-marker functions to make the function easier to read. + (mh-mime-security-press-button): Extend the function so that the + user can verify/decrypt messages while reading them. + + * mh-gnus.el (mm-possibly-verify-or-decrypt): Added to avoid + compiler warning with old Gnus. + + * mh-utils.el (mh-x-image-url-sane-p): New function which checks + if the URL in X-Image-URL is something we can handle. + (mh-x-image-url-display): Don't display image if the URL looks + malformed. + +2003-10-04 Mark D Baushke + + * mh-comp.el (mh-letter-menu): Simplify menu heading. + +2003-10-03 Mark D Baushke + + * mh-mime.el (mh-mml-query-cryptographic-method): Avoid + revisionist history and still provide a good default. + + * mh-comp.el (mh-letter-menu): Remove the Disable Security + parenthetical comment. + + * mh-loaddefs.el: Regenerated. + + * mh-customize.el (mh-mml-method-default): What method should be + used in secure directives. + + * mh-mime.el (mh-secure-message): New function used to generate + the mml security tags. + (mh-mml-unsecure-message): New wrapper function around + mml-unsecure-messages. + (mh-mml-secure-message-sign-pgpmime): Remove function. + (mh-mml-secure-message-encrypt-pgpmime): Ditto. + (mh-mml-cryptographic-method-history): New variable. + (mh-mml-query-cryptographic-method): New function. + (mh-mml-secure-message-encrypt): Ditto. + (mh-mml-secure-message-signencrypt): Ditto. + (mh-mml-secure-message-sign): Ditto. + + * mh-comp.el (mh-letter-menu, mh-letter-mode-help-messages, + (mh-letter-mode-map): Update to use new functions. + +2003-09-26 Satyaki Das + + * mh-seq.el (mh-interactive-range): The function has been + extended so that it now takes a default result to return if no + interactive prefix arg is given and no region is active. + + * mh-e.el (mh-add-sequence-notation): If transient-mark-mode is + on, then the active region is deactivated based on whether a user + sequence or a internal sequence is being notated. The change + removes this inconsistency. + (mh-catchup, mh-folder-map): A new interactive function to mark + messages as read has been added and bound to "F c" in the folder + mode. + + * mh-utils.el (mh-show-catchup, mh-show-folder-map): New + interactive function callable from show mode buffers has been + bound to "F c". + +2003-09-24 Bill Wohler + + * mh-customize.el (mh-clean-message-header-flag) + (mh-invisible-header-fields-default, mh-invisible-header-fields): + Merge docstring with manual. + +2003-09-24 Mark D. Baushke + + * mh-junk.el (mh-junk-blacklist): Junked messages should be put + into the mh-seen-list to avoid propagating the unseen sequence + into the spam folder. + + * mh-loaddefs.el: Regenerated. + + * mh-mime.el (mh-mml-secure-message-sign-pgpmime): Add an optional + dontsign argument to remove an existing secure message directive. + Update the docstring -- this fuction does not allow for + encrypt/sign, just sign directives. + + * mh-mime.el (mh-mml-secure-message-sign-pgpmime): Use + mml-insert-tag directly to provide a sender if + mh-identity-pgg-default-user-id is set. + (mh-mml-secure-message-encrypt-pgpmime): Use mml-insert-tag + directly to provide a sender if this message is to be both signed + and encrypted and mh-identity-pgg-default-user-id is set. + +2003-09-23 Bill Wohler + + * mh-alias.el (Commentary): Removed as it is now in the manual. + (mh-alias-system-aliases): Moved here from mh-customize.el. By + definition, "system" definitions are not user-visible, and user + filenames are in the the Aliasfile: profile component, so this + variable really shouldn't be a defcustom + (mh-alias-tstamp, mh-alias-filenames, mh-alias-reload) + (mh-alias-add-alias, mh-alias-grab-from-field) + (mh-alias-add-address-under-point, mh-alias-apropos): Merge + docstring with manual. + (mh-alias-reload-maybe): Minor comment update. + (mh-alias-insert-file): Merge docstring with manual. Removed + "[press TAB]" from prompt since users should know about completion + and space can be used as well. + (mh-alias-for-from-p): No longer returns a surprising result (t if + there was **not** an alias for the From field) if the From header + field is missing. This function now returns what you would expect + a function of this name to return. Renamed from + mh-alias-from-has-no-alias-p since negatives in the function name + make logic harder to follow. + (mh-alias-add-alias-to-file): Merge docstring with manual. + Improved verbiage of prompt. Aliases are now inserted "[b]efore" + or "[a]fter" the existing alias instead of "[i]nsert" or + "[a]ppend." Note how the new usage flows better. + + * mh-customize.el (mh-alias): Changed manual link in defgroup from + Customizing mh-e to Aliases. + (mh-alias-grab-from-field button): mh-alias-from-has-no-alias-p + renamed to mh-alias-for-from-p and no longer returns surprising + value if there isn't a From field. Therefore, enable button if + there is a From header field and mh-alias-for-from-p returns nil. + (mh-letter-complete-function) + (mh-alias-completion-ignore-case-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): Merge docstring with + manual. + (mh-alias-system-aliases): Moved to mh-alias.el. + + * mh-comp.el (mh-letter-complete-function-alist): Removed comment + about making this customizable since I didn't think it seemed + appropriate in the manual. + (mh-letter-complete): Merge docstring with manual. + +2003-09-23 Satyaki Das + + * mh-speed.el (mh-speed-flists): When exiting emacs, don't ask if + the flists process should be killed. + + * mh-e.el (mh-folder-message-menu): Enable undo menu entry only + if something can be undone. + + * mh-customize.el (undo): Enable undo button only if something + can be undone. + +2003-09-22 Peter S Galbraith + + * mh-customize.el (mh-identity-handlers): New defcustom. Alist of + Handler functions for mh-identity (downcased) fields. + (mh-identity-list): Add support for pgg-default-user-id. + + * mh-identity.el (mh-insert-identity): Modified to use + `mh-identity-handlers', adding hacking flexibility for those who + might need it. + (mh-identity-field-handler): New function. Return the handler for + a FIELD or nil if none set. The field name is downcased. + (mh-identity-handler-gpg-identity): New function; handler for pgg + pgp identities. It sets a buffer-local value for + `mh-pgg-default-user-id' which must be handled by mh-send-letter. + (mh-identity-pgg-default-user-id): New buffer-local variable to + hold the requested key ID. + (mh-identity-handler-signature): New function; handler t insert + and remove signature files. + (mh-identity-handler-default): New function; the default handler + to insert or remove generic field. + (mh-identity-handler-top): Insert a field at the top of the + header. + (mh-identity-handler-bottom): Insert a field at the bottom of the + header. + (mh-header-field-delete): Make more robust wrt the field having a + trailing colon or not. + (mh-identity-make-menu): Add a "Customize Identities" menu entry. + + * mh-loaddefs.el: Regenerated. + +2003-09-21 Peter S Galbraith + + * mh-init.el (mh-variant-set): Bug fix for mh-variant long names + with version numbers. + + * mh-e.el (mh-scan-format): patch from Sergey Poznyakoff. + GNU mailutils now supports the %(decode) format + +2003-09-20 Satyaki Das + + * mh-gnus.el (mh-mm-text-html-renderer): New function to query + which HTML renderer is being used by Gnus. + + * mh-mime.el (mh-signature-highlight): Renderers used to display + HTML parts garble the signature separator in various ways. The + function has been modified to take that into account. + (mh-mime-display-single, mh-mm-display-part): Pass the new + optional argument to `mh-signature-highlight'. + +2003-09-19 Mark D. Baushke + + * mh-mime.el (mh-have-file-command, mh-file-mime-type): Made an + mh-autoload as they are used in mh-comp.el. + + * mh-loaddefs.el: Regenerated. + +2003-09-18 Peter S Galbraith + + * mh-comp.el (mh-insert-fields): Make sure field has a colon. + +2003-09-18 Satyaki Das + + * mh-seq.el (mh-toggle-tick): Don't hardcode the name of the tick + sequencence in the function. This would have caused improper + highlighting of the tick sequence if the user had changed its + name. + +2003-09-15 Satyaki Das + + * mh-e.el (mh-folder-message-menu): Fix a little bug which shows + up as a problem during compilation (closes SF #806577). + +2003-09-15 Mark D. Baushke + + * mh-customize.el (mh-invisible-header-fields-internal): Added + a new field for GNU mailutils per Sergey Poznyakoff. + +2003-09-09 Satyaki Das + + * mh-utils.el (vcard): Unconditionally load vcard.el, if + available, so that vcards are always inlined. + +2003-09-09 Peter S Galbraith + + * mh-mime.el (mh-file-mime-type-substitutions): Add entry to + convert text/plain .vcf files to text/x-vcard. + (mh-mime-content-types): Add text/x-vcard. + +2003-09-09 Bill Wohler + + * mh-comp.el (mh-rejected-letter-start): Added strings for qmail + and exim (addresses SF #404965). + +2003-09-09 Satyaki Das + + * mh-gnus.el (mm-inline-text-vcard): Make vcard display work with + Gnus-5.9. The extra file vcard.el is still needed. + + * mh-mime.el (mh-signature-highlight): New function that + highlights message signatures. + (mh-mm-display-part, mh-mime-display-single): Highlight signatures + using `mh-signature-highlight' (closes SF #802722). More work is + needed for XEmacs. + (mh-mime-display): Highlight signature in non-MIME email too. + + * mh-customize.el (mh-show-signature-face): New face used to + display message signature. + +2003-09-08 Peter S Galbraith + + * mh-e.el (mh-version): Do something sensible when + mh-variant-in-use is undefined. + * mh-junk.el (mh-spamassassin-blacklist) + (mh-spamassassin-whitelist): Change options to be compatoble with + old version of spamassassin (V2.20). + +2003-09-07 Mark D. Baushke + + * mh-mime.el (mh-access-types): Per RFC 2049, the "afs" + access-type for message/external-body has been removed. + Update the comments to reference the current MIME RFCs + 2045, 2046 and 2049 rather than the obsolete RFC 1521. + +2003-09-05 Peter S Galbraith + + * mh-e.el (mh-version): Bumped version number to 7.4.2+cvs. + +2003-09-04 Satyaki Das + + * mh-utils.el (mh-picon-directory-list, mh-picon-directory): The + mh-picon-directory-list variable supersedes mh-picon-directory. + (mh-picon-existing-directory-list): New variable that contains + the list of picon directories that actually exist. + (mh-picon-set-directory-list): New function to update + mh-picon-existing-directory-list from mh-picon-directory-list. + (mh-picon-get-image): The function has been modified to search a + list of possible picon source directories. The regexp to extract + the username from the email address has been made smarter so that + it can recognize email addresses of the form user+random@foo.net + and extract "user" from there. + (mh-picon-file-contents): The file type recognition code has been + moved from mh-picon-get-image into this function. + (mh-picon-generate-path): The function has been generalized so + that searching multiple paths is now feasible. + + * mh-pick.el, mh-e.el: Checkdoc fixes. + +2003-09-02 Satyaki Das + + * mh-identity.el (eval-when): It seems that the mh-comp-loaded + code isn't required any more. + +2003-08-30 Satyaki Das + + * mh-init.el (mh-variant-set): Replace `error' with `message' so + that Emacs CVS will compile without errors if no MH variant is + present. + +2003-08-29 Satyaki Das + + * mh-init.el (mh-variant-set): Add interactive spec to the + function. + + * mh-mime.el (mh-mhn-compose-external-type): Optional arguments + are prompted for only if prefix arg is given. + +2003-08-29 Mark D. Baushke + + * mh-mime.el (mh-mhn-compose-external-type): Modified to be + interactive and prompts for many of the fields. Made an + mh-autoload. + (mh-access-types): New table derived from RFC2017, RFC1521 and + RFC1738, used in a completing-read in + mh-mhn-compose-external-type. + + * mh-loaddefs.el: Regenerated. + +2003-08-26 Satyaki Das + + * mh-utils.el (mh-picon-image-types, mh-picon-get-image): Avoid + compiler warnings. + (mh-sub-folders-actual): Parsing of the output from folders has + been modified, so that it also works for MH (closes SF #792300). + + * mh-junk.el (mh-spamassassin-whitelist): Avoid calling + ietf-drums-parse-address if it isn't present. + (mh-spamassassin-identify-spammers): Avoid use of puthash so that + Emacs20 doesn't complain. + + * mh-e.el (mh-colors-available-p): Wrap call to + display-color-cells in a mh-funcall-if-exists to avoid compiler + warning in Emacs20. + +2003-08-25 Satyaki Das + + * mh-e.el (mh-colors-available-flag, mh-folder-mode): New + variable to track if colors are available and it is set + appropriately in mh-folder-mode. + (mh-colors-available-p, mh-colors-in-use-p): Two functions to + check whether colors are available and if they are actually being + used. + (mh-add-sequence-notation): Just changing a scan line doesn't + make font-lock refontify the line in Emacs20. So explicitly + refontify the scan line in such a situation. + (mh-internal-seq): If colors aren't being used then treat the + tick sequence like a normal user sequence. + + * mh-seq.el (mh-put-msg-in-seq): Do font-lock highlighting after + the messages have been added to the sequence. + (mh-toggle-tick): Modified so that highlighting of the ticked + messages will be properly done. If font-lock isn't being used or + if colors aren't supported by the Emacs where MH-E is running, + then the `%' character is used to annotate ticked messages. + + * mh-utils.el (mh-picon-image-types): Since Emacs20 doesn't have + image-type-available-p, wrap calls to that function in + ignore-errors. + (mh-add-msgs-to-seq): Do the font-lock highlighting after the + messages have been added. + +2003-08-24 Bill Wohler + + * Makefile (MH-E-SRC): Replaced mh-xemacs-compat.el and + mh-xemacs-icons.el with mh-xemacs.el. + + * mh-e.el: Don't require mh-xemacs-compat which no longer exists. + The XEmacs stuff gets required by mh-customize.el which is + required by mh-utils.el which is required by mh-e.el. This all + happens before mh-xemacs-compat was required, so all should be + well. + + * mh-unit.el (mh-unit-files): Replaced mh-xemacs-compat.el and + mh-xemacs-icons.el with mh-xemacs.el. + + * mh-xemacs.el: New file from concatenation of mh-xemacs-compat.el + and mh-xemacs-icons.el which were removed since their names + exceeded DOS 8+3 limits. + + * mh-customize.el (mh-compose-skipped-header-fields): Use + uppercase for field names. + +2003-08-21 Bill Wohler + + * mh-customize.el (mh-sequences): Introduced new customization + group for sequences. + (mh-refile-preserves-sequences-flag, mh-tick-seq) + (mh-update-sequences-after-mh-show-flag): Moved option from + mh-folder to mh-sequences group. Synced docstring with manual. + (mh-index-ticked-messages-folders): Since mh-tick-seq is + customizable, use it instead of tick in the docstring. + + * mh-index.el (mh-index-ticked-messages): Since mh-tick-seq is + customizable, use it instead of tick in the docstring. + + * mh-seq.el (mh-msg-is-in-seq): Can now specify an alternate + message number with a prefix argument. + (mh-narrow-to-tick): Since mh-tick-seq is customizable, use it + instead of tick in the docstring. Also, use mh-tick-seq instead of + tick in warning message. + +2003-08-20 Peter S Galbraith + + * mh-customize.el: setq mh-variant to 'none when byte-compiling, + since we don't care what MH variant (if any) is on the system at + that point. + + * mh-init.el (mh-variant-set): Don't probe for MH variant when + mh-variant is set to'none (during byte-compilation). + +2003-08-19 Peter S Galbraith + + * mh-pick.el (mh-pick-single-dash): New defconst. Search + components that are supported by single-dash option in + pick. + (mh-pick-regexp-builder): Use `mh-pick-single-dash' and adapt + patch from Sergey Poznyakoff. + + * mh-comp.el (mh-reply): mu-mh supports `repl -group', thanks to + Sergey Poznyakof. + + * mh-init.el: checkdoc fixes. + +2003-08-19 Bill Wohler + + * mh-seq.el: (mh-edit-pick-expr): Renamed from mh-read-pick-regexp + since the new name is more indicative of what the function does. + Prompt now says "Pick expression" instead of "Pick regexp". + (mh-narrow-to-subject): Rewrote function to behave like other + similar functions. + (mh-narrow-to-header-field, mh-narrow-to-range) + (mh-narrow-to-tick): s/regexp/pick-expr/. + (mh-widen, mh-narrow-to-from, mh-narrow-to-cc, mh-narrow-to-to): + Synced docstrings with manual + +2003-08-19 Bill Wohler + + Released MH-E version 7.4.2. + + * MH-E-NEWS, README: Updated for release 7.4.2. + + * mh-e.el (Version, mh-version): Updated for release 7.4.2. + + * mh-e.el (mh-folder-size, mh-folder-size-folder) + (mh-folder-size-flist): If flist is not present use folder to find + the number of messages in the folder. Also the .mh_sequences file + is read to find the number of unseen messages (patch from 1.349 + and branched for 7.4.2, closes SF #791021). + + * mh-utils.el (mh-flists-present-flag, mh-find-progs): Introduce a + new variable to test for the presence of the flists program and + set it in mh-find-progs. + (mh-collect-folder-names): Use folders instead of flists. One + advantage is that folders is available on MH while flists is not. + Another is that if an explicit -sequence argument isn't given and + Unseen-Sequence profile is not present then flists croaks while + folders doesn't. + (mh-collect-folder-names-filter): Don't consider folder names that + start with a `.' character. This is needed since the folders + command doesn't filter them out like flists does. + (patches from 1.307 and 1.309 and branched for 7.4.2, closes SF + #791021). + +2003-08-18 Bill Wohler + + * mh-index.el (mh-index-sequenced-messages) + (mh-index-new-messages, mh-index-ticked-messages): Updated + docstrings from manual (closes SF #718833). + + * mh-customize.el (mh-variant): Checkdoc fix. + (mh-index-new-messages-folders): Don't mention defvar in + docstring, use `+inbox' instead. + (mh-index-ticked-messages-folders): Don't mention defvar in + docstring, use `tick' instead. + + * mh-comp.el (mh-repl-group-formfile): Checkdoc fix. + +2003-08-18 Peter S Galbraith + + * mh-init.el (mh-variant-set, mh-sys-path, mh-variant-info): Add + support for GNU mailutils. + (mh-variant-mu-mh-info): New function to detect mu-mh and return + info about it for `mh-variants'. + + * mh-e.el (mh-regenerate-headers): mu-mh has different error + message for a invalid mesage list. + +2003-08-18 Peter S Galbraith + + * mh-customize.el (mh-e): New defgroup. Sort of an alias for the + 'mh group that a user might be more likely to find. + +2003-08-18 Bill Wohler + + * mh-comp.el (mh-insert-auto-fields-done-local): Docstring tweak. + (mh-compose-and-send-mail): Do not call mh-insert-auto-fields. + This should be done only once in mh-send-letter. + +2003-08-18 Peter S Galbraith + + * mh-comp.el (mh-letter-mode): Call `mh-find-path unconditionally, + like elsewehere in MH-E. + + * mh-utils.el (mh-find-path): Run setup code only if + `mh-find-path-run' is nil such that this is only done once. + Also remove the `setq' for `read-mail-command' and `mail-user-agent'. + +2003-08-18 Peter S Galbraith + + * mh-e.el: require 'mh-utils first + + * mh-customize.el (mh-variant): defcustom moved here. + + * mh-init.el (mh-variants): Made an mh-autoload. + +2003-08-18 Peter S Galbraith + + * Makefile (MH-E-SRC): Added mh-init.el to MH-E-SRC. + + * mh-utils.el (mh-find-progs): Deleted. Make obsolete by mh-init.el. + (mh-find-path): Call `mh-variants' instead of now obsolete + `mh-find-progs'. + (mh-path-search): Deleted. Was only used by `mh-find-progs'. + + * mh-e.el: require mh-init.el. + (mh-version): Use simpler `mh-variant-in-use'. + (mh-scan-format): Use (mh-variant-p 'nmh) instead of mh-nmh-flag. + + * mh-comp.el (mh-insert-x-mailer): Use simpler `mh-variant-in-use'. + + * mh-utils.el (mh-progs, mh-lib, mh-lib-progs) + (mh-flists-present-flag): Moved to mh-init.el. + (mh-nmh-flag): Deleted. Use (mh-variant-p 'nmh) instead. + + * mh-comp.el (mh-repl-group-formfile, mh-forward, mh-reply) + (mh-send-letter): Use (mh-variant-p 'nmh) instead of mh-nmh-flag. + + * mh-mime.el (mh-edit-mhn, mh-mime-save-parts): Use (mh-variant-p + 'nmh) instead of mh-nmh-flag. + +2003-08-16 Bill Wohler + + * mh-customize.el (mh-folder-selection): New group to hold + variables described in Folder Selection section in manual. + (mh-default-folder-list, mh-default-folder-must-exist-flag, + mh-default-folder-prefix): Moved to mh-folder-selection group. + Updated docstrings per manual update. + (mh-default-folder-for-message-function): New defcustom. Was a + defvar in mh-utils.el. Updated docstring per manual update. + + * mh-utils.el (mh-default-folder-for-message-function): Moved to + mh-customize.el. + + * mh-e.el (mh-folder-from-address, mh-prompt-for-refile-folder): + Updated docstrings per manual update. + + * mh-unit.el (mh-unit-files): Added mh-init.el. + +2003-08-16 Peter S Galbraith + + * mh-init.el: New file. Code to initialize the MH-E back-end. + Highlights: + (mh-variant): New defcustom. Users may customize `mh-variant' to + switch between available variants. + (mh-variants): Available MH variants are described in this variable. + (mh-variant-in-use, mh-variant-p): Developers may check which + variant is currently in use with the variable `mh-variant-in-use' + or the function `mh-variant-p'. + +2003-08-15 Bill Wohler + + * mh-customize.el (mh-auto-fields-list): The manual uses Fcc + instead of fcc, so I've changed the user-visible text + accordingly. I've left the const alone for backwards + compatibility. + +2003-08-14 Bill Wohler + + * mh-identity.el (mh-insert-identity): Changed signature deletion + test to test for both markers, rather than testing to see if the + start marker is bound. Since the start marker is defined in this + file, it should always be bound. Suggestion by Satyaki. + + * mh-comp.el (mh-send-letter): Go to the top of the draft so that + the user can see which header fields have been inserted. I think + this is more important than leaving point alone or going to the + end to see the signature since Mail-Followup-To or Bcc or cc could + have some deleterious effects. + + * mh-customize.el (mh-auto-fields-prompt-flag): New variable. + Non-nil means to prompt before sending if fields inserted. + + * mh-comp.el (mh-insert-auto-fields): Now return t if fields + inserted; otherwise nil. + (mh-send-letter): Deleted obsolete documentation about adding + X-Mailer and X-Face. Prompt before sending if auto fields added + and mh-auto-fields-prompt-flag is t. + + * mh-customize.el (mh-identity-list): Allow signature to come from + mh-signature-file-name. In this case, the "signature" value is set + to nil. This might not be the best implementation. Suggestions + welcome. + + * mh-identity.el (mh-insert-identity): Now that the signature can + be a nil value, moved test higher up in cond so that the test for + a nil value would not be executed first prevening signature + handling. Handle nil signature value by calling + mh-insert-signature with no arguments which means to use + mh-signature-file-name. + + * mh-comp.el (mh-insert-signature): Changed text of message if no + signature inserted. + + * mh-customize.el (mh-identity-list): Changed "Signature" constant + back to "signature" so it *won't* be backwards-incompatible any + more. I discovered one could use the :tag keyword to get headline + captalization in the menu. + + * mh-identity.el (mh-insert-identity): Ditto. + + * mh-identity.el (mh-identity-make-menu): Always build menu. + Always create Insert Auto Fields menu item. Just don't enable it + if mh-auto-fields-list is nil. Enable radio buttons always. Make + None a radio button choice with the other identities. + + * mh-comp.el (mh-letter-menu): Removed cond on fboundp + 'easy-menu-define. We don't do this elsewhere. + +2003-08-13 Bill Wohler + + * mh-identity.el (mh-identity-make-menu, mh-insert-identity): Use + headline capitalization in menu items. Even the internal names are + exposed in the customize interface, so they need to be uppercase + too. + (mh-insert-identity): Rather than goto-char to + mh-identity-signature-start before deleting, simply pass it to + delete-region. When setting markers, use point-min-marker and + point-max-marker instead of moving point. Set marker type of + mh-identity-signature-start to t to fix a bug where changing + identity deleted user's text. + + * mh-customize.el (mh-identity-list, mh-auto-fields-list): + Reworked docstring. Use headline capitalization. Commented out + implementation details for later deletion or resurrection upon + popular demand. N.B. If your mh-identity-list contains "signature" + then you will need to either edit your .emacs file manually, or + delete your existing "signature" which will become a regular field + with this change and create a new signature. I figured I could get + away with this since 8.0 is a major release, and coinciding with + the manual update will be a MAJOR release. I apologize profusely + that I didn't catch this before it was released. + (mh-identity-default): Use headline capitalization in example. + +2003-08-12 Jeffrey C Honig + + * mh-customize.el (mh-alias-reloaded-hook): Define + `mh-alias-reloaded-hook'. + + * mh-alias.el (mh-alias-reload): Run `mh-alias-reloaded-hook' + after reloading the aliases. + +2003-08-12 Mark D. Baushke + + * mh-comp.el (mh-insert-signature): Use functionp to avoid + the possibility of doing a funcall on a void function. + +2003-08-12 Bill Wohler + + * mh-customize.el (mh-identity): Point group manual link to new + Identities section. + (mh-signature-separator-flag): New variable which can be used to + suppress the output of the signature separator. + + * mh-comp.el (mh-insert-signature): Use + mh-signature-separator-flag. + + * mh-identity.el (mh-insert-identity): If the identity's signature + file didn't exist, an fboundp error was thrown. This was fixed by + removing signature tests that were redundant and out of date with + the tests in mh-insert-signature. Removed second signature + condition as it is now handled in the first signature condition. + +2003-08-12 Peter S Galbraith + + * mh-identity.el (mh-insert-identity): Don't insert new lines on + signatures anymore. + + * mh-comp.el (mh-insert-signature): Make sure signature file is + readable before trying to insert it. + +2003-08-11 Bill Wohler + + * mh-comp.el (mh-insert-signature): Unconditionally insert a + newline so that signatures are inserted consistently, and so that + there isn't any text after the cursor so that the user can start + typing his message immediately. Use new variable and function + mh-signature-separator and mh-signature-separator-p. + + * mh-customize.el (mh-delete-yanked-msg-window-flag): Checkdoc + fix. + (mh-signature-file-name): Updated docstring now that this variable + can be a function. Added cross-references to + mh-signature-separator, mh-signature-separator-regexp, and + mh-signature-separator-p which might be used in such functions. + + * mh-identity.el (mh-insert-identity): Don't include signature if + signature separator already present. Useful when running + mh-edit-again. + + * mh-mime.el (mh-inline-vcard-p): Use mh-signature-separator-p. + + * mh-utils.el (mh-signature-separator-regexp): New variable + containing "^-- $" which should be used when looking for the + signature separator. + (mh-signature-separator): New variable containing "-- \n" which + should be used when inserting the signature separator. + (mh-signature-separator-p): New function that returns non-nil if + mh-signature-separator-regexp is found in the buffer. + +2003-08-09 Satyaki Das + + * mh-utils.el (mh-x-image-scaling-function): Variable that + contains function used to scale images. Possible choices are + mh-x-image-scale-with-convert and mh-x-image-scale-with-pnm. + (mh-convert-executable): Removed. + (mh-x-image-scale-with-pnm, mh-x-image-scale-with-convert): New + functions that scale images using pnm tools or ImageMagick. + (mh-x-image-scale-and-display, mh-x-image-url-display): Use + mh-x-image-scaling-function instead of mh-convert-executable. + +2003-08-08 Peter S Galbraith + + * mh-comp.el (mh-insert-signature): Bug fix. Handle case of nil + `mh-signature-file-name' and hooks correctly. + + * mh-identity.el (mh-insert-identity): Refactor to use + mh-insert-signature + + * mh-comp.el (mh-signature-separator-p): Removed. + + * mh-comp.el (mh-insert-signature): Merge MIME awareness from + mh-insert-identity into this command. Allow + `mh-signature-file-name' to be a function to call. See if "-- " + needs to be inserted only after hooks have run. + +2003-08-07 Bill Wohler + + * mh-customize.el (mh-compose-skipped-header-fields): Added + X-Image-URL. + (mh-autoload): Removed cookies. They aren't necessary in + mh-e.el, mh-utils.el, or mh-customize.el. + + * mh-e.el (mh-autoload): Removed cookies. They aren't necessary in + mh-e.el, mh-utils.el, or mh-customize.el. + + * mh-identity.el (mh-insert-identity): Made regexp for signature + separator more explicit. Hmmm, maybe we should create + mh-signature-separator-regexp... + + * mh-index.el (mh-replace-string): Moved to mh-utils.el. + + * mh-utils.el (mh-replace-string): Moved here from mh-index.el. + (mh-autoload): Removed cookies. They aren't necessary in mh-e.el, + mh-utils.el, or mh-customize.el. + + * mh-comp.el (mh-insert-signature): Added file argument to insert + a file other than mh-signature-file-name. Insert signature + separator, unless file already contains one. + +2003-08-06 Satyaki Das + + * mh-e.el (mh-folder-size, mh-folder-size-folder) + (mh-folder-size-flist): If flist is not present use folder to + find the number of messages in the folder. Also the .mh_sequences + file is read to find the number of unseen messages. + + * mh-utils.el (mh-flists-present-flag, mh-find-progs): Introduce + a new variable to test for the presence of the flists program and + set it in mh-find-progs. + +2003-08-06 Peter S Galbraith + + * mh-customize.el: Change the order of `mh-identity-list' and + `mh-auto-fields-list' and remove byte-compilation defvar for + `mh-identity-list'. This fixes a customization bug for + `mh-identity-list', where it wasn't set correctly. + + * mh-identity.el (mh-identity-make-menu): mh-auto-fields-list may + not be bound yet when initially loaded. + +2003-08-06 Bill Wohler + + * mh-alias.el (mh-alias-add-address-under-point): Removed trailing + period from messages. The conventions say that errors should not + end with a period and that "Foo...done" messages should not end in + a period, but they aren't explicit about messages in general. + Given what the conventions *do* say, and because most of our + messages don't end with a period, let's just say that messages in + general don't end in a period, just like error messages. + + * mh-comp.el (mh-extract-rejected-mail, mh-letter-mode-message): + Ditto. + + * mh-e.el (mh-refile-a-msg): Ditto. + + * mh-funcs.el (mh-undo-folder): Ditto. + + * mh-mime.el (mh-mime-save-parts): Ditto. + + * mh-seq.el (mh-subject-to-sequence-unthreaded) + (mh-narrow-to-subject, mh-delete-subject): Ditto. + + * mh-index.el (mh-index-sequenced-messages) + (mh-index-new-messages, mh-index-ticked-messages): Discovered that + in general we should only use question marks in yes-or-no-p or + y-or-n-p prompts, but not in other prompts that use + completing-read and offer defaults. In these cases, use colons + instead (closes SF #730470). + + * mh-mime.el (mh-mime-save-parts): Ditto. + + * mh-utils.el (mh-prompt-for-folder): Ditto. + + * mh-alias.el (mh-alias-apropos): Multiple messages are usually + shown one at a time rather than appended. Send output to + mh-aliases-buffer instead of *Help*. + (mh-alias-local-users): Checkdoc fix. + + * mh-funcs.el (mh-undo-folder): Removed commented-out code since + its deadline had expired. + + * mh-utils.el (mh-aliases-buffer): New buffer name, used in + mh-aliases.el. + +2003-08-06 Satyaki Das + + * mh-utils.el (mh-x-image-url-cache-canonicalize): Make this + function work for XEmacs too. + (mh-collect-folder-names): Use folders instead of flists. One + advantage is that folders is available on MH while flists is not. + Another is that if an explicit -sequence argument isn't given and + Unseen-Sequence profile is not present then flists croaks while + folders doesn't. + (mh-collect-folder-names-filter): Don't consider folder names that + start with a `.' character. This is needed since the folders + command doesn't filter them out like flists does. + + * mh-index.el (mh-replace-string): Add autoload for it. + +2003-08-05 Satyaki Das + + * mh-mime.el (mh-compose-forward, mh-mhn-compose-forw) + (mh-mml-forward-message): The variable mh-sent-from-msg can be a + list. So check that the value is really a number before using it + like one. + + * mh-comp.el (mh-insert-letter): Same as above. + + * mh-utils.el (mh-picon-get-image): Make the code that finds the + address of the sender more robust. + (mh-face-display-function): Make it work with XEmacs. + (mh-picon-image-types): A new variable that stores what image + types can be used. + +2003-08-05 Satyaki Das + + * mh-customize.el (mh-tool-bar-define): Make the save button such + that is activated only if the buffer needs to saved. + + * mh-utils.el (mh-face-display-function, mh-picon-get-image): Some + domains, for instance cs.cmu.edu, don't have xpm files. So we need + to search for all three files. The change does that. + (mh-picon-file-contents): A utility function to return the + contents of a file as a string. + (mh-picon-get-image): Write it as a loop to make it simpler. + (mh-x-image-set-download-state): Make the link simpler. + +2003-08-04 Satyaki Das + + * mh-utils.el (mh-x-image-url-display): Don't bother to try to + download image if we don't have the necessary tools to display + it. + (mh-face-display-function): Add preliminary support for "domain" + picons. + (mh-picon-get-image, mh-picon-generate-path): Functions to find + best match for domain in the From header field. + + * mh-e.el (mh-previous-unread-msg): If some of the messages in the + unseen sequence are not present in the folder buffer then calling + this function gets stuck and can't skip over them. The change + fixes this. + (mh-next-unread-msg): Same as above. + +2003-08-04 Bill Wohler + + * mh-utils.el (mh-show-mode): Added cross reference to + mh-folder-mode in docstring (closes SF #728638). Added + \\{mh-show-mode-map} to show keymap. + + * mh-e.el (mh-folder-mode): Added information about ranges to + docstring (closes SF #728638). + + * mh-speed.el (mh-speed-refresh): New function that calls + mh-speed-flists and mh-invalidate-map. + (mh-folder-speedbar-key-map): Replaced keybindings for + mh-speed-invalidate-map and mh-speed-flists with a single binding + for mh-speed-refresh. + (mh-folder-speedbar-menu-items): Replaced menu items for Run + Flists and Invalidate Cached Folders with the single menu item + Refresh Speedbar in order to simplify the UI. + + * mh-customize.el (mh-fetch-x-image-url): Added DOS as another + reason not to set this to t. + +2003-08-04 Satyaki Das + + * mh-e.el (mh-scan-folder): Handle ranges from user input properly. + +2003-08-03 Satyaki Das + + * mh-utils.el (mh-find-msg-get-num): Removed. If threading isn't + present, the messages are sorted by index. So `mh-goto-msg' was + implemented as a binary search and this function was used in that + implementation. So this isn't needed any more. + (mh-msg-search-pat): Removed. Before the advent of message + threading, this function was used to generate a regexp used to + search for a particular message. It isn't used anymore. The + variable `mh-scan-msg-number-regexp' should be updated and used in + `mh-goto-msg' instead of hardcoding the regexp in the code. Then + we might be able to better support other scan line formats in the + future. + + * mh-seq.el (mh-map-to-seq-msgs, mh-notate-seq): Removed. These + functions were used to notate user sequences. But calling + `mh-goto-msg' inside of a loop is inefficient. So the sequence + notation code was rewritten thereby making these functions + redundant. + (mh-copy-line-to-point): Removed. This function was used in the + implementation the now removed function `mh-copy-seq-to-point'. + That function was problematic and was replaced by the less general + `mh-copy-seq-to-eob'. This makes `mh-copy-line-to-point' + redundant. + (mh-region-to-msg-list): Removed since this is a special case of + the more general `mh-range-to-msg-list'. + + * mh-loaddefs.el: Regenerated. + +2003-08-03 Jeffrey C Honig + + * mh-customize.el (mh-invisible-header-fields-default): Added + several new fields to hide. Sorted the list with sort-lines. + +2003-08-03 Peter S Galbraith + + * mh-customize.el (mh-invisible-headers): Variable renamed to + `mh-invisible-header-fields-compiled'. + (mh-invisible-headers): Implement above change. + + * mh-utils.el (mh-display-msg): Idem. + + * mh-mime.el (mh-mm-inline-message): Idem. + + * mh-comp.el (mh-insert-letter): Idem. + +2003-08-03 Bill Wohler + + * mh-speed.el (mh-folder-speedbar-menu-items): Added separator + between standard and MH-E menu items. Use headline capitalization + in menu items. + + * mh-utils.el (mh-temp-fetch-buffer): New constant to hold + buffer name for wget output. + (mh-x-image-url-fetch-image): Use mh-temp-fetch-buffer instead + of hard-coded buffer name. Use make-temp-file to avoid race + conditions and subsequent security issues raised in make-temp-name + docstring. + +2003-08-03 Satyaki Das + + * mh-utils.el (mh-wget-executable, mh-wget-choice, mh-wget-option) + (mh-x-image-url-fetch-image): Support the use of `curl' and + `fetch' as alternatives to `wget'. + (mh-wget-choice): Change order of search. + (mh-x-image-url-fetch-image): Rename buffer. + +2003-08-03 Satyaki Das + + * mh-utils.el (mh-x-image-set-download-state) + (mh-x-image-get-download-state): Specially named symbolic links + are used to keep track of whether a X-Image-URL header field needs + to downloaded the next time it is seen. These functions get and + set the symlinks appropriately. + (mh-x-image-url-fetch-image): Simplified since the query has been + moved to `mh-x-image-url-display'. Also if wget isn't present then + try again next time since the user might install wget before + trying once more. + (mh-x-image-scale-and-display): Handle absence of the `convert' + program better. If it isn't present then we will try to display + the image the next time it is encountered. Also use the -geometry + option to convert since the -resize option isn't present in older + versions. + (mh-x-image-url-display): Move all the code that decides whether + an X-Image-URL header field will be fetched in this function. Also + remember the user's decision so that if the image couldn't be + fetched the first time, we will try to fetch it later on without + asking again. + +2003-08-02 Peter S Galbraith + + * mh-alias.el (mh-alias-local-users): Exclude all aliases already + in mh-alias-alist from `ali' (closes SF #772595). + +2003-08-01 Satyaki Das + + * mh-utils.el (mh-x-image-display, mh-x-image-url-display): Avoid + a race. The X-Image-URL is displayed asynchronously. Suppose a + message with a image is shown with `mh-show'. If a different + message is displayed before the image can be fetched, then the new + message will have the image displayed. With this change the race + is less likely to happen. + +2003-08-01 Peter S Galbraith + + * mh-inc.el (mh-inc-spool-map): Fix what `mh-inc-spool-map-help' + must look like as a fake `mh-help-messages' in order to work + correctly in mh-help. + +2003-07-31 Bill Wohler + + * mh-inc.el (mh-inc-spool-map): Use mh-help instead of + mh-ephem-message in order to display help in its own buffer + instead of minibuffer. + + * mh-utils.el (mh-help-buffer): New variable to hold the name of + the MH-E help buffer name. + + * mh-funcs.el (mh-help, mh-prefix-help): Use with-electric-help to + display help messages. I observed a friend with a vision + disability and the 5 seconds the help appeared on the screen was + not long enough for him to lock on it. I've therefore changed the + help function to display the help in its own buffer called *MH-E + Help* (closes SF #493740 and SF #656631). + + * mh-customize.el (mh-fetch-x-image-url): Changed default from nil + to 'ask. Updated docstring from manual. + (mh-invisible-header-fields-internal): Added X-Image-URL. + (mh-show-use-xface-flag): Updated docstring from manual. + (mh-x-face-file): Ditto. + + * mh-mime.el (mh-mhn-compose-external-type): Don't insert the + directory parameter if it's nil. The mhbuild man page indicates + that this parameter is optional, so this should be fine. + + * mh-comp.el (mh-letter-mode-map): Added keybindings for + mh-mhn-compose-anon-ftp and + mh-mhn-compose-external-compressed-tar. + (mh-letter-menu): Uncommented menu items for same. + +2003-07-30 Satyaki Das + + * mh-loaddefs.el: Regenerated. + + * mh-pick.el (mh-do-pick-search): Removed since the function + `mh-pick-do-search' performs the same action as this function. + + * mh-index.el (mh-index-update-unseen): Removed since the + generalized sequence synchronization code that keeps sequences in + index folders in sync with the sequences in the source folders + makes this function redundant. + + * mh-e.el (mh-folder-unseen-seq-name, mh-folder-unseen-seq-list): + Removed. These two functions were used in the unseen sequence + highlighting before the sequence highlighting code was + generalized. In any event calls to the function + `mh-folder-unseen-seq-name' can be replaced by the variable + `mh-unseen-seq' and calls to `mh-folder-unseen-seq-list' can be + replaced with (cdr (assoc mh-unseen-seq mh-seq-list)). + (mh-unmark-all-headers): Removed since this function has been + superseded by mh-remove-all-notation. + (mh-map-over-seqs): Removed since we now have the generalized + iteration over message ranges (the `mh-iterate-on-range' macro) + that can be used instead. + (mh-notate-if-in-one-seq): Removed. This function was used for + changing the `%' notation for user sequences. It can't be used for + that purpose any more, since we have a different scheme now. + + * mh-unit.el (mh-unit-tests): Removed since it isn't needed any + more. + (mh-unit): Run all function that start with the string + "mh-unit-test-". + +2003-07-30 Bill Wohler + + * mh-customize.el (mh-invisible-header-fields): Checkdoc fix. + + * mh-utils.el (mh-x-image-url-cache-canonicalize): Shortened using + example in files.el:make-backup-file-name-1. + (mh-face-display-function): Added X-Image-URL to docstring. + + * mh-unit.el (mh-unit-x-image-url-cache-canonicalize): New + function to test mh-x-image-url-cache-canonicalize since it lent + itself well to unit testing. Had to start somewhere! + (mh-unit-equal): New function that throws an error if RESULT + doesn't equal EXPECTED. + (mh-unit): Call mh-unit-x-image-url-cache-canonicalize. + +2003-07-29 Satyaki Das + + * mh-unit.el (mh-unit-update-call-graph): Make the function work + better with dotted lists, that is lists of the form (a b c . d) + where `d' isn't nil. With this we are able to avoid marking some + functions as unused even though they are actually used in alists. + +2003-07-28 Peter S Galbraith + + * mh-comp.el (mh-insert-letter): Remove `mh-visible-headers' + operation. + + * mh-mime.el (mh-mm-inline-message): Same. + + * mh-utils.el (mh-display-msg): Same. + (mh-clean-msg-header): Make a note of above change. + + * mh-customize.el (mh-invisible-header-fields-internal): Renamed + from prior `mh-invisible-header-fields-default'. + (mh-invisible-header-fields-default): Renamed from prior + `mh-invisible-header-fields-default-override'. + (mh-invisible-header-fields): Renamed from prior + `mh-invisible-header-fields-user'. + (mh-visible-headers): Removed! We use invisible fields only now. + (mh-visible-header-fields): Removed! + +2003-07-28 Peter S Galbraith + + * mh-customize.el (mh-invisible-header-fields-default): Added 3 + new fields to hide. + +2003-07-28 Satyaki Das + + * mh-utils.el (mh-show): Add an extra argument to the function so + that interactive use will always force redisplay of the message. + + * mh-mime.el (mh-mime-display, mh-mm-inline-message): Bind the + variables `mm-verify-option' and `mm-decrypt-option' so that + verification and decryption of mail can happen without any + additional tinkering. + +2003-07-25 Peter S Galbraith + + * mh-customize.el (mh-invisible-header-fields-default): New defvar + holding default fields to hide. This replaces the old + `mh-invisible-header-fields' defcustom. + (mh-invisible-header-fields-user): New defcustom. Users add + fields to suppress that we didn't include in + `mh-invisible-header-fields-default'. This could be named simply + `mh-invisible-header-fields' and it wouldn't really break anything + for users who have customized it to a long list now redundant with + `mh-invisible-header-fields-default'. + (mh-invisible-header-fields-default-override): New defcustom. + Users check off the fields they want displyed from what we + included in `mh-invisible-header-fields-default'. + (mh-invisible-headers): Function adapted to new variables. + +2003-07-25 Satyaki Das + + * mh-e.el (mh-inc-folder): If the user is in a different folder + displaying a message and runs mh-inc-folder, then the folder + changes to +inbox but the show window continues to display the + message in the old folder. The change fixes this. + (mh-visit-folder): Make the handling of the show window similar to + that of mh-inc-folder. + +2003-07-24 Satyaki Das + + * mh-e.el (mh-folder-message-menu, mh-folder-folder-menu): Use the + predicate mh-outstanding-commands-p instead of its exapansion. + Also use the same label in both menus. + (mh-outstanding-commands-p): Generalized so that it will work in + mh-show-mode buffers as well. + + * mh-customize.el (mh-tool-bar-define): Enable tool-bar button for + mh-execute-commands only if there are pending deletes or refiles. + +2003-07-19 Satyaki Das + + * mh-utils.el (mh-show-msg): If a unseen message is first marked + for deletion/refiling and then displayed, the bold highlighting + does not go away. This change fixes that. + + * mh-seq.el (mh-msg-is-in-seq): Fix a bug in the function. If any + message was marked for refiling, then the function would have you + believe that every message in the folder is being refiled. + +2003-07-17 Bill Wohler + + * mh-e.el: Removed email address for Stephen Gildea's in Change + Log at his request (damn spammers). Removed other email addresses + while I was at it since the SourceForge URL should be sufficient + contact information. + + (mh-scan-format-*mh): Fixed typo in comment above these variables. + These variables are used if mh-scan-format-file is t, not nil. + Also mh-scan-format-file is no longer "above" (courtesy Stephen + Gildea). + +2003-07-17 Satyaki Das + + * mh-mime.el (mh-mhn-quote-unescaped-sharp): New function that + quotes `#' characters in the first column that aren't part of a + MHN directive. + (mh-mhn-directive-present-p): Generalized to allow the function + to search for MHN directives in a part of the buffer. + (mh-edit-mhn): Quote unescaped `#' characters in the draft (closes + SF #762464). + +2003-07-16 Satyaki Das + + * mh-alias.el (mh-alias-read-address-map): If + mh-alias-flash-on-comma is nil when mh-alias is loaded, then + setting mh-alias-flash-on-comma to t later on doesn't turn on + address completion display till Emacs is restarted. The change + fixes this. + +2003-07-15 Bill Wohler + + * mh-utils.el (mh-cmd-note): Cleaned up docstring (changed phrase + to sentences). Moved to Scan Line Formats section. + (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): Cleaned up + docstrings (changed phrases to sentences). + (mh-note-seq): Cleaned up docstring (changed phrase to sentences). + Also, this variable is now a character and not a string. Moved to + Scan Line Formats section. + + * mh-funcs.el (mh-note-copied, mh-note-printed): Cleaned up + docstrings (changed phrases to sentences). Also, these variables + are now characters and not strings. + + * mh-e.el (mh-scan-format-mh, mh-scan-format-nmh): Filled. I was + hoping to quote the hint `t' but checkdoc wouldn't let me. + (mh-note-deleted, mh-note-refiled, mh-note-cur): Moved to Scan + Line Formats section. + (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-format-regexp): Cleaned + up docstrings (changed phrases to sentences). + (mh-scan-cur-msg-regexp): Marked this variable as obsolete; it + should be removed for 8.0. + + * mh-comp.el (mh-note-repl, mh-note-forw, mh-note-dist): Cleaned + up docstrings (changed phrases to sentences). Also, these + variables are now characters and not strings. + +2003-07-15 Satyaki Das + + * mh-index.el (mh-index-update-single-msg) + (mh-index-create-sequences): Handle the situation where there are + copies of the exact same message correctly. + +2003-07-15 Satyaki Das + + * mh-seq.el (mh-thread-update-scan-line-map): Modified since + notation is already a character. + + * mh-utils.el (mh-note-seq): Convert from string to character. + (mh-notate): Modified since characters are used to notate instead + of strings of length one. + + * mh-comp.el (mh-note-repl, mh-note-forw, mh-note-dist): Convert + from string to characters. + + * mh-e.el (mh-note-deleted, mh-note-refiled, mh-note-cur): Same as + above (closes SF #770772). + (mh-unmark-all-headers): Modified since mh-note-* variables are + now characters. + (mh-remove-sequence-notation): The mh-notate function remembers + the previous notation. Before the change to the mh-note-* + variables, mh-notate would only remember the change if a string + was used to notate the message. Now mh-notate is always called + with a character notation. So the deletion has to take place + explicitly. + +2003-06-28 Bill Wohler + + * mh-mime.el (mh-mhn-directive-present-p): If shell comments are + present that have a space after the # but no content, then this + function would throw an error. This has been fixed (closes SF + #762458). + +2003-06-27 Satyaki Das + + * mh-index.el (mh-index-search): Use the new and improved + mh-index-new-folder. + (mh-index-new-folder): Improved so that redoing the same search + will reuse the old index folder. + (mh-index-folder-search-regexp): New function which that extracts + out the search expression that produced the index folder. + +2003-06-24 Bill Wohler + + * mh-e.el (Version, mh-version): Set to 7.4.1+cvs. + +2003-06-25 Bill Wohler + + Released MH-E version 7.4.1. + + * MH-E-NEWS, README: Updated for release 7.4.1. + + * mh-e.el (Version, mh-version): Updated for release 7.4.1. + +2003-06-25 Bill Wohler + + * mh-unit.el (require 'cl): Added. Needed when compiling + separately. + + * Makefile (clean): Now a double-colon rule. Added a second clean + target to remove mh-unit.elc. + (compile): Removed mh-unit.elc. + (mh-unit.elc): New target used to compile mh-unit. + +2003-06-24 Bill Wohler + + * mh-e.el (Version, mh-version): Set to 7.4+cvs. + +2003-06-24 Bill Wohler + + Released MH-E version 7.4. + + * MH-E-NEWS, README: Updated for release 7.4. + + * mh-e.el (Version, mh-version): Updated for release 7.4. + +2003-06-24 Bill Wohler + + * mh-alias.el (mh-alias-gecos-name, mh-alias-local-users) + (mh-alias-suggest-alias): s/gcos/gecos. The original acronym was + GECOS but was later renamed to GCOS (see + http://info.astrian.net/jargon/terms/g/GCOS.html). But the term + really needs to match the field named pw_gecos in struct passwd in + /usr/include/pwd.h + + * mh-customize.el (mh-letter-faces): New group to house + mh-letter-header-field-face. + (mh-interpret-number-as-range-flag) + (mh-kill-folder-suppress-prompt-hook): Use "you" instead of "the + user" to make text more friendly. + (mh-index-ticked-messages-folders, mh-visible-headers) + (mh-visible-header-fields): Alphabetized. + (mh-alias-passwd-gcos-comma-separator-flag): Alphabetized and + s/gcos/gecos. + (mh-alias-local-users-prefix): Fixed docstring. Prefixes are + prepended, not appended. Additional checkdoc fix. + (mh-letter-header-field-face): Set group to new group + mh-letter-faces and moved option into this group. + + * mh-index.el (mh-index-sequenced-messages): Improved wording of + docstring and mentioned use of prefix argument. + + * mh-seq.el (mh-widen): Made docstring more accurate (hopefully!). + +2003-06-18 Satyaki Das + + * mh-index.el (mh-replace-string): Modified to preserve case of + replacement text. + (mh-index-parse-search-regexp): Preserve case of search terms. + This is needed to take advantage of the acronym indexing in + swish++ (closes SF #755718). + +2003-06-13 Satyaki Das + + * mh-utils.el (mh-show-index-sequenced-messages): Interactive + function callable from the show buffer. + (mh-show-folder-map): Add key binding for "F q". + + * mh-e.el (mh-folder-map): Same as above. + + * mh-index.el (mh-index-sequenced-messages): Add interactive spec + to the function (closes SF #718833). + +2003-06-13 Bill Wohler + + * mh-index.el (mh-flists-execute): Needed to expand mhpath too. + +2003-06-12 Satyaki Das + + * mh-index.el (mh-flists-execute): Modified so that flists + present in mh-progs is called. + +2003-06-07 Jeffrey C Honig + + * mh-comp.el (mh-forward, mh-forward): Use (mh-mail-header-end) to + find the end of headers instead of doing an re-search-forward + based on mh-mail-header-separator. + +2003-06-06 Satyaki Das + + * mh-comp.el (mh-letter-toggle-header-field-display): Make the + function callable from the show buffer. This means that the + buffer is temporarily made writable and the modification status + of the buffer restored to the original value. + +2003-06-06 Peter S Galbraith + + * mh-utils.el (mh-address-mail-regexp): Bug fix! It wasn't a true + copy of the goto-addr variable. My modification only recognized + addresses with one dot after the @. Sorry about that. + +2003-06-05 Satyaki Das + + * mh-utils.el (mh-replace-in-string): Move comment into doc + string to satisfy checkdoc. + + * mh-alias.el (mh-alias-apropos): Checkdoc fix. + +2003-06-05 Bill Wohler + + * mh-customize.el (mh-identity-list): Fixed typo in docstring. + +2003-06-05 Peter S Galbraith + + * mh-comp.el (mh-letter-complete-function-alist): Add bcc an reply-to. + +2003-06-04 Peter S Galbraith + + * mh-comp.el (mh-letter-complete-function-alist): Add dcc. + +2003-06-03 Peter S Galbraith + + * mh-utils.el (mh-replace-in-string): New function name instead of + `dired-replace-in-string'. + * mh-alias.el (mh-alias-gcos-name): Use it. + + * mh-alias.el (mh-alias-apropos): New command. Show all aliases + that match REGEXP either in name or content. + + * mh-alias.el (mh-alias-suggest-alias): Add no-comma-swap optional + arg. + (mh-alias-canonicalize-suggestion): Change a comma to a period in + created aliases. + (mh-alias-local-users): Call `mh-alias-suggest-alias' with + `no-comma-swap' arg set to t. + + * mh-alias.el (mh-alias-local-users): Fix case of nil + `mh-alias-passwd-gcos-comma-separator-flag'. + + * mh-alias.el (mh-alias-gcos-name): Fix for case of empty gcos + name field. + (mh-alias-local-users): Fix same. + + * mh-alias.el (mh-alias-canonicalize-suggestion): Replace use by + verbose `replace-regexp' by a looped `replace-match' + +2003-06-02 Peter S Galbraith + + * mh-utils.el (dired-replace-in-string): Bind if not already + defined. Borrowed from dired.el + + * mh-alias.el (mh-alias-gcos-name): switch to using + dired-replace-in-string. + +2003-06-02 Satyaki Das + + * mh-utils.el (mh-letter-font-lock-keywords): Fontify header + fields in the draft buffer that aren't skipped when navigating + with TAB (or S-TAB). + + * mh-customize.el (mh-clean-message-header-flag) + (mh-invisible-headers, mh-invisible-header-fields) + (mh-alias-passwd-gcos-comma-separator-flag): Checkdoc fix. + (mh-letter-header-field-face): New face to fontify the header + fields. + + * mh-comp.el (mh-insert-auto-fields-done-local): Checkdoc fix. + (mh-letter-mode, mh-letter-mail-header-end-marker): Remember the + end of the message header in a marker. This is used to fontify the + header fields. + (mh-font-lock-field-data, mh-letter-header-end): Functions used + to fontify message header fields. + + * mh-alias.el (mh-alias-gcos-name): Checkdoc fix. + +2003-06-02 Peter S Galbraith + + * mh-alias.el (mh-alias-gcos-name): New function. Return a usable + address string from a GCOS-NAME and USERNAME. + (mh-alias-local-users): Use it. + + * mh-customize.el (mh-alias-passwd-gcos-comma-separator-flag): New + defcustom. Whether the gcos field in the passwd file uses comma as + a separator. + + * mh-customize.el (mh-alias-local-users-prefix): New + defcustom. String to append to the real names of users from the + passwd file. If nil, use the username string unmodified instead of + the real name from the gcos field of the passwd file. + + * mh-alias.el (mh-alias-local-users): Use it to generate aliases + which by default are now the real name prefixed by "local." + +2003-06-01 Peter S Galbraith + + * mh-comp.el (mh-modify-header-field): Bug fix. Calling with with + a value that was already inserted causes it to get inserted a + second time. I have wrapped the value around \b word delimiters. + Hope there are no side effects for other code. + + * mh-comp.el (mh-insert-auto-fields): Attempt regardless of + `mh-insert-auto-fields-done-local' flag in interactive use. + + * mh-comp.el (mh-insert-auto-fields-done-local): Keep track of + whether `mh-insert-auto-fields' was called in a buffer. + (mh-insert-auto-fields): Set it and use it. Also, don't enter an + identity if one was already entered manually. + (mh-send-letter): Call `mh-insert-auto-fields' again when sending + message. + (mh-compose-and-send-mail): Call `mh-insert-auto-fields' _after_ + `mh-letter-mode' so `mh-identity-local' doesn't get cleared by the + mode invocation. + +2003-06-01 Satyaki Das + + * mh-loaddefs.el: Regenerated. + + * mh-seq.el (mh-thread-parse-scan-line): The value of + mh-scan-field-from-start-offset was hardcoded in one place. The + change fixes that. + + * mh-utils.el (mh-show-mode): Setup mh-show-mode to display + elipsis for truncated header fields and to skip over them quickly. + (mh-clean-msg-header): Make another pass over the message header + fields truncating long headers. + + * mh-comp.el (mh-letter-complete): Remove unnecessary autoload. + (mh-letter-toggle-header-field-display): Take into account that + an empty line can also end the message header. The function was + originally written with the draft buffer in mind. + +2003-06-01 Mark D. Baushke + + * mh-comp.el (mh-letter-mode-map): Do not steal C-t. Use C-c C-t + for the mh-letter-toggle-header-field-display command. + +2003-05-31 Peter S Galbraith + + * mh-customize.el (mh-visible-headers): Changed to a defvar that + will be set using new `mh-visible-headers' function using + `mh-visible-header-fields' as input. + (mh-visible-headers): New function, described above. + (mh-visible-header-fields): New defcustom. The UI to set + `mh-visible-headers'. + (mh-invisible-header-fields-set): Deleted. Code merged into + defcustom since it's so short. + +2003-05-31 Satyaki Das + + * mh-comp.el (mh-letter-toggle-header-field-display): Extended to + truncate headers if they are too long. + (mh-letter-truncate-header-field): Make code that would be + duplicated into a function. + (mh-letter-hide-all-skipped-fields): Modified so that fields that + are important are hidden if they are too long. + +2003-05-31 Satyaki Das + + * mh-utils.el ("tool-bar"): Since tool-bar isn't available on + XEmacs, requiring it causes problems. So load it instead. + (mh-do-at-event-location): New macro to do stuff at location of + events. This has been refactored out of mh-push-button. + + * mh-mime.el (mh-push-button): Simplified since it now uses the + mh-do-at-event-location macro. + + * mh-comp.el (mh-hidden-header-keymap): Keymap to make mouse + clicks on header toggle its display. + (mh-letter-toggle-header-field-display-button): Interactive + function to toggle header display when mouse button is clicked. + +2003-05-31 Peter S Galbraith + + * mh-e.el (mh-folder-mode): Remove conditional on tool-bar-mode. + + * mh-comp.el (mh-letter-mode): Same. + + * mh-utils.el (mh-show-mode): Same. + +2003-05-30 Satyaki Das + + * mh-utils.el (tool-bar): Load tool-bar explicitly. This avoids + problems with incorrect initialization of tool-bar-map otherwise. + +2003-05-30 Peter S Galbraith + + * mh-comp.el (mh-modify-header-field): Minor fix of spaces for + when an entry already existed. + (mh-insert-auto-fields): Make interactive. Add optional `quiet' + arg for use when called systematically on every buffer. Won't be + used interactively for more verbose output. + (mh-letter-mode-map): Add \C-c\M-d keybinding for + mh-insert-auto-fields. + + * mh-identity.el (mh-identity-make-menu): Add a menu entry in + Identity menu for mh-insert-auto-fields. + + * mh-customize.el (mh-invisible-header-fields): Add entries for + `Envelope-to' and `X-Original-To'. + +2003-05-30 Satyaki Das + + * mh-comp.el (mh-letter-mode): Skip over invisible text quickly. + +2003-05-30 Satyaki Das + + * mh-comp.el (mh-letter-mode): Use text properties to achieve + invisibility. This is more portable and the same code can be used + for all Emacs versions. + (mh-letter-toggle-header-field-display): Rewritten to use text + properties. + (mh-dead-overlay-p, mh-letter-hidden-header-fields)): Removed. + +2003-05-29 Satyaki Das + + * mh-comp.el (mh-letter-hidden-header-fields, mh-letter-mode): Add + a hash table, initialized it in mh-letter-mode, to remember the + overlays introduced to hide long headers fields. + (mh-insert-x-mailer): checkdoc fix. + (mh-compose-and-send-mail): Hide unimportant message header + fields. + (mh-letter-header-field-regexp, mh-letter-header-field-at-point) + (mh-letter-next-header-field, mh-letter-previous-header-field): + Add a variable that contains the header-field name regexp and use + it instead of the regexp directly. + (mh-letter-toggle-header-field-display, mh-letter-mode-map): Add + new key binding in mh-letter-mode that toggles display of long + header fields, in mh-letter-mode. + (mh-dead-overlay-p): A predicate which checks if a given header + field has an active overlay hiding it. + (mh-letter-hide-all-skipped-fields): New function that shortens + uninteresting headers. + +2003-05-29 Eric Ding + + * mh-comp.el (mh-letter-next-header-field-or-indent): Call + indent-relative rather than indent-for-tab-command. + +2003-05-29 Satyaki Das + + * mh-comp.el (mh-letter-complete-or-space): The meaning of the + customizable variable was reversed. Also make the doc string more + accurate. + +2003-05-28 Satyaki Das + + * mh-customize.el (mh-compose-skipped-header-fields): New + customizable variable that lists headers that are skipped. + (mh-compose-space-does-completion-flag): Option to do completion + with space (closes SF #745634). + + * mh-comp.el (mh-insert-x-mailer): Check the value of + mh-insert-x-mailer-flag in this function instead of in its caller. + (mh-compose-and-send-mail, mh-send-letter): Insert X-Mailer and + X-Face headers when the draft is first presented to the user + instead of when the mail is sent (closes SF #745624). + (mh-letter-complete-or-space): Allow for this key binding to be + overridden. + (mh-letter-next-header-field): Fix a problem with multiline header + fields. + (mh-letter-next-header-field, mh-letter-previous-header-field): + Make these functions skip unwanted header fields. + (mh-letter-skipped-header-field-p): New predicate that checks if a + header field is to be skipped. + + * mh-seq.el (mh-thread-inc): Inc'ing email in threaded mode was + causing duplication of the current notation. The change fixes that. + +2003-05-28 Satyaki Das + + * mh-comp.el (mh-beginning-of-word): Generalize it to skip + arbitrary number of words. + (mh-letter-complete-or-space): New interactive function that + allows space character to be used for completion. + (mh-letter-mode-map): Add key binding to allow space to be used + for completion. + +2003-05-27 Satyaki Das + + * mh-customize.el (mh-compose-prompt-flag): Customizable variable + that controls whether the user is prompted when composing a draft. + It replaces mh-dont-prompt-for-address-flag (closes SF #745622). + + * mh-comp.el (mh-letter-next-header-field): If the point is in + the header field name, then go the start of the header field + instead of the next field. + (mh-interactive-read-address, mh-interactive-read-string) + (mh-letter-adjust-point): Use mh-compose-prompt-flag instead of + mh-dont-prompt-for-address-flag. + +2003-05-27 Satyaki Das + + * mh-customize.el (mh-tool-bar-define): Fix incorrect usage of + set-specifier (closes SF #745655). Also the button enabling code + interacts poorly with font-lock in XEmacs. So disable that. + +2003-05-26 Satyaki Das + + * mh-e.el (mh-folder-from-address): The function + message-fetch-field expects that the buffer is narrowed to the + mail header. The change makes sure that this is indeed the case. + + * mh-mime.el (mh-add-missing-mime-version-header) + (mh-decode-message-body): Same as above. + +2003-05-25 Satyaki Das + + * mh-alias.el (mh-alias-minibuffer-confirm-address): Modified to + use mh-beginning-of-word. + + * mh-comp.el (mh-letter-confirm-address): Calling + mh-alias-reload-maybe can be expensive. So do it only if we really + need to. + +2003-05-25 Satyaki Das + + * mh-loaddefs.el: Regenerated. + + * mh-comp.el (mh-letter-confirm-address): Load aliases if not yet + loaded. + + * mh-alias.el (mh-alias-reload-maybe): Autoload it since it is + used in mh-comp.el. + +2003-05-24 Satyaki Das + + * mh-comp.el (mh-letter-skip-leading-whitespace-in-header-field): + New function to skip leading space and tab characters when placing + point in a header field. + (mh-letter-next-header-field, mh-letter-previous-header-field): + Skip leading whitespace when using TAB to navigate to header + fields. + (mh-letter-confirm-address): New interactive function that + displays the last expansion of the last alias when "," is typed. + (mh-letter-mode-map): Add key binding for "," (closes SF #745634). + +2003-05-23 Satyaki Das + + * mh-comp.el (mh-edit-again, mh-forward, mh-send) + (mh-send-other-window, mh-send-sub): Modified so that if + mh-dont-prompt-for-address-flag is non-nil, then MH-E won't prompt + for addresses to send mail to and instead directly jump to the + draft (closes SF #745622). + (mh-letter-complete-function-alist): An alist that is used to + decide which completion function to use in which header. This + variable should probably be customizable. + (mh-letter-complete): Now uses mh-letter-complete-function-alist. + (mh-letter-header-field-at-point, mh-letter-next-header-field) + (mh-letter-next-header-field-or-indent) + (mh-letter-previous-header-field): Commands for easier navigation + to header fields. + (mh-dont-prompt-for-address-flag): Variable which controls + whether MH-E prompts for addresses. + (mh-interactive-read-address, mh-interactive-read-string): Two + functions to ask user for input depending on the value of the + above flag. + (mh-letter-adjust-point): New function that sets point to the + first header field. + (mh-letter-mode-map): Add key bindings for TAB and S-TAB (closes + SF #745627). + +2003-05-23 Satyaki Das + + * mh-loaddefs.el: Regenerated. + + * mh-comp.el (mh-complete-word): New function which is + approximately equivalent to mail-abbrev-complete-alias. + (mh-beginning-of-word): Refactor repeated code into its own + function. + (mh-folder-expand-at-point): Make Fcc completion work in XEmacs + by not using mail-abbrev-complete-alias. + + * mh-alias.el (mh-alias-letter-expand-alias): Make alias + expansion work in XEmacs. Replace the use of the function + mail-abbrev-complete-alias, which isn't present in XEmacs. + + * mh-mime.el (mh-mml-to-mime): If a MIME message is created + immediately after starting MH-E then invoking mh-mml-to-mime + causes an error because "message" isn't being loaded. The change + works around this problem. + (mh-mime-maybe-display-alternatives): Give better indication of + which MIME parts are alternatives. + +2003-05-22 Satyaki Das + + * mh-e.el (mh-add-sequence-notation, mh-remove-sequence-notation): + Just delete and add the same character in the scan line to make + font-lock refontify it. The previous trick of removing all text + properties didn't work in XEmacs. + + * mh-seq.el (mh-put-msg-in-seq): Complain if the user tries to + create an invalid MH sequence. + + * mh-mime.el (mh-mime-display-alternative): Modified to + optionally display alternatives as buttons. + (mh-mime-maybe-display-alternatives): New function which displays + alternative MIME parts as buttons. + (mh-mime-save-part): Initially mh-mime-save-parts-directory is + nil and calling file-name-as-directory with nil arg leads to an + error. So fall back on the default-directory in that case. + + * mh-customize.el (mh-display-buttons-for-alternatives-flag): New + customizable variable that controls display of the alternative + MIME parts (closes SF #741288). + +2003-05-22 Peter S Galbraith + + * mh-customize.el (mh-invisible-header-fields): Commented out + "User-Agent:". It's similar to X-Mailer, so display it. + +2003-05-21 Satyaki Das + + * mh-customize.el (mh-tool-bar-define): Add an optional argument + to the button description that can dynamically enable/disable + buttons. + (mh-tool-bar-define): The alias grabbing button is disabled if the + current message doesn't have a From header or if the sender is + already in the user's alias. This functionality was inadvertently + lost when the Emacs/XEmacs toolbar unification took place. + +2003-05-20 Satyaki Das + + * mh-unit.el (mh-unit-construct-call-graph): Be more aggressive + and flag interactive functions that aren't autoloaded or have no + key bindings. + (mh-unit-interactive-function-p): Remove now unused function. + (mh-unit, mh-unit-construct-call-graph): Replace mh-files with + mh-unit-files. + +2003-05-20 Bill Wohler + + * mh-unit.el (mh-prune-trailing-spaces): Renamed to + mh-unit-prune-trailing-spaces to clean up the namespace. + (mh-files): Renamed to mh-unit-files. Ditto. + (mh-unit): Checkdoc fix. + + * mh-index.el (mh-index-p): Added autoload cookie since mh-index-p + is used by mh-customize.el. This calls for another mh-unit test + that looks for mh-autoloads for functions that are no longer used + in other files. + + * mh-loaddefs.el: Regenerated. + +2003-05-20 Satyaki Das + + * mh-unit.el (mh-unit-construct-call-graph): Factor out the code + to read the lisp files to a separate function. Also change it to + construct a function call-graph. Autoloaded functions are taken + into account. + (mh-unit-find-all-used-functions, mh-unit-called-functions) + (mh-unit-find-all-unused-functions): Find all unused functions by + computing a fixed point starting from the set of top level + functions. + (mh-unit-analyze-block): Removed. + (mh-unit-update-call-graph): mh-unit-functions-called was renamed + with modifications to update the function call graph. + +2003-05-19 Satyaki Das + + * mh-loaddefs.el: Regenerated. + + * mh-utils.el (mh-notate): Modified to keep track of notation + that was replaced when sequence notation is added. Thus when the + sequence is deleted, the original notation is recovered. + (mh-add-msgs-to-seq): Modified to work with the new sequence + notation code. + + * mh-seq.el (mh-delete-seq, mh-put-msg-in-seq): Simplified since + we don't need to handle tick and unseen sequences specially any + more. + (mh-narrow-to-seq): Don't need to call mh-notate-user-sequences + since mh-copy-seq-to-eob already does that. + (mh-widen): Remove sequence notation, so that notation when + messages are replied to aren't lost. + (mh-copy-seq-to-eob): Simplified with the use of + mh-iterate-on-range. + (mh-thread-inc): This function doesn't need to notate user + sequences since its callers already do that. + (mh-thread-parse-scan-line): Simplified since mh-note-seq doesn't + appear in scan lines it is given as arguments. + (mh-thread-update-scan-line-map): Remove the test, since its + caller already does the required check. + (mh-thread-folder): Simplified by the use of mh-iterate-on-range. + (mh-tick-add-overlay, mh-tick-remove-overlay, mh-notate-tick): + These functions aren't needed any more, since overlays aren't used + any more. Also overlays aren't portable to XEmacs, so nasty + conditional code that used overlays in Emacs and extents in Xemacs + have been eliminated. + (mh-toggle-tick): Generalize it to work on a range of messages + like the other interactive messages. + + * mh-funcs.el (mh-undo-folder): Use mh-remove-all-notation + instead of mh-unmark-all-headers. + + * mh-e.el (mh-folder-font-lock-keywords): The entry for unseen + sequence highlighting is now done by the macro. + (mh-generate-sequence-font-lock): New macro to highlight any + arbitrary sequence. This macro is invoked twice to get the + highlighting for unseen and tick sequences. + (mh-sequence-notation-history, mh-folder-mode): New variable that + keeps track of the old notation when a message is notated with + mh-note-seq. + (mh-regenerate-headers, mh-get-new-mail): Add appropriate calls to + mh-notate-user-sequences and mh-remove-all-notation. + (mh-unmark-all-headers): Add comment that this function shouldn't + be used any more. + (mh-add-sequence-notation, mh-remove-sequence-notation): New + functions to notate message with mh-note-seq and to remove it. + (mh-remove-all-notation): Simplified to use mh-iterate-on-range. + (mh-process-commands): Use mh-remove-all-notation instead of + mh-unmark-all-headers. + (mh-notate-user-sequences, mh-delete-msg-from-seq): Simplified + since the tick and unseen sequences don't need special handling + any more. + (mh-internal-seq): Make it possible to dynamically change what + sequences are treated as internal (internal means font lock is + used to highlight the sequence). + (mh-clear-text-properties): Removed since it isn't needed + anymore. + +2003-05-19 Satyaki Das + + * mh-unit.el (mh-unit-analyze-block, mh-unit-interactive-function-p) + (mh-unit-find-all-unused-functions): Change argument name bl to + block. + +2003-05-19 Satyaki Das + + * mh-unit.el (mh-unit-find-all-unused-functions): New interactive + function to find all unused functions in MH-E. + (mh-unit-analyze-block, mh-unit-interactive-function-p) + (mh-unit-functions-called): Functions used by + mh-unit-find-all-unused-functions do its job. + + * Makefile (compile): Byte-compile mh-unit.el, since the analysis + to find unused code runs faster when compiled. + +2003-05-18 Satyaki Das + + * mh-loaddefs.el: Regenerated. + + * mh-seq.el (mh-notate-deleted-and-refiled): Add autoload + declaration since this function is used in mh-index.el. + + * mh-e.el, mh-customize.el, mh-utils.el: Adjust require/provide + statements so that mh-e.el isn't loaded twice. + +2003-05-15 Satyaki Das + + * mh-utils.el (mh-defun-show-buffer): Arrange for the current + line in the folder buffer to be highlighted even when we are in + the show buffer. + +2003-05-14 Satyaki Das + + * mh-seq.el (mh-read-range): Allow this to work on invalid + sequences that only MH-E knows about. + + * mh-index.el (mh-create-sequence-map, mh-index-add-to-sequence) + (mh-index-delete-from-sequence): Don't consider sequences that + aren't valid MH sequences. + + * mh-e.el (mh-valid-seq-p): New predicate to check if a symbol + could be a MH sequence. + (mh-undefine-sequence, mh-define-sequence): Don't execute "mark" + unless the sequence name is a valid MH sequence. + + * mh-utils.el (mh-exec-cmd): In case an error happens in the + call-process and non-strings are present in ARGS, then the error + message isn't properly displayed. The change fixes this. + +2003-05-14 Peter S Galbraith + + * mh-mime.el (mh-mime-save-part): Bug Fix: Make sure + `mm-default-directory' gets a trailing "/" if + `mh-mime-save-parts-directory' doesn't have one. Otherwise the + default in the prompt of `mh-mm-save-part' will be wrong. Perhaps + `mh-mm-save-part' needs to do this check itself. + +2003-05-14 Satyaki Das + + * mh-index.el (mh-unpropagated-sequences): New function and + variable to keep track of sequences that shouldn't be propagated. + (mh-create-sequence-map, mh-index-add-to-sequence) + (mh-index-delete-from-sequence): Use mh-unpropagated-sequences to + stop changes to some sequences being reflected back to the source + folders. + +2003-05-13 Satyaki Das + + * mh-loaddefs.el: Regenerated. + + * mh-e.el (mh-process-commands): Preserve sequences when messages + are refiled (closes SF #737128). + + * mh-index.el (mh-create-sequence-map) + (mh-index-create-sequences): Refactor code that is reused into a + new function. + + * mh-customize.el (mh-refile-preserves-sequences-flag): New + customizable flag that controls whether sequences are preserved + when messages are refiled. + +2003-05-13 Eric Ding + + * mh-e.el (mh-scan-format): The argument for scan format files + should be -form, not -format. + +2003-05-13 Satyaki Das + + * mh-seq.el (mh-widen): The scan line map stack was not being + properly updated when ALL-FLAG is non-nil. The change fixes that. + + * mh-e.el (mh-reset-threads-and-narrowing): The change resets the + scan line map stack. + +2003-05-12 Satyaki Das + + * mh-loaddefs.el: Regenerated. + + * mh-seq.el (mh-thread-scan-line-map-stack) + (mh-thread-old-scan-line-map): Instead of the old scan line map, + now we need to maintain a stack of scan line maps. + (mh-narrow-to-seq): Modified so that multiple level of narrowings + can be done. We now maintain a stack of old views instead of + hiding the old scan lines. This makes it possible to have + multiple levels of narrowings. + (mh-widen): A optional prefix arg was added to allow undoing all + narrowing. + (mh-read-seq-default, mh-read-range): Don't use + mh-narrowed-to-seq, since it doesn't exist any more. + (mh-thread-initialize-hash, mh-thread-initialize): The + mh-thread-initialize function has been refactored. + (mh-thread-update-scan-line-map): Maintain notations in the stack + of scan line maps. + (mh-notate-tick, mh-toggle-tick): Simplified, since we don't have + mh-narrowed-to-seq any more. This means there is a slight loss of + functionality. Earlier if we narrowed to the tick sequence the + ticked messages weren't highlighted. This feature isn't present + any more. + + * mh-e.el (mh-execute-commands, mh-reset-threads-and-narrowing) + (mh-folder-sequence-menu, mh-get-new-mail): Use + mh-folder-view-stack instead of the now removed + mh-narrowed-to-seq. + (mh-narrowed-to-seq, mh-tick-seq-changed-when-narrowed-flag): + These variables have been removed. + (mh-folder-view-stack): New variable to keep track of a stack of + narrowings. + (mh-execute-commands, mh-get-new-mail): Add extra argument to + mh-widen so that all narrowings are undone. + + * Makefile (MH-E-SRC, MH-E-OTHERS): Move mh-gnus.el from MH-E-SRC + to MH-E-OTHERS so that it isn't byte compiled. + +2003-05-10 Satyaki Das + + * mh-seq.el (mh-read-seq): Improve the function a bit by adding + history to the sequence prompt. + +2003-05-09 Satyaki Das + + * mh-gnus.el: New file that won't be byte-compiled. From now on + having different Gnus versions at run-time and compile-time won't + cause errors in MH-E. + + * mh-mime.el (mh-small-show-buffer-p, mh-display-smileys) + (mh-display-emphasis): Handle all legal values of + font-lock-maximum-size. The existing code assumed didn't consider + the case where it could be an alist. + (mh-small-image-p): Simplified, so that aliasing XEmacs functions + in Emacs isn't necessary any more. + (mh-mm-display-part): Remove unnecessary call to fboundp. The + mh-funcall-if-exists does that for us any way. + (mh-defun-compat, gnus-local-map-property, mm-merge-handles) + (mm-set-handle-multipart-parameter, mm-readable-p) + (mm-long-lines-p, mm-keep-viewer-alive-p, mm-destroy-parts) + (mh-mm-save-part, mm-handle-multipart-ctl-parameter): These + compatibility functions have been moved to mh-gnus.el. + + * Makefile (MH-E-SRC): Add mh-gnus.el. + + * mh-seq.el (mh-narrow-to-header-field) + (mh-current-message-header-field): Checkdoc fixes. + + * mh-e.el (mh-undefine-sequence): Since mh-coalesce-msg-list + returns a list, apply is needed. + +2003-05-09 Noel Cragg (tiny change) + + * mh-junk.el (mh-spamassassin-blacklist): Separate "--local" and + "--no-rebuild" arguments to call-process. + [Patch committed by satyaki] + +2003-05-08 Satyaki Das + + * mh-seq.el (mh-translate-range): Take into account differnt + semantics of split-string in Emacs and XEmacs. + (mh-read-pick-regexp, 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): New + narrowing functions that can select messages based on different + message headers. + + * mh-utils.el (mh-show-limit-map): Add new narrowing functions + callable from the show buffer. + + * mh-e.el (mh-help-messages): Add help text for new functions. + (mh-limit-map): Add new narrowing functions (closes SF #732823). + +2003-05-07 Satyaki Das + + * mh-utils.el (mh-collect-folder-names): Use mh-exec-daemon to + run flists. This means we don't have to remember to expand the MH + executable in the mh-progs path. + (mh-exec-cmd-daemon): Return the new process object produced. + +2003-05-06 Satyaki Das + + * mh-e.el (mh-folder-font-lock-unseen): Use mh-seq-list to do + unseen sequence highlighting instead of reading the .mh_sequences + file from disk every time. + +2003-05-05 Satyaki Das + + * mh-utils.el (mh-show-sequence-map): Add key binding for S' + (closes SF #732825). + + * mh-e.el (mh-sequence-map): Ditto. + (mh-help-messages): Updated for S'. + +2003-05-04 Satyaki Das + + * mh-index.el (mh-index-write-data): The with-temp-buffer macro + is a bit better than write-file, so use that instead. + +2003-05-03 Satyaki Das + + * mh-index.el (mh-index-update-maps, mh-index-search) + (mh-index-sequenced-messages): Write index data to disk. This + allows us to recover index folder information if Emacs is + restarted, or the index folder is visited after the buffer has + been killed (closes SF #701762). + (mh-index-write-data, mh-index-read-data) + (mh-index-write-hashtable, mh-index-read-hashtable): Functions to + store and read index data information to disk. + (mh-index-insert-folder-headers, mh-index-group-by-folder): We + can no longer use object identity to compare strings, since they + might have been read back from disk. + + * mh-e.el (mh-index-data-file): New variable that stores the name + of the file that keeps track of index folder data. + (mh-make-folder): Read index folder data if available. + + * mh-utils.el (mh-show, mh-summary-height, mh-modify): Make + checkdoc happy. + + * mh-seq.el (mh-tick-add-overlay): Rearrange code to make code + more uniform. + + * mh-loaddefs.el: Regenerated. + +2003-05-02 Satyaki Das + + * mh-seq.el (mh-tick-add-overlay): If a message with a short scan + line is ticked, then the highlighting didn't extend to the right + margin. This change fixes that. + +2003-05-01 Bill Wohler + + * mh-e.el (mh-help-messages): Added brackets around / and + downcased limit to be consistent with other commands with + punctuation keybindings. Don't document aliases. + +2003-05-01 Satyaki Das + + * mh-loaddefs.el: Regenerated. + + * mh-seq.el (mh-read-range): Fix comment. + +2003-04-30 Mark D. Baushke + + * mh-e.el (mh-help-messages): Better documentation for the F map. + +2003-04-30 Satyaki Das + + * mh-utils.el (mh-find-path): Cache folder names so that + folder name completion is always fast. + (mh-flists-partial-line, mh-flists-process): Variables used for + pre-caching folder names. + (mh-collect-folder-names, mh-collect-folder-names-filter) + (mh-populate-sub-folders-cache): Functions to pre-cache folder + names. + (mh-exec-cmd): Produce more info in *MH-E Log*. + + * mh-index.el (mh-index-search): Call the correct function. + (mh-index-sequenced-messages): If folders is nil, then all mail + is searched. The change restores that. + +2003-04-30 Peter S Galbraith + + * mh-customize.el (mh-summary-height): Move variable integer out + of defcustom, and instead specify that `nil' means to calculate + that size dynamically. Fixes SF #723267. + + * mh-utils.el (mh-summary-height): New function. Return ideal + mh-summary-height value for current frame height. + (mh-show-msg): Use it. + +2003-04-30 Mark D. Baushke + + * mh-index.el (mh-index-ticked-messages): Fix prompt and + description string. + (mh-index-new-messages): Ditto. + + * mh-loaddefs.el: Regenerated. + + * mh-index.el (mh-index-sequenced-messages): Renamed from + mh-index-new-messages with minor argument change. + (mh-index-new-messages): Implement by calling + mh-index-sequenced-messages with the appropriate arguments. + (mh-index-ticked-messages): New function. Does the same thing as + mh-index-new-messages, but on its own set of folders and using the + mh-tick-seq instead of mh-unseen-seq. + + * mh-e.el (mh-folder-map): Add "F'" to the map for + mh-index-ticked-messages. + (mh-help-messages): Replace broken [t]hread with [n]ew messages. + + * mh-customize.el (mh-index-ticked-messages-folders): New user + customizable flag that controls the folders to be searched by + mh-index-ticked-messages. + + * mh-utils.el (mh-show-index-ticked-messages): Wrapper for + mh-index-ticked-messages. + (mh-show-folder-map): Add "F'" to the map for + mh-index-ticked-messages. + +2003-04-30 Satyaki Das + + * mh-index.el (mh-index-search): The old cur in the source folder + might not exist. This could cause mh-exec-cmd to fail. So don't + add an error message in that case. + +2003-04-29 Satyaki Das + + * mh-e.el (mh-folder-from-address): Modified to allow multiple + Cc: headers to work properly. + (mh-inc-folder, mh-visit-folder): Fix an off by one error. + + * mh-utils.el (mh-notate): Update the scan line map. This fixes a + tiny bug. In threaded view, if a message is replied to then the + message is notated with a "-". Now if inc is done then the "-" + added is lost. The change fixes this. + + * mh-seq.el (mh-translate-range): Use the correct function. + (mh-thread-update-scan-line-map): New function that updates the + scan line map when a message is notated. + +2003-04-28 Satyaki Das + + * mh-index.el (mh-index-parse-search-regexp): Avoid compiler + warning in GNU Emacs 21.3. + + * mh-seq.el (mh-widen): Ditto. + +2003-04-28 Satyaki Das + + * mh-customize.el (mh-interpret-number-as-range-flag): New user + customizable flag that controls whether a single number, N is + interpreted as the range last:N. + + * mh-seq.el (mh-read-range): Generalize it for use when reading + range to scan. + (mh-interactive-range): Modified to use the new mh-read-range. + + * mh-speed.el (mh-speed-view): Use mh-read-range instead of the + now removed mh-read-msg-range function. + + * mh-funcs.el (mh-pack-folder): Ditto. + + * mh-e.el (mh-rescan-folder, mh-visit-folder): Ditto. + (mh-read-msg-range): Removed. + + * mh-loaddefs.el: Regenerated + +2003-04-27 Satyaki Das + + * mh-loaddefs.el: Regenerated. + + * mh-seq.el (mh-range-completion-function): Fix checkdoc warning. + (mh-iterate-on-range): Mention that the macro can iterate over a + MH message range too. + +2003-04-27 Bill Wohler + + * mh-unit.el (mh-unit): As it turns out, lm-crack-copyright has + been updated to handle multiple-line copyrights in 21.3, so + updated code to run lm-verify only if user has 21.3 or greater. + Delete buffers after use, unless user already had buffer open. + +2003-04-27 Satyaki Das + + * mh-loaddefs.el: Regenerated. + + * mh-index.el (mh-index-search): The MH command "refile" changes + cur. The change restores cur in source folders. + (mh-index-new-messages): Use the appropriate arguments for + mh-read-seq. + + * mh-seq.el (mh-read-seq-default, mh-read-seq): Restore these + functions to just read sequence names. + (mh-range-seq-names, mh-range-history, mh-range-completion-map) + (mh-range-completion-function, mh-read-range): New function which + reads MH range with completion and history. + (mh-interactive-range): Use mh-read-range instead of + mh-read-seq-default. + (mh-put-msg-in-seq): Change documentation about MH message range. + + * mh-junk.el (mh-junk-blacklist, mh-junk-whitelist): Change + documentation about MH message range. + + * mh-funcs.el (mh-copy-msg, mh-print-msg): Ditto. + + * mh-e.el (mh-delete-msg, mh-delete-msg-no-motion) + (mh-refile-msg, mh-undo, mh-delete-msg-from-seq): Ditto. + + * mh-comp.el (mh-forward): Ditto. + +2003-04-26 Satyaki Das + + * mh-comp.el, mh-e.el, mh-funcs.el, mh-junk.el, mh-seq.el: + Replace msg-or-seq with range everywhere. + + * mh-loaddefs.el: Regenerated. + +2003-04-25 Satyaki Das + + * mh-e.el (mh-index-sequence-search-flag, mh-folder-mode): New + local variable to remember that a folder buffer contains results + from a sequence search. This is needed so that "C-u F i" will work + as expected. + (mh-visit-folder): Create sequences in the index folder. + (mh-process-commands, mh-delete-msg-from-seq): If speedbar is on + then update the speedbar message counts immediately. + (mh-delete-msg-from-seq): Make the code faster by calling "mark" + just once. Also update source folder sequence if messages are + being deleted from a sequence in an index folder. + (mh-undefine-sequence): Simplified to remove the speedbar updating + code. Also DTRT and don't change any sequence when called with an + empty list of messages. + (mh-refile-msg, mh-delete-msg): Move to next message only if the + current message has been deleted or refiled, as the case may be. + + * mh-utils.el (mh-show-msg): Update the message counts in the + speedbar, if it is on, immediately. + (mh-speed-flists-active-p, mh-speed-flists-inhibit-flag): A new + flag has been added which inhibits updating of the speedbar. This + is used to avoid needless speedbar updates when + mh-execute-commands is called in index folders. + + * mh-speed.el (mh-speed-flists): Extended so that multiple + folders can be given as arguments. Also the code that kept track + of the current folder, needed since flists adds an extra ?+ char + at the end of the current folder name, wasn't entirely correct. + That has also been fixed. + + * mh-seq.el (mh-delete-seq, mh-put-msg-in-seq): Modified so that + sequence in source folder is updated if we delete a sequence in an + index folder. + (mh-read-seq, mh-read-seq-default, mh-translate-range) + (mh-interactive-msg-or-seq): The mh-interactive-msg-or-seq + function can read in an arbitrary MH message range. + (mh-iterate-on-msg-or-seq): The macro has been extended to work on + a MH range. + (mh-subject-to-sequence, mh-subject-to-sequence-unthreaded) + (mh-subject-to-sequence-threaded, mh-thread-find-msg-subject): Fix + the mh-subject-to-sequence function so that it will work in + threaded folders too. + (mh-tick-add-overlay): Fix a leak of overlays. + (mh-toggle-tick): Ticking, or unticking, messages in the index + folder is propagated to the source folders (closes SF #709664). + + * mh-index.el (mh-flists-results-folder, mh-flists-sequence) + (mh-flists-called-flag): New variables to implement searching for + arbitrary sequences. + (mh-index-generate-pretty-name): Updated so that folder names are + generated for flists search that can take any sequence name. + (mh-index-search): Since sequences are now properly maintained the + unseen-flag argument isn't needed and hence removed. Also redoing + a sequence search with "C-u F i" is handled correctly. Finally + the speedbar is updated to reflect the new index folder created. + (mh-index-create-sequences): New function that creates sequences + in the index folder. + (mh-index-matching-source-msgs, mh-index-execute-commands): + Improved so that scan lines for refiled/deleted messages are + removed from the source folders as well. + (mh-index-add-to-sequence, mh-index-delete-from-sequence): New + functions to update sequences in source folder to reflect changes + in index folder. + (mh-index-quote-for-shell): A utility function to that quotes + characters with special meaning to /bin/sh. + (mh-flists-execute, mh-index-new-messages): Updated to search for + arbitrary sequences (closes SF #718833). + + * mh-loaddefs.el: Regenerated. + +2003-04-25 Bill Wohler + + * mh-customize.el (mh-kill-folder-suppress-prompt-hook): New hook + used by mh-kill-folder to suppress the prompt. + + * mh-funcs.el (mh-kill-folder): Suppress prompt not if + mh-index-data is non-nil, but if any functions in + mh-kill-folder-suppress-prompt-hook return non-nil. + + * mh-index.el (mh-index-p): New function with returns non-nil if + the current folder was generated by an index search for use by + mh-kill-folder-suppress-prompt-hook + + * mh-unit.el (mh-unit): Commented out lm-verify step until code + updated to handle split Copyright lines. + + * mh-e.el (mh-version): Set to 7.3+cvs. + +2003-04-24 Bill Wohler + + Released MH-E version 7.3. + + * MH-E-NEWS, README: Updated for release 7.3. + + * mh-e.el (Version, mh-version): Updated for release 7.3. + +2003-04-24 Satyaki Das + + * mh-xemacs-compat.el (mh-utils): Require mh-utils at compile + time, since the mh-do-in-xemacs macro is used. + + * mh-inc.el (cl): Require cl at compile time since we are using + the loop and setf macros. + +2003-04-24 Satyaki Das + + * mh-unit.el (mh-files): Fix the list of files to check. + +2003-04-24 Bill Wohler + + * ChangeLog: Appended copyright to end of file. + + * Makefile: Added copyright and license. + + * README: Added copyright. + + * import-emacs: Changed copyright from Newt Software to Bill + Wohler and use license from mh-e.el, except that this file is + a part of MH-E, not GNU Emacs. + + * mh-alias.el: Updated copyright so that it doesn't wrap upon + advice from Richard Stallman who said to use two-digit years when + they are surrounded by 4-digit years that are in the same century + and to break up copyrights on multiple lines. + * mh-comp.el: Ditto. + * mh-e.el: Ditto. + * mh-funcs.el: Ditto. + * mh-identity.el: Ditto. + * mh-mime.el: Ditto. + * mh-seq.el: Ditto. + * mh-utils.el: Ditto. + * mh-xemacs-compat.el: Ditto. + + * mh-unit.el: New file. Unit tests for MH-E. This version merely + runs checkdoc and lm-verify which is useful before releasing the + software. It can and should be expanded to do real unit tests. + +2003-04-22 Mark D Baushke + + * mh-alias.el: Update Copyright. + * mh-comp.el: Ditto. + * mh-customize.el: Ditto. + * mh-e.el: Ditto. + * mh-funcs.el: Ditto. + * mh-identity.el: Ditto. + * mh-index.el: Ditto. + * mh-mime.el: Ditto. + * mh-pick.el: Ditto. + * mh-seq.el: Ditto. + * mh-speed.el: Ditto. + * mh-utils.el: Ditto. + * mh-xemacs-compat.el: Ditto. + +2003-04-22 Satyaki Das + + * mh-utils.el (mh-normalize-folder-name): Make the completion + code work properly with XEmacs. This change is neeeded since + split-string behaves differently in XEmacs than it does in GNU + Emacs. + (mh-exec-cmd-error): Add a comment, so that we change it later on. + +2003-04-18 Steve Youngs + + * mh-xemacs-icons.el (mh-xemacs-icons): Provide 'mh-xemacs-icons' + not 'mh-xemacs-toolbar'. + + * mh-xemacs-compat.el (mh-xemacs-toolbar): Remove require, it's + now called 'mh-xemacs-icons' and it is required from + 'mh-customize'. + + * mh-customize.el: Require 'mh-xemacs-icons' instead of + 'mh-xemacs-toolbar'. + +2003-04-17 Peter S Galbraith + + * mh-xemacs-icons.el: New file (renamed from mh-xemacs-toolbar.el). + Holds XEmacs icons. + + * mh-xemacs-toolbar.el: Deleted. + + * Makefile: Incorporate the file renaming. + +2003-04-15 Bill Wohler + + * mh-comp.el (mh-forward): Pass a list of messages into + mh-compose-and-send-mail instead of msg-or-seq. + (mh-annotate-msg): The previous version called + mh-iterate-on-msg-or-seq in the letter buffer. The new version + simply adds the ability to operate on message lists. Thanks to + Satyaki for the fix and suggestion for passing a list from + mh-forward. + +2003-04-14 Bill Wohler + + * mh-comp.el (mh-annotate-msg): Updated to handle msg-or-seq for + mh-forward was passing a msg-or-seq to mh-compose-and-send-mail + which in turn passed the msg-or-seq to mh-annotate-msg. In + particular, forwarding a region failed. Note that the msgs + argument in much of mh-comp.el should really be converted to + msg-or-seq accordingly. But not now, unless something is broken as + was the case here. We can revamp after the release. + +2003-04-13 Bill Wohler + + * mh-funcs.el (mh-kill-folder): Added space after prompt to give + the (yes or no) bit a little elbow room. + + * mh-xemacs-toolbar.el: Removing a copyright is a no-no. + Reinstated Steve's copyright. + +2003-04-12 Satyaki Das + + * mh-utils.el (mh-do-in-gnu-emacs, mh-do-in-xemacs): Add + indentation hooks for the macros. + +2003-04-11 Bill Wohler + + * mh-alias.el, mh-comp.el, mh-customize.el, mh-funcs.el, + mh-identity.el, mh-inc.el, mh-index.el, mh-junk.el, mh-utils.el: + Merged in changes from CVS GNU Emacs. These included the removal + of trailing whitespace. + + * mh-customize.el: The "anti-entropy" check-in. Moved groups + around slightly to reflect commentary. Moved defcustoms around + to preserve alphabetization. Big diff, little content. + (mh-xemacs-use-toolbar-flag): Doc fix. + (mh-xemacs-toolbar-position): Fixed typo in docstring. + (mh-default-folder-list): Updated docstring to reflect new Check + Recipient tag. Also, set type of Address to regexp. + (mh-x-mailer-string): Moved to mh-comp.el where it is used. + + * mh-comp.el (mh-x-mailer-string): Moved here from customize.el. + Not quite sure how it got to mh-customize.el in the first place. + + * mh-e.el (mh-folder-folder-menu): Added Folder -> View New + Messages menu item. + + * mh-utils.el (mh-show-folder-menu): Ditto. + + * mh-inc.el: Added Change Log comment (lm-verify fix). + + * mh-index.el (mh-index-search): Added documentation about prefix + argument for users, in addition to documentation for programmers. + + * mh-mime.el (mh-edit-mhn, mh-edit-mhn, mh-mml-to-mime): Docstring + fixes germaine to the change whereby we now check for MIME + directives before sending. + + * mh-xemacs-toolbar.el: Fixed copyright. Added Change Log comment + (lm-verify fix). Added standard MH-E local variables. Removed + time-stamp stuff. + +2003-04-11 Satyaki Das + + * mh-seq.el (mh-iterate-on-msg-or-seq): Add a missed comma. + +2003-04-10 Satyaki Das + + * mh-index.el (mh-index-visit-folder): Prompt before reusing + existing folder buffer. + + * mh-xemacs-toolbar.el (require): Require mh-utils at compile + time to avoid compilation error when doing "make bootstrap" in + CVS Emacs. + + * mh-inc.el (mh-inc-spool-list): Declare it so that a compile + time warning is avoided when doing "make bootstrap" in CVS Emacs. + +2003-04-10 Peter S Galbraith + + * mh-inc.el (mh-inc-spool-generator): Changed to a defun instead + of a defmacro, applying Satyaki's patch. + (mh-inc-spool-def-key): same. + (mh-inc-spool-make): same. + + * mh-utils.el: define-key "I" in mh-show-mode-map for + mh-inc-spool-map. + + * mh-comp.el (mh-modify-header-field): Remove debug message. + +2003-04-10 Peter S Galbraith + + * mh-inc.el (mh-inc-spool-map-help): Default to nil. + (mh-inc-spool-map): Make "?" key display message when + `mh-inc-spool-map-help' is nil (instead of mh-inc-spool-map-help + containing the message). + + * mh-e.el: require mh-inc.el + * mh-e.el: define-key "I" in mh-folder-mode-map for mh-inc-spool-map. + (mh-help-messages): Add help string for "I" key. + +2003-04-09 Peter S Galbraith + + * mh-inc.el: New file. New feature to `inc' mail from various + spool files into different folders. + + * mh-loaddefs.el: Regenerate for mh-inc's mh-inc-spool-list-set. + + * Makefile (MH-E-IMG): Add highlight icon. + (MH-E-SRC): Add mh-inc.el file. + + * mh-customize.el (mh-inc-spool-list): New variable for new + feature to `inc' mail from various spool files into different + folders. + +2003-04-09 Satyaki Das + + * mh-utils.el (mh-mail-delivery-buffer): Add a defconst for + mh-mail-delivery-buffer. + + * mh-comp.el (mh-send-letter): Use mh-mail-delivery-buffer. + + * mh-mime.el (mh-small-image-p): Add mh-funcall-if-exists to + avoid compiler warning in GNU Emacs. + +2003-04-08 Satyaki Das + + * mh-mime.el (mh-small-image-p): Make the function slightly more + error-resistant in XEmacs. + + * mh-seq.el (mh-narrow-to-seq, mh-widen): Update tool-bar-map in + the show buffer if needed. This allows us to display the widen + button in the show buffer only when the folder is narrowed. + + * mh-customize.el (mh-tool-bar-define): Changed so that a + separate tool-bar-map is used in show-mode when folder is + narrowed to a sequence. + +2003-04-08 Satyaki Das + + * mh-seq.el (mh-iterate-on-msg-or-seq): Reinstate the use of + make-symbol since using gensym causes compiler warnings in CVS + Emacs. + +2003-04-08 Bill Wohler + + * mh-comp.el (mh-forward): Function didn't handle a region of + messages. Use new function mh-msg-or-seq-to-msg-list to get a list + of messages in all circumstances. Also, use mh-coalesce-msg-list + on message list before submitting to forw since this should always + be done when calling a program to reduce the chance of exceeding + command-line limits. + + * mh-seq.el (mh-iterate-on-msg-or-seq): Backed out previous + change. A nil msg-or-seq should mean no messages, and Satyaki is + going to use gensym instead of make-symbol. + (mh-msg-or-seq-to-msg-list): New function to convert a msg-or-seq + to a list of message numbers. + + * mh-e.el (mh-coalesce-msg-list): Touched up the docstring a + little. + + * mh-funcs.el (mh-print-msg): Can now print regions, message + lists, sequences and, of course, single messages. This version + works a little differently from the old version. Instead of + calling mhl | lpr once on all messages, mhl | lpr is called once + per message in order to put each message's number in the header. + Thanks to Satyaki for some code and ideas. + + * mh-seq.el (mh-iterate-on-msg-or-seq): The argument msg-or-seq + can now be nil which means the current message. Make local symbols + so that local variables don't step on user's symbols (the msgs + symbol got me). + +2003-04-06 Bill Wohler + + * mh-comp.el (mh-forward): Updated docstrings to indicate that a + list of messages is acceptable as well. + + * mh-e.el (mh-delete-msg, mh-delete-msg-no-motion, mh-refile-msg) + (mh-undo, mh-notate-user-sequences, mh-delete-msg-from-seq): Ditto. + + * mh-funcs.el (mh-copy-msg, mh-print-msg): Ditto. + + * mh-junk.el (mh-junk-blacklist, mh-junk-whitelist): Ditto. + + * mh-seq.el (mh-put-msg-in-seq, mh-iterate-on-msg-or-seq) + (mh-interactive-msg-or-seq): Ditto. + +2003-04-06 Satyaki Das + + * mh-junk.el (mh-junk-blacklist, mh-junk-whitelist): Call + mh-refile-a-msg and mh-delete-a-msg with nil as the message + number since that is more efficient. + + * mh-seq.el (mh-iterate-on-msg-or-seq): Extended so that it will + handle lists of messages numbers as well. + (mh-put-msg-in-seq): Use mh-iterate-on-msg-or-seq to simplify the + function. + + * mh-funcs.el (mh-copy-msg): Same as above. + + * mh-e.el (mh-refile-msg): Make it more efficient. Using nil in + mh-refile-a-msg avoids needing to re-search-forward to that + message. + (mh-undo): Fix typo in interactive spec. + (mh-notate-user-sequences): Generalize the function to take a + msg-or-seq as argument. + (mh-delete-msg-from-seq): Extend the function so that it is now + able to subtract messages belonging in one sequence from another. + (mh-undo): Unify the region and sequence handling. The message + number branch of the function does extra stuff, so we can't merge + that in. + +2003-04-06 Bill Wohler + + * mh-comp.el (mh-forward): Use mh-interactive-msg-or-seq. Inserted + consistent verbiage in docstring for msg-or-seq. + (mh-reply): Don't mention default in opening line in all + docstrings. + + * mh-e.el (mh-delete-msg, mh-refile-msg) + (mh-undo, mh-delete-msg-from-seq): Use mh-interactive-msg-or-seq. + Inserted consistent verbiage in docstring for msg-or-seq. In + mh-delete-msg-from-seq, renamed msg-or-region to msg-or-seq. + + * mh-funcs.el (mh-copy-msg, mh-print-msg): Use + mh-interactive-msg-or-seq. Inserted consistent verbiage in + docstring for msg-or-seq. + + * mh-junk.el (mh-junk-blacklist, mh-junk-whitelist): Inserted + consistent verbiage in docstring for msg-or-seq. + + * mh-seq.el (mh-msg-is-in-seq): Don't mention default in opening + line in all docstrings. + (mh-put-msg-in-seq): Use mh-interactive-msg-or-seq. Inserted + consistent verbiage in docstring for msg-or-seq. + + * mh-e.el (mh-delete-msg, mh-delete-msg-no-motion, mh-refile-msg): + Rewritten to use new mh-interactive-msg-or-seq function and + mh-iterate-on-msg-or-seq macro. mh-delete-msg-no-motion gained the + ability to operate on regions. + + * mh-junk.el (mh-junk-blacklist, mh-junk-whitelist): Rewritten to + use new mh-interactive-msg-or-seq function and + mh-iterate-on-msg-or-seq macro thereby gaining the ability to + operate on sequences or regions. + + * mh-seq.el (mh-iterate-on-msg-or-seq): New macro to execute code + on a message, a region of messages, or a sequence. This macro + should be in all functions that operate on messages to provide a + uniform interface. + (mh-interactive-msg-or-seq): New function used in interactive + calls to obtain a message number, region, or sequence. This + function should be in all functions that operate on messages to + provide a uniform interface. + + * mh-utils.el (with-mh-folder-updating, mh-in-show-buffer): Use + 'defun lisp-indent-hook property instead of 1 to fix indentation + of these macros. + +2003-04-05 Peter S Galbraith + + * mh-loaddefs.el: Regenerated. + * mh-funcs.el (mh-ephem-message): autoload. + +2003-04-04 Peter S Galbraith + + * mh-e.el (mh-folder-from-address): Minor Fix. Wrong ending of + `when' block. + +2003-04-04 Satyaki Das + + * mh-mime.el (mh-mml-directive-present-p): The regexp has been + modified to recognize directives to encrypt/sign messages. + +2003-04-03 Mark D. Baushke + + * mh-e.el (mh-folder-from-address): E-mail messages missing the + To: field, but which have a Cc: field should also be handled. + +2003-04-03 Bill Wohler + + * mh-e.el (mh-inc-folder): Modified the prompt text to read + better. + + * mh-comp.el (mh-forward): Deleted local variable `compose'. + Deleted obsolete setting of mh-{mmh|mml}-compose-insert-flag. + (mh-letter-menu): Use mh-{mmh|mml}-directive-present-p instead of + obsolete. mh-{mmh|mml}-compose-insert-flag. + (mh-letter-mode): Deleted obsolete setting of + mh-{mmh|mml}-compose-insert-flag. + (mh-send-letter): This function now automatically runs the + directive-to-MIME conversion if any directives are detected, + rather than relying on the unreliable + mh-{mmh|mml}-compose-insert-flag variables. Updated docstring + accordingly. + + * mh-identity.el (mh-insert-identity): Use + mh-{mmh|mml}-directive-present-p instead of obsolete. + mh-{mmh|mml}-compose-insert-flag. + + * mh-loaddefs.el: Regenerated. + + * mh-mime.el (mh-mhn-compose-type, mh-mhn-compose-external-type) + (mh-mhn-compose-forw, mh-edit-mhn, mh-mml-to-mime) + (mh-mml-forward-message, mh-mml-attach-file) + (mh-mml-secure-message-sign-pgpmime) + (mh-mml-secure-message-encrypt-pgpmime): Deleted obsolete setting + of mh-{mmh|mml}-compose-insert-flag. + (mh-mml-directive-present-p): Checkdoc fix. + + * mh-utils.el (mh-mhn-compose-insert-flag, + mh-mml-compose-insert-flag): Deleted. Replaced by + mh-{mhn|mml}-directive-present-p. + +2003-04-03 Mark D. Baushke + + * mh-e.el (mh-folder-from-address): Fix minor problem with To: + address processing. + + * mh-e.el (mh-folder-from-address): Bugfix match ?+ character not + a "?+" string. + +2003-04-03 Peter S Galbraith + + * mh-e.el (mh-inc-folder): Add second optional argument for the + folder to inc new mail into instead of mh-inbox. + +2003-04-03 Peter S Galbraith + + * mh-e.el (mh-folder-from-address): The first match found in + `mh-default-folder-list' is used. + + * mh-customize.el (mh-default-folder-list): Tweak docs + +2003-04-03 Satyaki Das + + * mh-loaddefs.el: Regenerated. + + * mh-mime.el (mh-mhn-directive-present-p): New function to test if + a MHN directive is present in the current buffer. + (mh-mml-directive-present-p): New function to test if a MML + directive is present in the current buffer. + + * mh-comp.el (mh-letter-mode): Originally this function checked if + a #forw directive was present and set mh-mhn-compose-insert-flag + to t. The modification generalizes this test so that one of the + variables mh-{mml|mhn}-compose-insert-flag will get set if we have + any sort of MHN or MML directive is already present. + + * mh-seq.el (tool-bar-map): Add a defvar to avoid compiler + warnings in CVS version of GNU Emacs. + + * mh-utils.el (tool-bar-map): Same as above. + + * mh-e.el (tool-bar-map): same as above. + +2003-04-02 Satyaki Das + + * mh-xemacs-toolbar.el (mh-xemacs-toolbar-toggle-tick-icon): + Change color to match mh-folder-tick-face. + + * highlight.xpm: Same as above. + +2003-04-02 Peter S Galbraith + + * mh-e.el (mh-folder-from-address): Check `mh-default-folder-list' + for cases against the recipient instead of the originator. + + * mh-customize.el (mh-default-folder-list): Add extra boolean flag + to conditionally check the recipient address instead of the + originator. + +2003-04-02 Peter S Galbraith + + * mh-customize.el (mh-folder-tick-face): Change tick highlight + face to a background yellow-green, as suggested by Bill. + +2003-04-01 Peter S Galbraith + + * highlight.xpm: New icon for mh-toggle-tick. + + * mh-xemacs-toolbar.el (mh-xemacs-icon-map): Add tool-bar entry + for mh-toggle-tick. + (mh-xemacs-toolbar-toggle-tick-icon): New constant. + + * mh-customize.el: Add tool-bar entry for mh-toggle-tick. + +2003-03-31 Satyaki Das + + * mh-loaddefs.el: Regenerated. + + * mh-utils.el (mh-show-narrow-to-tick, mh-show-limit-map) + (mh-show-sequence-menu): Add new interactive function + mh-show-narrow-to-tick callable from the show buffer and arrange + for a key binding and a menu entry. + + * mh-seq.el (mh-narrow-to-tick): New interactive function that + narrows to the tick sequence. + + * mh-e.el (mh-folder-sequence-menu, mh-limit-map): Arrange for a + key binding and a menu entry for mh-narrow-to-tick. + + * mh-comp.el (mh-letter-mode): Enable undo since we could be + reusing a show buffer where undo is disabled (closes SF #712777). + +2003-03-31 Peter S Galbraith + + * mh-e.el (mh-folder-sequence-menu): Add entry for mh-toggle-tick. + + * mh-utils.el (mh-show-sequence-menu): Add entry for + mh-show-toggle-tick. + +2003-03-28 Satyaki Das + + * mh-seq.el (mh-delete-seq): If the tick sequence is killed with + "S k" then the highlighting wasn't getting removed. The change + fixes this. + +2003-03-27 Satyaki Das + + * mh-e.el (mh-notate-user-sequences): Extend it so that only the + messages in a part of the folder are notated. + (mh-delete-msg-from-seq): Extend it so that it will delete all + messages in the marked region. + (mh-delete-a-msg-from-seq): New function that deletes a single + message from a sequence. + (mh-clear-text-properties): If there is a ticked unseen message + and the message is removed from the unseen list with "S d" then + unticking the message doesn't change the highlight. This change + fixes this. + +2003-03-27 Peter S Galbraith + + * mh-xemacs-toolbar.el (mh-xemacs-toolbar-*-icon): Use original + 24x24 icons, changing background only. + +2003-03-27 Satyaki Das + + * mh-junk.el (mh-spamassassin-identify-spammers): Remove unused + variable buffer-exists. + (mh-spamassassin-identify-spammers): Remove unused variable user. + + * mh-customize.el (mh-junk-choose): Tweak it to remove XEmacs + compiler warning. + +2003-03-26 Satyaki Das + + * mh-seq.el (mh-thread-print-scan-lines): Handling of a boundary + condition when messages from the last source folder had been + removed was incorrect. This caused a folder header to appear + without any messages listed under it. This change fixes this. + (mh-thread-forget-message): Remove the entry from the scan line + table as well. This is needed for proper display of threaded view + of index folders. + +2003-03-26 Bill Wohler + + * Makefile, README, import-emacs, mh-alias.el, mh-comp.el, + mh-customize.el, mh-e.el, mh-funcs.el, mh-identity.el, + mh-index.el, mh-loaddefs.el, mh-mime.el, mh-pick.el, mh-seq.el, + mh-speed.el, mh-utils.el, mh-xemacs-compat.el, + mh-xemacs-toolbar.el: Removed RCS keywords per Emacs conventions + (closes SF #680731). + + +2003-03-26 Satyaki Das + + * mh-index.el: Fix commentary to mention that mairix is supported + as well. + + * mh-loaddefs.el: Regenerated. + + * mh-utils.el (mh-show-junk-blacklist, mh-show-junk-whitelist): + Interactive functions callable from the show buffer. + (mh-show-junk-map): Key bindings in show mode. + + * mh-e.el (mh-junk-map): Key bindings to call spam program. + (mh-help-messages): Update help text. + + * mh-customize.el (mh-junk): New customization group for spam + program interface. + (mh-junk-choice, mh-junk-function-alist, mh-junk-choose): + Functions and variables that decide which junk program is used. + (mh-junk-program, mh-junk-mail-folder): User customizable + variables that control the choice of spam program and the action + performed on received spam. + + * Makefile (MH-E-SRC): Add mh-junk.el. + +2003-03-26 Satyaki Das + + * mh-loaddefs.el: Regenerated. + + * mh-utils.el (mh-show-toggle-tick, mh-show-mode-map): New + interactive function callable from the show buffer and a key + binding for it. + + * mh-seq.el (mh-delete-seq): Remove highlight from tick sequence. + (mh-put-msg-in-seq): Disable adding messages to tick sequence. + (mh-widen): Reset mh-tick-seq-changed-when-narrowed-flag. + (mh-tick-add-overlay, mh-tick-remove-overlay, mh-notate-tick) + (mh-toggle-tick): New functions to highlight/unhighlight tick + sequence and the interactive function that is used to toggle + tick. + + * mh-e.el (mh-tick-seq-changed-when-narrowed-flag): New variable + that remembers if we are narrowed to the tick sequence. In that + case the highlighting isn't shown, since it adds no extra info. + (mh-folder-mode): Initialize mh-tick-seq-changed-when-narrowed-flag. + (mh-notate-user-sequences): Notate the tick sequence. + (mh-internal-seq): Treat mh-tick-seq like an internal sequence. + (mh-delete-msg-from-seq): Don't allow deletion from tick sequence. + (mh-folder-mode-map): Add key binding for "'" + + * mh-customize.el (mh-tick-seq, mh-folder-tick-face): New + customizable variables that contain the name of the tick sequence + and the face to use to highlight it. + +2003-03-25 Satyaki Das + + * mh-loaddefs.el: Regenerated. + + * mh-seq.el (mh-thread-print-scan-lines): New function which + prints out thread tree. It maintains the original folder info if + the folder was created by index search (closes SF #709672). + (mh-copy-seq-to-eob, mh-thread-inc, mh-thread-folder): Use + factored out function mh-thread-print-scan-lines. + (mh-toggle-threads): Since threading is allowed in index folders + there can be lines in the folder which aren't valid message scan + lines. So it is OK for mh-get-msg-num to fail once in a while. + + * mh-index.el (mh-index-update-maps): Make the parsing of messages + that need to annotated with the X-MHE-Checksum header more robust. + If the search yielded no results then an error was being produced. + (mh-index-search): Enable automatic threading of index folders if + mh-show-threads-flag is non-nil (closes SF #709667). + (mh-index-next-folder): Relax error checking since index folder + can be threaded while the source folder info is visible. + (mh-index-group-by-folder): New function that is used in + mh-thread-folder to keep source folder info visible during + threading. + +2003-03-25 Bill Wohler + + * mh-loaddefs.el: Regenerated. + + * mh-customize.el (mh-index-new-messages-folders): New variable + that controls which folders "F n (mh-index-new-messages)" + accesses. Was mh-flists-search-folders. + + * mh-index.el (mh-flists-search-folders): Still used internally, + but users now use new option mh-index-new-messages-folders. + Removed documentation since to avoid duplication with + mh-index-new-messages-folders. + (mh-flists-recursive-search-flag): Deleted. Use + mh-recursive-folders-flag instead. + (mh-flists-execute): Updated docs to specify which global + variables are used. Use mh-recursive-folders-flag instead of + mh-flists-recursive-search-flag. + (mh-index-new-messages): Edited doc, and refer to new option + mh-index-new-messages-folders. Ditto within code. Don't need to + prepend + to folder name as flists does that for us. Use + +2003-03-24 Satyaki Das + + * mh-e.el (mh-refile-msg): Add optional argument that controls + whether mh-last-destination-folder is updated or not. + +2003-03-22 Satyaki Das + + * mh-customize.el (mh-tool-bar-define): Fix a problem in the + XEmacs version which caused the show mode toolbar to have the + buttons in the reverse order. Also the add-hooks are no longer + needed since mh-toolbar-init is called in the appropriate modes. + + * mh-comp.el (mh-letter-mode): Call mh-toolbar-init in XEmacs to + initialize toolbar. + + * mh-utils.el (mh-show-mode): Same as above. + + * mh-e.el (mh-folder-mode): Same as above. + +2003-03-21 Satyaki Das + + * mh-utils.el (mh-exec-cmd-env-daemon): New function which + executes a command asynchronously with its own environment. + + * mh-comp.el (mh-redistribute): The function has been modified so + that /bin/sh isn't used to run send. It has also been refactored + so that the same code isn't repeated. + +2003-03-21 Bill Wohler + + * mh-customize.el (mh-invisible-header-fields): Added X-Bogosity + for bogofilter. + +2003-03-21 Satyaki Das + + * mh-loaddefs.el: Regenerated. + + * mh-xemacs-toolbar.el: Remove the code since that gets generated + when mh-tool-bar-define is expanded. + (mh-xemacs-icon-map): A alist to map GNU Emacs icon names to the + actual icons to be used in XEmacs. This is used in + mh-tool-bar-define. + + * mh-customize.el (mh-toolbar): Use this group in XEmacs as well. + (mh-tool-bar-item-*): All these constants have been removed since + they aren't needed in the new scheme. + (mh-tool-bar-reply-3-buttons-flag): This variable has been + removed. + (mh-tool-bar-search-function): This is now used in XEmacs as well. + (mh-tool-bar-folder-set, mh-tool-bar-folder-buttons-set) + (mh-tool-bar-letter-buttons-set, mh-tool-bar-show-set) + (mh-tool-bar-letter-set): These functions aren't defined at the + top level any more. + (mh-tool-bar-reply-generator): A macro to generate the required + functions for the three reply buttons. + (mh-tool-bar-search, mh-tool-bar-customize) + (mh-tool-bar-folder-help, mh-tool-bar-letter-help) + (mh-tool-bar-reply-from, mh-show-tool-bar-reply-from) + (mh-tool-bar-reply-to, mh-show-tool-bar-reply-to) + (mh-tool-bar-reply-all, mh-show-tool-bar-reply-all): New + interactive functions that are called when tool bar buttons are + clicked. + (mh-xemacs-use-toolbar-flag, mh-xemacs-toolbar-position): + Additional customizable variables that are present only for + XEmacs. + (mh-tool-bar-define): A macro that generates the required code + for GNU Emacs and XEmacs tool bar. + (mh-tool-bar-define): Define the MH-E tool bar. + +2003-03-17 Satyaki Das + + * mh-seq.el (mh-notate-cur): Notate current message only if it + hasn't been marked for deletion or refiling. + +2003-03-15 Bill Wohler + + * mh-customize.el (mh-invisible-header-fields): Added + X-Spam-Checker-Version. + (mh-auto-fields-list): checkdoc fix. + +2003-03-12 Satyaki Das + + * mh-index.el (mh-index-new-messages): If the destination folder + where the unseen messages are supposed to be copied to was + already present, but MH-E doesn't have it open, then a new folder + was being created. The change fixes this. + (mh-index-update-unseen, mh-flists-recursive-search-flag): Fix + checkdoc warnings. + + * mh-loaddefs.el: Regenerated. + +2003-03-11 Satyaki Das + + * mh-index.el (mh-flists-results-folder): Subfolder under + +mhe-index where the results of the flists call is put. + (mh-index-generate-pretty-name): Make sure that normal index + searching will never use the folder reserved for the flists + results. + (mh-index-search): Add an extra parameter that marks all the + messages in the index folder to the unseen sequence. + (mh-index-update-unseen): Function to keep unseen sequence of + index folder synced with the actual folders from where the + messages were copied. This works only if the unseen messages are + displayed with mh-show. Killing the unseen sequence in the index + folder or adding/removing messages to it doesn't change the + unseen sequence in the source folders yet. + (mh-flists-search-folders): Variable that decides the folders on + which flists is run. + (mh-flists-recursive-search-flag): If non-nil, flists is passed + the -recurse option. + (mh-flists-execute): Function which uses /bin/sh to execute + flists and then print out the list of message files that match. + (mh-index-new-messages): New interactive function which searches + for messages in the unseen sequence (closes SF #701756). + + * mh-utils.el (mh-show-folder-map): Add binding for + mh-index-new-messages. + (mh-show-msg): Update the unseen sequence in the source folder. + + * mh-e.el (mh-folder-font-lock-unseen): The function assumes that + the end of buffer is reached when there isn't a valid scan line + on the current line. This doesn't work in the index folder since + we have lines containing the folder name and empty lines in + between the actual scan lines. The modification removes this + assumption. + (mh-folder-map): Add key binding for "Fn" + + * mh-seq.el (mh-iterate-on-messages-in-region): If the point is + not at the beginning of the line, then the first message in the + region would be missed. The fix avoids this. + + * mh-mime.el (mh-inline-vcard-p): Don't try to inline vcards if + we don't have the right libraries. + +2003-03-10 Satyaki Das + + * mh-e.el (mh-next-undeleted-msg, mh-previous-undeleted-msg) + (mh-next-msg): Add optional argument wait-after-complaining-flag. + If non-nil and there are no undeleted messages after (or before) + the current one, then pause for a second after printing out the + message. + (mh-refile-or-write-again): Modify call to mh-next-msg to use the + wait-after-complaining-flag. + +2003-03-10 Satyaki Das + + * mh-e.el (mh-refile-or-write-again): If mh-next-msg fails to find + a message to go to it prints out a diagnostic, which overwrites + the diagnostic about the folder the message was refiled to. The + change fixes this. + +2003-03-09 Satyaki Das + + * mh-seq.el (mh-widen, mh-narrow-to-seq): Update + mh-narrowed-to-seq before notating sequences. This is a bit + helpful for mh-tick.el. + (mh-put-msg-in-seq): Fix a minor bug. No internal sequence should + be notated -- the original code was doing the right thing only for + the "unseen" sequence. + + * mh-index.el (mh-index-choose): Add autoload cookie for + mh-index-choose. This is needed for GNU Emacs 20.5. + + * mh-loaddefs.el: Regenerated. + +2003-03-09 Bill Wohler + + * mh-mime.el (mh-display-smileys): This function originally had a + test to see if font-lock-maximum-size was bound, but this was + recently removed. The test was put in for a reason; if + font-lock-maximum-size isn't bound, void-variable errors would + ensue. I put the bound test back in. + +2003-03-08 Steve Youngs + + * mh-mime.el (mh-mime-security-button-map): Use 'mh-push-button' + in XEmacs as well. + +2003-03-07 Satyaki Das + + * mh-xemacs-toolbar.el: Declare a whole bunch of stuff for GNU + Emacs, so that we don't get so many compiler warnings. Also + surround calls to set-specifier and toolbar-make-button-list with + mh-funcall-if-exists. Maybe GNU Emacs shouldn't try to compile + this file in the first place. + + * mh-xemacs-compat.el (mh-modeline-glyph): Declare it within + mh-do-in-xemacs to avoid compiler warning in GNU Emacs. + (mh-xemacs-push-button): Removed. + + * mh-mime.el (mh-mime-button-map): Use the generalized + mh-push-button function. + (mh-push-button): Enhance it so that it works on XEmacs too. + +2003-03-08 Steve Youngs + + * mh-xemacs-compat.el (mh-modeline-logo): New constant holding the + modeline image. + (mh-modeline-glyph): Use it. + +2003-03-08 Steve Youngs + + * mh-xemacs-toolbar.el: New file that defines and displays a + toolbar in XEmacs. + + * mh-xemacs-compat.el (mh-xemacs-toolbar): Require it here. + + * Makefile (MH-E-SRC): Add mh-xemacs-toolbar.el. + + * mh-customize.el (mh-toolbar): + (mh-tool-bar-letter-buttons): + (mh-tool-bar-letter-buttons-set): + (mh-tool-bar-folder-buttons): + (mh-tool-bar-folder-buttons-set): + (mh-tool-bar-search-function): + (mh-tool-bar-reply-3-buttons-flag): + (mh-tool-bar-item-inc): + (mh-tool-bar-item-save-mime): + (mh-tool-bar-item-prev-msg): + (mh-tool-bar-item-page-msg): + (mh-tool-bar-item-next-msg): + (mh-tool-bar-item-delete): + (mh-tool-bar-item-refile): + (mh-tool-bar-item-undo): + (mh-tool-bar-item-perform): + (mh-tool-bar-item-toggle-show): + (mh-tool-bar-item-reply-from): + (mh-tool-bar-item-reply-to): + (mh-tool-bar-item-reply-all): + (mh-tool-bar-item-reply): + (mh-tool-bar-item-alias): + (mh-tool-bar-item-compose): + (mh-tool-bar-item-rescan): + (mh-tool-bar-item-repack): + (mh-tool-bar-item-search): + (mh-tool-bar-item-visit): + (mh-tool-bar-item-prefs): + (mh-tool-bar-item-help): + (mh-tool-bar-item-widen): + (mh-tool-bar-item-send): + (mh-tool-bar-item-attach): + (mh-tool-bar-item-spell): + (mh-tool-bar-item-save): + (mh-tool-bar-item-undo-op): + (mh-tool-bar-item-kill): + (mh-tool-bar-item-copy): + (mh-tool-bar-item-paste): + (mh-tool-bar-item-kill-draft): + (mh-tool-bar-item-comp-prefs): + The MH-E toolbar for XEmacs is defined differently from the + GNU/Emacs version, so only define these if we're in GNU/Emacs. + XEmacs doesn't need to see them and it's always good to cut down + on pollution. + +2003-03-08 Steve Youngs + + * mh-mime.el (mh-mime-button-map): Bind the 2nd mouse button to + `mh-xemacs-push-button' in XEmacs. + (mh-mime-security-button-map): Ditto. + + * mh-xemacs-compat.el: Shush the byte-compiler. + (mh-xemacs-push-button): New function to make MIME buttons work in + XEmacs. + +2003-03-08 Steve Youngs + + * mh-mime.el (mh-display-emphasis): Don't test + `font-lock-maximum-size' to see if it is bound, just test for a + non-nil value. This variable can have a nil value which makes it + bound and dividing nil by 8 throws an error. + This fixes a bug in MH-E under XEmacs when + `font-lock-maximum-size' is nil that prevented article emphasis + and smiley display which in turn was causing the "Flush changes in + article x y/n" errors. + (mh-display-smileys): Ditto. + +2003-03-08 Steve Youngs + + * mh-utils.el (mh-logo-display): Display logo in XEmacs as well. + + * mh-xemacs-compat.el (mh-modeline-glyph): New. The MH-E modeline + logo for XEmacs. + +2003-03-06 Satyaki Das + + * mh-utils.el (mh-allow-root-folder-flag): New global variable + that decides if "+" is an acceptable folder name. + (mh-folder-completion-function): Refine the test for existing + folders to take mh-allow-root-folder-flag into account. + (mh-folder-completing-read, mh-prompt-for-folder): Use the + allow-root-folder-flag argument of mh-prompt-for-folder and add a + similar argument to mh-folder-completing-read. + (mh-exec-cmd-error): Make the function nicer by using + process-environment to pass the environment variable assignments. + +2003-03-05 Satyaki Das + + * mh-mime.el (mh-push-button): Preserve point in the show buffer + if the mouse is used to expand/contract a button. + + * mh-customize.el (mh-x-face-file): Mention X-Image-URL in + documentation. + + * mh-comp.el (mh-insert-x-face): Modified to allow insertion of + X-Image-URL header field. + +2003-03-04 Satyaki Das + + * mh-utils.el (mh-face-display-function): Modified to facilitate + display of X-Image-URL images. + (mh-find-path): Initialize X-Image-URL cache directory. + (mh-x-image-url-cache-canonicalize, mh-x-image-url-fetch-image) + (mh-x-image-scale-and-display, mh-x-image-url-display) + (mh-x-image-display): New functions for X-Image-URL image display + and cache management. + + * mh-customize.el (mh-show-use-xface-flag): Add info about + requirements for X-Image-URL display. + (mh-fetch-x-image-url): New customizable variable that controls + fetching of X-Image-URL. + +2003-03-04 Satyaki Das + + * mh-utils.el (mh-make-local-hook): New macro which works around + API changes in add-hook. Version of GNU Emacs before 21.1 and + XEmacs require a call to make-local-hook and just the LOCAL + argument of add-hook is not sufficient. + (mh-show-mode): Make kill-buffer-hook buffer local. + + * mh-e.el (mh-folder-mode): Same as above. + + * mh-comp.el (mh-compose-and-send-mail): Same as above. + +2003-03-02 Satyaki Das + + * mh-mime.el (mh-push-button): Clicking on a MIME button used to + cause the window with the show buffer to be selected. With this + change the selected window doesn't change. + +2003-03-01 Satyaki Das + + * mh-speed.el (mh-speed-flists): Avoid a potential race condition. + When flists is called manually, or when an unseen message is read, + mh-speed-partial-line was not reinitialized. + + * mh-e.el (mh-visit-folder): If mh-visit-folder is used to visit + the folder currently being visited (effectively doing a rescan) + then mh-previous-window-config is erroneously set. The change + fixes this. + + * mh-customize.el (mh-index-show-hook): Remove unused variable. + +2003-02-28 Satyaki Das + + * mh-e.el (mh-scan-folder): Call mh-reset-threads-and-narrowing + only after the user has replied to question. This avoids premature + clearing of the folder. + (mh-rescan-folder, mh-visit-folder): Remove calls to + mh-reset-threads-and-narrowing since it is now called in + mh-scan-folder anyway. + + * mh-funcs.el (mh-sort-folder): Same as above. + +2003-02-26 Satyaki Das + + * mh-alias.el (mh-alias-alist): Change initial value to a symbol, + so that it is different from the empty list, which could also + mean that there are no aliases. + (mh-alias-reload-maybe): Change test so that empty alist of + aliases is properly handled (closes SF #693859). + +2003-02-25 Satyaki Das + + * mh-mime.el (mh-decode-message-header): The message header could + be encoded, for instance the author's name could contain + characters not in ASCII. This function will decode such header + fields. + (mh-mm-inline-message): Use mh-decode-message-header. + + * mh-utils.el (mh-display-msg): Use mh-decode-message-header. + (mh-message-number-width): Use mh-scan-prog instead of "scan". + + * mh-loaddefs.el: Regenerated. + +2003-02-24 Satyaki Das + + * mh-utils.el (mh-truncate-log-buffer): Refine it so that the + function will do the right thing even if called from a buffer + other than mh-log-buffer. + +2003-02-22 Peter S Galbraith + + * mh-alias.el (mh-alias-add-alias): Really fix SF #690216. + This functions needs to strip brackets on standalone addresses as + well. + +2003-02-21 Satyaki Das + + * mh-xemacs-compat.el (replace-regexp-in-string): Remove the + definition since it isn't used any more. + +2003-02-20 Peter S Galbraith + + * mh-alias.el (mh-alias-which-file-has-alias): Bug fix. Needed to + specify `noerror' on search. + + * mh-alias.el (mh-alias-suggest-alias): Add condition for input + string being an email address in brackets. We need to strip out + the brackets. (closes SF #690216) + +2003-02-20 Satyaki Das + + * mh-pick.el (mh-search-folder): The function was setting the + global value of the variables mh-current-folder and + mh-previous-window-config. This can lead to problems in code which + assumes that these variables are nil when we aren't in a folder + buffer. So make the variables local before setting them. + +2003-02-19 Satyaki Das + + * mh-mime.el (mh-mime-display): All the MIME display code has been + wrapped in a condition-case so that if something goes wrong, the + raw message will be displayed. + + * mh-funcs.el (mh-undo-folder): Comment out call to sit-for that + seems unnecessary. + + * mh-e.el (mh-scan-folder): Messages marked for deletion or + refiling weren't getting annotated properly. The change fixes + this. + (mh-process-or-undo-commands): Change prompt to reflect what + really happens in the code. + +2003-02-18 Satyaki Das + + * mh-comp.el (mh-folder-expand-at-point): The function + mail-abbrev-complete-alias often returns nil. This had the + unfortunate consequence of always causing an error. The change + fixes this. + + * mh-alias.el (mh-alias-canonicalize-suggestion): New function + which obviates the our need replace-regexp-in-string. + (mh-alias-suggest-alias): Use mh-alias-canonicalize-suggestion to + eliminate calls to replace-regexp-in-string. This avoids problems + in Emacs20. + + * mh-utils.el (mh-notate): Handle the case when nil is passed as + notation gracefully. + (mh-speed-flists-active-p): New function that returns non-nil if + flists is being used in the speedbar to update message counts. + + * mh-seq.el (mh-put-msg-in-seq): Fix a bug which made it + impossible to add messages to the unseen sequence. Also adding + messages to the unseen sequence will now update the speedbar + message counts immediately. + + * mh-e.el (mh-get-new-mail, mh-process-commands) + (mh-undefine-sequence): Update speedbar message counts, if the + speedbar is active and is displaying message counts. + (mh-delete-msg-from-seq): In addition to updating message counts, + unhighlight the message so that interactively removing messages + from the unseen sequence makes the bold highlight of unseen + messages in the scan buffer go away. + (mh-clear-text-properties): New function that removes all text + properties from the current scan line. + +2003-02-15 Satyaki Das + + * mh-utils.el (mh-face-display-function): Wrap call of + insert-image in mh-funcall-if-exists. This avoids a compiler + warning in Emacs20. + + * mh-speed.el (mh-speed-flists): Weaken test a bit to avoid + compiler warning in Emacs20. + (mh-speedbar-change-expand-button-char): Wrap call of + speedbar-insert-image-button-maybe in mh-funcall-if-exists. This + function isn't present in the speedbar that ships with Emacs20, so + calling it there causes an error. + + * mh-seq.el (mh-msg-is-in-seq): Adjust loop call a bit to avoid + compiler warning in XEmacs. The XEmacs compiler should be improved + so that such spurious warnings from builtin macros are suppressed. + + * mh-index.el (mh-index-search): Same as above. + + * mh-e.el (tool-bar-mode): The declaration is needed for Emacs20 + too. + + * mh-comp.el (mailabbrev): Try loading it any way. Some day XEmacs + will get it and then MH-E will just use it. + (tool-bar-mode, tool-bar-map): These declarations are needed for + Emacs20 too. + (mh-mail-abbrev-make-syntax-table, mh-folder-expand-at-point): + Remove mh-mail-abbrev-make-syntax-table since mh-funcall-if-exists + can be used instead. + + * mh-alias.el (require): Avoid autoloading functions that may not + be defined. + (mh-read-address, mh-alias-letter-expand-alias): Rewrite using + mh-funcall-if-exists. + +2003-02-15 Satyaki Das + + * mh-loaddefs.el: Regenerated. + + * mh-speed.el (mh-folder-speedbar-buttons, mh-speed-add-buttons) + (mh-speed-toggle): Reuse markers instead of creating more of them. + (mh-speed-flists-folder, mh-speed-flists): Add optional folder + argument to mh-speed-flists so that message counts are updated + only for that one folder. + (mh-speed-parse-flists-output): If no change in counts then avoid + consing. + + * mh-index.el (mh-index-execute): Rewritten to use a temporary + buffer that is not left behind. + + * mh-funcs.el (mh-store-buffer): Use mh-log-buffer instead of the + special purpose *Store Output* buffer. + +2003-02-14 Satyaki Das + + * mh-customize.el (mh-show-xface-face): Make it always be black + foreground on a white background (the reverse of that can make + some X-Face images look creepy). + + * mh-utils.el (mh-truncate-log-buffer): Modify the function to + return the current size of mh-log-buffer. Also we are now a bit + more careful in adding separators between consecutive messages. + (mh-exec-cmd): Fix a bug where the the log buffer would be + displayed even if no error happened in the current command but + the log buffer had messages from a previous error. + + * mh-mime.el (mh-mime-save-parts): Use mh-log-buffer to show + error messages. + + * mh-alias.el (mh-alias-local-users): Add a space between parens. + +2003-02-14 Steve Youngs + + * mh-utils.el (mh-face-display-function): Call + `x-face-xmas-wl-display-x-face' using `mh-funcall-if-exists'. + + * mh-xemacs-compat.el (replace-regexp-in-string): New. + +2003-02-13 Satyaki Das + + * mh-utils.el (mh-log-buffer-lines): New variable that keeps + track of the number of lines to keep in mh-log-buffer. + (mh-truncate-log-buffer): New function that is used to make sure + that the log buffer doesn't grow to unbounded size. + (mh-exec-cmd, mh-exec-cmd-daemon, mh-handle-process-error): Use + mh-truncate-log-buffer instead of erase-buffer to keep some + number of previous log messages around (closes SF #685476). + +2003-02-13 Satyaki Das + + * mh-e.el (tool-bar-mode): Declare it in XEmacs. + (mh-folder-mode): Use mh-funcall-if-exists to call hl-line-mode. + + * mh-utils.el (mh-funcall-if-exists): New macro that calls a + function only if it exists. + (mh-logo-display, mh-defun-show-buffer): Use mh-funcall-if-exists + to call the functions find-image and deactivate-mark. + + * mh-mime.el (mh-mime-cleanup, mh-small-image-p) + (mh-mm-display-part): Use mh-funcall-if-exists to call the + functions image-size and remove-images. + + * mh-comp.el (tool-bar-map, tool-bar-mode): Declare the variables + in XEmacs. + (mh-folder-expand-at-point): Use mh-funcall-if-exists to call + mail-abbrev-complete-alias if it exists. + + * mh-alias.el (mh-read-address): Use mh-funcall-if-exists for + future extensibility. + +2003-02-13 Satyaki Das + + * mh-utils.el (mh-logo-display): The function find-image is + present only in GNU Emacs. + (mh-defun-show-buffer): The function deactivate-mark is present + only in GNU Emacs. + (default-enable-multibyte-characters): Declare it in XEmacs to + avoid compiler warning. + (mh-face-display-function): Avoid inserting space if there isn't + any Face or X-Face header field to display. + + * mh-seq.el (mh-thread-last-ancestor): Move declaration of + variable before its first use to silence XEmacs warning. + + * mh-mime.el (default-enable-multibyte-characters, dots, type): + Declare these in XEmacs to remove compiler warnings in XEmacs. + (mh-mime-cleanup, mh-mm-display-part): Call remove-images only in + GNU Emacs. + (mh-small-image-p): Call image-size only in GNU Emacs. + + * mh-index.el (mh-mairix-next-result): Fix a bug where a quote + was missing. + (mh-swish++-regexp-builder): Remove the unused binding meta. + + * mh-e.el (mh-folder-size): Pass on an extra value to remove + XEmacs warning. + (mh-folder-mode): Surround calls to hl-line-mode and + tool-bar-mode with mh-do-in-gnu-emacs since these functions + aren't present in XEmacs. + + * mh-customize.el (mh-tool-bar-show-set, mh-tool-bar-letter-set) + (mh-tool-bar-folder-set): These functions call tool-bar-* + functions which are present only in GNU Emacs. So surround them + with mh-do-in-gnu-emacs. + + * mh-comp.el (mh-letter-mode, mh-folder-expand-at-point): Only + call these functions in GNU Emacs. + (mail-abbrevs): Declare it in XEmacs. + + * mh-alias.el (mh-read-address): Call completing-read-multiple + only in GNU Emacs. + (mail-abbrevs): Declare it in XEmacs. + (mh-alias-add-alias-to-file): Remove unused code. + +2003-02-14 Ville Skyttä + + * mh-comp.el: Add autoloaded auto-mode-alist association. + +2003-02-13 Satyaki Das + + * mh-utils.el (mh-face-display-function): Make the XEmacs part a + little simpler. + +2003-02-14 Steve Youngs + + * mh-customize.el (mh-show-xface-face): XEmacs doesn't have the + ':inherit' keyword for defface, rewrite with sane defaults. + + * mh-utils.el (mh-face-display-function): Fix bug that was + corrupting xface images when displayed with XEmacs' internal + xface image support. Also make XEmacs honour 'mh-show-xface-face' + when using internal xface image support. + +2003-02-12 Peter S Galbraith + + * mh-comp.el (mh-modify-header-field): New function. To header + FIELD add VALUE. If OVERWRITE-FLAG is non-nil then the old value, + if present, is discarded. This is more flexible than before. + (mh-insert-auto-fields): Use it. This and the new function are a + courtesy of Satyaki. Thanks! + + * mh-customize.el (mh-auto-fields-list): Doc tweaks suggested by + Bill. + +2003-02-12 Satyaki Das + + * mh-comp.el (mh-folder-expand-at-point): Tweak the error + message. Completion in the Fcc header field is only supported in + GNU Emacs 21. + +2003-02-12 Peter S Galbraith + + * mh-customize.el (mh-auto-fields-list): Reorder after + `mh-identity-list' since it needs it to be defined. Move to + mh-identity customization group. + +2003-02-11 Peter S Galbraith + + * mh-customize.el (mh-insert-mail-followup-to-flag): Removed. + Obsolete. + (mh-insert-mail-followup-to-list): Removed. Obsolete. Use + `mh-auto-fields-list' instead, which is a more general solution. + (mh-auto-fields-list): New defcustom. Alist of addresses for + which header lines are automatically inserted. Replaces + `mh-insert-mail-followup-to-list'. + + * mh-comp.el (mh-insert-mail-followup-to): Removed. Obsolete. + (mh-insert-auto-fields): New function. Insert custom fields if To + or Cc match `mh-auto-fields-list', replacing + mh-insert-mail-followup-to with a more general solution. + (mh-compose-and-send-mail): Call mh-insert-auto-fields instead of + mh-insert-mail-followup-to. Also don't call mh-insert-identity to + insert default setting if mh-insert-auto-fields inserted an + identity. + +2003-02-11 Satyaki Das + + * mh-utils.el (mh-show-xface-function): Try to load the external + x-face library only if XEmacs doesn't have xface support. + (mh-face-display-function): Renamed. Also handle various + permutations of x-face and xface support in XEmacs better. + + * mh-customize.el (mh-show-use-xface-flag): Any emacs whose + major version is greater than or equal to 21 supports display of + X-Face and Face header fields. + +2003-02-11 Satyaki Das + + * mh-utils.el (mh-do-in-gnu-emacs, mh-do-in-xemacs): Macros that + execute code only in GNU Emacs and XEmacs respectively. + (mh-emacs21-face-display-function): Refactor to make it slightly + nicer. Get rid of compiler warnings in GNU Emacs by using the + above macros. Also check for presence of xface feature (in XEmacs + specific code) before trying to display X-Face header field image. + +2003-02-11 Steve Youngs + + * mh-customize.el (mh-show-use-xface-flag): If using XEmacs and + can't find the external x-face pkg still enable X-Face images if + feature 'xface is present. + Update the doc string. + + * mh-utils.el (mh-emacs21-face-display-function): Make it work in + XEmacs. + (mh-show-xface-function): If using XEmacs without xface support, + use x-face.el pkg. If using XEmacs with xface support, or Emacs + 21, use mh-emacs21-face-display-function. + +2003-02-11 Mark D. Baushke + + * mh-customize.el (mh-invisible-header-fields): Add + "X-Notes-Item:" which is generated by Lotus Notes Domino. See + URL for details on how Domino + users may disable (restore the default) generation of these headers. + +2003-02-10 Satyaki Das + + * mh-comp.el (mh-folder-expand-at-point): Add function doc string + and produce a nicer error message for Emacs versions that lack + mail-abbrev-complete-alias. + + * mh-utils.el (mh-handle-process-error): Check doc fix. + + * mh-e.el (mh-folder-from-address): Same as above. + +2003-02-10 Peter S Galbraith + + * mh-comp.el: require mailabbrev, except in XEmacs. + (mh-mail-abbrev-make-syntax-table): New defmacro to call + mail-abbrev-make-syntax-table introduced in Emacs21. + (mh-folder-expand-at-point): Handle nested folders. + All of the above was written by Satyaki. I just applied the patch + and tested. + +2003-02-09 Satyaki Das + + * mh-comp.el: Fixes to keep the byte compiler happy. + + * mh-customize.el (mh-invisible-header-fields): Modified to + remove space after ":" in header field names. + +2003-02-09 Peter S Galbraith + + * mh-comp.el (mh-letter-complete): Add completion for fcc lines. + (mh-folder-expand-at-point): Do completion at point for folder + name. Like `mh-alias-letter-expand-alias' for aliases, it doesn't + work on XEmacs because it relies on `mail-abbrev-complete-alias' + to do completion. Maybe Steve could update XEmacs' mailabbrev.el? + +2003-02-09 Peter S Galbraith + + * mh-customize.el (mh-invisible-header-fields): Remove trailing + space in "X-Face: " and "Face: " entries since those line often + break there. + +2003-02-08 Satyaki Das + + * mh-utils.el (mh-emacs21-face-display-function): Use + mh-show-xface-face to colorize X-Face image. + + * mh-customize.el (mh-invisible-header-fields): Add extra headers + to ignore. + (mh-show-xface-face): Allow customization of the X-Face colors. + +2003-02-07 Satyaki Das + + * mh-utils.el (mh-uncompface-executable, mh-uncompface): Remember + the path of the uncompface executable so that we don't need to + search for it every time. + (mh-emacs21-face-display-function): If more than one X-Face (or + Face) header field was present then the fields would get + concatenated, leading to garbled output. The change only displays + the first image. + + * mh-customize.el (mh-x-face-file): Change documentation since it + can now be used to insert a Face header field. + + * mh-comp.el (mh-insert-x-face): Generalized to allow insertion + of Face header field. + +2003-02-06 Bill Wohler + + * mh-utils.el (mh-emacs21-face-display-function): Updated + docstring. It is a common mistake to refer to a header field as a + header. The term header refers to the entire header while the term + header field refers to a single field. + + * mh-customize.el (mh-show-use-xface-flag): Ditto. + +2003-02-06 Satyaki Das + + * mh-utils.el (mh-show-xface-function): Modified to use + mh-emacs21-face-display-function if we are running GNU Emacs 21. + (mh-face-to-png): New function to convert a Face header to a png + image. + (mh-uncompface): New function which converts an X-Face header to + a pbm image. + (mh-icontopbm): New function that does the job of icontopbm. + (mh-emacs21-face-display-function): New function that displays + Face/X-Face image in GNU Emacs 21. + (mh-show-xface): Modified to test if we are running in X. + Otherwise face display is suppressed. + + * mh-customize.el (mh-show-use-xface-flag): Tweak it, now that + MH-E supports face display natively on Emacs 21. Also remove the + check for window-system since it doesn't belong in a customizable + variable. + +2003-02-06 Satyaki Das + + * mh-utils.el (sendmail): Require it so that XEmacs can find + rfc822-goto-eoh. + (mh-mail-header-end): A substitute for mail-header-end that + doesn't widen the buffer. This is essential to avoid problems when + dealing with nested messages. + (mh-in-header-p, mh-letter-header-font-lock) + (mh-header-field-font-lock, mh-show-font-lock-fontify-region) + (mh-show-unquote-From): Use mh-mail-header-end instead of + mail-header-end. + + * mh-mime.el (mh-decode-message-body): same as above (closes SF + #681518). + + * mh-comp.el (mh-yank-cur-msg): same as above. + +2003-02-05 Satyaki Das + + * mh-utils.el (mh-display-msg): Call mh-show-mode before invisible + headers are cleaned. This means that any surviving X-Face header + can be removed unconditionally in mh-clean-msg-header. + (mh-clean-msg-header): Since the function is now called with a + read-only buffer, make the buffer temporarily writable. + + * mh-mime.el (mh-mm-inline-message): Do X-Face display before + invisible headers are removed. + + * mh-customize.el (mh-invisible-headers): Simplified since the + X-Face header isn't treated specially any more. + (mh-invisible-header-fields): Add Face: and X-Face: to list of + invisible headers. + + * mh-mime.el (mh-mime-display): If body is empty the headers would + be treated like the body. The change fixes this (closes SF #681162). + (mh-mime-display): This change really fixes the above problem. + +2003-02-04 Satyaki Das + + * mh-utils.el (mh-current-folder-name): Global variable that + keeps track of current folder. + (mh-normalize-folder-name): Substitute @ with + mh-current-folder-name (closes SF #666774). + (mh-prompt-for-folder): Bind mh-current-folder-name. Also + invalidate cache if we are visiting a folder that wasn't found in + the sub-folder cache. This is an indication that folders may have + been created outside of MH-E and so the cache may be stale. + +2003-02-03 Satyaki Das + + * mh-utils.el (mh-decode-content-transfer-encoded-message): Removed. + (mh-display-msg): Remove the use of the above function. + (mh-normalize-folder-name): Leading "/" characters were being + lost. The change fixes this (closes SF #676890). + + * mh-mime.el (mh-decode-message-body): New function, factored out + from mh-mime-display and enhanced, to decode message based on + charset and content-transfer-encoding. This eliminates the need + for the external mimencode (closes SF #674857). + (mh-mime-display): Use mh-decode-message-body. + + * mh-e.el (mh-header-display): Don't need the binding since the + variable isn't present any more. + (mh-inc-folder): Avoid calling mh-show if point is not on a valid + scan line (closes SF #678115). + + * mh-customize.el + (mh-decode-content-transfer-encoded-message-flag): Removed. + +2003-02-03 Bill Wohler + + * import-emacs: MH-E now has its own directory in Emacs. + + * mh-e.el: (mh-version): Set to 7.2+cvs. + +2003-02-03 Bill Wohler + + Released MH-E version 7.2. + + * MH-E-NEWS, README: Updated for release 7.2. + + * mh-e.el (Version, mh-version): Updated for release 7.2. + +2003-02-03 Bill Wohler + + * Makefile (dist): mkdir needs to happen *before* files are + copied. + + * MH-E-NEWS: Fixed some awkward verbiage. + +2003-02-02 Bill Wohler + + * mh-customize.el (mh-invisible-headers): Surround regexp-opt + expression in parens to avoid problems viewing certain messages. + +2003-01-30 Satyaki Das + + * mh-speed.el (mh-speed-flists): Search for flists in mh-progs. + The original was inadvertently searching for flists in the user's + path. + +2003-01-27 Bill Wohler + + * mh-customize.el (mh-default-folder-must-exist-flag): Changed + default to t according to the principle of least surprise. + +2003-01-26 Bill Wohler + + * mh-utils.el: Checkdoc fixes. + + * mh-pick.el (mh-do-search, mh-search-folder): Checkdoc fixes. + + * mh-loaddefs.el: Regenerated (lm-verify fixes). + + * mh-index.el (mh-mairix-next-result): Checkdoc fixes. + + * mh-alias.el: lm-verify fix. + + * Makefile (MH-E-SRC): Added ChangeLog, now that Emacs has a + lisp/mh-e directory. + (MH-E-ETC-ETC): Removed ChangeLog. + (dist): Moved creation of mail directory next to copy of files + into mail directory. + (install-emacs): Copy $(MH-E-SRC) into new directory + $(EMACS_HOME/lisp/mh-e. + (MH-E-SRC): Moved ChangeLog into new variable MH-E-OTHERS and + include MH-E-LOADDEFS there too. + (mh-loaddefs.el): Added lines so that lm-verify passes. + (dist, install-emacs): Use MH-E-OTHERS instead of MH-E-LOADDEFS. + +2003-01-26 Jeffrey C Honig + + * mh-comp.el (mh-tidy-draft-buffer, mh-compose-and-send-mail): + Rename mh-kill-draft-hook to mh-tidy-draft-buffer. + +2003-01-25 Jeffrey C Honig + + * mh-utils.el (mh-exec-cmd, mh-exec-cmd-daemon) + (mh-process-daemon): Use mh-log-buffer for the output of commands + from mh-exec-cmd. + + * mh-utils.el (mh-temp-folders-buffer): Sequences and folders + loose the -temp from their buffer names as they are interesting to + the user. + + * mh-seq.el (mh-list-sequences): New name, mh-sequences-buffer as + it is intended to be interesting to the user. + + * mh-funcs.el (mh-list-folders): New name, mh-folders-buffer as it + is intended to be interesting to the user. + + * mh-comp.el (mh-check-whom, mh-compose-and-send-mail): Use + mh-recipients-buffer constant. Add a kill buffer hook to delete + the recipients buffer when a draft buffer is killed. + +2003-01-25 Satyaki Das + + * mh-customize.el (mh-customize): New interactive argument + deletes other windows. + (mh-tool-bar-show-set, mh-tool-bar-letter-set) + (mh-tool-bar-folder-set): Modified so that clicking the customize + and help buttons deletes the other windows in the frame. + + * mh-mime.el (mh-mm-inline-message): Remove unused code. + + * mh-seq.el (mh-notate-deleted-and-refiled): Fix a small bug where + the wrong notation was being used. + (mh-toggle-threads): The function had a bug if you did the + following starting from an unthreaded wide folder: + (1) Create a sequence with S p + (2) Narrow to new sequence with S n + (3) Thread narrowed folder with T t + (4) Kill sequence with S k + (5) Unthread narrowed folder with T t + At this point we would have an empty folder. The change fixes + this. + (mh-toggle-threads): Fix documentation. + + * mh-customize.el (mh-invisible-header-fields): Add + X-MHE-Checksum to invisible headers. + + * mh-comp.el (mh-insert-x-mailer): Slightly more informative + X-Mailer header. + +2003-01-24 Satyaki Das + + * mh-e.el (mh-header-display): Modified so that quoted-printable + or base64 encoded messages are left untouched. + + * mh-utils.el (mh-decode-content-transfer-encoded-message): Munge + the Content-Transfer-Encoding header so that the MIME decoding + routines of Gnus doesn't get confused. + (mh-display-msg): Use insert-file-contents-literally so that + display will work for non-ascii. + + * mh-mime.el (mh-mime-display): Use charset info to decode + message file (closes SF #655123). + +2003-01-24 Bill Wohler + + * mh-alias.el (mh-alias-add-alias-to-file): Removed period from + error message and added parens around error function. + +2003-01-24 Satyaki Das + + * mh-customize.el (mh-decode-quoted-printable-flag): Removed. + (mh-decode-content-transfer-encoded-message-flag): This replaces + mh-decode-quoted-printable-flag. + + * mh-utils.el (mh-decode-content-transfer-encoded-message): New + function which handles messages that are encoded as base64 or + quoted-printable (closes SF #674190). + (mh-decode-quoted-printable): Removed. + (mh-display-msg): Use mh-decode-content-transfer-encoded-message + instead of mh-decode-quoted-printable. + +2003-01-23 Satyaki Das + + * mh-seq.el (mh-thread-generate-scan-lines): Fix a little bug + that would occasionally cause angles ('<' and '>') to appear at + root level. + +2003-01-21 Satyaki Das + + * mh-seq.el (mh-notate-cur): Enable overlay arrow display in text + mode too. + + * mh-e.el (mh-folder-mode): Initialize overlay-arrow-string so + that a '>' is displayed in text mode. + +2003-01-20 Satyaki Das + + * mh-utils.el (mh-scan-msg-overflow-regexp): Change the variable + so that a space is always maintained in the beginning of the scan + line. + + * mh-seq.el (mh-notate-seq, mh-notate-cur): Make the functions + faster by cutting down on the use of mh-goto-msg. + (mh-toggle-threads): Add call to mh-notate-cur, since inserting + the folder names in a search results folder screws up the + location of the overlay arrow. + + * mh-index.el (mh-index-delete-folder-headers): Position the + point on a message line if possible. + + * mh-funcs.el (mh-copy-msg): Use the mh-iterate macro to make the + function faster. + + * mh-e.el (mh-scan-folder): Reuse mh-notate-deleted-and-refiled. + + * mh-loaddefs.el: Regenerated. + + * mh-utils.el (mh-add-msgs-to-seq): Add a new parameter that + suppresses the annotation of the sequence since it is + inefficient. + + * mh-seq.el (mh-delete-seq): Speed up the part of the function + that removes the sequence notation. + (mh-put-msg-in-seq, mh-notate-deleted-and-refiled): Use + mh-iterate-on-messages-in-region to make the function fasters when + operating on regions. The key idea is to loop over the folder + buffer exactly once and do all annotations. The existing algo + would walk over the buffer multiple times thereby slowing things + down. + (mh-iterate-on-messages-in-region): Added an extra parameter which + is bound to the message index as the loop is executed. + (mh-region-to-msg-list, mh-thread-delete, mh-thread-refile): Use + the new mh-iterate-on-messages-in-region macro. + + * mh-e.el (mh-delete-msg-no-motion, mh-refile-msg, mh-undo): Same + as above. + (mh-notate-user-sequences): Change algorithm to make notating of + user sequences fast. + +2003-01-19 Satyaki Das + + * mh-logo.xpm: New image file that contains the MH-E logo. + Change foreground color to the blue in the MH-E logo. + + * Makefile (MH-E-IMG): Add mh-logo.xpm to list of image files. + + * mh-utils.el (mh-show-buffer-mode-line-buffer-id): Adjust it to + keep space in the beginning for the logo. + (mh-logo-cache): New variable that caches the logo image file + location. + (mh-logo-display): Display the MH-E logo on the mode line. + (mh-display-msg): Display logo in mh-show-mode. + + * mh-e.el (mh-make-folder-mode-line): Display logo in + mh-folder-mode. + + * mh-comp.el (mh-compose-and-send-mail): Display logo in + mh-letter-mode. + + * mh-loaddefs.el: Regenerated. + + * mh-seq.el (mh-iterate-on-messages-in-region): New macro to + iterate on all messages in a region. + (mh-region-to-msg-list): Simplified since it uses + mh-iterate-on-messages-in-region now. + + * mh-e.el (mh-delete-msg, mh-refile-msg): Change interactive spec + to pass the region that is to be deleted when appropriate. + (mh-delete-msg-no-motion, mh-refile-msg, mh-undo): Operate on + regions directly without creating the list of messages to be + deleted/refiled. + (mh-delete-a-msg, mh-refile-a-msg, mh-undo-msg): The msg + parameter in these functions can now be nil. If so, the current + message is deleted, refiled or undone respectively. Avoids the + use of mh-goto-msg in this case and speeds up operations on + regions quite a bit. + +2003-01-19 Peter S Galbraith + + * mh-alias.el (mh-read-address): Bug Fix. In XEmacs and Emacs20, + it would always prompt using "To: " instead of using the command + argument (closes SF #670913). + +2003-01-19 Satyaki Das + + * mh-utils.el (mh-folder-completion-function): If there is a + +foo/bar folder and the user types foo//bar then the completion + function would say a match happened without showing the + normalized folder name. This change fixes that. + +2003-01-18 Satyaki Das + + * mh-e.el (mh-rmail): Modified so that new and unseen messages + are shown (closes SF #667542). + +2003-01-17 Satyaki Das + + * mh-index.el (mh-index-generate-pretty-name): Generate nicer + names. In particular all '-' characters are removed. + +2003-01-16 Satyaki Das + + * mh-customize.el (mh-index-program): Documentation fix. + + * mh-loaddefs.el: Regenerated. + + * mh-customize.el (mh-index-program): Add choices for mairix and + pick. + + * mh-index.el (mh-indexer-choices): Add search interfaces for + mairix and pick. + (mh-index-search): Add links for mairix and pick. + (mh-index-pick-folder, mh-pick-binary): Variables needed to + implement pick support. + (mh-pick-execute-search, mh-pick-next-result): New functions to + implement pick support. + (mh-mairix-binary, mh-mairix-directory, mh-mairix-folder): New + variables for mairix support. + (mh-mairix-execute-search, mh-mairix-next-result) + (mh-mairix-regexp-builder, mh-mairix-convert-to-sop*): New + functions for mairix. + + * mh-funcs.el (mh-kill-folder): Move message to the end. + + * mh-e.el (mh-folder-mode): Make overlay-arrow-position and + overlay-arrow-string local variables so that the arrow will + remain even if some other folder is visited. + (mh-remove-cur-notation, mh-remove-all-notation): The test isn't + required any more since overlay-arrow-position is local. + (mh-goto-cur-msg): Remove overlay arrow if current message + doesn't exist. + + * mh-seq.el (mh-notate-cur): Don't need to set + overlay-arrow-string any more since it is local and has been set + at initialization. + +2003-01-15 Satyaki Das + + * mh-speed.el (mh-speed-current-folder): Keep track of current + folder when flists is called. + (mh-speed-flists, mh-speed-parse-flists-output): Try to avoid + ambiguity when folders are present with + at the end of the name. + Unfortunately it can't always be avoided. + + * mh-e.el (mh-folder-size): Remove the unnecessary error check. + (mh-parse-flist-output-line): Add extra argument which + occasionally avoid problems with folder names that end with '+'. + + * mh-utils.el (mh-sub-folders-actual): Fix the folder name + parsing so that it doesn't get confused by trailing '+' chars in + the folder name. + +2003-01-14 Satyaki Das + + * mh-utils.el (mh-normalize-folder-name): Enhanced so that it can + now handle ".." and "." correctly during folder name completion. + (mh-normalize-folder-name): Avoid error in boundary condition + where the folder string is empty. + +2003-01-14 Mark D. Baushke + + * mh-e.el (mh-visit-folder): Pass `current-prefix-arg' to + the `mh-read-msg-range' function as the optional + always-prompt-flag. + +2003-01-14 Satyaki Das + + * mh-utils.el (mh-normalize-folder-name): New function that + normalizes folder names. + (mh-sub-folders): Use mh-normalize-folder-name. Also the function + has been modified so that a trailing slash is only added if the + folder potentially has subfolders. + (mh-sub-folders-actual): Simplified since the folder has already + been normalized in mh-sub-folders. + (mh-remove-from-sub-folders-cache): Modified so that the cached + results of two of the folders ancestors are invalidated. + (mh-folder-completion-map): Ugly hack to make the error go away + when minibuffer-complete-word is called. + (mh-folder-completion-function): The completion function will now + be more selective in adding '/' at the end of completed folder + names. + (mh-folder-completing-read): The folder name is normalized before + return. The minibuffer-local-completion-map is shadowed to avoid + error with SPC (bound to minibuffer-complete-word). We really + need a better solution. + +2003-01-13 Bill Wohler + + * mh-seq.el: Edited comment and docstring text to conform with RFC + 2822 terminology. Message-ID is the header field. It contains a + message identifier. + +2003-01-13 Satyaki Das + + * mh-utils.el (mh-sub-folders): Add an argument that returns + sub-folders with a / character appended at the end. + (mh-folder-completion-function): Modify the function so that one + tab is now sufficient to complete the folder name and add a + trailing /. + (mh-folder-completing-read): Remove the trailing / that the + completion function now adds to the folder name. Also multiple / + characters in the folder input are removed. So if the user inputs + +foo///bar//baz///// then that will be converted to +foo/bar/baz. + This will improve the performance of caching. + + * mh-seq.el (mh-notate-cur): Check that a valid current message + exists before trying to notate (closes SF #667331). + (mh-message-id-regexp): New variable to store regexp to recognize + message-ids. + (mh-thread-generate): Use mh-message-id-regexp to filter out non + message-id's from the References: header. + +2003-01-12 Satyaki Das + + * mh-seq.el (mh-notate-cur): Disable overlay-arrow display if we + aren't on a graphic display. + +2003-01-11 Satyaki Das + + * mh-seq.el (mh-notate-cur): New function to notate the current + message. The marker in the fringe is updated too. + (mh-narrow-to-seq, mh-widen, mh-thread-inc, mh-thread-folder): Use + the specialized function mh-notate-cur instead of mh-notate-seq. + + * mh-e.el (mh-arrow-marker): New buffer local variable to store + the position where the marker in the fringe is going to be + displayed (closes SF #664824). + (mh-folder-mode): Create a marker for the fringe. + (mh-update-sequences, mh-get-new-mail, mh-goto-cur-msg): Call the + specialized function mh-notate-cur instead of mh-notate-seq or + mh-notate. + (mh-remove-cur-notation, mh-remove-all-notation): Reset the + overlay-arrow-position if needed. + + * mh-loaddefs.el: Regenerated. + +2003-01-10 Satyaki Das + + * mh-utils.el (mh-remove-from-sub-folders-cache): Modified so that + creating nested folders doesn't produce inconsistent results. + (mh-prompt-for-folder): Remove call of mh-folder-list-change-hook. + + * mh-funcs.el (mh-kill-folder): Don't ask for confirmation if + called on a folder holding index search results. Also the now + removed mh-folder-list-change-hook is called no more. + + * mh-customize.el (mh-auto-folder-collect-flag) + (mh-folder-list-change-hook): Removed. + + * mh-loaddefs.el: Regenerated. + +2003-01-10 Bill Wohler + + * mh-customize.el (mh-default-folder-must-exist-flag): New + variable to suppress suggested folder if the folder doesn't + already exist (closes SF #657096). + (mh-default-folder-list): New variable that + holds mapping between an address and the desired folder for + filing (closes SF #657096). + (mh-default-folder-prefix, mh-default-folder-must-exist-flag): In + docstring, refer to documentation for mh-prompt-for-refile-folder + and mh-folder-from-address. + (mh-highlight-citation-p, mh-compose-insertion, + (mh-insert-mail-followup-to-list, mh-index-program, + (mh-identity-default): Fixed case of tags. + + * mh-e.el (mh-folder-from-address): Use new variable + mh-default-folder-must-exist-flag to return nil if this variable + is t and the folder doesn't already exist. In addition, can now + look up a default folder in the new variable + mh-default-folder-list (closes SF #657096). + (mh-prompt-for-refile-folder): In docstring, refer to + documentation in mh-folder-from-address. + + * mh-index.el (mh-swish-execute-search): Changed \..* to \\..* in + the FileRules filename in the sample config file. Otherwise, the + users don't see the backslash at all, and no files are indexed! + (closes SF #665888). + +2003-01-10 Satyaki Das + + * mh-seq.el (mh-thread-folder): Get headers for exactly the + messages that are present. If only messages 1-10 and 3800-3900 + are being shown then we will now scan exactly those messages and + not the full range from 1-3900 as was being done earlier. + (mh-toggle-threads): When converting from threaded to normal view + only the messages present in the buffer are scanned. Earlier all + messages from the minimum to the maximum would be scanned (closes + SF #626117). + + * mh-pick.el (mh-search-folder): Fix typo. + (mh-pick-do-search): Fix bug from cut and paste. Also set window + config properly. + + * mh-utils.el (mh-prompt-for-folder): Add new argument to allow + it to accept + as a folder name. This allows the user to search + all folders when "Fs" is used. + + * mh-pick.el (mh-search-folder): Fix interactive spec of function. + (mh-pick-do-search): Rewritten to call pick in one go. This will + make adding pick as a default index search program easier. Also + pick now accepts the same query syntax as the index search + programs (closes SF #664816). + (mh-next-pick-field): Removed. + (mh-pick-parse-search-buffer): New function to parse the search + buffer. + (mh-pick-construct-regexp, mh-pick-regexp-builder): New function + to produce a pick query from the parsed representation. + + * mh-index.el (mh-index-do-search): Refactor the search pattern + parser into a new function and use that instead. + + * mh-loaddefs.el: Regenerated. + +2003-01-10 Satyaki Das + + * mh-loaddefs.el: Regenerated. + + * mh-utils.el (mh-remove-from-sub-folders-cache) + (mh-prompt-for-folder): Replace mh-update-sub-folders-cache with + mh-remove-from-sub-folders-cache. + (mh-exec-cmd-daemon): Mention set-process-filter in documentation. + + * mh-pick.el (mh-searching-function): New buffer local variable + that keeps track of the default searching function to be used. + (mh-pick-mode): Make mh-searching-function buffer local. + (mh-search-folder): Set mh-searching-function to use pick. + (mh-search-folder, mh-pick-menu, mh-pick-mode-help-messages) + (mh-pick-mode, mh-do-pick-search, mh-pick-do-search): Rename + mh-do-pick-search to mh-pick-do-search. But keep + mh-do-pick-search as a deprecated function. + (mh-do-search): New interactive function that performs the + default search. + (mh-pick-mode-map): Update keymap. + + * mh-index.el (mh-index-search): Set mh-searching-function to do + index search. + (mh-index-new-folder): Replace mh-update-sub-folders-cache with + mh-remover-from-sub-folders-cache. + + * mh-funcs.el (mh-kill-folder): Same as above. + + * mh-index.el (mh-index-evaluate, mh-swish++-regexp-builder): + Checkdoc fixes. + + * mh-customize.el: Fixes to make byte compiler in CVS Emacs + perfectly happy. + +2003-01-09 Bill Wohler + + * mh-e.el (mh-folder-from-address): New function that proposes the + name of a folder with an alias for the address in the current message. + (mh-prompt-for-refile-folder): Use it (closes SF #657096). + + * mh-customize.el (mh-default-folder-prefix): New variable used by + mh-folder-from-address. + (mh-invisible-header-fields): Edited docstring. + + * mh-alias.el (mh-alias-address-to-alias): Added ;;;###mh-autoload + cookie (used by mh-folder-from-address in mh-e.el). Edited text in + comment. + + * mh-utils.el: Provided naming conventions for buffer and buffer + variable names. + (mh-temp-folders-buffer): Renamed buffer to " *mh-folders*". + (mh-temp-sequences-buffer): Renamed buffer to " *mh-sequences*". + (mh-info-buffer): Renamed from mh-temp-info-buffer. + (mh-log-buffer): New buffer variable to hold name of "*MH-E Log*" + buffer which is expected to be used for the output of MH commands. + Perhaps we always create this buffer at initialization and append + to it rather than erase it each time? + + * mh-e.el (mh-quit): Loop over all buffers and delete MH-E + temporary and working buffers. As long as the buffer naming + conventions are followed, new buffers will be automatically + killed. + (mh-version): Renamed mh-temp-info-buffer to mh-info-buffer. + + * mh-comp.el (mh-insert-x-mailer): Renamed mh-temp-info-buffer to + mh-info-buffer. + +2003-01-09 Satyaki Das + + * mh-e.el (mh-folder-size): If the user doesn't have a + Unseen-Sequence definition in .mh_profile then an error was + produced. This change fixes that. + + * mh-seq.el (mh-thread-generate): Replace the *mh-thread* buffer + with a temporary buffer which is cleaned up when the function + exits. + + * mh-e.el (mh-prompt-for-refile-folder): New function which + refactors out the intelligent folder guessing code from + mh-refile-msg. + (mh-refile-msg): Use mh-prompt-for-refile-folder. + + * mh-seq.el (mh-thread-refile): Use mh-prompt-for-refile-folder to + do the same intelligent destination folder guessing as + mh-refile-msg (closes SF #664829). + + * mh-utils.el (mh-folder-list, mh-make-folder-list-process) + (mh-folder-list-temp, mh-folder-list-partial-line) + (mh-set-folder-list): Removed. + (mh-sub-folders-cache, mh-sub-folders, mh-sub-folders-actual): + Moved over from mh-speed.el to implement hierarchical completion. + (mh-update-sub-folders-cache): Utility function called when + new folders are created or folders are removed. + (mh-folder-completion-function): New function is the folder name + completion function used in completing-read. + (mh-folder-completing-read): A thin wrapper function that is used + instead of completing-read directly. In the future we might want + to allow the user a customizable variable which will turn off + folders based completion. + (mh-prompt-for-folder): Use mh-folder-completing-read to read in + the folder name with hierachical completion (closes SF #664821). + + * mh-speed.el (mh-speed-folders, mh-speed-folders-cache) + (mh-speed-folders-actual): Moved to mh-utils.el as mh-sub-folders, + mh-sub-folders-cache and mh-sub-folders-actual respectively. + (mh-speed-invalidate-map, mh-speed-invalidate-map) + (mh-speed-add-folder): Use the new names. + + * mh-funcs.el (mh-kill-folder): Remove code that used to update + mh-folder-list which is no longer present. Instead + mh-update-sub-folders-cache is called. + + * mh-index.el (mh-index-new-folder): Same as above. + +2003-01-08 Satyaki Das + + * mh-utils.el (mh-exec-cmd-daemon): An argument was added which + controls what is done with the process output. + + * mh-funcs.el (mh-kill-folder): Use mh-previous-window-config to + restore window configuration. Also the call to mh-exec-cmd-daemon + only displays output if an error happened (closes SF #664828). + (mh-rmf-daemon): Check rmf output and display it only if + something went wrong. + (mh-print-msg): Pass in nil argument to mh-exec-cmd-daemon. + + * mh-comp.el (mh-redistribute, mh-send-letter): Pass in nil + argument to mh-exec-cmd-daemon so that the functions will behave + as before. + + * mh-pick.el (mh-search-folder): The current window config is + stored. + (mh-make-pick-template): Make the message headers read-only. + (mh-pick-mode-help-messages): Update help message. + (mh-do-pick-search): Fix problem when buffer isn't showing any + messages. + (mh-next-pick-field): Use buffer-substring-no-properties is + better. + (mh-pick-mode-map): Add key bindings (partially addresses + SF #664816) + + * mh-index.el (mh-indexer-choices): Add a new field for each + index program choice. If it is non-nil then it is the name of a + function that given a lisp expression to search for generates a + pattern that is acceptable to the search program. + (mh-index-regexp-builder): New variable that stores the function + to be used to convert from the lisp expression syntax to + something that the search program understands. + (mh-index-generate-pretty-name): Generalized so that it can take + a list of strings as input. + (mh-index-search): Modified so that if the configured program has + a corresponding regexp-builder then a search buffer like pick + search is produced. Otherwise the previous behavior is maintained. + (mh-index-do-search): New interactive function that takes the + contents of the search buffer, generates an appropriate query and + produces the search results buffer by calling mh-index-search. + (mh-replace-string, mh-index-parse-search-regexp) + (mh-index-add-implicit-ops, mh-index-evaluate): New functions + which parses the infix search expression that the user enters. A + parse tree from which queries for different search programs can + be produced is produced. + (mh-swish++-regexp-builder, mh-swish++-print-regexp): Takes the + internal form of the query and produces input suitable for + swish++. + + * mh-loaddefs.el: Regenerated. + +2003-01-08 Bill Wohler + + * Makefile (emacs-logs): New target for viewing CVS Emacs logs. + Useful to see if an Emacs developer has changed MH-E. + + * MH-E-NEWS: Fixed case of MH-E in the "Changes" title. + + * mh-utils.el (mh-temp-info-buffer): New variable to hold name of + buffer that contains version info. + + * mh-e.el (mh-version): Use mh-temp-info-buffer instead of + mh-temp-buffer since version information was getting clobbered by + the aliasing code before it could be seen (closes SF #664467). + (mh-quit): Delete mh-temp-info-buffer. + + * mh-comp.el (mh-insert-x-mailer): Use mh-temp-info-buffer to find + version info instead of mh-temp-buffer. You kind of need this + patch to send mail. + +2003-01-07 Bill Wohler + + * mh-e.el (Version, mh-version): Set to 7.1+cvs. + +2003-01-07 Bill Wohler + + Released MH-E version 7.1. + + * MH-E-NEWS, README: Updated for release 7.1. + + * mh-e.el (Version, mh-version): Updated for release 7.1. + +2003-01-07 Bill Wohler + + * mh-customize.el (mh-auto-folder-collect-flag, + mh-alias-system-aliases, mh-alias-insert-file): Edited docstrings. + + * Makefile (MH-E-IMG): Added alias.pbm and alias.xpm. + + * mh-alias.el (mh-alias-insert-file, mh-alias-add-alias): Fixed + checkdoc warnings. + +2003-01-07 Satyaki Das + + * mh-utils.el (mh-search-from-end): New function that is used to + replace our usage of the CL function search. + (font-lock): The library is loaded to avoid compilation warning + in CVS Emacs. + + * mh-speed.el (mh-speed-goto-folder, mh-speed-add-folder) + (mh-speed-extract-folder-name, mh-speed-invalidate-map): Use + mh-search-from-end instead of search. + + * mh-seq.el (mh-thread-remove-parent-link): Use loop instead of + remove*. + (mh-thread-process-in-reply-to): Use mh-search-from-end instead + of search. + + * mh-index.el (mh-md5-parser): Fix name of function. + (mh-index-update-single-msg, mh-index-update-maps): Avoid using + destructuring-bind since Emacs-20.7 can't handle this particular + usage. + (mh-namazu-next-result): Use mh-search-from-end instead of + search. + + * mh-e.el (recursive-load-depth-limit): Add a defvar since CVS + emacs which doesn't have the variable defined causes a compiler + warning. + (mh-refile-a-msg): Rewritten to avoid using pushnew. + (mh-undo-msg): Use loop instead of remove-if. + + * mh-comp.el (mh-show-buffer-message-number): Use + mh-search-from-end instead of search. + +2003-01-01 Satyaki Das + + * mh-e.el (mh-visit-folder): Modified so that if RANGE is nil then + all messages are displayed. Documentation modified so that this is + explicitly stated. + (mh-visit-folder): Really fix it this time. + +2003-01-01 Mark D Baushke + + * mh-alias.el (mh-alias-from-has-no-alias-p): Needs the + mh-autoload comment or mh-customize may have problems finding the + function. + + * mh-loaddefs.el: Regenerated. + +2002-12-28 Satyaki Das + + * mh-index.el (mh-namazu-execute-search): Fix bug in documentation. + +2002-12-28 Bill Wohler + + * mh-comp.el (mh-letter-mode): Mention mh-compose-insertion + variable in docstring, explain how to expand directives, and + don't mention mh-mhn-compose-insertion which isn't used directly + any more. + (mh-send-letter): Mention that X-Mailer and X-Face are inserted + automatically so that a user isn't tempted to do so himself in + mh-before-send-letter-hook. + (mh-insert-letter): Use "variable" prefix for mh-invisible-headers + now that we have both a function and a variable. Clarified + language a bit. + +2002-12-26 Satyaki Das + + * mh-utils.el (mh-show-xface-function): Only load x-face-e21 if + the emacs is not XEmacs. + + * mh-index.el (mh-index-new-folder): The folder created should + always be added to mh-folder-list. Otherwise folder name + completion doesn't find the new folder created. + +2002-12-24 Satyaki Das + + * mh-customize.el (mh-clean-message-header-flag) + (mh-visible-headers, mh-invisible-headers) + (mh-invisible-header-fields-set): Reworded to satisfy checkdoc. + + * mh-loaddefs.el: Regenerated. + + * mh-e.el (mh-inc-folder, mh-visit-folder, mh-read-msg-range): + Handle nil value of mh-large-folder properly. + + * mh-customize.el (mh-tool-bar-show-set, mh-tool-bar-letter-set) + (mh-tool-bar-folder-set, mh-tool-bar-folder-buttons) + (mh-invisible-headers, mh-invisible-header-fields-set): Checkdoc + fixes. + (mh-large-folder): Updated to allow for infinity. If + mh-large-folder is nil then all folders are deemed small. + +2002-12-23 Satyaki Das + + * mh-e.el (mh-inc-folder, mh-visit-folder): Emit a message if + threading was suppressed because the number of messages exceed + mh-large-folder. + +2002-12-23 Peter S Galbraith + + * mh-utils.el (mh-invisible-headers): Deleted. Moved to + mh-customize.el + + * mh-customize.el (mh-invisible-header-fields): New + defcustom. Simple user interface to change mh-invisible-headers. + (mh-invisible-header-fields-set): New function called when + mh-invisible-header-fields is set. + (mh-invisible-headers): New function. Does the actual work of + building the variable mh-invisible-headers from + mh-invisible-header-fields. + (mh-invisible-headers): defvar moved from mh-utils.el + +2002-12-22 Satyaki Das + + * mh-speed.el (mh-speed-folder-size): Removed. Something very + similar appears as mh-folder-size. + (mh-speed-view): Simplified since the range selection logic has + been moved to mh-read-msg-range. + (mh-speed-parse-flists-output-line): Moved to mh-e.el as + mh-parse-flist-output-line. + + * mh-funcs.el (mh-pack-folder): Use the new mh-read-msg-range. + + * mh-e.el (mh-rescan-folder): Use the new mh-read-msg-range. + (mh-parse-flist-output-line): Moved from mh-speed.el where this + function was called mh-speed-parse-flists-output-line. + (mh-folder-size): Renamed from mh-speed-folder-size. The function + has been made more general and can be called from any buffer and + not just the speedbar buffer. + (mh-visit-folder): Use the new mh-read-msg-range (addresses SF + #655891). + (mh-read-msg-range): Rewritten. + +2002-12-21 Satyaki Das + + * mh-seq.el (mh-delete-subject-or-thread): New interactive + function that intelligently deletes messages based on threading, + if the folder is threaded, or on subject if folder isn't threaded. + + * mh-utils.el (mh-show-delete-subject-or-thread): New interactive + function, callable from the show buffer, to intelligently delete + messages based on threading info or subject. + (mh-show-mode-map): Change binding of "k" to call + mh-show-delete-subject-or-thread. + + * mh-e.el (mh-folder-mode-map): Change binding of "k" to call + mh-delete-subject-or-thread. + + * mh-comp.el (mh-letter-mode-map): Add key binding for + mh-insert-identity. + + * mh-loaddefs.el: Regenerated. + +2002-12-21 Peter S Galbraith + + * mh-customize.el (mh-tool-bar-letter-set): Bug fix. The + `tool-bar-add-item-from-menu' items were broken. I can't use my + constants there. + +2002-12-21 Peter S Galbraith + + * mh-alias.el (mh-alias-insert-file): Bug fix. I never checked + that an AliasFile entry existed in .mh_profile. + +2002-12-21 Peter S Galbraith + + * mh-customize.el (mh-alias-insertion-location): New defustom. + Specifies where new aliases are entered in alias files. + + * mh-alias.el (mh-alias-add-alias-to-file): Use it. + +2002-12-21 Peter S Galbraith + + * mh-alias.el (mh-alias-add-alias-to-file): If ALIAS matches + exactly, prompt to [i]nsert before old value or [a]ppend after it. + (mh-alias-insert-file): Make sure we don't edit the passwd file. + Add optional argument for alias; If ALIAS is specified and it + already exists, try to return the file that contains it. + (mh-alias-which-file-has-alias): New function. Return the name of + writable file which defines ALIAS from list FILE-LIST. + (mh-alias-add-alias): Remove prompts for case of alias already + defined; done in mh-alias-add-alias-to-file. + +2002-12-21 Satyaki Das + + * mh-speed.el (mh-speed-folders-actual): Fix bug in parsing of + folder names that have spaces in them. The original function would + truncate the folder name at the first space. + (mh-speed-flists): Add -sequence option to flists. This guards + against the user specifying something other than the unseen + sequence in his .mh_profile. + (mh-speed-parse-flists-output-line): New function that parses a + single line in the output of flists to find the folder name and + the counts of unseesn and total messages. + (mh-speed-parse-flists-output): Fix parsing bug which truncates + the folder names at the first space. + + * mh-index.el (mh-index-generate-pretty-name): New function which + generates a nicer name for the search results. It trims white + space at the beginning and end and replaces white space with + underscores within the search regexp. + (mh-index-search): Use mh-index-generate-pretty-name. + + * mh-loaddefs.el: Regenerated. + +2002-12-20 Satyaki Das + + * mh-index.el (mh-index-new-folder): Add new folder to + mh-folder-list to enable name completion. + (mh-glimpse-execute-search, mh-swish-execute-search) + (mh-swish++-execute-search): Fix documentation. + + * mh-seq.el (mh-thread-generate): Fixed a stupid bug where the wrong + folder could get 'scan'ed when generating the threaded view. + + * mh-index.el (mh-index-search): If optional prefix arg is given + then the search in the current index buffer is redone. + (mh-glimpse-execute-search, mh-swish-execute-search) + (mh-namazu-execute-search): Documentation fixes. + + * mh-e.el (mh-index-previous-search): New buffer local variable + stores parameters of search that created the buffer. + (mh-folder-mode): Make mh-index-previous-search buffer local. + (mh-visit-folder): Tweak the function so that only a single window + with the folder buffer is shown if mh-showing-mode is nil. + + * mh-loaddefs.el: Regenerated. + +2002-12-19 Peter S Galbraith + + * mh-alias.el (mh-alias-add-alias): Bug fix. + +2002-12-19 Peter S Galbraith + + * mh-alias.el (mh-alias-add-alias): New interactive command. Add + ALIAS for ADDRESS in personal alias file. + (mh-alias-grab-from-field): New interactive command. Add ALIAS for + ADDRESS in personal alias file. + (mh-alias-add-address-under-point): New interactive + command. Insert an alias for email address under point. + (mh-alias-suggest-alias): New function. Suggest an alias for STRING. + (mh-alias-insert-file): New function. Return the alias file to + write a new entry in. + (mh-alias-address-to-alias): New function. Return the ADDRESS + alias if defined, or nil." + (mh-alias-from-has-no-alias-p): New function. Return t is From has + no current alias set. Used as tool-bar button enable function. + (mh-alias-add-alias-to-file): New function. Add ALIAS for ADDRESS + in alias FILE without alias check or prompts. + + * alias.xpm, alias.pbm: New tool-bar icon for + mh-alias-grab-from-field. + + * mh-e.el (mh-folder-line-matches-show-buffer-p): New function. + Return t if the message under point in folder-mode is in the show + buffer. + + * mh-utils.el (mh-goto-address-find-address-at-point): New + function copied from goto-addr.el, which we don't want to + force-load on users. Find e-mail address around or before point. + (mh-address-mail-regexp): New defvar. A regular expression + probably matching an e-mail address. + + * mh-customize.el (mh-alias-insert-file): New defcustom. + Filename to use to store new MH-E aliases. + (mh-tool-bar-folder-buttons): Enable mh-tool-bar-item-alias icon. + + * mh-comp.el (mh-extract-from-header-value): New function. + Extract From: string from header. + +2002-12-19 Satyaki Das + + * mh-index.el (mh-index-update-single-msg): New defvar controls + max number of command line args. + (mh-index-execute): New function which is to be used + instead of xargs so that we don't give the shell too many command + line args. + (mh-index-update-maps): Use mh-index-execute instead of xargs. + (mh-index-search): Remove unused code. Also the first message in + folder buffer is made current. + +2002-12-18 Peter S Galbraith + + * mh-loaddefs.el: Regenerated. + + * mh-comp.el (mh-letter-tool-bar-map): Moved to mh-customize.el + + * mh-e.el (mh-folder-tool-bar-map): Moved to mh-customize.el + + * mh-utils.el (mh-get-msg-num): autoloaded. + (mh-show-tool-bar-map): Moved to mh-customize.el + + * mh-customize.el (mh-tool-bar-item-*): 33 new defconsts for + tool-bar setup and customization. + (mh-tool-bar-folder-buttons-set): New function to setup the + tool-bar after customization. + (mh-tool-bar-folder-buttons): New defcustom to specify which icons + appears in the tool-bar. + (mh-tool-bar-letter-buttons-set): New function to setup the + tool-bar after customization. + (mh-tool-bar-letter-buttons): New defcustom to specify which icons + appears in the tool-bar. + (mh-tool-bar-show-set): New function to setup mh-letter-tool-bar-map. + (mh-tool-bar-letter-set): New function to setup + mh-letter-tool-bar-map. + +2002-12-18 Satyaki Das + + * mh-e.el (mh-folder-mode-map): Change entries for "\t", "\M-\t" + and backtab to call mh-index-next-folder and + mh-index-previous-folder as appropriate. + + * mh-index.el (mh-index-next-folder, mh-index-previous-folder): + New interactive functions which jumps to search results of next + and previous folders respectively. + + * mh-loadddefs.el: Regenerated. + + * mh-index.el (mh-index-delete-folder-headers): Arrange for + mh-goto-cur-msg to just go to the current message. + + * mh-e.el (mh-visit-folder): Since mh-scan-folder erases the whole + buffer anyway, we don't need to delete the folder headers. Also + index-data is non-nil only when the buffer folder doesn't exist. + So we need to call mh-make-folder. + (mh-folder-mode): Fix bug in that mh-index-checksum-origin-map was + not being made buffer local! + +2002-12-17 Satyaki Das + + * mh-e.el (mh-visit-folder): Fix bug. + + * mh-index.el (mh-md5sum-buffer): Buffer from which md5sum is run. + (mh-index-folder-first, mh-index-folder-last) + (mh-index-original-msg-list): Convenience macros aren't needed + anymore since the data structure has been changed. + (mh-index-update-single-msg): New function to update maps that + relate MD5 checksums to actual messages and vice-versa for a + single message. + (mh-index-update-maps): Do the above for all messages. If some + messages don't have MD5 checksums, they are annotated with the + result of md5sum. + (mh-index-search): Updated for the new version of mh-index-data. + (mh-msg-exists-p): New function to test a message exists. + (mh-index-insert-folder-headers): Updated for new mh-index-data. + (mh-index-delete-folder-headers): New function used to eliminate + original folder names from the buffer and make it look like a + plain folder buffer. This is used from mh-process-commands. + (mh-index-visit-folder): Use new version of mh-index-data. + (mh-index-match-checksum): New function which checks if the + X-MHE-Checksum header of a message matches. + (mh-index-execute-commands): New function that rmm's the original + messages. Then after mh-execute-commands executes it will seem + that the original messages were executed upon. This completes the + fix of SF #623321. + (mh-checksum-buffer): Renamed from mh-md5sum-buffer. + (mh-checksum-cmd, mh-checksum-parser): New globals to allow + different checksum programs to be used. + (mh-checksum-choose): New functions to find a checksum program. + (mh-openssl-parser, mh-md5sum-parser, mh-md5-parser): Functions to + parse the output of md5, md5sum and openssl. + (mh-index-update-maps): Use checksum parsing function. + (mh-index-search): Set checksum choice. Add a call to recenter, + otherwise the window point in the index buffer doesn't get set + properly. + + * mh-funcs.el (mh-pack-folder, mh-sort-folder): Enable these + functions in folders created by index search. + + * mh-e.el (mh-index-msg-checksum-map) + (mh-index-checksum-origin-map): New buffer local variables that + keep track of message checksums (used to implement + refiling/deletion for folders created by index folders). + (mh-last-msg): Make the function behave like mh-first-msg. + (mh-visit-folder): Add new optional argument which initializes + folders created by mh-index-search. + (mh-folder-mode): Make the variables mh-index-msg-checksum-map and + mh-index-checksum-origin-map buffer local. + (mh-process-commands): Call mh-index-execute-commands when called + from an index search buffer. This will reflect the changes being + made in the search folder to the original folders. + + * mh-loaddefs.el: Regenerated. + +2002-12-16 Satyaki Das + + * mh-index.el (mh-index-insert-folder-headers): Fix a bug which + caused the folder buffer to be marked as modified after rescanning + an index folder. + +2002-12-15 Satyaki Das + + * mh-e.el (mh-visit-folder): The function should insert folder + names if it is visiting a folder created by index search. + + * mh-index.el (mh-index-insert-folder-headers): The function now + maintains the old value of buffer-modified-p and temporarily makes + the buffer writable. + + * mh-utils.el (mh-show-index-visit-folder): New interactive + function callable from show buffer that displays search results + from one folder. + (mh-show-mode-map): Key binding for "v". + + * mh-speed.el: Fix credits. + (mh-index-folder-speedbar-buttons) + (mh-index-show-speedbar-buttons) + (mh-index-folder-speedbar-key-map) + (mh-index-show-speedbar-key-map) + (mh-index-folder-speedbar-menu-items) + (mh-index-show-speedbar-menu-items): Removed since the modes + mh-index-folder-mode and mh-index-show-mode no longer exist. + (mh-speed-extract-folder-name): Remove the bits about + mh-index-folder-mode and mh-index-show-mode. + + * mh-seq.el (mh-copy-seq-to-eob): Updated to work properly with + index search results. + (mh-region-to-msg-list): Skip over non-scan lines. + (mh-thread-inc, mh-thread-add-spaces, mh-thread-folder): Skip + non-scan lines when populating mh-thread-scan-line-map. + (mh-thread-folder, mh-toggle-threads): Move the check for buffer + modification from mh-thread-folder to mh-toggle-threads. + (mh-toggle-threads): When returning to unthreaded view insert the + folder names if called from a index folder. + + * mh-index.el: Fix credits and update commentary. + (font-lock-defaults, mh-index-buffer, mh-index-show-buffer) + (mh-index-ma-x-msg-index, mh-index-other-buffer) + (mh-index-matches, mh-index-previous-window-configuration) + (mh-index-current-msg, mh-index-folder-mode-keymap) + (mh-index-button-map, mh-index-folder-mode-help-messages): Remove + eliminated variables. + (mh-index-folder): New variable sets the MH folder under which the + index searches are stored. + (mh-index-folder-first, mh-index-folder-last) + (mh-index-original-msg-list): Convenience macros used to pull data + elements out of a list. If needed setf can be used to change them + as well. + (mh-index-search): Rewritten to create real folders where all the + normal folder operation. This partially fixes SF #623321 (refiles + and deletes doesn't work on original messages). + (mh-index-find-max-width, mh-index-search-again) + (mh-index-insert-scan, mh-index-callback, mh-index-search) + (mh-index-notate, mh-index-show, mh-index-header-display) + (mh-index-next, mh-index-folder-mode, mh-index-show-mode): + Functions, macros and modes removed. + (mh-folder-exists-p): New function to check if a folder exists. + (mh-index-new-folder): Generate a new folder name from a given + base string that mimics the way emacs generates buffer names. + (mh-index-insert-folder-headers): Insert folder names among the + search results. + (mh-index-visit-folder): New interactive function to show the + search results of one individual folder. + (mh-swish++-execute-search): Update documentation. + + * mh-funcs.el (mh-pack-folder, mh-sort-folder): Disable these + functions if index search results are being viewed. + + * mh-e.el (mh-folder-font-lock-keywords): Add highlight for + folder. + (mh-index-data): New buffer local variable that will be used to + store info about index search results. + (mh-rescan-folder): Implement rescanning for index search results. + (mh-folder-mode): Make mh-index-data buffer local. + (mh-remove-all-notation): Modified to take into account not all + lines in the folder buffer are normal scan lines. + (mh-folder-mode-map): Add key binding for "v" to jump to original + folder narrowed to search results. + + * mh-customize.el (mh-index-folder-face): Make it bold so that it + will look like before. + + * mh-loaddefs.el: Regenerated. + +2002-12-12 Satyaki Das + + * mh-seq.el (mh-map-to-seq-msgs): Modified so that it can be given + a list of messages in addition to a sequence. + (mh-region-to-sequence, mh-region-to-msg-list): The function + mh-region-to-msg-list replaces mh-region-to-sequence. The new + function avoids creating a dummy sequence in MH-E. + (mh-thread-delete, mh-thread-refile, mh-put-msg-in-seq): Modified + to use mh-region-to-msg-list. + + * mh-funcs.el (mh-copy-msg): Modified to use mh-region-to-msg-list. + + * mh-e.el (mh-delete-msg, mh-refile-msg, mh-undo): Modified to use + mh-region-to-msg-list. + + * mh-comp.el (mh-forward): Modified to use mh-region-to-msg-list. + The buffer-local variable mail-header-separator is no longer + bound. This fixes a bug where the default value of + mail-header-separator gets used if mh-forward is called in a fresh + emacs session. + (mh-annotate-msg): Update this so that it will handle message + lists too. + (mh-insert-letter): Make the test stronger. Since %d is being used + the argument better be an integer. + + * mh-loaddefs.el: Regenerated. + +2002-12-11 Satyaki Das + + * mh-funcs.el (mh-copy-msg): Add support for transient-mark-mode. + If mark is active and transient-mark-mode is enabled then all the + messages in the region are copied. + + * mh-seq.el (mh-list-sequences): Use mh-coalesce-msg-list to print + messages in sequence nicely. The prompt for the folder is removed + (the current folder is always used) and the output is made nicer + by not overflowing the screen width. + + * mh-loaddefs.el: Regenerated. + +2002-12-09 Satyaki Das + + * mh-comp.el (mh-letter-complete): Checkdoc fix. + + * mh-seq.el (mh-thread-current-indentation-level): New function + which returns the thread indentation level of current message. + (mh-thread-next-sibling, mh-thread-previous-sibling): New + interactive functions to jump to the next and previous siblings in + thread tree respectively. + (mh-thread-immediate-ancestor): New function to jump to ancestor + of current message in thread tree. + (mh-thread-ancestor): New interactive function to jump to + immediate ancestor or to root message of current thread depending + on optional argument. + + * mh-utils.el (mh-show-thread-ancestor) + (mh-show-thread-next-sibling, mh-show-thread-previous-sibling): + Interactive functions callable from the show buffer. + (mh-show-thread-map): Bindings for Tu, Tp and Tn. + + * mh-e.el (mh-thread-map): Bindings for Tu, Tp and Tn. + + * mh-loaddefs.el: Regenerated. + +2002-12-09 Satyaki Das + + * mh-seq.el (mh-region-to-sequence): Change name of region + sequence created to 'mhe-region. This avoids any chance of + collision with actual MH sequences. + (mh-put-msg-in-seq, mh-thread-delete, mh-thread-refile): Change + name of region sequence used to 'mhe-region. Also delete the + 'mhe-region sequence when done. + + * mh-e.el (mh-delete-msg, mh-refile-msg, mh-undo): Same as above. + + * mh-comp.el (mh-forward): Same as above. + + * mh-loaddefs.el: Regenerated. + +2002-12-08 Bill Wohler + + * mh-alias.el: Edited documentation. Broke up file into 2 + sections: Alias Loading and Alias Expansion. Made terminology + consistent (replaced expand, substitute, and translate with + expand). + (mh-alias-reload): Brought message in line with coding conventions + and made more concise too. + (mh-alias-translate): Renamed to mh-alias-expand. + (mh-alias-substitute-aliases-flag): Renamed to + mh-alias-expand-aliases-flag. + (mh-alias-reload-local-users): Renamed to mh-alias-local-users. + Now just returns an alist of local users rather than have + side-effects. + (mh-alias-reload): Set timestamp at beginning of function to catch + edge case when alias added just after ali runs. Changed logic to + reflect return value of mh-alias-local-users. + + * mh-customize.el (mh-alias-substitute-aliases-flag): Renamed to + mh-alias-expand-aliases-flag. + (mh-alias-local-users): Fixed documentation. + + * mh-loaddefs.el: Regenerated + +2002-12-08 Satyaki Das + + * mh-e.el (require): Load Gnus at compile time so that the + constant gnus-version is defined when MH-E is being compiled. + (mh-macro-expansion-time-gnus-version, mh-run-time-gnus-version): + Use the constant gnus-version instead of the function gnus-version + to find out about gnus version information. + (gnus-version): Remove the autoload since it is not needed any + more. + +2002-12-08 Bill Wohler + + * mh-e.el (mh-version): Moved compilation information in front of + Emacs information. The idea is that you start at MH-E and move + outwards. Show N/A if Gnus not compiled (be explicit). Matched + coding style with other output statements. (Aside: not that + efficiency matters here, but fewer calls to format have to be + faster, right? ;-). Matched output style of old output to new + statement--liked Satyaki's indentation better ;-). + +2002-12-08 Satyaki Das + + * mh-e.el (gnus-version): Autoload the function for use in + mh-version. + (mh-macro-expansion-time-gnus-version): New macro that finds the + Gnus version at macro expansion time. + (mh-run-time-gnus-version): New function to find the Gnus version + at run time. + (mh-version): Add information about Gnus versions available at + compile time and run time. + +2002-12-07 Peter S Galbraith + + * mh-alias.el (mh-alias-ali): Add optional argument. if USER is + t, then assume ALIAS is an address and call ali with option -user. + + * mh-alias.el (mh-alias-filenames): if ARG is t, appends list of + files from `mh-alias-system-aliases' to output list obtained from + mhparam output user list only. + (mh-alias-tstamp): Use it. + +2002-12-05 Satyaki Das + + * mh-mime.el (mh-inline-vcard-p): A new function which decides if + a vcard should be displayed inline. + (mh-mime-display-single): Use mh-inline-vcard-p to display + attached vcard as a signature if no other signature is present + (this partially addresses SF #649216). + +2002-12-05 Peter S Galbraith + + * mh-comp.el (mh-send-letter): Edits docs for mh-mml-to-mime + getting run if variable `mh-mml-compose-insert-flag' is set. + (mh-get-header-field): use buffer-substring-no-properties instead + of buffer-substring. + +2002-12-04 Peter S Galbraith + + * mh-loaddefs.el: Regenerated. + + * mh-customize.el (mh-customize): Add ;;;###mh-autoload tag. + +2002-12-04 Peter S Galbraith + + * mh-loaddefs.el: Regenerated. + + * mh-comp.el (mh-letter-complete): New command to do alias or word + completion in letter-mode. + (mh-letter-mode-map): Add \M-\t binding for mh-letter-complete. + + * mh-alias.el (mh-alias-letter-mode-expand-alias-hook): Obsolete. + Replaced by mh-letter-complete command. + (mh-alias-reload-maybe): New function to rebuild alias table if + out of date. + (mh-alias-letter-expand-alias): No longer interactive. Use + mh-letter-complete instead. + +2002-12-04 Peter S Galbraith + + * mh-customize.el (mh-letter-complete-function): New defcustom. + Function to call when completing outside of fields specified to + aliases. + + * mh-alias.el (mh-alias-filenames): + s/mh-mhparam-component/mh-profile-component/ + (mh-profile-component): Move to mh-utils.el and make interactive. + (mh-read-address): Make it autoloaded. + + * mh-loaddefs.el: Regenerated. + + * mh-comp.el (mh-read-address): Removed. Replaced by mh-alias + version. + + * mh-utils.el (mh-profile-component): Moved from mh-alias.el. + +2002-12-04 Satyaki Das + + * mh-seq.el (mh-msg-is-in-seq): Formatting change. + + * mh-index.el (mh-index-insert-scan): Remove unused variable. + +2002-12-04 Bill Wohler + + * mh-loaddefs.el: Regenerated. + + * Makefile (MH-E-SRC): Moved mh-loaddefs.el into MH-E-LOADDEFS as + this was causing a cycle. + (MH-E-LOADDEFS): New variable to house mh-loaddefs.el. + (emacs): Reintroduced autoloads. + (autoloads): We're baaa-aack! + (dist, install-emacs): Use MH-E-LOADDEFS. + + * mh-comp.el (mh-customize): Moved to mh-customize.el. + + * mh-customize.el (mh-customize): Moved here from mh-comp. Makes + more sense, doesn't it? + + * mh-alias.el, mh-comp.el, mh-e.el, mh-index.el, mh-mime.el, + mh-pick.el, mh-speed.el: Added mh-autoload cookie to all + interactive functions. + +2002-12-04 Satyaki Das + + * Makefile (world): Remove target. + (mh-loaddefs.el): Add comment that only GNU Emacs can be used to + regenerate mh-loaddefs.el. + + * mh-make.el: Removed. + +2002-12-04 Mark D. Baushke + + * mh-e.el (recursive-load-depth-limit): Only modify the limit + if it is an integer. + +2002-12-04 Peter S Galbraith + + * mh-utils.el (mh-header-field-beginning): New function. Move to + the beginning of the current header field. + +2002-12-04 Satyaki Das + + * mh-make.el (mh-files): Read in the MH-E filenames from the + environment variable where the Makefile puts it. + (mh-generate-autoloads, step2): Simplified since we now have the + complete file names. + + * Makefile (world): Pass the MH-E files into the script, so that + the filenames don't need to be repeated in the script. + +2002-12-04 Bill Wohler + + * mh-loaddefs.el: New file. Check in automatically generated file + and include in package for the benefit of those who don't want to + or can't compile. + + * Makefile (MH-E-SRC): Added mh-loaddefs.el now that it is checked + in and will be packaged. + (emacs): Removed autoloads. Adding mh-loaddefs.el to MH-E-SRC is + sufficient to build it. + (compile): Depend on MH-E-SRC instead of MH-E-OBJ and pass $? into + emacs so that Emacs is only invoked once to compile files. This + speeds things up by a factor of 3. It would be nice to only pass + those files that have been modified, but Emacs 21.4 will have + batch-byte-compile-if-not-done which we might be able to copy into + mh-make.el (or my proposed mh-e-dev.el which would be more + general-purpose). + (.SUFFIXES): Removed. Now that compile works directly on the + sources, the implicit rule is obsolete. + (autoloads): Deleted. See emacs change above. + +2002-12-03 Bill Wohler + + * Makefile (MH-E-SRC, emacs): + +2002-12-03 Satyaki Das + + * mh-make.el (mh-emacs): Make failing condition more strict. + (mh-loaddefs-end): Remove redundant statement. + + * Makefile (world): A little typo. The bug didn't seem to make any + difference though. + + * mh-make.el: New script that compiles MH-E. + (mh-loaddefs-beginning, mh-loaddefs-end): Don't save the autoloads + file in between. Only save at the end. + (mh-emacs-generate-autoloads, mh-xemacs-generate-autoloads) + (mh-generate-autoloads): Replace the separate functions in Emacs + and XEmacs with one that works in both variants. This simplifies + the script a lot. + (mh-generate-autoloads): doc fix. + + * Makefile (world): New target which works for both GNU Emacs and + XEmacs. + +2002-12-03 Peter S Galbraith + + * mh-alias.el (mh-mhparam-component): Don't raise error if call to + mhparam fails. + + * mh-alias.el (mh-alias-letter-expand-alias): Build alias table if + not already available. + +2002-12-03 Bill Wohler + + * mh-customize.el (mh-show-threads-flag): Alphabetized. + +2002-12-03 Jeffrey C Honig + + * Makefile: Moved .PHONY rule after all rule for compatibility + with BSD/OS's old pmake. + +2002-12-03 Mark D Baushke + + * mh-e.el (mh-get-new-mail): Simplify no-new-mail test. + (mh-add-cur-notation): Remove unnecessary function. + +2002-12-03 Peter S Galbraith + + * mh-identity.el (mh-identity-make-menu): Check if + 'mh-letter-mode-map' is bound, since this code also gets run when + mh-customize.el is loaded at startup. + +2002-12-03 Satyaki Das + + * mh-customize.el (mh-show-threads-flag): New customizable + variable which controls if new folders start of in threaded mode + (closes SF #646794). + + * mh-e.el (mh-rescan-folder): Fix the function so that threading + is preserved across rescans. + (mh-visit-folder, mh-inc-folder): The folder is threaded if it was + already threaded or if mh-show-threads-flag is non-nil and the + number of scan lines is fewer than mh-large-folders (closes SF + #646794). + +2002-12-02 Mark D Baushke + + * mh-e.el (mh-add-cur-notation): New function to mark the + current message with the mh-note-cur character. + (mh-get-new-mail): Use mh-add-cur-notation to undo the work of + mh-remove-cur-notation if there was no new mail (closes SF #647681). + + * mh-e.el (mh-set-cmd-note): Do not update the default mh-cmd-note + value (closes SF #643701). + +2002-12-02 Peter S Galbraith + + * mh-alias.el (mh-alias-reload): Renamed from mh-alias-learn-aliases. + (mh-alias-load-local-users): Renamed from mh-alias-learn-local-users. + (mh-alias-passwd-alist): New variable, holding aliases extracted + from the passwd file. + (mh-alias-tstamp): New variable storing the timestamp for alias + list generation. + (mh-read-address, mh-alias-reload, mh-alias-reload-local-users): + Complete rewrite. + (mh-alias-minibuffer-confirm-address): Use mh-alias-translate. + (mh-alias-translate): New function. Return translation for alias, + checking if in blind or passwd list. + (mh-alias-letter-expand-alias): Rewrite using + mail-abbrev-complete-alias from mailabbrev.el + (mh-alias-expand-alias-map): New variable. + (mh-alias-ali): New function. Return formatted string of + translated ALIAS from ali. + (mh-mhparam-component): New function. Return COMPONENT value from + mhparam, or nil if unset. + (mh-alias-filenames): New function. Provide list of alias + filenames from mhparam, or nil if none are set. + + * mh-customize.el (mh-alias-display-blind-name-on-completion-flag): + Obsoleted. + (mh-alias-timestamp): Renamed to mh-alias-system-aliases. + +2002-12-02 Bill Wohler + + * Makefile (mh-loaddefs.el): Suppress creation of backup file. + +2002-12-02 Mark D. Baushke + + * Makefile (mh-loaddefs.el): Simplify rule. + + * Makefile (clean): Remove mh-loaddefs.el* for good measure. + ($(MH-E-OBJ)): Depend on mh-loaddefs.el to compile these. + (autoloads, mh-loaddefs.el): Revamp rules. + (mh-loaddefs.el-tail, autoloads-gen): Remove rules. + + * mh-e.el (recursive-load-depth-limit): Do not try to + bump the value unless the variable exists. + + * mh-e.el (recursive-load-depth-limit): Bump value of + recursive-load-depth-limit to 50 to allow emacs 21.1 which + normally has a default value of 10 to be able to compile MH-E. + +2002-12-02 Satyaki Das + + * mh-funcs.el (mh-pack-folder, mh-sort-folder): Fix the functions + so that threading is preserved (needed for SF #646794). + + * mh-identity.el (mh-identity-signature-start) + (mh-identity-signature-end): Checkdoc fixes. + + * mh-e.el (mh-previous-unread-msg, mh-next-unread-msg): Checkdoc + fixes. + +2002-12-01 Satyaki Das + + * mh-identity.el (compile): Make mh-identity.el compile without + warnings. + + * mh-e.el (mh-previous-unread-msg, mh-next-unread-msg): New + interactive functions that go to next and previous unread + messages (closes SF #630328). + (mh-folder-mode-map): Add key bindings for M-n and M-p to + mh-folder-mode-map. + + * mh-utils.el (mh-show-next-unread-msg) + (mh-show-previous-unread-msg): New interactive functions that go + to the next and previous unread messages respectively. These are + callable from the show buffer. + (mh-show-mode-map): Add key bindings for M-n and M-p to + mh-show-mode-map. + +2002-12-01 Bill Wohler + + * mh-mime.el (mh-defun-compat): Make it indent like a defun. + + * mh-index.el (mh-defun-index): Make it indent like a defun. + + * mh-customize.el: New file (closes SF #643722). + + * Makefile (MH-E-SRC): Added mh-customize.el (closes SF #643722). + + * mh-speed.el, mh-pick.el, mh-mime.el, mh-index.el, mh-e.el, + mh-comp.el: Moved all defgroups, defcustoms, and deffaces to + mh-customize.el (closes SF #643722). + + * mh-utils.el (mh-xemacs-flag): Moved here from below since + needed by mh-customize.el. + (mh-customize): Required. mh-invisible-headers) + (mh-bury-show-buffer-flag, mhl-formfile): + Moved all defgroups, defcustoms, and deffaces to mh-customize.el + (closes SF #643722) . + + * mh-identity.el (mh-comp-loaded): New variable in a desparate + attempt to prevent an infinite loop. + (eval-when-compile): Was able to remove these defvars as they are + now predefined in mh-loaddefs and mh-customize. + (mh-identity-list-set): Added ;;;###mh-autoload cookie. + Moved all defgroups, defcustoms, and deffaces to mh-customize.el + (closes SF #643722). + + * mh-alias.el (mh-e): Require this, as it needs defcustoms, which + is in mh-customize which is required by mh-utils which is required + by mh-e. + Moved all defgroups, defcustoms, and deffaces to mh-customize.el + (closes SF #643722). + +2002-11-30 Satyaki Das + + * mh-e.el (mh-thread-map): Add key bindings "Td" and "To" (closes + SF #630493). + (mh-help-messages): Update help message for prefix map. + (mh-help-messages): Doc fix. + (mh-help-messages): Really fix it. + + * mh-utils.el (mh-show-thread-delete, mh-show-thread-refile): New + interactive functions corresponding to mh-thread-delete and + mh-thread-refile callable from the show buffer. + (mh-show-thread-map): Add key bindings for "Td" "To". + + * mh-seq.el (mh-narrow-to-seq, mh-put-msg-in-seq, mh-rename-seq) + (mh-narrow-to-subject, mh-delete-subject, mh-toggle-threads): Add + mh-autoload cookies. + (mh-thread-find-children): New function which finds the region + containing all children of a message. + (mh-thread-delete): New interactive function that marks for + deletion the current message and its children. + (mh-thread-refile): New interactive function that marks for + refiling the current message and its children. + +2002-11-30 Bill Wohler + + * mh-funcs.el, mh-identity.el, mh-index.el, mh-pick.el, mh-seq.el: + Removed MH-E autoloads. These are now provided by mh-loaddefs.el. + Added ;;;###mh-autoload tag to selected functions so that + autoloads for those functions can be automatically created in + mh-loaddefs.el (closes half of SF #643722). + + * mh-mime.el (mh-buffer-data): Moved to mh-utils where it is used. + Added ;;;###mh-autoload tag to selected functions so that + autoloads for those functions can be automatically created in + mh-loaddefs.el (closes half of SF #643722).. + + * mh-utils.el (mh-loaddefs): Added require. + (mh-buffer-data): Moved here from mh-mime.el as it is used in + mh-display-msg. + (mh-set-cmd-note): Moved to mh-e.el. + Removed MH-E autoloads. These are now provided by mh-loaddefs.el. + Added ;;;###mh-autoload tag to selected functions so that + autoloads for those functions can be automatically created in + mh-loaddefs.el (closes half of SF #643722).. + + * mh-e.el (mh-set-cmd-note): Moved here from mh-utils.el since it + uses mh-scan-format-file which is defined here. + Removed MH-E autoloads. These are now provided by mh-loaddefs.el. + Added ;;;###mh-autoload tag to selected functions so that + autoloads for those functions can be automatically created in + mh-loaddefs.el (closes half of SF #643722).. + + * mh-comp.el, mh-speed.el (mh-utils): Removed require. mh-utils is + provided via mh-e.el. + Removed MH-E autoloads. These are now provided by mh-loaddefs.el. + Added ;;;###mh-autoload tag to selected functions so that + autoloads for those functions can be automatically created in + mh-loaddefs.el (closes half of SF #643722).. + + * Makefile (emacs): Add dependency on autoloads. + (clean): Remove mh-loaddefs.el too. + (autoloads): New target. Builds mh-loaddefs.el. + (mh-loaddefs.el): New target. Initializes mh-loaddefs.el. + (mh-loaddefs.el-tail): New target. Appends to mh-loaddefs.el. + (autoloads-gen): Runs batch-update-autoloads to populate + mh-loaddefs.el (closes half of SF #643722).. + (auto-autoloads.elc): Renamed from autoloads to be explicit about + file that's created. + (custom-load.elc): Ditto. + +2002-11-30 Satyaki Das + + * mh-seq.el (mh-thread-last-ancestor): New variable which keeps + track of oldest ancestor of last message. If due to narrowing the + common ancestor of two messages is lost then one of them is + promoted to be the parent of the other. This variable helps in + this process. + (mh-thread-generate-scan-lines): Group messages which belong to + the same thread tree, even if a common ancestor is no longer + present. + (mh-thread-folder, mh-copy-seq-to-eob, mh-thread-inc): Bind + mh-thread-last-ancestor to nil when calling + mh-thread-generate-scan-lines. + + * mh-mime.el (font-lock): Font-lock required at compile time to + avoid warning about font-lock-maximum-size + (mh-display-smileys, mh-display-emphasis): Show graphical smileys + and emphasis only if message isn't too large. + + * mh-e.el (mh-visit-folder): Revisiting a buried folder which has + been threaded or narrowed confuses MH-E. Even though the folder is + displayed as not threaded and not narrowed, MH-E still believes + the folder is in the previous state. This can cause problems when + trying to narrow/thread the folder. The change fixes this. + + * mh-mime.el (mh-mime-display-alternative): The setting of + mh-display-buttons-for-inline-parts-flag was not being used when + displaying one of the alternatives. This change fixes that. + + * mh-comp.el (mh-show-buffer-message-number): Replace subseq with + substring. + (mh-filter-out-non-text): When filtering out MIME buttons from + yanked text, the last line of the MIME part was getting lost. The + fix avoids that and removes only the last new line instead. + +2002-11-29 Peter S Galbraith + + * Makefile (MH-E-SRC): Add mh-alias. + + * mh-alias.el: Assign copyright to FSF instead of myself. + (mh-read-address): Add support for emacs-21's + completing-read-multiple to prompt for multiple entries. + (mh-alias-PC-complete-address): Deleted. + (mh-alias-learn-aliases): Use mh-exec-cmd-quiet instead of old kludge. + (mh-alias-letter-mode-expand-alias-hook): Simplify. + (mh-alias-hostname): Deleted. + (mh-alias-substitute-aliases-flag): Change default to nil. + (mh-alias-display-blind-name-on-completion-flag) Change default to + nil. + (mh-alias-alist): Now holds alias values. + (mh-alias-lowercase-alist): Deleted. + (mh-alias-minibuffer-confirm-address, mh-alias-learn-aliases) + (mh-alias-learn-local-users, mh-alias-letter-expand-alias): Use + new mh-alias-alist instead of old mh-alias-lowercase-alist. + + * mh-alias.el: Moved from contrib/ directory. Now part of MH-E! + + * Makefile (MH-E-SRC): Add mh-identity. + + * mh-identity.el (mh-compose-and-send-mail, mh-insert-identity) + (mh-identity-make-menu, mh-identity-default, mh-identity-menu): + Moved to mh-comp.el. + + * mh-comp.el (mh-compose-and-send-mail): Add mh-identity support. + (mh-insert-identity, mh-identity-make-menu, mh-identity-default) + (mh-identity-menu): Added from mh-identity.el + +2002-11-29 Bill Wohler + + * mh-comp.el, mh-e.el, mh-funcs.el, mh-identity.el, mh-index.el, + mh-mime.el, mh-pick.el, mh-seq.el, mh-speed.el, mh-utils.el: + Ran indent-region, reformatted long lines, ran untabify. + (indent-tabs-mode): Set file local variable to nil. + +2002-11-29 Bill Wohler + + Released MH-E version 7.0. + + * mh-e.el (Version, mh-version): Updated for release 7.0. + + * mh-comp.el (subseq, search): Require cl instead of autoloading + these due to compilation warnings in CVS Emacs. + +2002-11-23 Bill Wohler + + * MH-E-NEWS: Emphasize the renaming of the variables at the top of + the notes. + +2002-11-22 Satyaki Das + + * mh-utils.el (mh-show-mode-map): Remove binding for RET since it + is not needed and the binding is more useful to toggle display of + MIME parts. + + * mh-mime.el (mh-mime-button-commands): Remove bindings for "i" + and "o" from MIME buttons. + (mh-insert-mime-button): Change comment to reflect change in + button key map. + +2002-11-21 Bill Wohler + + Released MH-E version 6.1.91. + + * mh-e.el (Version, mh-version): Updated for release 6.1.91. + + * MH-E-NEWS: Inline HTML parts supported with Gnus 5.10, not 5.9. + +2002-11-21 Mark D. Baushke + + * mh-comp.el (mh-letter-insert-signature-hook): This should be in + customize-group mh-compose. + +2002-11-21 Satyaki Das + + * mh-utils.el (load): Load mm-view.el here so that + mm-inline-text-html would be defined if available. + (mh-mm-inline-media-tests): If mm-inline-text-html is available + then use it, otherwise fall back on using mm-inline-text (closes + SF #641482). + + * mh-mime.el (load): Remove the load of mm-view here since it + happens in mh-utils.el now. + +2002-11-15 Bill Wohler + + Released MH-E version 6.1.90. + + * README (Compile): New section. Users must now compile MH-E due + to the vagaries of the various versions of gnus. + + * Makefile (MH-E-IMG): Added reply-all.pbm, reply-all.xpm, + reply-from.pbm, reply-from.xpm, reply-to.pbm, reply-to.xpm. + (MH-E-ETC-ETC): Added Makefile and README. + (dist): Depend on all, so clean happens. Don't add .elc files to + tarball as they are built upon installation now. + +2002-11-15 Satyaki Das + + * mh-e.el (mh-process-commands): Fix a bug in mh-execute-commands. + If called in threaded mode, cur was always getting set to the last + message in the folder. + +2002-11-14 Bill Wohler + + * mh-e.el (Version, mh-version): Updated for release 6.1.90. + + * MH-E-NEWS, README: Updated for release 7.0. + + * mh-utils.el (mh-index-search): Added full docstring which new + users will need before they run a search! + (mh-swish++-execute-search, mh-swish-execute-search, + mh-namazu-execute-search mh-glimpse-execute-search): Added + autoloads with full docstrings for the same reason! + + * mh-e.el (mh-limit-map): Removed / / alias for + mh-narrow-to-subject. + + * mh-utils.el (mh-show-thread-map): Removed / / alias for + mh-show-narrow-to-subject. + + * mh-seq.el (mh-delete-subject): Checkdoc fix. + + * mh-e.el (mh-help-messages): Added / prefix character to help + string. Tweaked / helpstring a little. + +2002-11-14 Mark D. Baushke + + * mh-utils.el (mh-set-cmd-note): Fix nitpick by adding one to the + width for cosmetic reasons. + +2002-11-14 Peter S Galbraith + + * mh-identity.el (mh-insert-identity): Fix a few things undone by + Jeff's patch. + (mml-insert-tag): Add autoload. + +2002-11-13 Mark D. Baushke + + * mh-identity.el (mh-insert-identity): A value of either nil or + "" should cause the field to be removed. + (mh-identity-list): Update the docstring. + +2002-11-13 Peter S Galbraith + + * mh-e.el (mh-limit-map): New key map for limits (subject for now). + * mh-utils.el (mh-show-limit-map): Same. + + * mh-seq.el (mh-delete-subject): Renamed from + mh-delete-subject-sequence. + (mh-narrow-to-subject): Renamed from mh-narrow-to-subject-sequence. + (mh-next-unseen-subject-sequence): Removed. :-( + * mh-e.el: Use 'em + * mh-seq.el: Use 'em. + +2002-11-13 Mark D. Baushke + + * mh-e.el (mh-alt-show): New defalias for mh-show. + (mh-alt-refile-msg): New defalias for mh-refile-msg. + (mh-alt-send): New defalias for mh-send. + (mh-folder-mode-map): Use mh-alt-show, mh-alt-refile-msg and + mh-alt-send for the alias bindings. + (mh-alt-visit-folder): New defalias for mh-visit-folder. + (mh-folder-map): Use it. + (mh-folder-message-menu): Revert previous change. + +2002-11-13 Peter S Galbraith + + * mh-e.el (mh-folder-message-menu): Make key binding "o" appear in + menu for mh-refile-msg. + +2002-11-13 Satyaki Das + + * mh-seq.el (mh-thread-generate-scan-lines): In threaded view, + scan lines of duplicate messages were too long. The change fixes + that. + +2002-11-13 Bill Wohler + + * mh-utils.el (mh-adaptive-cmd-note-flag): Improved grammar in + docstring. + + * mh-speed.el (mh-speed-run-flists-flag): While documenting this + variable in the release notes, I was unsure what would happen if + set to nil. So, I clarified the docstring and indicated + implications of setting this variable to nil, and offered manual + workaround. + +2002-11-13 Satyaki Das + + * mh-index.el (mh-index-quit): Fix documentation and run + mh-before-quit-hook and mh-quit-hook. + +2002-11-13 Bill Wohler + + * mh-utils.el (with-mh-folder-updating): Renamed local variable + mh-save-modification-flag to save-modification-flag. + +2002-11-12 Bill Wohler + + * mh-index.el (mh-index-keymap): Renamed to + mh-index-folder-mode-keymap to be a closer to the usual keymap + naming convention. Since we want our own keymap and not inherit + the one in mh-folder-mode, we need to use a suffix other than + -map. + + * mh-e.el (mh-folder-sequence-menu): s/Msg/Message. + s/Seq/Sequence. + (mh-folder-message-menu): s/Msg/Message. Removed redundant refile + item. + (mh-folder-folder-menu): Aligned symbols. + + * mh-index.el (mh-index-folder-message-menu): s/Msg/Message. + + * mh-utils.el (mh-show-sequence-menu): s/Msg/Message. + s/Seq/Sequence. + (mh-show-message-menu): s/Msg/Message. Removed redundant refile + item. + (mh-show-folder-menu): Aligned symbols. + +2002-11-12 Satyaki Das + + * mh-index.el (mh-index-matches, mh-index-current-match): Remove + these variables since they were only used for glimpse and grep. + Now the functionality of all the indexing programs will be + uniform. + (mh-index-search, mh-index-insert-scan, mh-defun-index) + (mh-index-show): Simplify functions since matches are no longer + shown. + (mh-index-parse-match): Remove function. + + * mh-e.el (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): New + variables to keep track of the widths of the different fields in + the scan lines. + (mh-scan-field-from-start-offset, mh-scan-field-from-end-offset) + (mh-scan-field-subject-start-offset): Offsets that are computed + from the scan line widths. + + * mh-seq.el (mh-copy-seq-to-eob, mh-thread-inc) + (mh-thread-parse-scan-line): Use new variables that remember the + various offsets in place of integer constants. + (mh-thread-generate-scan-lines): Space shouldn't be added here! + +2002-11-12 Bill Wohler + + * mh-e.el (mh-scan-format-mh, mh-scan-format-nmh): Noted that the + first column is column number 0 and changed "sixth column" to + "fifth column" accordingly. + + * mh-index.el (mh-index-folder-mode): Clarified method of replying + in mode documentation. + (mh-index-folder-tool-bar-map): s/mh-e/MH-E/. + + * mh-e.el (mh-generate-new-cmd-note): Try not to mention internal + variable mh-cmd-note in docstrings. + + * mh-utils.el (mh-adaptive-cmd-note-flag): Set default value to t. + Reworded docstring so it doesn't mention internal variable + mh-cmd-note. Added information about using fixed-width message + numbers. + (mh-cmd-note): Mention mh-set-cmd-note in docstring. Also suggest + that it is updated dynamically only if mh-scan-format-file is t. + (mh-set-cmd-note): Grammer fix in docstring. + (mh-cmd-note): Noted that the first column is column number 0. + + * mh-e.el (mh-scan-format-file): Added information about + mh-set-cmd-note and mh-adaptive-cmd-note-flag to docstring. + + * mh-index.el (mh-index-keymap): Added bindings for i + (mh-inc-folder), m (mh-send alias), and s (mh-send) since these + appear to be supported and are found in the toolbar. + (mh-index-folder-key-map): Ditto for f (mh-visit-folder alias), o + (mh-visit-folder) alias, and v (mh-visit-folder). + (mh-index-folder-mode-help-messages): Changes for above. + (mh-index-folder-message-menu, mh-index-folder-folder-menu): New + menus. I decided to delete the unavailable items since greying out + implies that the user can do something to access them. In this + case, that's not the case. Well, that's not entirely true--the + user could write code for those functions ;-). + (mh-index-folder-mode): Use new menus. + + * mh-utils.el (mh-prompt-for-folder): Added optional argument + default-string which can be used in case the string for default + isn't intuitive enough. + + * mh-index.el (mh-index-search): Made default prompt more + intuitive (I hope!). + +2002-11-11 Peter S Galbraith + + * mh-identity.el (mh-header-field-delete): Remove save-excursion. + Strange that this worked for me before... Thanks to Jeff for the + patch. + (mh-insert-identity): Numerous tweaks and fixes from Jeff who also + adds a nicer-looking MIME header for signatures inserted after + MIME insertions. + +2002-11-11 Satyaki Das + + * mh-seq.el (mh-thread-parse-scan-line): Generalize this function + so that it can take a string containing the scan-line as argument + in addition to using the line at point. + (mh-thread-add-spaces): New function to pad each scan line to the + appropriate length. This is called when mh-cmd-note is increased. + + * mh-e.el (mh-generate-new-cmd-note): Make this work on a threaded + folder by using mh-thread-add-spaces to pad the pre-existing lines + in mh-thread-scan-line-map appropriately. + (mh-thread-add-spaces): Autoload from mh-seq. + +2002-11-11 Mark D. Baushke + + * mh-index.el: Fix checkdoc nit. + + * mh-mime.el (mh-display-buttons-for-inline-parts-flag): Renamed + from mh-display-buttons-for-inline-parts. + (mh-mime-display-single): Use it. + This addresses part of SF #627015. + + * mh-e.el (mh-print-background-flag): Renamed from + mh-print-background. + * mh-funcs.el (mh-print-msg): Use it. + This addresses part of SF #627015. + + * mh-comp.el (mh-delete-yanked-msg-window-flag): Renamed from + mh-delete-yanked-msg-window. + (mh-yank-from-start-of-msg, mh-yank-cur-msg): Use it. + This addresses part of SF #627015. + + * mh-utils.el (mh-update-sequences-after-mh-show-flag): Renamed + from mh-update-sequences-after-mh-show. + (mh-show-msg): Use it. + This addresses part of SF #627015. + + * mh-utils.el (mh-decode-quoted-printable-flag): Renamed from + mh-decode-quoted-printable + (mh-display-msg, mh-decode-quoted-printable-have-mimedecode): + Use it. + This addresses part of SF #627015. + + * mh-utils.el (mh-recursive-folders-flag): Renamed from + mh-recursive-folders. + (mh-make-folder-list-background): Use it. + * mh-funcs.el (mh-list-folders): Ditto. + This addresses part of SF #627015. + + * mh-utils.el (mh-auto-folder-collect-flag): Renamed from + mh-auto-folder-collect. + (mh-find-path): Use it. + This addresses part of SF #627015. + + * mh-utils.el (mh-decode-mime-flag): Renamed from + mh-decode-mime. + * mh-utils.el (mh-show-mode, mh-show-xface) + (mh-decode-quoted-printable, mh-display-msg, mh-display-msg): Use it. + * mh-mime.el (mh-graphical-smileys-flag) + (mh-graphical-emphasis-flag): Ditto. + * mh-index.el (mh-index-search, mh-index-show): Ditto. + * mh-e.el (mh-header-display): Ditto. + This addresses part of SF #627015. + + * mh-e.el (mh-make-folder-mode-line): Use save-window-excursion + to get back to the current message. + +2002-11-10 Satyaki Das + + * mh-index.el (mh-index-keymap, mh-index-page-msg) + (mh-index-folder-tool-bar-map): Replace mh-index-scroll-up with + mh-index-page-msg. + (mh-index-keymap, mh-index-previous-page): Replace + mh-index-scroll-down with mh-index-previous-page. + +2002-11-09 Satyaki Das + + * mh-index.el (autoload/require): Load mh-mime when mh-index.el is + loaded. This fixes the infinite load loop. I am not sure what the + actual problem is. Also removed the nop requires/autoloads. + (mh-defun-index): Use the right argument for mh-recenter. + Otherwise it misbehaves for the default value of + mh-summary-height. + + * mh-e.el (mh-goto-next-button): Fix infinite loop when S-Tab was + used on first line of index folder buffer. + +2002-11-09 Peter S Galbraith + + * mh-index.el (mh-index-folder-tool-bar-map): Tool-bar for + mh-index-mode. + (mh-index-folder-mode): Use it. + (mh-index-keymap): Added mouse-2 binding, like in regular + folder-mode. + +2002-11-08 Satyaki Das + + * mh-index.el (mh-index-folder-mode): Fix doc string for major + mode. It was pointing to the wrong keymap. + (mh-index-show-mode): Fix doc string for mode. Also add mh-help + support. + + * mh-comp.el (mh-forward, mh-yank-cur-msg): Use new macro + mh-mark-active-p instead. This does the right thing for different + variants of Emacs. + (mh-yank-cur-msg): Add a space between sexprs. + + * mh-utils.el (mh-mark-active-p): New macro which papers over + diffences between GNU Emacs and XEmacs. The variables mark-active + and transient-mark-mode are used in GNU Emacs while zmacs-regions + and region-active-p are used in XEmacs. + + * mh-seq.el (mh-put-msg-in-seq, mh-thread-ancestor-p): Use + mh-mark-active-p as above. + + * mh-e.el (mh-delete-msg, mh-refile-msg, mh-undo): Use + mh-mark-active-p as above. + +2002-11-06 Peter S Galbraith + + * mh-comp.el (mh-yank-cur-msg): Fix for XEmacs. It didn't work + with a selected region, and left the inserted text selected (in + reverse video). I didn't use SF patch #402315 to implement this. + +2002-11-05 Peter S Galbraith + + * mh-utils.el (mh-show-tool-bar-map): Change call to + mh-tool-bar-search-command such that user can customize it for the + current session. + + * mh-e.el (mh-folder-tool-bar-map): Same. + +2002-11-05 Bill Wohler + + * mh-utils.el, mh-e.el (mh-tool-bar-search-function): Renamed from + mh-tool-bar-search-command. + + * mh-index.el (mh-index-search): Backed out previous change to + prompt. There ain't no folder named "all." + + * mh-utils.el (mh-tool-bar-search-command): Added mh-search-folder + and mh-index-search to the docstring so that user can easily click + on them for more information. + + * mh-pick.el (mh-search-folder): Mention that this function uses + the MH pick command to give the user more information when + choosing between mh-search-folder and mh-index-folder. + + * mh-index.el (mh-index-search): Edited the docstring. Direct the + user to mh-index-program if necessary. + (mh-index-program): Edited this docstring too. Viewing the help + in a *Help* buffer really exposes grammatical flaws. + +2002-11-05 Peter S Galbraith + + * mh-utils.el (mh-tool-bar-search-command): New defcustom to set + what search function to use in tool-bar. + (mh-show-tool-bar-map): Use it. + + * mh-e.el (mh-folder-tool-bar-map): Use it. + +2002-11-05 Bill Wohler + + * mh-index.el (mh-index-search): Changed default prompt from "+" + to "all". mh-prompt-for-folder doesn't seem to mind. + + * mh-e.el (mh-folder-folder-menu): Added menu entry for + mh-index-search. + + * mh-utils.el (mh-show-folder-menu): Added menu entry for + mh-index-search. + + * mh-index.el: Added commentary on supported search engines and + for getting started (initializing database). + +2002-11-04 Satyaki Das + + * mh-index.el (mh-index-keymap, mh-index-folder-key-map): Move key + binding of "i" to "Fi". + (mh-index-folder-mode-help-messages): Change help message to + reflect above change. + +2002-11-04 Bill Wohler + + * mh-index.el (mh-index-program, mh-indexer): Swapped names since + the former seems like a better user variable name. If you've + customized mh-indexer, be sure to toss it out and customize + mh-index-program. + +2002-11-04 Satyaki Das + + * mh-index.el (mh-indexer-choices): Not having the quotes in the + binary names is a bit nicer since that maintains uniformity with + the other names. + (mh-index-choose): Use symbol-value instead of eval. Eval should + be avoided except when it can't be :-). + +2002-11-04 Bill Wohler + + * mh-index.el (mh-index-program): New variable to hold the name of + the indexer that was found; use this instead of clobbering + user-customizable variable mh-indexer. + (mh-index-search): Use it. Added comments to keep others from + doing what I had done (fortunately, I caught myself before + checking it in ;-). + (mh-index-choose): Set mh-index-program instead of mh-indexer. + Update docstring to describe side-effects. + + * mh-index.el (mh-indexer): Added swish++ to docstring. Chances + are good that if someone has both swish++ and swish, they want to + use the much faster, much smaller swish, so move it up in the + list. + (mh-indexer-choices): Ditto for rationale for moving swish++ up in + priority over swish. Also, use -binary symbols instead of + hard-coding binary names. This allows package installers to + customize the location of the binaries in site-lisp and still have + the auto-detection code work. It also allows one to have alternate + binary names (see mh-swish++-binary). + (mh-index-search): Ditto (moving swish++ up). + (mh-swish++-binary): Look for search++, then search. The rationale + is that a package maintainer may rename search to search++ if + search is already in use (e.g., Debian) so try it first. + (mh-swish++-execute-search): Replaced Satyaki's path with dummy + path in docstring. Also removed RecurseSubdirs since this is the + default. Added comment that index might be named index++ on some + systems (e.g., Debian). + (mh-index-choose): Updated to work with new mh-indexer-choices. + +2002-11-04 Peter S Galbraith + + * mh-identity.el (mh-identity-list-set): Don't call easy-menu-add + here, since that adds the menu to the Customize buffer in XEmacs. + +2002-11-04 Peter S Galbraith + + * mh-comp.el (mh-mhn-compose-insert-flag) + (mh-mml-compose-insert-flag): Removed eval-when-compile defvar. + + * mh-mime.el (mh-mhn-compose-insert-flag) + (mh-mml-compose-insert-flag): Move variables to mh-utils.el. + Fixes mh-letter-menu for XEmacs. + +2002-11-04 Eric Ding + + * mh-comp.el (mh-rejected-letter-start): add another string + +2002-11-04 Eric Ding + + * mh-comp.el (mh-rejected-letter-start): regexp-opt doesn't take + regexps as args, only regular strings + +2002-11-04 Peter S Galbraith + + * mh-comp.el (mh-insert-mail-followup-to): Don't modify a + pre-existing M-F-T field. If a nmh replgroupcomps propagates a + M-F-T field in a message reply, then we have to have it alone. + +2002-11-02 Bill Wohler + + * mh-comp.el, mh-e.el, mh-funcs.el, mh-identity.el, mh-index.el, + mh-mime.el, mh-pick.el, mh-seq.el, mh-speed.el, mh-utils.el, + mh-xemacs-compat.el: Added Local Variables section. Defined + sentence-end-double-space to be nil so that those who might not + buy my setting of this variable can at least run checkdoc without + a whole lot of noise. + +2002-11-02 Peter S Galbraith + + * mh-identity.el: New file. Multiple Identify support for MH-E. + Used to easily set different fields such as From and Organization, + as well as diffrent signature files. This file won't be included + with V7.0. + +2002-11-02 Bill Wohler + + * mh-mime.el (mh-mm-save-part): New function to wrap mm-save-part + from Gnus 5.10 to make it explicit which code has been + commandeered. + (mh-mime-save-part): Call mh-mm-save-part instead of cut-n-pasted + code from Gnus 5.10. + +2002-11-02 Peter S Galbraith + + * mh-comp.el (mh-yank-from-start-of-msg): Edit docstring to + mention related variables mh-reply-show-message-flag and + mh-delete-yanked-msg-window. + (mh-reply): Change the "Reply to whom" prompt. + +2002-11-01 Bill Wohler + + * mh-e.el (mh-show-hook): Moved to mh-utils.el where it is used. + (mh-folder-list-change-hook): Converted this from defvar in other + files to defcustom here. It is called, not documented as + obsolete, and might as well be documented. + (mh-inc-folder, mh-quit, mh-delete-a-msg, mh-refile-a-msg, + mh-process-commands, mh-update-unseen): Added missing + documentation about hook, or made verbiage about hook consistent + throughout, even if the function isn't interactive. + + * mh-utils.el (mh-folder-list-change-hook): Moved defvar to mh-e + and made it a defcustom. + (mh-show-mode-hook): Put it back in (actually, it was in mh-e.el, + but this is the place where it is called). + (mh-show-hook): Moved here from mh-e.el since it's called here. + (mh-show-mode): Call mh-show-mode-hook. + (mh-show-mode, mh-show-msg, mh-find-path, mh-prompt-for-folder, + mh-prompt-for-folder, mh-set-folder-list): Added missing + documentation about hook, or made verbiage about hook consistent + throughout, even if the function isn't interactive. + + * mh-comp.el (mh-send-letter): Made verbiage about hook consistent + throughout. + (mh-insert-prefix-string): Made docstring more descriptive of what + is going on. + + * mh-funcs.el (mh-kill-folder): Added missing documentation about + hook. + + * mh-index.el (mh-index-show-hook): Moved defvar to defcustom. + (mh-index-show): Made verbiage about hook consistent throughout. + + * mh-mime.el (mh-edit-mhn-hook): Moved defvar to defcustom. + (mh-edit-mhn): Added missing documentation about hook. + + * mh-pick.el (mh-pick-mode): Made verbiage about hook consistent + throughout. Call the damn hook. + +2002-11-01 Satyaki Das + + * mh-comp.el (mh-insert-mail-followup-to-list): Fix typo so that + it will look right in info. + + * mh-index.el (mh-index-search): Change argument name from + new-buffer-p to new-buffer-flag. + (mh-index-search-again, mh-index-search): New index-buffers were + being named *mh-index*<2>, *m-index*<2><2> and so on. This problem + is fixed. + (mh-index-scroll-up, mh-index-scroll-down): Scrolling in index + show buffers (after the first one) was broken. + (mh-index-quit): Bury show buffer instead of killing it. Killing + it, without killing the corresponding folder buffer, can cause + confusion with two folder buffers trying to display in the same + show buffer. + + * mh-seq.el (mh-thread-prune-containers): Rewritten without + recursion. Also removed the top-level-p argument since it isn't + required anymore. + (mh-thread-sort-containers): New function factored out from + previous definition of mh-thread-prune-containers. It sorts + message containers in ascending order wrt their message indices. + (mh-thread-generate): Use new mh-thread-prune-containers. + + * mh-e.el (mh-remove-all-notation): Fix the test. It was testing + at the wrong place! + +2002-10-31 Bill Wohler + + * Makefile, README, import-emacs, mh-comp.el, mh-e.el, + mh-funcs.el, mh-index.el, mh-mime.el, mh-pick.el, mh-seq.el, + mh-speed.el, mh-utils.el: Replaced mh-e with MH-E. + +2002-10-31 Satyaki Das + + * mh-seq.el (mh-thread-parse-scan-line): Modified to remove user + sequence notation and leave notation for other things alone. This + ensures that threading doesn't lose notations for replied-to + messages. + + * mh-e.el (mh-inc-folder): Remove call to mh-widen here and + instead do it in mh-get-new-mail. This way the widening happens + only if new mail is incorporated. + (mh-generate-new-cmd-note): The function now returns the point + from which the new messages start. This will allow threading to do + the right thing. + (mh-get-new-mail): Always call mh-remove-cur-notation. Otherwise + adaptive scan mode leaves two messages marked as current in + certain cases. Fix indentation of if statement. If there are + messages to be incorporated, the folder is widened. If mh-cmd-note + changes set start-of-inc correctly. + (mh-remove-all-notation): Change this function to only remove user + sequence notation and leave notation for replied-to messages and + similar notation alone. This means operations like narrowing to + subject sequence and widening don't lose notations. + +2002-10-31 Bill Wohler + + * mh-comp.el (mh-insert-mail-followup-to-list): Fixed typo in + docstring and other minor edits. Checkdoc removed trailing spaces. + (mh-insert-signature): Checkdoc flagged docstring. Reverted to + previous value. Added specific name of hook that is run. + (mh-regexp-in-field-p, mh-insert-letter): Checkdoc removed + trailing spaces. + +2002-10-31 Jeffrey C Honig + + * mh-e.el (mh-show-mode-hook): Remove the unused + mh-show-mode-hook, mh-show-hook is the one that is used. + + * mh-utils.el (mh-show-mode): Change the documentation to refer to + mh-show-hook instead of the unused mh-show-mode-hook. + +2002-10-31 Peter S Galbraith + + * mh-comp.el (mh-insert-mail-followup-to-list): Set default to nil + and include example in doc string. + +2002-10-31 Satyaki Das + + * mh-index.el (mh-indexer): Add customization choice for swish++. + (mh-indexer-choices): Add swish++ choice. + (mh-index-search): Change doc to reflect addition of swish++ option. + (mh-swish++-binary, mh-swish++-directory): New variables for + swish++ interface. + (mh-swish++-execute-search): New function to execute swish++ + search. + (mh-swish++-next-result): Function aliased to mh-swish-next-result + since the result format of swish++ is the same as that of swish-e. + (mh-index-search): Always overwrite window-configuration with new + value. This is needed since we don't kill the index-buffer when + quitting which means the window configuration wasn't getting set + properly. + (mh-index-search-again): If index buffer is reused, reset the old + window config to its original value. + +2002-10-30 Bill Wohler + + * Makefile (emacs, xemacs): New targets. + (all): Use these targets instead of calling specific targets. + (.PHONY): Added emacs, xemacs, autoloads, custom-loads. Broke up + target and moved pieces into their own sections. + + +2002-10-30 Peter S Galbraith + + * mh-utils.el (mh-show-font-lock-keywords): Wrap an + 'eval-and-compile around its defvar, otherwise byte-compilation + fails on `mh-show-font-lock-keywords-with-cite'. + +2002-10-29 Jeffrey C Honig + + * mh-comp.el (mh-letter-insert-signature-hook) + (mh-insert-signature): Add a hook to be called before inserting + the signature. Do not attempt to insert the signature if + mh-insert-signature-file-name is nil. + +2002-10-29 Peter S Galbraith + + * mh-e.el (mh-inc-folder): Call mh-widen when mh-narrowed-to-seq + (Closes SF #629233: inc in narrowed folder suboptimal) + + * mh-comp.el (mh-insert-letter): Stop using mhl to include a + message before it mangles the header, and supercite fails + (Closes SF #629153: mh-insert-letter uses mhl?). + (mh-insert-prefix-string): Leave point at beginning instead of + end, since that's what sc-cite-original does. + (mh-yank-cur-msg): Adjust for mh-insert-prefix-string change. + +2002-10-30 Steve Youngs + + * mh-e.el (mh-folder-mode): Check for 'font-lock-auto-fontify' + when in XEmacs so we don't do font-locking unconditionally. + + * mh-utils.el (mh-show-mode): Ditto. + +2002-10-29 Peter S Galbraith + + * mh-e.el (mh-folder-refiled-face, mh-folder-cur-msg-number-face) + (mh-folder-to-face, mh-folder-body-face): Define faces instead of + copying them from font-lock faces. This mh-e will look the same + in XEmacs as it does in Emacs. + * mh-utils.el (mh-show-cc-face, mh-show-date-face) + (mh-show-header-face): Ditto. + +2002-10-29 Jeffrey C Honig + + * mh-comp.el (mh-send-letter): I meant to use + mh-goto-header-field, not mh-get-header-field. The former returns + nil if the header is not found and doesn't need a conditional. + +2002-10-29 Peter S Galbraith + + * mh-comp.el (mh-forward): Bug fix. Change 'kill-line for a + 'delete-region, because I don't want that text yanked with C-y. + + * mh-seq.el (mh-put-msg-in-seq): Add support for selected + region (Closes SF feature request #630324). + +2002-10-28 Satyaki Das + + * mh-seq.el (mh-thread-prune-subject): Make the regexp a little + general so that a subject of the form "Re[218]: howdy" would be + properly pruned. + + * mh-mime.el (mh-mime-save-part): Copy function definition of + mm-save-part from cvs gnus since that function is buggy in gnus + that comes with emacs21.2. + +2002-10-28 Peter S Galbraith + + * mh-e.el (mh-scan-subject-regexp): Add an expression to match an + optional bracketed number after "Re", such as in "Re[2]:" + (Patch by Satyaki; I checked it and applied). + (mh-folder-font-lock-subject): Adapt to new mh-scan-subject-regexp. + * mh-seq.el (mh-subject-to-sequence): Ditto. + + * mh-e.el (mh-folder-sequence-menu): Remove "Toggle Subject + Thread" from menu. mh-toggle-threads is in the Folder menu. + + * mh-e.el (mh-folder-sequence-menu): Minor menu text edits. + + * mh-utils.el (mh-show-update-sequences): Added to + mh-defun-show-buffer builds; needed for menu. + (mh-show-sequence-menu, mh-show-message-menu) + (mh-show-folder-menu): 3 new menus in mh-show-mode-map that mirror + the menus used in mh-folder-mode. + (mh-show-mode): easy-menu-add the 3 menus. + +2002-10-28 Satyaki Das + + * mh-utils.el (mh-goto-msg): Fix the regexp to search so that we + go to the right message. In a threaded folder message 2 may be + present after 26 and the previous regexp would go to 26 when we + really wanted to go to 2! + + * mh-seq.el (mh-widen): Add call to mh-recenter to make it like + mh-narrow-to-seq. + +2002-10-28 Bill Wohler + + * mh-utils.el (mh-show-mime-save-parts): Deleted definition. + (mh-show-mime-map, tool-bar-map): Use mh-mime-save-parts instead + of mh-show-mime-save-parts. + +2002-10-28 Peter S Galbraith + + * mh-comp.el (mh-letter-tool-bar-map): tool-bar-add-item key name + bug fix. + * mh-utils.el (mh-show-tool-bar-map): Same. + * mh-e.el (mh-folder-tool-bar-map, mh-folder-seq-tool-bar-map): Same + +2002-10-27 Satyaki Das + + * mh-seq.el (mh-toggle-threads): Add call to mh-recenter to make + its behavior like that of mh-narrow-to-seq. + +2002-10-27 Bill Wohler + + * mh-mime.el (mh-mime-save-parts): Renamed from + mh-store-mime-parts for consistency with mh-mime-save-part. Fixed + bug whereby mh-mime-save-parts-directory was not getting + initialized properly from a string-valued + mh-mime-save-parts-default-directory. + (mh-mime-save-parts-default-directory): Ditto. Check your + customizations! + (mh-mime-save-parts-directory): Ditto. + + * mh-utils.el (mh-show-mime-save-parts): Renamed from + mh-store-mime-parts. + (mh-show-mime-map): Added keybinding "K a" for + mh-show-mime-save-parts. + + * mh-e.el (mh-mime-save-parts) Renamed from mh-store-mime-parts. + (mh-mime-map): Added keybinding "K a" for mh-mime-save-parts. + (mh-help-messages): Added help for "K a". + +2002-10-27 Peter S Galbraith + + * mh-comp.el (mh-search-addr-regexp, mh-regexp-in-field-p): Rename + the first to the second (and recode a bit). + (mh-insert-mail-followup-to): Use it. + +2002-10-27 Bill Wohler + + * mh-utils.el (mh-invisible-headers): Backed out change. Removed + Mail-Followup-To due to objections from Peter and Mark. + +2002-10-27 Satyaki Das + + * mh-seq.el (mh-msg-is-in-seq): Modified to show info about + whether the message being queried about has been marked to be + deleted or refiled. + + * mh-mime.el (mh-insert-mime-security-button): Make + pressed-details a local. + +2002-10-27 Steve Youngs + + * .cvsignore: New file. + +2002-10-26 Steve Youngs + + * mh-seq.el (mh-notate-deleted-and-refiled): Don't bind local + variable 'dest', it isn't used anywhere. + + * mh-pick.el (mh-do-pick-search): Don't bind local variable + 'finding-messages', it isn't used anywhere. + + * mh-utils.el: Byte-compiler warning suppression. + (mh-gnus-article-highlight-citation): Rather than redefining + 'gnus-cite-face-list', just re-order it. + (mh-show-mode): Force turning on font-lock in XEmacs. + + * mh-seq.el: Byte-compiler warning suppression. + + * mh-index.el: Byte-compiler warning suppression. + + * mh-comp.el: Byte-compiler warning suppression. + + * mh-xemacs-compat.el: Add defaliases for 'timerp' & + 'cancel-timer' to the equivalent 'itimer' functions. + (rfc822): Require it for 'rfc822-goto-eoh'. + Byte-compiler warning suppression. + + * mh-e.el (mh-folder-mode): Force turning on font-lock in XEmacs. + (mh-toggle-threads): Remove duplicate autoload. + Byte-compiler warning suppression. + (mh-folder-unseen-seq-list): Use 'with-temp-buffer' to fix a bug + in XEmacs when font-lock is on. + (mh-folder-unseen-seq-name): Ditto. + +2002-10-27 Mark D. Baushke + + * Makefile: Reorganize to allow for building also compiling for + XEmacs too. Sanitize so that it will work using least-common + denominator versions of 'make'. Tested using GNU make, Solaris make, + and Berkely make. + (all): Use recursive invokation based on the emacs or xemacs + executable passed on the 'make EMACS=xemacs' command line. + (XEMACS_OPTIONS): The incantation to be passed to an xemacs editor + to compile things properly. + (AUTO_PRELOADS): Magic XEmacs glue. + (clean): Ditto. + (autoloads): Ditto. + (custom-loads): Ditto. + +2002-10-26 Satyaki Das + + * mh-e.el (mh-last-msg): Add call to mh-recenter. + +2002-10-26 Peter S Galbraith + + * mh-comp.el (mh-search-addr-regexp, mh-re-search-to-cc): Remove + `mh-re-search-to-cc' in favour of more generalized new function + `mh-search-addr-regexp'. + (mh-insert-mail-followup-to): Use it. + +2002-10-26 Satyaki Das + + * mh-seq.el (mh-copy-seq-to-eob): Avoid rethreading when the + folder is already threaded. This is more efficient and also avoids + problems when the folder is widened. + (mh-thread-inc): Don't try to restore the point to original + location since mh-inc-folder from where this is called changes + point location after calling this function. + + * mh-e.el (mh-make-folder-mode-line): Fix a small bug where the + test was wrong. + +2002-10-26 Peter S Galbraith + + * mh-comp.el (mh-insert-mail-followup-to): Fix for new defcustom. + +2002-10-26 Satyaki Das + + * mh-seq.el (mh-notate-deleted-and-refiled): Remove unused binding + of dest. The problem was pointed out by Steve as well. + + * mh-e.el (mh-toggle-threads): Remove duplicate autoload as + pointed out by Steve. + +2002-10-26 Bill Wohler + + * mh-utils.el (mh-invisible-headers): Added Mail-Followup-To. + +2002-10-26 Peter S Galbraith + + * mh-comp.el (mh-insert-mail-followup-to-list): Change defvar to + defcustom. + +2002-10-25 Satyaki Das + + * mh-e.el (mh-remove-all-notation): New function that removes all + notation. + + * mh-seq.el (mh-narrow-to-seq): When hiding the original folder + remove all notation. This avoids stale notation hanging around. + Also changes in show buffer and position in folder buffer are + avoided if possible. + (mh-widen): When widening the scan-lines are notated based on the + current state of the folder. This means any changes made when the + folder was narrowed are shown consistently. + (mh-notate-deleted-and-refiled): Update the documentation. + (mh-thread-parse-scan-line): For some reason the ASCII value of + the space character was being used here. This is fixed. + (mh-thread-inc, mh-toggle-threads): Avoid change of point in + folder and message being displayed in shown buffer. + + * mh-utils.el (mh-recenter): Rewrite mh-recenter to show fewer + blank lines when point is towards the end of the folder buffer. + +2002-10-25 Peter S Galbraith + + * mh-comp.el (mh-insert-mail-followup-to-flag): New boolean + defcustom to append a Mail-Followup-To field to the header. The + insertion is done if the To: or Cc: fields matches an entry in + `mh-insert-mail-followup-to-list'." + (mh-insert-mail-followup-to-list): New defvar. List of addresses + for which a Mail-Followup-To field is inserted. + (mh-re-search-to-cc): New function. Search for REGEXP in To: and + Cc: fields. + (mh-insert-mail-followup-to): New function. Insert + Mail-Followup-To: if To or Cc match `mh-insert-mail-followup-to-list'. + (mh-compose-and-send-mail): Call mh-insert-mail-followup-to if + mh-insert-mail-followup-to-flag is true. + +2002-10-25 Mark D. Baushke + + * mh-utils.el (mh-show-maximum-size): New variable to control + the display of large messages. + (mh-display-msg): Use it (Closes SF #488696). + + * mh-seq.el (mh-toggle-threads): Checkdoc fix. + + * mh-e.el (mh-reset-threads-and-narrowing): Checkdoc fix. + + * mh-comp.el (mh-insert-x-mailer-flag): Renamed from + mh-insert-x-mailer-p. Update docstring. + (mh-send-letter): Use it. + (mh-reply-show-message-flag): Renamed from + mh-reply-show-message-p. Update docstring. + (mh-reply): Use it. + This addresses part of SF #627015. + + * mh-e.el (mh-recenter-summary-flag): Renamed from + mh-recenter-summary-p. Update docstring. + (mh-set-scan-mode): Use it. + This addresses part of SF #627015. + +2002-10-25 Satyaki Das + + * mh-e.el (mh-reset-threads-and-narrowing): New function which + resets all thread and narrowing state to completely unthreaded and + widened state. As a side effect, the folder buffer is erased. + (mh-rescan-folder): Reset threads and narrowing state. + + * mh-funcs.el (mh-pack-folder-1): Reset threads and narrowing state. + + * mh-seq.el (mh-copy-seq-to-eob): Change mh-view-ops after + threading is over so that if user aborts threading, it doesn't + leave mh-e in an inconsistent state. + (mh-toggle-threads): Use mh-scan-folder to populate the folder + buffer instead of mh-rescan-folder which resets threading and + narrowing state. + +2002-10-24 Bill Wohler + + * mh-e is completely checkdoc clean now. + + * mh-utils.el (mh-clean-message-header-flag): Renamed from + mh-clean-message-header. + (mh-bury-show-buffer-flag): Renamed from mh-bury-show-buffer. + (mh-show-use-goto-addr-flag): Renamed from mh-show-use-goto-addr. + This addresses part of SF #627015. + + * mh-mime.el (mh-clean-message-header-flag): Renamed from + mh-clean-message-header. + Checkdoc fixes. This addresses part of SF #627015. + + * mh-index.el (mh-clean-message-header-flag): Renamed from + mh-clean-message-header. This addresses part of SF #627015. + + * mh-funcs.el (mh-do-not-confirm-flag): Renamed from + mh-do-not-confirm. This addresses part of SF #627015. + + * mh-e.el (mh-do-not-confirm-flag): Renamed from + mh-do-not-confirm. + (mh-clean-message-header-flag): Renamed from + mh-clean-message-header. + This addresses part of SF #627015. + + * mh-comp.el: checkdoc fixes. + +2002-10-24 Satyaki Das + + * mh-seq.el (mh-copy-seq-to-eob): Rewritten to scan the headers + fresh instead of yanking from buffer. This is needed to get + correct threading in copied sequence. + (mh-thread-inc, mh-thread-update-scan-line-map) + (mh-thread-parse-scan-line): Eliminate the use, and hence the + definition of, the kludgy mh-thread-update-scan-line-map. Instead + the functions mh-notate-deleted-and-refiled and + mh-notate-user-sequences are used to get the message marks right. + (mh-thread-generate-scan-lines): Updated to allow the thread tree + to be used in a narrowed folder buffer. + (mh-thread-folder, mh-toggle-threads): Remove + mh-folder-threaded-view-flag. + (mh-thread-old-scan-line-map): New buffer-local variable that + remembers the original scan-line map so that the sequence thread, + narrow, widen will work. + (mh-narrow-to-seq, mh-widen): Remember the scan-line map when + narrowing and restore it when widening. + + * mh-e.el (mh-folder-threaded-view-flag, mh-folder-folder-menu) + (mh-regenerate-headers, mh-get-new-mail) + (mh-make-folder-mode-line, mh-process-commands) + (mh-delete-scan-msgs): Remove mh-folder-threaded-view-flag. + Instead (memq 'unthread mh-view-ops) is used to test if the folder + is threaded. + + * mh-mime.el (mh-display-emphasis): Shadow article-goto-body here + since we want to do emphasis on the whole of the region and not + just after the first blank line. + (mh-mm-display-part): When displaying a text part show smilies and + emphasis. + + * mh-index.el (mh-index-insert-scan): Attempt to keep number of + args to scan small if there are lots of adjacent matches. + (mh-index-quit): Bury index-buffer on quit instead of killing it. + This behavior is more like that of mh-quit. + + * mh-seq.el (mh-widen): If folder was threaded after narrowing + then make mh-widen undo the threading instead of erroring out. + +2002-10-24 Peter S Galbraith + + * mh-seq.el (mh-toggle-threads): Add a cond (as suggested by + Satyaki) to properly unthread a narrowed-to-sequence. + + * mh-seq.el (mh-thread-generate-scan-lines): Fix threading + breakage from partial switch to mh-container-real-child-flag and + to dupl-flag. + + * mh-comp.el (mh-yank-cur-msg): Bug fix: specify + (eq t mh-yank-from-start-of-msg) when that's what we want. + +2002-10-24 Mark D. Baushke + + * mh-seq.el (mh-thread-prune-subject): Renamed subject-pruned-p as + subject-pruned-flag. + (mh-thread-inc): Renamed old-buffer-modified-p as + old-buffer-modified-flag. + (mh-thread-generate-scan-lines): Renamed dupl-p as dupl-flag. + This addresses part of SF #627015. + + * mh-index.el (mh-index-advance): Renamed backward-p + local variable as backward-flag. + (mh-index-next-button): Renamed backward-p + argument as backward-flag. + (mh-index-show): Renamed display-headers-p argument as + display-headers-flag. + This addresses part of SF #627015. + + * mh-e.el (mh-scan-format, mh-version): Use mh-nmh-flag. + (mh-folder-mime-action): Renamed include-security-p + argument as include-security-flag. + (mh-goto-next-button, mh-next-button): Renamed backward-p + argument as backward-flag. + (mh-get-new-mail): Renamed new-mail-p local variable as + new-mail-flag. + (mh-goto-cur-msg): Renamed minimal-changes-p argument as + minimal-changes-flag. + (redraw-needed-flag): Renamed redraw-needed-p local variable as + redraw-needed-flag. + (mh-seq-containing-msg): Renamed include-internal-p argument as + include-internal-flag. + (mh-page-msg): Use mh-page-to-next-msg-flag. + This addresses part of SF #627015. + + * mh-mime.el (mh-mhn-compose-insert-flag): Renamed from + mh-mhn-compose-insert-p. Make it buffer-local. + (mh-mhn-compose-type, mh-mhn-compose-external-type, + mh-mhn-compose-forw, mh-edit-mhn): Use mh-mhn-compose-insert-flag. + (mh-mml-to-mime, mh-mml-secure-message-encrypt-pgpmime, + mh-mime-display-part, mh-mime-display-single): Use + mh-gnus-pgp-support-flag renamed from mh-gnus-pgp-support-p. + (mh-mime-display-single): Renamed small-image-p local + variable as small-image-flag. + (mh-mime-inline-part): Renamed local variable inserted-p as + inserted-flag. + (mh-mime-inline-part): Renamed local variable displayed-p as + displayed-flag. + This addresses part of SF #627015. + + * mh-comp.el (mh-letter-menu, mh-letter-mode, mh-send-letter): + mh-mhn-compose-insert-flag. + (mh-repl-group-formfile, mh-forward): Use mh-nmh-flag + renamed from mh-nmh-p. + (mh-reply, mh-insert-x-mailer, mh-send-letter): Use mh-nmh-flag. + (mh-letter-mode-map): Use mh-gnus-pgp-support-flag renamed from + mh-gnus-pgp-support-p. + (mh-mml-secure-message-sign-pgpmime): Use + mh-gnus-pgp-support-flag. + This addresses part of SF #627015. + + * mh-utils.el (mh-page-to-next-msg-flag): Renamed from + mh-page-to-next-msg-p. + (mh-show-msg): Use mh-page-to-next-msg-flag. + (mh-gnus-pgp-support-flag): Renamed from + mh-gnus-pgp-support-p. + (mh-show-font-lock-fontify-region): Fix docstring per checkdoc. + (with-mh-folder-updating): Renamed argument + save-modification-flag-p as mh-save-modification-flag. + (mh-prompt-for-folder): Renamed new-file-p local + variable as new-file-flag. + This addresses part of SF #627015. + +2002-10-24 Mark D Baushke + + * mh-comp.el (mh-forward): Fix mh-mml-compose-insert-p reference + in last commit to be mh-mml-compose-insert-flag. + (mh-mml-compose-insert-flag): Move defvar to fix compiler warning. + +2002-10-24 Jeffrey C Honig + + * mh-comp.el (mh-forward): Add support for transient-mark mode. + When using nmh, always specify -mime so as to preserve the + original message(s). If mh-compose-insertion is 'gnus, convert + the mhbuild format forwarding directives into MML. + +2002-10-24 Eric Ding + + * mh-comp.el (mh-send-letter): Fix for earlier change that added + "-mime" for bcc'ed MIME mail; still doesn't work with nmh 1.0, but + at least no longer triggered for every outgoing message! + +2002-10-24 Peter S Galbraith + + * mh-comp.el (mh-yank-cur-msg): Fix selected regions for supercite + (see text below). + + * mh-comp.el (mh-yank-cur-msg): Fix for supercite. Someone played + with the point and mark setting prior to the call to + 'mh-insert-prefix-string and that broke supercite. I put comments + to make it obvious to future coders why those settings exists. + Note that supercite is still broken when a region is selected in + the show buffer. Presumably it's been like that for a long time. + We need to insert the header as well as the selected region oin + that case. I'll submit an SF bug. + +2002-10-24 Jeffrey C Honig + + * mh-comp.el (mh-yank-from-start-of-msg, mh-reply): Use -noformat + flag to reply when 'autosupercite or 'autoattrib are specified to + prevent duplicate cites of the body of a message. + +2002-10-23 Satyaki Das + + * mh-utils.el (font-lock-default-fontify-region): Add autoload to + avoid compiler warning. + +2002-10-23 Peter S Galbraith + + * mh-comp.el (mh-letter-mode): set fill-paragraph-function to our + own 'mh-fill-paragraph-function instead of simply + 'mail-mode-fill-paragraph (because it doesn't handle a non-nil + fill-prefix correctly). + (mh-fill-paragraph-function): New function for mh-letter-mode + fill-paragraph-function in order to handle non-nil fill-prefix. + Call sendmail's mail-mode-fill-paragraph if in the mail header, + else call default fill-paragraph with fill-prefix set to nil. + (Closes SF #489927) + + * mh-comp.el (mh-letter-mode): Let's use font-lock even if gnus is + used in show-mode. The reason is that gnus uses static text + properties which are not appropriate for a buffer that will be + edited. So the choice here is either fontify the citations and + header or the header only. + + * mh-utils.el (mh-show-font-lock-fontify-region): Limit font-lock + in mh-show-mode to the header. Used when mh-highlight-citation-p + is set to gnus, leaving the body to be dealt with by gnus + highlighting. This fixes gnus text emphasis in mh-show-mode. + (mh-show-mode): In font-lock-defaults, set + font-lock-fontify-region-function to mh-show-font-lock-fontify-region. + +2002-10-23 Bill Wohler + + * mh-mime.el (mh-mml-attach-file): Prompt for disposition should + be Disposition, not Content-Type. The Content-Type has been + determined automatically. + +2002-10-23 Mark D. Baushke + + * MH-E-NEWS: + s/mh-adaptive-cmd-note/mh-adaptive-cmd-note-flag/ + s/mh-show-use-xface/mh-show-use-xface-flag/ + s/mh-tool-bar-reply-3-buttons/mh-tool-bar-reply-3-buttons-flag/ + This addresses part of SF #627015. + + * mh-comp.el: + s/mh-mml-compose-insert-p/mh-mml-compose-insert-flag/ + s/mh-xemacs-p/mh-xemacs-flag/ + (mh-letter-menu): Use mh-mml-compose-insert-flag. + (mh-insert-x-mailer): Use mh-xemacs-flag. + (mh-mml-compose-insert-flag): Renamed from + mh-mml-compose-insert-p. + (mh-send-letter): Use mh-mml-compose-insert-flag. + This addresses part of SF #627015. + + * mh-e.el: + s/mh-folder-threaded-view-p/mh-folder-threaded-view-flag/ + s/mh-adaptive-cmd-note/mh-adaptive-cmd-note-flag/ + s/mh-xemacs-p/mh-xemacs-flag/ + (mh-folder-threaded-view-flag): Renamed from + mh-folder-threaded-view-p. Make it buffer local. + (mh-folder-tool-bar-map): Use mh-tool-bar-reply-3-buttons-flag. + (mh-remove-xemacs-horizontal-scrollbar): Use mh-xemacs-flag. + (mh-make-folder, mh-regenerate-headers, mh-get-new-mail): Use + mh-adaptive-cmd-note-flag. + (mh-folder-folder-menu, mh-regenerate-headers, mh-get-new-mail, + mh-make-folder-mode-line, mh-process-commands, + mh-delete-scan-msgs): Use mh-folder-threaded-view-flag. + This addresses part of SF #627015. + + * mh-index.el: + s/mh-adaptive-cmd-note/mh-adaptive-cmd-note-flag/ + (mh-index-search): Use mh-adaptive-cmd-note-flag. + This addresses part of SF #627015. + + * mh-mime.el: + s/mh-mml-compose-insert-p/mh-mml-compose-insert-flag/ + s/mh-xemacs-p/mh-xemacs-flag/ + (mh-mml-compose-insert-flag): Renamed from + mh-mml-compose-insert-p. Make it buffer local. + (mh-mml-attach-file, mh-mml-secure-message-sign-pgpmime, + mh-mml-secure-message-encrypt-pgpmime): Use it. + (gnus-local-map-property): Use mh-xemacs-flag. + This addresses part of SF #627015. + + * mh-seq.el: + s/mh-folder-threaded-view-p/mh-folder-threaded-view-flag/ + (mh-thread-generate, mh-thread-folder, mh-toggle-threads): Use + mh-folder-threaded-view-flag. + This addresses part of SF #627015. + + * mh-speed.el: + s/mh-speed-run-flists-p/mh-speed-run-flists-flag/ + s/mh-speed-refresh-p/mh-speed-refresh-flag/ + (mh-speed-run-flists-flag): Renamed from mh-speed-run-flists-p. + (mh-folder-speedbar-buttons): Use it. + (mh-speed-refresh-flag): Renamed from mh-speed-refresh-p. + (mh-speed-update-current-folder, mh-speed-invalidate-map, + mh-speed-add-folder): Use it. + This addresses part of SF #627015. + + * mh-utils.el: + s/mh-xemacs-p/mh-xemacs-flag/ + s/mh-tool-bar-reply-3-buttons/mh-tool-bar-reply-3-buttons-flag/ + s/mh-show-use-xface/mh-show-use-xface-flag/ + (mh-xemacs-flag): Renamed from mh-xemacs-p. + (mh-show-xface-function): Use it. + (mh-tool-bar-reply-3-buttons-flag): Renamed from + mh-tool-bar-reply-3-buttons. + (mh-show-tool-bar-map): Use it. + (mh-adaptive-cmd-note-flag): Renamed from mh-adaptive-cmd-note. + (mh-cmd-note): Use it in description. + (mh-show-use-xface-flag): Renamed from mh-show-use-xface. Use + mh-xemacs-flag. + (mh-show-xface): Use mh-show-use-xface-flag. + This addresses part of SF #627015. + +2002-10-23 Bill Wohler + + * Makefile (all): Rather than have to run "make clean all" all the + time, make the default target do a clean so all you have to say is + "make". + + * mh-e.el (mh-folder-map): Moved "t (mh-toggle-threads)" to T + prefix. + +2002-10-22 Satyaki Das + + * mh-index.el (mh-indexer-choices, mh-swish-binary): The + executable swish-e can be used to search (just like swish-search). + However the Makefile in swish-e-2.2.2 doesn't install + swish-search. So it is preferable to use swish-e. + +2002-10-22 Bill Wohler + + * mh-comp.el (mh-letter-mode-map): Added aliases for keybindings. + For example, you now have "C-c C-m C-i" in addition to "C-c C-m + i". + +2002-10-22 Mark D. Baushke + + * mh-mime.el (mh-graphical-smileys-flag): Renamed from + mh-graphical-smileys-p. + (mh-display-smileys): Use it. + (mh-graphical-emphasis-flag): Renamed from + mh-graphical-emphasis-p. + (mh-display-emphasis): Use it. This addresses part of SF #627015. + +2002-10-22 Satyaki Das + + * mh-mime.el (mh-insert-mime-security-button): A message is + produced if PGP decryption/verification fails. This addresses + SF# 627025. + +2002-10-21 Bill Wohler + + * mh-seq.el (mh-widen): Checkdoc removed the period in the error. + The info node (elisp) Coding Conventions says: "An error message + should start with a capital letter but should not end with a + period." + + * mh-e.el, mh-utils.el (mh-tool-bar-reply-3-buttons): Moved + defcustom to mh-utils because I got an error about a nil value for + mh-tool-bar-reply-3-buttons when I fired up mh-rmail. + + * mh-comp.el, mh-funcs.el, mh-mime.el, mh-pick.el: Moved (provide) + to the end of the file to be consistent with most other files (see + additional rationale in mh-e.el description below). + + * mh-e.el: Had to remove eval-when-compile from the (require 'cl) + here too (because the remove-if generated a warning in CVS Emacs). + Moved (provide) to the end of the file to be consistent with most + other files. My guess is that this is good to keep a feature from + being "provided" if the file craps out while being loaded. + +2002-10-21 Satyaki Das + + * mh-utils.el (mh-reply, Info-goto-node): Add autoloads to avoid + compiler warnings. + (mh-tool-bar-reply-3-buttons): Add defvar to avoid compiler + warning. + + * mh-seq.el (mh-narrow-to-seq): Remember that a narrowing has + occurred. + (mh-valid-view-change-operation-p): New function that checks if + the widening or unthreading that we are about to perform is + allowed. + (mh-widen): Check if widening is applicable. + (mh-thread-inc, mh-thread-folder): Use delete-region instead of + erase-buffer. This means if the buffer is narrowed then the hidden + parts aren't removed. This allows widening of the folder later on. + (mh-toggle-threads): Maintain mh-view-ops. + + * mh-e.el (mh-view-ops, mh-folder-mode): New buffer-local variable + that keeps track of the sequence in which threading and narrowing + of the folder buffer has been carried out. This is needed so that + narrowing followed by threading (or vice versa) behaves in a + reasonable manner. + (mh-regenerate-headers): Use delete-region instead of + erase-buffer. + (mh-make-folder-mode-line): Change mh-first-msg-num and + mh-last-msg-num conservatively. This might show a larger range in + the mode-line but allows the unthreading to not miss messages + present initially. + +2002-10-21 Bill Wohler + + * mh-mime.el (mh-graphical-emphasis-p): Added _underline_ to the + docstring, as well as the source of the strings, + gnus-emphasis-alist. + (mh-graphical-emphasis-p, mh-graphical-smileys-p): Set the default + to t. + +2002-10-21 Peter S Galbraith + + * mh-utils.el (mh-show-mode): Invoke new toolbar. + (mh-show-tool-bar-map): New tool-bar for mh-show-mode, similar to + mh-letter-mode. + +2002-10-21 Satyaki Das + + * mh-utils.el (mh-display-msg): Call the smiley display function + after the call to mh-show-mode. This is needed since mh-show-mode + kills all buffer-local variables and resets the variable that + controls display of graphical smileys. + +2002-10-21 Bill Wohler + + * mh-e.el (mh-folder-mime-action): Change mime to MIME in message. + + * mh-comp.el (mh-mml-to-mime autoload): Ditto. + +2002-10-21 Mark D Baushke + + * mh-mime.el (smiley-region): Use load for a non-fatal dependency + on the smiley library. + +2002-10-21 Jeffrey C Honig + + * mh-comp.el (mh-forward): Search for a blank line as well as + mail-header-separator. + (mh-letter-mode): Search for a blank line as well as + mail-header-separator. + (mh-send-letter): The default BCC encapsulation will make a MIME + message unreadable. If we are running nmh and the letter contains + a Bcc: and a Content-Type: field, add the -mime switch to to the + arguments to send. + +2002-10-21 Peter S Galbraith + + * mh-utils.el: Add a mh-defun-show-buffer call to define + mh-show-pack-folder. + +2002-10-21 Peter S Galbraith + + * mh-mime.el (mh-store-mime-parts): Simplify code a bit. + + * mh-e.el (mh-help-messages): Update help message for changed + keybindings. + +2002-10-21 Satyaki Das + + * mh-speed.el (mh-speed-invalidate-map): Invalidate + mh-speed-folders-cache before it is used by mh-speed-folders. Also + fix indentation of if statement. + (mh-speed-folder-size): The folder name should be extracted from + the speedbar buffer and not from the temp buffer has was happening + before. + (mh-speed-folder-size): Harden the function some more. It + shouldn't produce errors any more unless flist really didn't work. + +2002-10-21 Bill Wohler + + * mh-seq.el (mh-put-msg-in-seq): Formatting only. The reason I was + in there is because I was trying to use mh-put-msg-in-seq and + mh-msg-is-in-seq non-interactively and found that although the + docstring says it uses the current message by default, I got + errors if I passed in nil for the message. Is this expected, or is + this a bug? I suppose the fix would be to make the arguments + optional, right? This would cause the arguments in + mh-put-msg-in-seq to be reversed, however. Might be a backwards + compatibility problem. + + * mh-speed.el (mh-speed-view): Convert default size to string + before passing it to read-string. This was done because XEmacs + can't handle a numeric value for the default. + +2002-10-20 Satyaki Das + + * mh-utils.el (mh-show-mode-map, mh-show-folder-map) + (mh-show-sequence-map, mh-show-thread-map, mh-show-extract-map) + (mh-show-digest-map, mh-show-mime-map): Interactive functions + callable in show buffer are now prefixed with mh-show. + + * mh-seq.el (mh-notate-deleted-and-refiled): Take into account the + changes to mh-refile-list and the removal of the 'deleted + sequence. + (mh-toggle-threads): Changing from threaded to normal view doesn't + try to push out message refiles and deletions to MH. + + * mh-e.el (mh-rescan-folder, mh-scan-folder): Add a new optional + argument to both functions that prevents them from carrying out + pending refiles and deletes. + (mh-undo): Remove dead code. + (mh-delete-a-msg, mh-undo-msg): Get rid of the 'deleted sequence. + The same information is present in mh-delete-list any way. + (mh-refile-a-msg, mh-undo-msg, mh-process-commands): Change the + semantics of mh-refile-list to make it self-contained. This + variable now contains a list of lists. The first element of each + sublist is the destination folder name. The remaining elements are + the messages that are to be refiled to the destination folder. + (mh-toggle-threads, mh-folder-folder-menu): Use mh-toggle-threads + instead of mh-thread-folder. + +2002-10-20 Peter S Galbraith + + * mh-mime.el (mh-store-mime-parts): Bug fix? Make this command + work when in the show buffer, and not just in the folder buffer + pointing to a message. + +2002-10-20 Peter S Galbraith + + * mh-seq.el (mh-narrow-to-subject-sequence): Renamed from + mh-narrow-to-subject-thread. + (mh-subject-to-sequence): Renamed from mh-subject-thread-to-sequence. + (mh-delete-subject-sequence): Renamed from mh-delete-subject-thread. + (mh-next-unseen-subject-sequence): Renamed from + mh-next-unseen-subject-thread. + (mh-toggle-subject-thread): Removed. :-( + + * mh-e.el: s/subject-thread/subject-sequence/ + (mh-thread-map): Bind mh-widen to "w". + + * mh-utils.el: s/subject-thread/subject-sequence/ + (mh-show-thread-map): Bind mh-widen to "w". + +2002-10-20 Satyaki Das + + * mh-seq.el (mh-thread-folder): This function is no longer + interactive. The mh-toggle-threads is the interactive function + that gets called by the user. Also the already computed values in + mh-first-msg-num and mh-last-msg-num are used instead of + recomputing the first and last message indices in the current + folder. + (mh-toggle-threads): New interactive function that toggles + threaded view of the folder. + + * mh-utils.el (mh-letter-toggle-threads): New interactive function + which toggles thread view from show buffer. This function replaces + mh-letter-thread-folder. + (mh-show-folder-map): Use mh-letter-toggle-threads instead of + mh-letter-thread-folder. + + * mh-e.el (mh-folder-map): Use mh-toggle-threads instead of + mh-thread-folder. + +2002-10-20 Bill Wohler + + * mh-e.el (mh-scan-folder): Formatting only. + (mh-goto-cur-msg): Removed call to mh-last-msg in those cases + where there isn't a current message. Since I've started using the + speedbar to read my mh-e mail, I've had to use M-< every time to + go to the beginning of the new messages. Very annoying! Thus, if + there isn't a current message, the cursor is left alone, which + sounds like the right thing to do anyway. + +2002-10-19 Peter S Galbraith + + * mh-seq.el (mh-subject-thread-to-sequence): Bug fix. After + making the 'subject sequence real, I now have to delete it globally. + + * mh-seq.el (mh-toggle-subject-thread): Make toggle back to full + scan exactly mh-widen (removed moving to current message). + + * mh-seq.el (mh-subject-thread-to-sequence): Make 'subject + sequence a real one, exported to MH. This means you can, for + example, mh-forward it. But it also shows up with a mark in the + scan output. (Closes SF #489445). + +2002-10-19 Bill Wohler + + * mh-speed.el (mh-speed-view): If there weren't any unseen + messages, and you specified a string (a sequence like "last") when + prompted for the number of messages to display, you got an error. + This has been fixed. + +2002-10-19 Mark D Baushke + + * mh-e.el (mh-last-destination-folder): Destination of last refile + command. + (mh-last-destination-write): Destination of last write command. + (mh-refile-msg): Use 'mh-last-destination-folder and update both it + and 'mh-last-destination. + (mh-write-msg-to-file): Use 'mh-last-destination-write and update + both it and 'mh-last-destination (Closes SF #580772). + +2002-10-19 Bill Wohler + + * mh-comp.el (mh-yank-from-start-of-msg): Changed default to + 'attribution. + (mh-letter-mode-map): Removed commented-out keybindings as well as + alias "C-c C-m a (mh-compose-insertion)." Prefer "C-c C-m i." + + * mh-utils.el: Removed autoload of help. It no longer appears to + be necessary in cvs Emacs (21.4). + +2002-10-18 Bill Wohler + + * mh-e.el (mh-execute-commands): Doc fix. + (mh-compat-write-file-hook): Renamed to + mh-write-file-functions-compat. + (mh-folder-mode): Add mh-write-file-functions-compat instead of + mh-compat-write-file-hook + +2002-10-18 Peter S Galbraith + + * mh-utils.el (mh-invisible-headers-show-xface): Killed this + variable. + (mh-invisible-headers): Use 'mh-show-use-xface instead of + 'mh-invisible-headers-show-xface to determine whether to render + the X-Face header line visible or not. + +2002-10-18 Satyaki Das + + * mh-e.el (mh-compat-write-file-hook, mh-folder-mode): Use the new + macro mh-compat-write-file-hook to use write-file-functions for + Emacs 21.4 and local-write-file-hooks for older versions. + +2002-10-18 Mark D Baushke + + * mh-utils.el (mh-invisible-headers): Add more anti-spam headers. + +2002-10-18 Peter S Galbraith + + * mh-mime.el (mh-mml-forward-message): mml-attach-file constructs + a malformed composition if the description string is empty, so + test for that and call mml-attach-file without that argument if + it's an empty string (closes SF #625168). + +2002-10-17 Satyaki Das + + * mh-index.el (mh-index-keymap): Removed extra binding of " ". + (mh-index-folder-mode-help-messages): Made the cheat sheet entry + of quit like the others. + (mh-index-search): If space was pressed in the index buffer before + a search result has been shown with ".", the old show buffer would + be scrolled. This is confusing since the index and show buffer + contents are contradictory. Killing the show buffer here avoids + this problem. + (mh-index-configure-windows): Refine the window configuration + logic. Avoid the two window view unless there is a message being + displayed in the show buffer. + (mh-index-scroll-up): Rewrite this function. The old version had a + bizarre problem where the show buffer wouldn't be scrolled if the + speedbar was present. + (mh-index-scroll-down): Rewritten because of similar reason as + above. + +2002-10-17 Peter S Galbraith + + * mh-comp.el (mh-reply): Add an undo boundary in the undo list + before calling 'mh-yank-cur-msg (closes SF #623693). + +2002-10-17 Satyaki Das + + * mh-e.el (mh-folder-mode): Use local-write-file-hooks instead of + write-file-hooks. This is required for XEmacs and also the right + thing according to GNU Emacs21 documentation. + +2002-10-16 Satyaki Das + + * mh-seq.el (mh-thread-generate): Get threading to work correctly + on partial folders. The fix here disregards messages that aren't + already present in the buffer. + (mh-thread-folder): When querying scan about thread info try to + avoid asking about messages that aren't present in the folder + buffer. A more efficient fix would be to ask scan about just the + messages that are present instead of a range of messages. However + that runs the risk of sending long command lines to scan. Another + change was to populate the mh-scan-line-map early so that the + change in mh-thread-generate would work. + (mh-thread-generate-scan-lines): In case duplicates are present + make one of them the pseudo parent of the rest. This makes it look + prettier if there are multiple duplicates at top level. + + * mh-comp.el (mh-edit-again): If a buffer in show-mode is being + reused then reinsert message file. This should fix SF #624283. + + * mh-mime.el (mh-mm-display-part): Make sure mh-display-part is + always called when we want to remove the displayed MIME part. + +2002-10-16 Bill Wohler + + * mh-speed.el (mh-speed-folder-size): checkdoc fix. + (mh-speed-view): Tweaked output to mirror gnus verbiage. Offer + to view number of messages in folder rather than mh-large-folder. + Replaced (intern mh-unseen-seq) with mh-unseen-seq since the + former was generating errors. + +2002-10-15 Satyaki Das + + * mh-speed.el (mh-large-folder): New customizable variable to + control mh-e's perception of large folders. + (mh-speed-folder-size): New function which computes the size of + folder on current line. + (mh-speed-view): Modified to handle large folders. If the folder + being clicked has unseen messages then only those messages are + shown. Otherwise if number of messages in folder is larger than + mh-large-folders then the user is asked for the number of messages + to be shown. If the folder satisfies neither of the above cases + then it is displayed in its entirety + +2002-10-15 Bill Wohler + + * mh-index.el (mh-index-keymap): Use gnus-define-keys. Sorted. + Noticed that there were two key bindings for SPACE... + + * mh-speed.el (mh-folder-speedbar-key-map): Ditto (except for the + dup SPACE binding). + + Completed help in other modes: + + * mh-utils.el (mh-xemacs-p): Fixed doc. + (mh-show-mode-map, mh-show-folder-map, mh-show-sequence-map) + (mh-show-thread-map, mh-show-extract-map): Added binding for + mh-help. + + * mh-pick.el (mh-search-folder): Added startup help message. + (mh-pick-mode-help-messages): New variable that contains help + messages for pick buffer. + (mh-pick-mode): Set local buffer variable mh-help-messages to + mh-pick-mode-help-messages. + + * mh-index.el (mh-index-keymap): Added binding for mh-help + (mh-index-folder-mode-help-messages): New variable that contains + help messages for MH Index buffer. + (mh-index-folder-mode): Set local buffer variable mh-help-messages + to mh-index-mode-help-messages. + + * mh-funcs.el (mh-help, mh-prefix-help): Call + substitute-command-keys on the help messages. + + * mh-e.el (mh-help-messages): Added ,. Ran C-M-q. + (mh-help): This autoload doc is now used for more than just the + MH-Folder, so drop that specific text. + + * mh-comp.el (mh-edit-again, mh-extract-rejected-mail) + (mh-forward, mh-reply, mh-send-sub): Call mh-letter-mode-message + to display a help message at startup. + (mh-letter-mode): Set local buffer variable mh-help-messages to + mh-letter-mode-help-messages. + (mh-letter-mode-help-messages): New variable with help messages + for the MH-Letter buffer. + (mh-letter-mode-message): New function that displays a startup + help message. + (mh-letter-mode-map): Added binding for mh-help. Sorted. + +2002-10-15 Satyaki Das + + * mh-speed.el (mh-speedbar-selected-folder-with-unseen-messages-face) + (mh-speedbar-folder-face, mh-speedbar-selected-folder-face) + (mh-speedbar-folder-with-unseen-messages-face): New faces for mh-e + speedbar. + (mh-folder-speedbar-buttons, mh-speed-update-current-folder) + (mh-speed-add-buttons): Use the new faces. + (mh-speed-normal-face, mh-speed-bold-face): Functions to convert + to bold face and back to normal face. + (mh-speed-set-face): Removed. + (mh-speed-highlight): Modified to allow it to be used instead of + mh-speed-set-face. Also changes were made to fontify folders with + unread messages. + (mh-speed-parse-flists-output, mh-speed-parse-flists-output) + (mh-speed-invalidate-map): Use mh-speed-highlight instead of + mh-speed-set-face. + +2002-10-15 Bill Wohler + + * mh-mime.el, mh-seq.el, mh-speed.el, mh-utils.el: It appears that + the cl package has been restructured in 21.4 in such a way that + the use of eval-when-compile no longer suppresses warnings when + compiling so that (require 'cl) must be called directly (maybe + this is a bug in 21.4 ;-). Thus the autoloads of cl are no longer + needed. Now compiles clean under 21.4. + + * mh-e.el (mh-folder-mode): The use of local-write-file-hooks is + deprecated in Emacs 21.4, so use add-hook write-file-functions (or + write-file-hook for older versions) with the LOCAL argument + instead. Now compiles clean under 21.4. + + * mh-comp.el (mh-yank-cur-msg): Push a mark at the opposite end of + the included text to make it easy to jump or delete to the other + end of the included text. + +2002-10-15 Satyaki Das + + * mh-comp.el (mh-insert-prefix-string): Remove the erroneous use + of set-mark and other related functions. + +2002-10-14 Bill Wohler + + * mh-comp.el (mh-yank-from-start-of-msg): Fixed documentation. It + isn't ignored if there is a region. It is still used for the + attribution. + (mh-yank-cur-msg): Removed unnecessary push-mark when snarfing the + entire message. Move the cursor to the end of the snarfed message + if there is a region. In this case, push a mark so user can pop to + the beginning of the snarfed fragment. + (mh-insert-prefix-string): This calls set-mark which I find + suspect since I found that my last user mark was deleted after + yanking a message. Added a comment to this effect. Will probably + add a bug report... + + * README (Installed, Supported versions): To appear in GNU Emacs + 21.3; supported on Emacs 21, 20.7 and XEmacs 21. + + * mh-funcs.el (mh-concat-list): Deleted. Use mapconcat instead. + (mh-help, mh-prefix-help): Use mapconcat instead of mh-concat-list. + (mh-ephem-message): Use "%s" in message. + + * mh-funcs.el (mh-concat-list): New function to concatenate a list + of strings into a single string. I would have thought elisp + already contained a function like this, but I couldn't find it. + (mh-ephem-message): New function to display a message in the + minibuffer ephemerally. minibuffer-message seemed like the right + function, but it writes to the current buffer oddly enough. + (mh-help, mh-prefix-help): New functions to display command + cheat sheets in the minibuffer (closes SF #493740). It would be + nice to refactor these two into a single function if possible. + + * mh-e.el (mh-folder-mode-map, mh-folder-map, mh-sequence-map) + (mh-thread-map, mh-extract-map): Added ? keybinding for `mh-help' + and `mh-prefix-help' (closes SF #493740). + (mh-help-messages): New variable to hold various help messages. + (mh-help, mh-prefix-help): Autoload from mh-funcs.el. + +2002-10-13 Bill Wohler + + * mh-index.el (mh-glimpse-directory, mh-swish-directory, + mh-namazu-directory): New variables that hold the name of the + configuration and indexing directory. All are now hidden `.' + directories. + + * mh-e.el, mh-funcs.el, mh-index.el, mh-mime.el, mh-pick.el, + mh-seq.el, mh-xemacs-compat.el (Docstrings): Converted comments to + docstrings, reworded some docstrings to conform to Emacs + documentation conventions, and eliminated all checkdoc warnings + (except for -flag, which we'll fix after 6.2 is released). + +2002-10-13 Satyaki Das + + * mh-index.el (mh-swish-next-result): Fix a bug in a corner case + where the lack of a trailing "/" caused the function to wrongly + filter out correct hits. This should fix SF #622679. + +2002-10-12 Steve Youngs + + * mh-utils.el (mh-xemacs-p): Simplify it, don't test for + 'defvaralias' and don't use 'running-xemacs'. + +2002-10-11 Bill Wohler + + * mh-comp.el: (Docstrings): Eliminated all checkdoc warnings by + converting comments to docstrings and rewording some docstrings to + conform to Emacs documentation conventions. + +2002-10-11 Steve Youngs + + * mh-utils.el (mh-xemacs-p): New. + (mh-show-use-xface): Use it. + (mh-show-xface-function): Ditto. + + * mh-e.el (toplevel): Ditto. + (mh-remove-xemacs-horizontal-scrollbar): Ditto. + (mh-folder-mode-map): Ditto. + + * mh-comp.el (mh-insert-x-mailer): Ditto. + + * mh-mime.el (gnus-local-map-property): Ditto. + (mh-mml-to-mime): Move (require 'mh-utils) to toplevel. + (mh-prompt-for-folder): Autoloading this not needed because + mh-utils is now required at toplevel. + (mh-show-xface): Ditto. + (mh-show-addr): Ditto. + +2002-10-11 Bill Wohler + + * Makefile (EMACS_HOME): Set default to $(TOP)/../emacs so it + would be useful. + + * mh-utils.el (mh-invisible-headers): Added various spam header + fields. + (mh-path-search): Removed argument `func-p' and related code. It + was not documented and no one used it. + (Docstrings): Converted comments to docstrings, reworded some + docstrings to conform to Emacs documentation conventions, and + basically eliminated all checkdoc warnings (except for -flag + warnings). + +2002-10-11 Satyaki Das + + * mh-seq.el (mh-thread-generate): Kill dead code. + +2002-10-10 Satyaki Das + + * mh-seq.el (mh-region-to-sequence): Don't include point-max in + region (closes SF #621632). + + * mh-utils.el (mh-defun-show-buffer): Fix call of + frame-first-window to work with XEmacs. Also avoid warning about + cur-buffe-name in XEmacs. + (mh-modify, mh-goto-msg): Remove dead code. + + * mh-speed.el (mh-speed-toggle, mh-speed-add-buttons): Remove dead + code. + + * mh-seq.el (mh-subject-thread-to-sequence, mh-thread-get-message, + mh-thread-generate, mh-thread-folder): Remove dead code. + + * mh-mime.el (mh-mm-inline-message): Remove dead code. + + * mh-index.el (mh-index-search): Remove dead code. + + * mh-comp.el (mh-open-line): Remove dead code. + + * mh-e.el (mh-folder-mode): Use the macro + mh-remove-xemacs-horizontal-scrollbar to avoid compiler-warning in + Emacs. + (mh-remove-xemacs-horizontal-scrollbar): New macro to avoid + compiler-warnings. + +2002-10-10 Mark D Baushke + + * Makefile (EMACS_OPTIONS): New macro for command-line compile + options. + (EMACS): Allow the user to specify which emacs command to use for + the compile. + (COMPILE_COMMAND): Combine the compile command with its options. + (.el.elc): Use the new $(COMPILE_COMMAND). + +2002-10-10 Mark D Baushke + + * mh-speed.el (mh-speed-select-attached-frame): Define a new + compatibility macro for getting to the attached-frame. + (mh-speed-update-current-folder): Use it. + +2002-10-10 Mark D Baushke + + * mh-speed.el (mh-speed-update-current-folder): Use + 'dframe-select-attached-frame if we are in a newer speedbar + version that no longer supports the 'speedbar-attached-frame + variable. + +2002-10-10 Steve Youngs + + * mh-speed.el (mh-speed-update-current-folder): Use + 'dframe-select-attached-frame' if we're in XEmacs. + + * mh-e.el (mh-folder-mode): Remove the horizontal scrollbar from + the MH-Folder buffer if we're in XEmacs. + +2002-10-09 Satyaki Das + + * mh-utils.el (mh-show-xface-function): New global that stores + what function needs to be called to display X-Face. + (mh-show-xface): Rewritten to avoid compiler warning. + +2002-10-09 Peter S Galbraith + + * mh-utils.el (mh-exchange-point-and-mark-preserving-active-mark): + Simplify code for all emacsen to avoid byte-compilation warnings. + +2002-10-09 Satyaki Das + + * mh-mime.el (mh-mm-display-part): If a sub-part of the current + part is an inline image then clicking the button keeps the image + around. The change fixes this bug. + +2002-10-09 Peter S Galbraith + + * mh-utils.el (mh-exec-cmd-output): Use new function + 'mh-exchange-point-and-mark-preserving-active-mark instead of + 'exchange-point-and-mark. Fixes a bug in emacs20 and XEmacs21. + (mh-exchange-point-and-mark-preserving-active-mark): New function. + Does like 'exchange-point-and-mark but doesn't activate the mark. + + * mh-comp.el (mh-letter-menu): Allow access to "Pull in All + Compositions" menu entries when edits have really occurred. + Works with "forw: -mime" mh_profile entry, so this fixes a bug. + + * mh-mime.el (mh-mime-inline-part, mh-mm-display-part): Use + line-beginning-position and line-end-position instead of + point-at-bol and point-at-eol XEmacs functions. + * mh-xemacs-compat.el: Added line-end-position and + line-beginning-position compatibility aliases. + +2002-10-08 Mark D. Baushke + + * mh-utils.el (mh-scan-msg-format-regexp): The regexp to find + %number(msg). + (mh-scan-msg-format-string): Format to be used with the current + maximum width of message number for the folder in the + `mh-upate-scan-format' function. + (mh-update-scan-format): Use `mh-scan-msg-format-regexp' for greater + flexibility. The message number is no longer anchored to the + beginning of the `mh-scan-format-nmh' or `mh-scan-format-mh' format + strings. The `mh-update-scan-format' allows for using zero-filled + message numbers. + +2002-10-08 Peter S Galbraith + + * mh-e.el (mh-folder-folder-menu): Add entry for "Thread Folder". + +2002-10-07 Satyaki Das + + * mh-seq.el (mh-thread-generate): Use mh-progs to get path to mh + executables. + + * mh-speed.el (mh-speed-flists): Use mh-progs to get path to mh + executables right. + (mh-speed-folders-actual): Same as above. + +2002-10-05 Steve Youngs + + * mh-comp.el (mh-yank-from-start-of-msg): Make default setting 't' + a const. + + * mh-xemacs-compat.el (match-string-no-properties): Rewrite as a + defsubst using 'buffer-substring-no-properties' so we don't grab + any extents. + (rfc822-goto-eoh): Removed. This exists in the XEmacs mail-lib + package. + (mail-header-end): Ditto. + (mail-mode-fill-paragraph): Ditto. + +2002-10-05 Satyaki Das + + * mh-speed.el (mh-speed-invalidate-map): When called interactively + the function will clear mh-speed-folders-cache. + +2002-10-02 Satyaki Das + + * mh-mime.el (mh-insert-mime-button): Rewrite without using + replace-match. + +2002-10-01 Satyaki Das + + * mh-mime.el (mh-file-mime-type-substitutions): Reorder code to + avoid compiler warning. + +2002-10-01 Bill Wohler + + * Makefile (MH-E-ETC): Moved ChangeLog into MH-E-ETC-ETC since it + shouldn't get installed in Emacs. + (install-emacs): Install MH-E-IMG into Emacs' lisp/toolbar and + MH-E-IMG2 into Emacs' lisp/mail. + +2002-10-01 Peter S Galbraith + + * mh-e.el (mh-tool-bar-reply-3-buttons): New customization. + Non-nil means use three buttons for reply commands in tool-bar. + If you have room on your tool-bar because you are using a large + font, you may set this variable to expand the single reply + button into three buttons that won't lead to minibuffer prompt + about who to reply to. + (mh-folder-tool-bar-map): Use mh-tool-bar-reply-3-buttons to + decide how many buttons to use for replying. + + * mh-mime.el (mh-file-mime-type-substitutions) + (mh-file-mime-type-substitute): Fix typos and doc strings. + +2002-09-30 Peter S Galbraith + + * mh-mime.el (mh-file-mime-type): Run Content-Type string returned + by file command through mh-file-mime-type-substitute (see below). + (mh-file-mime-type-substitute): Possibly change Content-Type + string using mh-file-mime-type-substitutions variable. This is + mostly because all MS-Office file are seen as application/msword + by the file command. + (mh-file-mime-type-substitutions): New variable. Defines + substitutions to make for Content-Type returned from file command. + +2002-09-27 Bill Wohler + + * README: Moved Id to end of file since it broke outline mode at + the beginning. + + * import-emacs (release): Renamed "mainline" tag to + "emacs-mainline" to correspond with existing CVS tag. + (EMACS_HOME): Fixed typo in docstring. + + * mh-utils.el (mh-folder-name-p, mh-defun-show-buffer): Lowercase + NIL and T in docstring. + (mh-update-scan-format): Fixed typo. + + * mh-comp.el, mh-e.el, mh-pick.el, mh-utils.el: Updated from CVS + Emacs. The only new thing appears to be to downcase NIL and T in + the documentation. + +2002-09-26 Satyaki Das + + * mh-seq.el (mh-thread-generate): The threading code will now be + more resistant to corruption of messages. Before the change any + corruption of message x would cause all messages with indices + higher than x to be neglected when threading! + +2002-09-23 Peter S Galbraith + + * mh-mime.el (mh-store-mime-parts): Don't store value into + user-customizable variable mh-store-mime-parts-default-directory + and use mh-store-mime-parts-directory instead. + +2002-09-20 Satyaki Das + + * mh-seq.el (mh-thread-prune-subject): Use regular expressions to + make the subject pruning behave the way it is specified in the + imap-thread RFC. + + * mh-speed.el (mh-speed-folders-actual): Don't use pop when we + are not going to use the first element. This avoids a compilation + warning with cvs emacs. + +2002-09-19 Satyaki Das + + * mh-utils.el (mh-display-msg): Put the call to + set-buffer-modified after mh-show-mode. This is needed for CVS + emacs since calling mh-show-mode marks the buffer as modified if + font-lock is on. + +2002-09-17 Peter S Galbraith + + * mh-mime.el (mh-store-mime-parts-default-directory): Renamed from + mh-store-mime-parts-directory + (mh-store-mime-parts-directory): Renamed from + mh-store-mime-parts-directory-default. + +2002-09-16 Peter S Galbraith + + * mh-comp.el (mail-citation-hook): Doc tweaks suggested by Bill. + +2002-09-08 Satyaki Das + + * mh-e.el (autoloads): Reorder autoload of mh-reply to avoid + compiler warning. + +2002-09-03 Peter S Galbraith + + * mh-mime.el (mh-store-mime-parts-directory): New defcustom. + Default directory to use for mh-store-mime-parts. + (mh-store-mime-parts): New Command. Store the MIME parts of the + current message. + (mh-store-mime-parts-directory-default): New internal working + variable. Default to use for mh-store-mime-parts-directory, set + from last use. + + * mh-e.el (mh-folder-seq-tool-bar-map): Add mh-store-mime-parts to + toolbar. + + +2002-08-22 Satyaki Das + + * mh-seq.el (mh-thread-generate-scan-lines): In threaded view, + complete scan lines are printed for all messages (not just the + ones at the top of a thread). + + * mh-index.el (mh-index-insert-scan): Replace use of kill-line + since that pollutes the kill-ring. + + * mh-comp.el (autoloads): Add autoloads for search and subseq to + get rid of compiler warnings. + +2002-08-19 Peter S Galbraith + + * reply-to.xpm, reply-to.pbm, reply-from.xpm, reply-from.pbm, + * reply-all.xpm, reply-all.bpm: New icons for various reply methods. + * mh-e.el (mh-folder-tool-bar-map): Split reply button into three + that won't prompt for "from", "to" and "all". + * mh-comp.el (mh-reply): Put variable reply-to in the interactive + list since it's specified on the command line for the new toolbar. + + * mh-comp.el (mail-citation-hook): Tweak docs concerning + historical usage for supercite. + (mh-yank-from-start-of-msg): Add settings 'supercite and + 'autosupercite. Rename 'automatic to 'autoattrib. + (mh-insert-prefix-string): Invoke sc-cite-original if + mh-yank-from-start-of-msg is et to 'supercite or 'autosupercite. + +2002-08-17 Satyaki Das + + * mh-comp.el (compilation-fix): Reorder defvars to avoid warnings + during compilation. + +2002-08-17 Peter S Galbraith + + * mh-comp.el (mh-yank-from-start-of-msg): Add 'automatic choice. + Do as for `attribution' automatically when show buffer matches the + message being replied-to. + (mh-reply): Call 'mh-yank-cur-msg when mh-yank-from-start-of-msg + is set to 'automatic and show buffer matches message number being + replied-to. + (mh-show-buffer-message-number): New helper function to get the + message number of the current show-buffer. + (mh-yank-cur-msg): Handle 'automatic choice the same as 'attribution. + (mh-yank-cur-msg): Bug fix. It would bail on error if + mh-show-buffer didn't exists. + +2002-08-16 Peter S Galbraith + + * mh-comp.el (mh-insert-x-mailer): It wrongly assumed that Emacs + was used even when XEmacs was used. Fixed so X-Mailer header is + more exact about what we are using. + +2002-08-15 Peter S Galbraith + + * mh-e.el (mh-version): Change CVS version number to 6.1+cvs just + so X-Mailer header is more exact about what we are using. + + * mh-mime.el (mh-mhn-compose-insertion, mh-mhn-compose-anon-ftp, + mh-mml-attach-file): + "Jeffrey P. Morgenthaler" reported + that "require" in emacs 20.3 doesn't handle 3 arguments. We + use "load" at the top of file elsewhere anyway to handle such a + case of non-essential loading, so switch to that here. + +2002-08-06 Satyaki Das + + * mh-funcs.el (autoload): Add autoload for mh-speed-invalidate-map. + + * mh-speed.el (mh-speed-add-folder): New function to make the + speedbar aware of new folders when they are created by mh-e. + + * mh-utils.el (mh-prompt-for-folder): Use mh-speed-add-folder to + tell speedbar that new folder is being created. Also use folder + instead of mkdir to create new folders. + +2002-08-01 Peter S Galbraith + + * mh-utils.el (mh-decode-quoted-printable): Conditionalize the + limit of search for quoted-printable. If we're using mm-decode + for MIME decoding, it's possible that `mimedecode' could mess our + message, so we only run a full search for quoted-printable parts + when not using gnus' mm-decode. When using mm-decode, mimedecode + can still help by handling the case of the whole message being + quoted-printable as opposed to only a part. + +2002-07-31 Peter S Galbraith + + * mh-comp.el (mh-compose-insertion): Moved from mh-mime.el because + the pulldown menu were broken in XEmacs21 from this variable being + undefined. + +2002-07-28 Mark D. Baushke + + * mh-utils.el (mh-show-mode): Use the default paragraph-start + rather than the inherited text-mode value. + +2002-07-28 Satyaki Das + + * mh-seq.el (mh-thread-duplicates): New hash table to track + duplicate messages. + (mh-thread-get-message): Remove debug code. + (mh-thread-canonicalize-id): Modified to handle messages without + message-id header. Such messages are given distinct copies of the + empty string as message-id. + (mh-thread-generate): The function was inadvertently rebuilding + the thread tree when message refiles and message deletes are + processed. The change here fixes that. Also code has been added to + keep track of duplicate message-id's. + (mh-thread-generate-scan-lines): Modified to print scan lines for + duplicate messages (that is messages with the same message-id). + (mh-thread-forget-message): Modified to maintain + mh-thread-duplicates. + +2002-07-22 Satyaki Das + + * mh-speed.el (mh-speed-parse-flists-output): Use delete-region + instead of kill-region. Otherwise the kill ring gets polluted. + +2002-07-16 Satyaki Das + + * mh-seq.el (mh-thread-update-scan-line-map): New function to + refresh the stale scan lines. + (mh-thread-inc): Update old scan lines when mh-thread-inc is + called. Otherwise notations for deleted and refiled messages get + lost and the folder display gets out of sync with real mh-e state. + + * mh-mime.el (mh-mm-display-part): Call Gnus citation highlight + code when text part is displayed. Otherwise buttonized text parts + aren't correctly fontified when they are displayed. + +2002-07-15 Mark D. Baushke + + * mh-utils.el (mm-decode): Use load for the Non-fatal depencency + on the mm-decode library. + * mh-mime.el (mm-decode, mm-uu, mm-view): Use load for the + Non-fatal depencencies on the mm-decode, mm-uu and mm-view + libraries. + +2002-07-15 Satyaki Das + + * mh-utils.el (mh-require, mh-autoload): Remove these macros. + (mh-decode-mime): Initialized to t iff the mm-decode library is + present in the load-path. + * mh-mime.el (mh-require): Don't use it anymore. + +2002-07-15 Mark D Baushke + + * mh-utils.el (mh-update-scan-format): Rewrite for compatibility + with Xemacs as replace-match appears not to have identical + functionality with FSF emacs. + (mh-scan-msg-format-regexp): Deleted. This regexp is now hardcoded + into the mh-update-scan-format function. + +2002-07-12 Satyaki Das + + * mh-seq.el: Add message threading code. + + * mh-utils.el (mh-letter-thread-folder): New interactive function + that allows switching to threaded view from show buffer. + (mh-show-folder-map): Bound "F t" to call mh-letter-thread-folder. + (mh-goto-msg): Replace the function to not assume that messages + are sorted in the folder buffer. + + * mh-e.el (mh-folder-threaded-view-p): New buffer local variable + in the folder buffer that records whether threaded view is being + used currently. + (mh-scan-subject-regexp, mh-scan-format-regexp): Get font lock + working for threaded view as well. + (mh-regenerate-headers): Reset mh-folder-threaded-view-p to nil. + (mh-get-new-mail, mh-process-commands): Do incremental threading + if folder is in threaded view. + (mh-delete-scan-msgs): Update thread tables if folder is in + threaded view. + (mh-folder-map): Add "F t" as key binding for mh-thread-folder + + * mh-comp.el (mh-yank-cur-msg): Bug fix. mh-show-buffer is only + has a meaningful value in the folder buffer. + +2002-07-11 Peter S Galbraith + + * mh-comp.el (mh-yank-cur-msg): Run only if mh-show-buffer + actually exists (otherwise a back-traceable error occurred). + + * mh-utils.el (mh-find-progs): Run PATH search only when mh-progs, + mh-lib and mh-lib-progs are not all already set. This allows the + user to set them using a simple setq prior to loading mh-e. This + is useful for implementation of mh-e on win32. Note that many + commands still call mh-find-path which also parses the mh_profile + file (that may still fail on win32), so this is still done often. + But it lets us change the mh_profile file and have mh-e see the + changed file without exiting emacs and starting over so I left + that in. + +2002-07-04 Satyaki Das + + * mh-index.el (mh-index-show): Fixed a bug in mh-index-show which + caused it to lose track of point when called from show buffer. + +2002-07-04 Mark D. Baushke + + * Makefile: Add more information and common methods to allow both + GNU make and Berkeley make to properly build everything. + +2002-07-04 Satyaki Das + + * mh-mime.el (mh-push-button): Bug fix for mime display with + mouse. Select show window before executing the mime display + functions. + +2002-07-01 Mark D. Baushke + + * Makefile: Use a conditional variable assignment operator rather + than ifndef to let Makefile be used by both GNU make and Berkeley + make (or similar versions of make). This does not help Solaris + /usr/ccs/bin/make, but Solaris make has problems with the ifndef + syntax too. + +2002-07-01 Satyaki Das + + * mh-index.el (mh-index-search): Check for mh-decode-mime before + adding mh-mime-cleanup to kill-buffer-hook. + + * mh-mime.el (mm-destroy-parts): Add definition for old emacs. + +2002-06-30 Mark D Baushke + + * mh-utils.el (mh-update-scan-format): Add documentation string. + (mh-scan-msg-format-regexp): Update the regexp to find %(msg). + (mh-set-cmd-note): When mh-scan-format-file is not t, dynamic + update of mh-cmd-note is wrong. Do not assume that + mh-scan-format-nmh and mh-scan-format-mh can be kept in lock-step + with mh-cmd-note via mh-set-cmd-note. The mh-scan-format function + is now where the updated mh-cmd-note value is put into the scan + format. + + * mh-e.el (mh-generate-new-cmd-note): Add documentation string. + (mh-scan-format): Use mh-update-scan-format to get updated copies + of mh-scan-format-nmh and mh-scan-format-mh to avoid format skew. + (mh-get-new-mail): Do not try to adapt mh-cmd-note unless + mh-scan-format-file is equal to t. + (mh-scan-format-nmh): No longer buffer local. + (mh-scan-format-mh): No longer buffer local. + +2002-06-30 Satyaki Das + + * mh-index.el (mh-index-max-msg-index): New variable to keep track + of max message index among search results. If mh-adaptive-cmd-note + is non-nil this is used to compute the width of the index field. + (mh-index-search): Keep track of max index seen while parsing the + search results and set it if mh-adaptive-cmd-note is non-nil. + (mh-index-find-max-width): New function to find the required width + of the message index field. + (mh-defun-index): Binding buffer local variables is bad, so don't + do that. + (mh-index-show): New argument display-headers-p decides whether + the message is displayed in raw form or not. + (mh-index-header-display): New interactive function bound to "," + which shows the message in raw form. + (mh-index-keymap): Add appropriate bindings for backtab and ",". + (read-from-string): Add ignore-errors around it so that the code + doesn't die when it gets unexpected input. + +2002-06-29 Satyaki Das + + * mh-index.el (mh-count-windows): This function works around the + lack of the window-list builtin function in emacs20. + +2002-06-29 Mark D Baushke + + * mh-utils.el (mh-message-number-width): New function to scan + the last message of a folder and return its width. + (mh-adaptive-cmd-note): New variable, if Non-nil indicates that + mh-set-cmd-note should be called with the message width for the + folder. + (mh-cmd-note): Update documentation. + (mh-update-scan-format): Helper function for updating the + mh-scan-format-nmh and mh-scan-format-mh variables. + (mh-scan-msg-overflow-regexp): New variable to help find problem + messages after an inc. + (mh-scan-msg-format-regexp): New variable to find the old message + width in one of the mh-scan-format-nmh or mh-scan-format-mh + variables. + (mh-set-default-cmd-note): Replaced by mh-set-cmd-note. + (mh-set-cmd-note): New function to replace update mh-cmd-note + value. + + * mh-e.el (mh-regenerate-headers): If mh-adaptive-cmd-note is + non-nil, use mh-set-cmd-note on empty folder buffers. + (mh-make-folder): Ditto. + (mh-generate-new-cmd-note): New function to adapt the mh-cmd-note + to fit when mh-get-new-mail gets message number truncation. + (mh-get-new-mail): Maybe use mh-generate-new-cmd-note if + mh-adaptive-cmd-note is Non-nil. + +2002-06-29 Satyaki Das + + * mh-speed.el (mh-speed-view): The display gets confused if the + cursor is in the show buffer when mh-speed-view is called. This is + a fix for that. + +2002-06-27 Satyaki Das + + * mh-e.el (mh-next-undeleted-msg): Get rid of optional arg + reverse-p. If there are no more undeleted messages the the point + remains at its original position and a message is produced (closes + SF #494304). + (mh-previous-undeleted-msg): Change similar to + mh-next-undeleted-msg. + (mh-next-msg, mh-refile-msg, mh-delete-msg): Backout previous + change. + (mh-folder-map): Bind "S-tab" and "K S-tab" to mh-prev-button. + + * mh-utils.el (mh-show-mode-map): Bind "S-tab" and "K S-tab" to + mh-letter-prev-button. + + * mh-mime.el (gnus-newsgroup-name): Initialize it to nil, so that + mm-uu-dissect doesn't cause error. + +2002-06-27 Mark D Baushke + + * mh-utils.el (mh-cmd-note): Make buffer-local. Changes to this + variable should be made via the new mh-set-default-cmd-note + function. + (mh-set-default-cmd-note): New function to setq-default the + mh-cmd-note, mh-scan-format-mh and mh-scan-format-nmh values to + related values. + + * mh-e.el (mh-scan-format-mh): Make buffer-local. + (mh-scan-format-nmh): Ditto. + (mh-scan-good-msg-regexp): Use a more general regular expression + so that the width of message numbers, mh-cmd-note, may vary. + (mh-scan-deleted-msg-regexp): Ditto. + (mh-scan-refiled-msg-regexp): Ditto. + (mh-scan-cur-msg-number-regexp): Ditto. + (mh-scan-cur-msg-regexp): Ditto. + (mh-scan-subject-regexp): Ditto. + +2002-06-26 Satyaki Das + + * mh-speed.el: Speedbar support code. + + * Makefile: Add mh-speed.el to MH-E-SRC. + + * mh-utils.el (mh-prompt-for-folder): Add speedbar hook if + speedbar is being used. + + * mh-funcs.el (mh-kill-folder): Add speedbar hook if speedbar is + being used. + + * mh-e.el (speedbar-autoloads): Autoload speedbar initialization + functions so that speedbar can find them. + +2002-06-25 Satyaki Das + + * mh-index.el (mh-grep-execute-search, mh-grep-next-result): Allow + grep to be used to search mail. + (mh-index-font-lock-keywords): Modified to avoid bug when using + lazy font-lock. + + * mh-e.el (mh-delete-msg, mh-refile-msg): Modify so that if no + undeleted (or unrefiled) message exists in the current movement + direction then try to find an undeleted (or unrefiled) message in + the opposite direction instead. + (mh-next-undeleted-msg): Added a new optional argument. If non-nil + search for undeleted message backwards if none exists in the + forward direction. + (mh-previous-undeleted-msg): Added an optional argument. If + non-nil search for undeleted message in the forward direction if + none exists in the backward direction. + (mh-next-msg): Optional argument to change direction if undeleted + messages are not found in the current direction. + + * mh-index.el (mh-cmd-note): Use mh-cmd-note instead of hardcoding + the index field size to 4. + + * mh-utils.el (mh-show-addr, mh-show-xface): New functions added + to do xface display and goto-addr interface to allow reuse by the + mime display code. + (mh-show-mode): Use mh-show-addr and mh-show-xface. Only add + mh-mime-cleanup to kill-buffer-hook if mime decoding is enabled. + (mh-modify): Use mh-letter-mode instead of mh-show-mode when + editing messages. + + * mh-mime.el (mh-mm-inline-message): Arrange for xface and + highlighting to work in forwarded messages. + +2002-06-23 Peter S Galbraith + + * mh-comp.el (mh-yank-from-start-of-msg): Add 'attribution' option + to add an attribution line in mh-yank-cur-msg. + (mh-extract-from-attribution-verb): Verb to use for attribution + when a message is yanked by mh-yank-cur-msg. Provides a method + for setting a different language. + (mh-yank-cur-msg): Add support for 'attribution' option. + (mh-extract-from-attribution): Function to get the attribution + line, or the sender from the From: line in the current show buffer. + +2002-06-20 Satyaki Das + + * mh-index.el (mh-index-show): mh-display-msg was not being called + in the show buffer. This causes weird results on some mime messages. + + * mh-mime.el (gnus-newsgroup-charset): Defvar to avoid error in + pgp messages if gnus hasn't been used yet. + + * mh-comp.el (mh-letter-mode-map): Typo fix. + +2002-06-19 Satyaki Das + + * mh-mime.el (mh-mml-secure-message-encrypt-pgpmime): Typo fix. + (compiler-warnings): Add autoloads to remove compiler warnings. + + * mh-index.el (autoload-fixes): Fix autoload forms. + +2002-06-18 Satyaki Das + + * mh-comp.el (mh-letter-mode-map): Change binding of "\C-c\C-ma" + to mh-compose-insertion. Remove duplicate binding for "C-c\C-mf". + (compiler-warnings): Add defvar to remove compiler-warning. + +2002-06-18 Peter S Galbraith + + * mh-comp.el (mh-letter-menu): Conditionalize GPG function on + mh-gnus-pgp-support-p. + + * mh-mime.el (mh-mml-forward-message): s/subseq/substring/. + (mh-compose-forward): cut&paste typo: s/messages/message/. + (mml-minibuffer-read-file): autoload added. + (mml-minibuffer-read-description): autoload added. + (mml-insert-empty-tag): autoload added. + (mh-mml-secure-message-sign-pgpmime): Check mh-gnus-pgp-support-p. + (mh-mml-secure-message-encrypt-pgpmime): Check mh-gnus-pgp-support-p. + +2002-06-17 Peter S Galbraith + + * mh-utils.el (mh-show-use-xface): Check for availability of + `uncompface' executable on system. + + * mh-mime.el (mh-compose-forward): New front end for both + mh-mml-forward-message and mh-mhn-compose-forw. + (mh-compose-insertion): New front end for both mh-mml-attach-file + and mh-mhn-compose-insertion. + (mh-mml-to-mime): New function. Compose mime message from mml + directives. + (mh-mml-forward-message): New function. Forward a message as + attachment. + (mh-mml-attach-file): New function. Attach a file to the outgoing + MIME message. + (mh-mml-compose-insert-p): New variable. Buffer-local variable to + know whether MIME insertion was done. Triggers an automatic call + to `mh-mml-to-mime' in `mh-send-letter'. + (mh-mml-secure-message-sign-pgpmime): New function. + Front end to mml-secure-message-sign-pgpmime. + (mh-mml-secure-message-encrypt-pgpmime): New function. + Front end to mml-secure-message-encrypt-pgpmime. + + * mh-comp.el (mh-send-letter): automatic call to `mh-mml-to-mime' + if mh-mml-compose-insert-p is set. + (mh-letter-mode-map): Add keys for new mh-mime functions above. + * mh-comp.el: Added autoloads for new mh-mime functions above. + +2002-06-17 Peter S Galbraith + + * mh-utils.el (mh-show-use-xface): new defcustom to determine + whether to call external package x-face to display the x-face. + (mh-invisible-headers-show-xface): variable now defaults to value + of mh-show-use-xface. + (mh-show-mode): When mh-show-use-xface is t, invoke + external package x-face to display the x-face. + +2002-06-15 Satyaki Das + + * mh-e.el (mh-prev-button): New interactive function which moves + point to the previous mime button in the show buffer. + (mh-folder-mode-map): Bind M-TAB and K M-TAB to mh-prev-button. + + * mh-utils.el (mh-show-mode-map): Bind M-TAB and K M-TAB to call + mh-letter-prev-button (which is analogous to mh-prev-button). + (mh-gnus-pgp-support-p): New global variable to replace the + variable mh-recent-gnus-p. The name better describes what it is + used for. + + * mh-mime.el (mh-mime-display-part, mh-mime-display-single): Use + mh-gnus-pgp-support-p instead of mh-recent-gnus-p. + +2002-06-12 Satyaki Das + + * mh-mime.el (mh-display-buttons-for-inline-parts): New + customizable variable. When non-nil inline parts have are + displayed with a button (that is initially expanded). + (mh-maybe-insert-newline): The function has been removed. + (mh-mime-display-single): Add code to display buttons for inline + parts. Reduce the insertion of extra newlines between inline parts + and also for pgp signature parts. + (mh-mm-display-part): The function has been rewritten and cleaned + up. There was a bug which could change the show buffer if the user + pressed C-g while a mime part was being displayed has been fixed. + (mh-press-button, mh-push-button): Use unwind-protect to make sure + that set-buffer-modified-p is always called after mime display. + (mh-mime-inline-part): The behavior of the function has been + changed so that it toggles the display of the raw bytes. + (mh-mime-display-security): Remove the display of too many + newlines. + (documentation): Remove most check-doc warnings. + + * mh-comp.el (mh-filter-out-non-text): Updated since whitespace + added around mime buttons have changed. + +2002-06-10 Satyaki Das + + * mh-index.el (mh-index-last-search, mh-index-search): The default + prompt in mh-index-search has been removed since currently there + is no good way of reading "+" with mh-prompt-for-folder. + (mh-index-folder-mode, mh-index-show-mode): New major modes + derived from mh-folder-mode and mh-show-mode respectively. They + use a restricted keymap compared to the parent modes. + (mh-index-folder-face): New customizable face to display folder + names in the index buffer. + (documentation): Change two spaces after period back to one. + +2002-06-08 Satyaki Das + + * mh-e.el (mh-folder-toggle-mime-part): New interactive function + to control mime display from folder buffer. + (mh-folder-inline-mime-part): New interactive function to inline + raw mime part from folder buffer. + (mh-folder-save-mime-part): New interactive function to save mime + part from folder buffer. + (mh-folder-mode-map): Add keybindings for "K v", "K o", "K i" and + "K \t" to mh-folder-mode-map. + (mh-goto-next-button): Modified to allow searching for next button + that satisfies some condition. + (mh-folder-mime-action): Support function for + mh-folder-save-mime-part, mh-folder-inline-mime-part and + mh-folder-toggle-mime-part. + + * mh-utils.el (mh-show-mode-map): Modify keymap to add appropriate + bindings for "K v", "K o", "K i" and "K \t". + + * mh-index.el (documentation): Fix docs according to checkdoc + format. + +2002-06-07 Satyaki Das + + * mh-seq.el, mh-funcs.el (Compiler): Remove (require 'view) and + instead add defvar for view-exit-action. + +2002-06-06 Satyaki Das + + * mh-comp.el (mh-insert-x-face): If transient-mark-mode is enabled + the call to mark returns error. So avoid using mark. + + * mh-index.el: Support for new interactive function + mh-index-search. + + * mh-e.el (mh-next-button, mh-goto-next-button): Refactor + mh-next-button so that the code may be reused by mh-index.el. + (mh-folder-map): Add key "F i" to call mh-index-search. + + * mh-utils.el (mh-recent-gnus-p): Fix documentation. + (mh-msg-folder, mh-display-msg): The new function mh-msg-folder + maps a MH folder name to the buffer displaying it. In normal + operation the two names are identical but they are different in a + folder buffer generated by index search. Minor modification to + mh-display-msg to use mh-msg-folder to enable mh-index-search to + reuse code. + (mh-show-mode-map): Add key "F i" to call mh-index-search. + + * Makefile: Add mh-index.el + +2002-06-05 Peter S Galbraith + + * mh-e.el (mh-folder-message-menu): Add an entry for mh-modify. + +2002-05-31 Satyaki Das + + * mh-utils.el (mh-decode-quoted-printable): Only decode if the + whole message is encoded. So restrict the search for the + content-transfer-encoding header to the headers of the message + itself. + + * mh-mime.el (mh-mime-display-alternative): Make sure that point + is moved after mm-display-part is called. + +2002-05-29 Satyaki Das + + * mh-mime.el (mh-mime-display-single): Fix the logic that + determines when an attachment is buttonized. For inline parts that + can't be displayed a button is now created. + +2002-05-29 Satyaki Das + + * mh-e.el (mh-regenerate-headers): Fix an error in which the + mh-mode-line-annotation was not being set properly. + + * mh-mime.el, mh-utils.el (compilation): Macros mh-require and + mh-autoload are used to make sure that emacs20 doesn't croak when + it tries to load non-existent mm-* files. + (mh-decode-mime): Make it default to nil for Emacs major version + below 21. + +2002-05-28 Satyaki Das + + * mh-e.el (mh-regenerate-headers): Generalize the function to + handle multiple ranges. + +2002-05-25 Satyaki Das + + * compilation: Reduce use of eval-when-compile so that load-path + is not changed if lisp files are loaded without compilation. Small + changes were made to Makefile, mh-comp.el mh-e.el, mh-funcs.el, + mh-seq.el, mh-utils.el + + * mh-e.el (mh-next-button, mh-folder-mode-map): New interactive + function to advance point to next MIME button. It is bound to TAB. + + * mh-utils.el (mh-letter-next-button, mh-show-mode-map): New + interactive function mh-letter-next-button has been added to + advance point to the next MIME button. It is bound to TAB. + + * mh-mime.el (comments): Added some comments. + +2002-05-24 Satyaki Das + + * mh-mime.el (compilation): Replace (eval-when-compile ...) by + (eval-when (compile) ...) to remove a bug when mh-e is loaded + without compilation. + +2002-05-23 Satyaki Das + + * mh-comp.el (compilation): Some code was rearranged to avoid + compiler warnings. + + * mh-e.el (compilation): Code rearrangement and extra autoloads to + remove compiler warnings + (mh-quit): Add call to mh-destroy-postponed-handles to remove + handles that are associated with external viewers. Also fixed a + bug that I accidentally introduced by adding an extra line when + cut and pasting my changes. + + * mh-func.el (compilation): Code rearrangement to remove compiler + warnings. + + * mh-mime.el (compilation): Code rearrangement to remove compiler + warnings. + (mh-defun-compat): New macro to define to useful functions that + aren't present present in old Gnus. + (mh-destroy-postponed-handles): New function to cleanup handles + that are associated with external viewers. + (mh-handle-set-external-undisplayer): New function to replace + mm-handle-set-external-undisplayer. It associates handles for + external viewers with the folder buffer. These are released when + the user quits the folder. + (mh-mime-display, mh-press-button, mh-push-button): Hook in + mh-handle-set-external-undisplayer. + (mh-maybe-insert-newline): New function to avoid inserting too + many newlines between mime parts. + (mh-mm-display-part): Workaround for Gnus bug which causes new + lines to be inserted when images are shown inline. + (mh-mime-display-security): Cut down on newlines inserted. + + * mh-pick.el (compilation): Code rearrangement to remove compiler + warnings. + + * mh-seq.el (compilation): Code rearrangement to remove compiler + warnings. + (comments): Remove @SD from comments. + + * mh-utils.el (compilation): Slight code rearrangement. + (mh-defun-show-buffer): Fix documentation so that the first line + is not too long as was the case earlier. Use + mh-previous-window-config to remember where the cursor should + return functions like mh-reply. + (mh-display-msg): Initialize handles data-structure for the folder + buffer so that postponed handles can be added to it. + (mh-add-msgs-to-seq): Always keep messages in the sequences + sorted. This removes some unexpected behavior when working with + sequences that go out of sync with the corresponding MH sequences. + (mh-canonicalize-sequence): New function to sort and remove + duplicates from mh-e sequence. + +2002-05-21 Satyaki Das + + * mh-utils.el (require): Load mm-decode.el here so that + mm-inline-media-tests is properly initialized. + + * mh-comp.el (mh-yank-cur-msg): Don't try to remove the displayed + mime parts when yanking the message. This also fixes the problem + of regions not being respected during the yank. + +2002-05-20 Satyaki Das + + * mh-utils.el (compiler-warnings): Some code was rearranged to + remove all compiler warnings. + (mh-decode-mime): New defcustom to control whether + mime attachments are shown using Gnus. + (mh-globals-hash): New global variable which maps a given buffer + to the corresponding mime data structures. + (mh-recent-gnus-p): New global variable which checks if Gnus is + recent enough so that PGP/GPG encrypted messages can be handled. + (mh-mm-inline-media-tests): Tests to determine whether a mime part + can be shown inline. + (mh-gnus-article-highlight-citation): Shadow the Gnus function, + gnus-article-add-button before gnus-article-highlight-citation is + called. This prevents the insertion of useless buttons in the + message. + (mh-show-mode): Don't set font-lock-support-mode to nil. Modify + kill-buffer-hook to call mh-mime-cleanup. + (mh-modify): Only the edit buffer is shown. + (mh-display-msg): Add call to mh-mime-display, mh-display-smileys, + mh-display-emphasis when mh-decode-mime is non-nil. + + * mh-mime.el (mh-buffer-data): New structure to keep track of + per-buffer mime information. + (compiler-warnings): Some code was rearranged to get rid of all + compiler warnings. + (mh-graphical-smileys-p): New defcustom which controls whether + graphical smileys are shown. + (mh-graphical-emphasis-p): New defcustom for graphical emphasis. + (mh-max-inline-image-width, mh-max-inline-image-height): New + defcustoms for inlining image. + (gnus-local-map-property, mm-merge-handles): Copy utility + functions for use with version of Gnus that ships with Emacs21.1. + (mh-mime-cleanup): New function to free mime data-structures. + (mh-add-missing-mime-version-header): New function to add missing + Mime-Version header if a Content-Type header exists. + (mh-display-smileys): New function to show graphical smileys. + (mh-display-emphasis): New function to show graphical emphasis. + (new-globals): New variables mh-mime-button-* and + mh-mime-security-* were added to control mime buttons. + (mh-mime-display): New function to display mime messages. The + functions mh-mime-display-part, mh-mime-display-alternative, + mh-mime-display-mixed, mh-mime-part-index, mh-small-image-p, + mh-mime-display-single, mh-insert-mime-button, mh-mm-display-part, + mh-press-button, mh-push-button, mh-mime-save-part, + mh-mime-inline-part, mh-widget-press-button, mh-mm-inline-message, + mh-mime-display-security, mh-mime-security-show-details, + mh-mime-security-press-button and mh-insert-mime-security-button + were added to support mh-mime-display. + + * mh-e.el (mh-header-display): Bind mh-decode-mime to nil when + mh-show-msg is called, so that mime isn't decoded when headers are + displayed. + (mh-quit): The show buffer is killed instead of invalidating and + burying it. + + * mh-comp.el (mh-yank-cur-msg): Filter out the mime buttons from + the yanked message. + (mh-filter-out-non-text): New function to filter out attachments + from message being yanked. + +2002-05-20 Bill Wohler + + * mh-utils.el (mh-invisible-headers-show-xface): First sentence of + docstring was not entirely on first line so was truncated in + customize and help buffers. Reworded so first sentence could fit + within 80 columns per checkdoc recommendation. + (mh-defun-show-buffer): Reworded per checkdoc recommendations. + Removed @SD while I was in there. + +2002-05-18 Satyaki Das + + * mh-seq.el (mh-narrow-to-seq): This function now removes the + current message notation in the folder. Otherwise, two current + message notations may be present after mh-widen is called. Also + mh-copy-seq-to-eob is called instead of mh-copy-seq-to-point since + the latter has a bug. + (mh-copy-seq-to-point): This function has a tricky problem. It + calls mh-map-to-seq-msgs which uses mh-goto-msg. mh-goto-msg + assumes that the folder is sorted (since it uses binary + search). The assumption isn't true, so it may not copy all the + messages. Since this function is not used any more it has been + removed. + (mh-copy-seq-to-eob): This function is a specialized (and + hopefully correct) replacement for mh-copy-seq-to-point. + +2002-05-17 Satyaki Das + + * mh-utils.el (mh-gnus-article-highlight-citation): Workaround for + problem caused by low value of recursive-load-depth-limit in + Emacs21.1 and CVS version of Gnus. + (mh-show-mode-map): New keymap variable to facilitate use of + summary commands from the show buffer. + (mh-show-folder-buffer): New local variable which keeps track of + the folder-buffer corresponding to the message being shown. + (mh-defun-show-buffer): New macro to convert interactive functions + callable in the summary buffer to interactive functions callable + in the show buffer. + (mh-show-mode): Make buffer read-only and use mh-show-mode-map as + keymap (closes SF #527946). + (mh-modify): New interactive function to edit a message in-place. + + * mh-e.el (mh-goto-cur-msg): Add an optional argument, + minimal-changes-p. If non-nil, the function will just change + the point to current message and do not change folder display. + (mh-folder-mode-map): Make "M" call mh-modify. + +2002-05-07 Peter S Galbraith + + * mh-utils.el (mh-invisible-headers-show-xface): New defcustom + variable. If non-nil, the X-Face header line will be excluded from + the variable `mh-invisible-headers'. Set this when using a + package such as x-face-el to display X-Face icons in mh-show-mode. + This variable's setting will eventually be set automatically when + mh-e does its own X-Face decoding (or this variable will be replaced + by one telling mh-e to decode the X-Face). We may not ship the + next release with this variable. + +2002-05-07 Peter S Galbraith + + * mh-comp.el (mh-x-face-file): New defcustom variable. File name + containing the encoded X-Face string to insert in outgoing mail. + (mh-insert-x-face): New function. Appends an X-Face field to the + header, but only if it doesn't already exist and if 'mh-x-face-file' + is non-nil and points to an existing file. + (mh-send-letter): Invoke mh-insert-x-face. + +2002-04-29 Mike Kupfer + + * mh-e.el (mh-delete-msg, mh-refile-msg, mh-undo): Check + whether XEmacs region is actually active (needed at least for 21.1). + [Patch committed by psg] + +2002-04-29 Mike Kupfer + + * mh-utils.el (mh-prompt-for-folder): Remove "default" argument + from completing-read as XEmacs-21.1 doesn't have it (21.4 does + however) and using the argument adds no functionality. + [Patch committed by psg] + +2002-04-11 Peter S Galbraith + + * mh-e.el (mh-delete-msg, mh-refile-msg, mh-undo): Add support for + XEmacs to act on selected region when active. + +2002-04-10 Peter S Galbraith + + * mh-e.el (mh-delete-msg, mh-refile-msg, mh-undo): XEmacs fix; Add + check to see if mark-active is bound, because Mandrake Linux include + XEmacs initialization code that binds transient-mark-mode. This + fix gets around a problem in Mandrake only. It wasn't a problem + on XEmacs generally. Fixes SF #541915. + +2002-04-08 Bill Wohler + + Released mh-e version 6.1. + + * mh-e.el (mh-folder-unseen-seq-name): Use "mhparam -component + Unseen-Sequence" command and "Unseen-Sequence: \\(.*\\)$" regexp + to increase robustness. + (mh-folder-unseen-seq-list): Use `expand-file-name' as + `mh-expand-file-name' isn't needed and the former saves function + call. + (Version, mh-version): Updated for release 6.1. + +2002-04-08 Peter S Galbraith + + * mh-e.el (mh-folder-unseen-seq-list): Specify mh-progs path in + call to mark command. Fixes a bug in which unseen messages + weren't highlighted if "mark" wasn't in the path. + +2002-04-07 Bill Wohler + + * MH-E-NEWS: Updated for release 6.1. + + * README: Updated for release 6.1. Updated verbiage about reading + MH-E-NEWS. + + * mh-comp.el, mh-e.el, mh-funcs.el, mh-mime.el, mh-seq.el, + mh-utils.el, mh-xemacs-compat.el: Updated copyright in files + modified this year. + + * mh-xemacs-compat.el: Put Author field back in, but set to FSF. + + * mh-comp.el, mh-funcs.el, mh-mime.el, mh-seq.el, + mh-utils.el: Fixed all checkdoc errors, except for no + documentation, and documentation in comments. Also removed the- + prefix from certain local variables. + + * mh-e.el: Fixed all checkdoc errors, except for no documentation, + and documentation in comments. Also removed the- prefix from + certain local variables. + (mh-folder-unseen-seq-name): Refactored to make default sequence + name more explicit and to handle undefined Unseen-Sequence MH + profile entry better. + +2002-04-02 Peter S Galbraith + + * mh-e.el: 'defvar mh-folder-unseen-seq-name' called a function to + set it's value, and this happens also on byte-compilation (where + it can fail if the user's MH environment is not setup correctly). + I now set the value of mh-folder-unseen-seq-name at runtime when I + first need it. This should fix Debian bugs + http://bugs.debian.org/140232 and http://bugs.debian.org/140817 + +2002-03-25 Peter S Galbraith + + * mh-utils.el: remove "(require 'mh-e)" since mh-utils.el should + be at the bottom of the dependency tree. + * mh-e.el (mh-folder-unseen-seq-name): Make sure mh-progs is set + and use it as path to mhparam command in call-process. + +2002-01-23 Peter S Galbraith + + * mh-e.el (mh-folder-font-lock-keywords): Add call to + mh-folder-font-lock-unseen to fontify unseen messages in bold. + (mh-folder-unseen-seq-name): Provide name of unseen sequence from + mhparam. Used as default for variable of same name. + (mh-folder-unseen-seq-list): Returns a list of unseen messages + numbers for current folder. + (mh-folder-unseen-seq-cache): Cache variable to hold list of + unseen message numbers while font-lock iterates. This variable is + buffer-local. + (mh-folder-font-lock-unseen): Returns unseen message lines to + font-lock one by one. + +2002-01-15 Peter S Galbraith + + * mh-comp.el (mh-insert-prefix-string): Wrap a + "(let ((zmacs-regions nil))" around (mark) so it works in XEmacs. + Bug reported and fix suggested by Will Partain + Indeed, this is how it appears in XEmacs-21's mh-comp.el. + +2001-12-16 Jeffrey C Honig + + * mh-comp.el (mh-forward): Move the assignment to `fwd-msg-file' + to before the assignment to `draft' as the later changes buffers + and invalidates `mh-seq-list' (which is used in a function called + by (mh-seq-to-msgs)). Resolves SF #489448. + + * mh-utils.el: Add defcustoms for `mh-temp-folders-buffer' and + `mh-temp-sequences-buffer'. + + * mh-e.el (mh-quit): If they exist, kill 'mh-temp-buffer, + 'mh-temp-folders-buffer and 'mh-temp-sequences-buffer when + quitting. + + * mh-funcs.el (mh-list-folders): Use `mh-temp-folders-buffer' + (a defcustom initialized to "*Folders*") for folder listing. Put + into view mode and set it up to kill the buffer when exiting view + mode. + + * mh-seq.el (mh-list-sequences): Use `mh-temp-sequences-buffer' + (a defcustom initialized to "*Sequences") for sequences listing. + Put into view mode and set it up to kill the buffer when exiting + view mode. + +2001-12-16 Bill Wohler + + Released mh-e version 6.0. + + * MH-E-NEWS: Be a little more specific about incompatible changes. + Added info about outdated manual. + Removed variables in mh-scan regexp table that did not exist in + 5.0.2. + Added helpful documentation about finding relevant variables + containing regexps to mh-scan-format-file's description. + + * mh-e.el (mh-scan-format-file): Added information about getting a + list of regexp variables that you'll need to change if you + customize your scan's output. + (mh-folder-mode): Added documentation about `mh-scan-format-file' + for those users who modify their scan formats. + + * README: New file. Describes packages and provides simple + installation instructions. + + * Makefile (clean, dist, install-emacs): Replaced $(RM) with rm + -rf (closes SF #488661). + +2001-12-14 Bill Wohler + + Released mh-e version 5.0.93. + + * Makefile (MH-E-SRC): Added mh-xemacs-compat.el. + (MH-E-IMG): Added .pbm images for all. Removed mail_ prefix from + all. + (MH-E-IMG2): New variable to hold images in mail sub-directory. + (dist): Updated target to make mail sub-directory and copy + MH-E-IMG2 images there. + + * mh-xemacs-compat.el: Modified docs per GNU coding conventions. + + * mh-e.el: Reorganized variables having to do with the scan line. + Moved some random variables that were interspersed out of the + middle. Moved `mh-scan-format-file' first and let the variables + flow from there. + + As the number of variables increases, it is becoming important to + organize the mh-e namespace. Several variables having to do with + the format of scan lines were renamed, as follows: + (mh-good-msg-regexp): Renamed to mh-scan-good-msg-regexp. + (mh-deleted-msg-regexp): Renamed to mh-scan-deleted-msg-regexp. + (mh-refiled-msg-regexp): Renamed to mh-scan-refiled-msg-regexp. + (mh-valid-scan-line): Renamed to mh-scan-valid-regexp. + (mh-cur-msg-number-regexp): Renamed to mh-scan-cur-msg-number-regexp. + (mh-cur-msg-line-regexp): Renamed to mh-scan-cur-msg-regexp. + (mh-scan-rcpt-addr-regexp): Renamed to mh-scan-rcpt-regexp. + (mh-scan.font-lock-regexp): Renamed to mh-scan-format-regexp. + (mh-folder-scan-font-lock-face): Renamed to + mh-folder-scan-format-face. + (mh-folder-cur-msg-line-face): Renamed to mh-folder-cur-msg-face). + +2001-12-13 Bill Wohler + + * mh-utils.el (mh-msg-number-regexp): Renamed to + mh-scan-msg-number-regexp. + (mh-msg-search-regexp): Renamed to mh-scan-msg-search-regexp. + + * Corrected typos, quoted variables in doc strings, and made minor + wording changes in docs. + +2001-12-13 Peter S Galbraith + + * mh-xemacs-compat.el: defalias 'match-string-no-properties to + 'match-string for XEmacs. I've seen a better function for this + that actually removes text properties, but this will do for now. + + * mh-utils.el (mh-decode-quoted-printable): deactivate-mark not + bound in XEmacs. + + * mh-xemacs-compat.el: GNU Emacs Functions needed by XEmacs. + New file. + * mh-e.el: (require 'mh-xemacs-compat) when running XEmacs. + +2001-12-12 Peter S Galbraith + + * mh-comp.el (mh-send-letter): function local-variable-p needs two + arguments in XEmacs. + (mh-send-letter): sendmail-coding-system not bound in XEmacs. + (mh-send-letter): default-buffer-file-coding-system not bound in + Xemacs. + + * mh-e.el (mh-delete-msg, mh-refile-msg, mh-undo): + transient-mark-mode not bound in XEmacs. The feature of + operations made on all messages in the selected range when + transient-mark-mode is on doesn't work in XEmacs. + + * mh-e.el, mh-utils.el: Conditionalize calls to + 'add-to-list 'facemenu-unlisted-faces for XEmacs. + +2001-12-11 Jeffrey C Honig + + * mh-e.el (mh-scan-format): Add `mh-scan-format-file' variable to + specify the scan format string or file to use. Define formats for + MH and nmh that are compatible with the standard format, but + provide hints for font-lock. Define (mh-scan-format) for use by + (mh-regenerate-headers) and (mh-get-new-mail) to specify the args + necessary to inform the scan program which scan format string or + file to use. + +2001-12-07 Peter S Galbraith + + * mh-e.el (scan.font-lock): New format file documented in comments. + (mh-scan.font-lock-regexp): Adapted to new format. + (mh-folder-font-lock-keywords): Use new format. + + * mh-e.el (page-down.xpm): Icon renamed from nextpage. + + * mh-utils.el (mh-decode-quoted-printable): Bug fix. Better check + on what actually is a quoted-printable attachment. + +2001-12-06 Eric Ding + + * mh-mime.el (mh-mhn-compose-insertion, mh-mhn-compose-anon-ftp): + require mailcap.el here rather than using autoload at top of + mh-mime. + (mh-file-mime-type): get rid of unused variables (why were they + there to begin with?) + +2001-12-06 Peter S Galbraith + + * mh-e.el (mh-cur-msg-number-regexp, mh-cur-msg-line-regexp): + mh-cur-scan-msg-regexp splits into these two variables. + The whole-line fontification is disabled, but easily restored by a + user (although it could be a defcustom with choices DISABLED or + the correct regexp?) + (mh-folder-cur-msg-line-face): mh-folder-current-msg-face renamed + to this. + (mh-folder-cur-msg-number-face): mh-folder-current-face renamed to + this. + + * cabinet.xpm: Revert to rescan icon name. + * mh-e.el (mh-folder-tool-bar-map): s/cabinet/rescan/ + + * mh-e.el (mh-folder-font-lock-keywords): Reorder and tweak such + that current message line highlight doesn't mess up other highlights. + +2001-12-05 Eric Ding + + * mh-utils.el (mh-show-from-face): Change mh-show-from-face to + cyan on dark backgrounds; through a series of changes, it had + become the same color as mh-show-subject-face! + +2001-12-05 Bill Wohler + + * mh-e.el, mh-utils.el: Fixed typos in face definitions, and made + a couple of small doc string tweaks while I was in there. Peter, + if you don't agree, let me know and I'll back them out. I thought + the "mh-e" in the text was redundant since the variables start + with "mh"; I was also thinking ahead to how the documentation may + read. + +2001-12-05 Peter S Galbraith + + * mh-e.el (mh-cur-scan-msg-regexp): Match 0 is the whole line. + (mh-folder-current-msg-face): New face with only a background + settings, used in font-lock for the current message. + (mh-folder-font-lock-keywords): Use mh-folder-current-msg-face for + mh-cur-scan-msg-regexp. + + * mh-utils.el (mh-show-from-face): Use red3 instead of red for + light backgrounds. It's not as bright on the eyes. + (mh-show-subject-face): copy from mh-folder-subject-face instead. + Makes the look consistent with folder-mode. + + * mh-e.el (mh-folder-subject-face): Moved to mh-utils since we + need it to copy to mh-show-subject-face. + +2001-12-05 Bill Wohler + + * mh-e.el (mh-folder-mode-map): Moved `mh-extract-rejected-mail' + from "a" to "E". Better mnemonic, nicer to folks used to using a + for `mh-reply'. + +2001-12-04 Bill Wohler + + * mh-e.el (mh-folder-map): Added "S" for `mh-sort-folder'. + +2001-12-04 Peter S Galbraith + + * mh-e.el (mh-folder-subject-face et al.): Yet another attempt at + colours for folder-mode. Still themed, but fewer and darker + colours (Blame Eric this time!). I'll get to underlining tomorrow + night. + + * mh-e.el (mh-folder-tool-bar-map): Renamed all icons so they + don't have the word mail in them. Also generated a pbm format of + each icon for users without XPM support conpiled into Emacs. + +2001-12-04 Eric Ding + + * mh-utils.el (mh-show-font-lock-keywords): Use + mh-header-subject-font-lock instead of regexp for subject headers, + which may go multiple lines. + (mh-header-subject-font-lock): New function. + Fix typos (hightlight -> highlight). + +2001-12-04 Eric Ding + + * mh-e.el: changes to face colors on dark backgrounds. + (mh-folder-followup-face): change to LightGoldenRod. + (mh-folder-date-face): change to snow3. + (mh-folder-msg-number-face): change to snow4. + +2001-12-04 Bill Wohler + + Released mh-e version 5.0.92. + + * mh-utils.el (gnus-cite-face-list) + (mh-gnus-article-highlight-citation): Don't autoload. Revert to + requiring in `mh-gnus-article-highlight-citation' as before. With + the autoloads, if you ran mh-e before gnus, you'd get an undefined + gnus variable when viewing an article in gnus. Go figure. + +2001-12-03 Bill Wohler + + Released mh-e version 5.0.91. + + * MH-E-NEWS: Removed info about bumping up `max-specpdl-size' now + that workaround has been implemented. + + * Makefile (MH-E-OBJ): New variable to hold .elc files. + (all): Just compile. + (clean): New target that blows away MH-E-OBJ. + (dist): Added $(MH-E-OBJ) to tarball. + + + Attempt to quiet compilation errors to a dull roar. + + * mh-e.el: Require easymenu, added autoload of info. + (mh-smail, mh-smail-other-window): Comment says these were needed + by Emacs 18. Out! + + * mh-utils.el: Don't require sendmail, but require mh-e. + Moved autoloads to top of file, and autoload gnus-cite and + sendmail too. + + * mh-pick.el: Require easymenu. Remove cond on + `easy-menu-define'--it exists. + + * mh-mime.el: Autoload mailcap. + + * mh-comp.el: Require mh-e and easymenu, moved autoloads to top of + file. + + + * Makefile: (EMACS): New constant to hold emacs calling sequence. + (install): Renamed to install-emacs. + (compile): New target to compile all files. + (dist): Make dependent on compile. + (import): Renamed to import-emacs. + (%.elc): New implicit rule to compile elisp files. + + * mh-e.el (mh-thread-map): Added "Td" for + mh-delete-subject-thread. + +2001-12-03 Peter S Galbraith + + * mh-e.el (mh-folder-tool-bar-map): Change tooltip for exec icon. + + * mh-e.el (mh-folder-subject-face): Change to IndianRed1. + (mh-folder-followup-face): Change to IndianRed. + (mh-folder-deleted-face): Use sedate face instead of bright one. + +2001-12-03 Bill Wohler + + * mh-utils.el (mh-invisible-headers): Increase size of + `max-specpdl-size' locally to work around insufficient default. + (mh-invisible-headers): Added X-Info and X-VSMLoop (NTMail). + +2001-12-03 Jeffrey C Honig + + * mh-utils.el (mh-find-progs): Searches should not stop if the + strings are not found, there is error detection at the end of the + routine (closes SF #488231). + +2001-12-02 Bill Wohler + + * MH-E-NEWS: Added info about bumping up `max-specpdl-size'. + + * Makefile (MH-E-IMG): New variable that contains images used by + mh-e. Add these files to release. + + * MH-E-NEWS: Second draft of mh-e 6.0 (was 5.1) release notes. + + * mh-e.el (mh-folder-updated-hook): Reworded to avoid ambiguity. + Is the hook called when you type `d' or when you type `x'? + (mh-unseen-updated-hook): Reworded to be consistent with + `mh-folder-updated-hook.' + + * mh-utils.el (mh-recenter): Accepted Gerd's change which is + evaluated at compile time. + +2001-12-02 Bill Wohler + + * mh-e.el Major, major keymap changes. The specific changes are + listed below, but view the sources, or use "C-h m" in MH Folder + mode for the complete list. + + Use of sub-keymaps inspired by gnus. The changes tripped me up at + first too, but after about 5 minutes of shock (which is to be + expected, I've been using the old keybindings for 16 years), I + honestly found the new bindings to be nice indeed. It will also + provide flexibility to allow for future functionality. I hate to + do this on the eve of the beta release, but you asked for it! It's + likely I'll have to pull an Eric and back this change out, but if + we can live with pink subjects, this can't be so bad ;-). + Question: will the users revolt? If they do, I suppose we can + release 6.0.1 the next day ;-). + (mh-folder-map, mh-sequence-map, mh-extract-map, mh-digest-map): + New keymaps which start with F, S, X, and D, respectively. The + mhstore commands can go in the mh-extract-map eventually. + (mh-thread-map): Renamed from mh-folder-thread-map. + + Keymap changes and rationale. The sub-keymaps allowed some + consistency (e.g., esp. with l(ist) and k(ill). + + e Deleted. Already have x. Now used by mh-edit-again. + a Deleted. Already have r. Now used by mh-extract-rej.. + j Deleted. Already have g. + + M-a -> e Better mnemonic. Matches rmail. Frees movement cmd. + M-e -> a Try `a'gain! + + M-f -> Fv Frees movement command + M-f -> Ff Alias (keep?) + M-f -> Fo Alias (keep?) + M-k -> Fk No reason but to keep with folder commands + M-l -> Fl No reason but to keep with folder commands + M-p -> Fp No reason but to keep with folder commands + M-r -> Fr Frees movement command + M-s -> Fs No reason but to keep with folder commands + M-u -> Fu No reason but to keep with folder commands + + M-% -> Sd Better mnemonic + M-# -> Sk Better mnemonic + M-q -> Sl Better mnemonic + C-xn -> Sn Frees up standard key binding + % -> Sp Better mnemonic for putting a message in a sequence + ? -> Ss Shows sequences that message is in + C-xw -> Sw Frees up standard key binding + + M-n -> Xs Better mnemonic (shar) + M-n -> Xu Better mnemonic (uuencode) + + M-SPC -> DSPC Frees mark command + M-\177 -> D\177 No reason but to keep with digest commands + M-b -> Db Frees movement command + +2001-12-01 Bill Wohler + + * mh-e.el: Use gnus style of keymaps. Now requires gnus-util. + (mh-folder-thread-map): New map, created by gnus-define-keys. + Reached when typing T in mh-folder-mode-map. Moved threading + functions to this new keymap so we can use dired again. + (mh-folder-mode-map): Defined by gnus-define-keys. Otherwise than + the new threading functions, no changes to the UI were made at + this point--saving that for the next check-in. + + * mh-pick.el (mh-pick-mode-map): Use gnus-define-keys. Now + requires gnus-util. + + * mh-comp.el (mh-letter-mode-map): Use gnus-define-keys. Now + requires gnus-util. + +2001-12-01 Jeffrey C Honig + + * mh-e.el: Update the documentation for the regexps used by + `mh-folder-font-lock-keywords' to specify how many parethesized + expressions they are expected to have and what those expressions + are expected to match. + +2001-12-01 Bill Wohler + + * mh-e.el (mh-folder-mode): Removed iteration of key bindings, + \\{mh-folder-mode-map} suffices. Removed variable documentation + also as this is already out of date and a maintenance hassle. + Reference new mh customization group instead. + + * mh-comp.el (mh-letter-mode): Ditto. Also added new information + about MIME directives getting processed automatically if inserted + via mh-e commands. + + * mh-pick.el (mh-pick-mode): Edited documentation so it reads like + the other modes. + + * mh-e.el (mh-compat-quit): Deleted obsolete and unused function. + Comment in this function said that `b' shouldn't be used for + burst-digest, as it is used for `back' in info, less, and rn. But + what does `back' mean in MH Folder? I suppose if you visit a + folder, you would go `back' to the original folder. Hmmm, I guess + we'll leave the `b' binding alone for now. + + * mh-utils.el: Moved some of the variable comments to the first + column so they wouldn't wrap in such an ugly fashion. + (mh-showing-mode): Renamed variable and function from mh-showing + to conform with minor mode conventions. Added optional arg to + function so it would behave like a normal minor mode: no or nil + arg toggles mode, 0 arg turns off, non-nil turns on. It also turns + out that desktop-create-buffer would barf when recreating mh-e + buffers because it was calling mh-show with an arg. + (mh-show-mode): Use define-derived-mode to simplify definition a + *lot*. + (mh-set-mode-name): Deprecated by use of define-derived-mode. + Removed. + + * mh-pick.el (mh-pick-mode): Use define-derived-mode to simplify + definition a *lot*. + + * mh-e.el (mh-scan-prog): Removed message about "Buffer local" as + this message will appear in a future version of Emacs. + (mh-inc-folder): mh-showing renamed to mh-show-mode and made a + real minor mode. + (mh-folder-mode): Use define-derived-mode to simplify definition a + *lot*. + + * import-emacs (release): Change `(none)' to `mainline' so import + doesn't choke after running `cvs up -A' on Emacs. + (COPYING): Moved from $EMACS_HOME/etc to $EMACS_HOME. + (cvs update): Whoops! Forgot the second join (-jemacs). + make import works fine again. + +2001-11-30 Peter S Galbraith + + * mh-e.el (mh-folder-font-lock-keywords): Change order of + font-lock patterns such that subject body text doesn't get date + fontification. + + * mh-e.el (mh-scan-subject-regexp): Bug fix. Remove a dot. + scan.font-lock users have to setq it separately. + +2001-11-30 Eric Ding + + * mh-utils.el (mh-clean-msg-header): Go back to using + mh-delete-line. Using invisible text property is nicer in some + ways, but winds up with somewhat mysterious behavior should user + kill/yank stuff from the header (i.e., text gets yanked invisibly + and won't be seen by user until file is reloaded). + +2001-11-29 Bill Wohler + + * mh-e.el (mh-page-msg): Use mh-next-direction to page in the + right direction. + +2001-11-29 Jeffrey C Honig + + * mh-e.el (mh-scan-folder): Fix logic to not attempt to go to + the current message if there are no messages in the folder. + +2001-11-29 Peter S Galbraith + + * mh-e.el (mh-folder-font-lock-subject): New fontifier function + for subject lines in folder-mode + (mh-scan-followup-regexp): Deleted obsolete regexp. Use + mh-scan-subject-regexp instead. + (mh-folder-font-lock-keywords): Use mh-folder-font-lock-subject + instead of obsolete mh-scan-followup-regexp variable. + (mh-folder-date-face, mh-folder-msg-number-face): + (mh-folder-subject-face, mh-folder-followup-face): + Now defined as proper faces instead of copied from font-lock + faces. + + * mh-mime.el (mh-media-type-regexp): New variable. Regexp matching + valid media types used in MIME attachment compositions. + (mh-file-mime-type): Use mh-media-type-regexp instead of + hard-wiring its value. + + * mh-utils.el (mh-show-unquote-From): New function to unquote + "^>From" in mh-show-mode (not saved to disk). + (mh-show-mode): Call mh-show-unquote-From. + +2001-11-29 Eric Ding + + * mh-utils.el (mh-clean-msg-header): Use mh-make-line-invisible + rather than mh-delete-line. + (mh-make-line-invisible): New function to make line(s) invisible + rather than deleting line(s). Optional argument specifies number + of lines to delete. + (mh-show-msg): screen-height has been deprecated; use no more. + (mh-notate): screen-width has been deprecated; use no more. + +2001-11-29 Jeffrey C Honig + + * mh-utils.el: (mh-find-progs): Change mh-find-progs to rely on + the existence of mhparam. The location of mhparam is used to find + `mh-progs'. It uses the libdir and etcdir to find the + `mh-lib-progs' and `mh-lib' directories. If etcdir doesn't return + anything we assume `mh-lib-progs' is the same as `mh-lib' and that + we are using MH instead of nmh. + +2001-11-29 Peter S Galbraith + + * mh-e.el (mh-scan.font-lock-regexp): Change docs to reflect that + second paren expression is the user match. + (mh-folder-font-lock-keywords): Change from 1st to 2nd parenthesized + expression to match user name, after Jeffrey's change to the regexps. + +2001-11-29 Bill Wohler + + * mh-utils.el (mh-clean-message-header): Default is now t. + (mh-invisible-headers): Padded out to contain all the headers that + the mh-e developers don't like to see (closes SF #415759). + +2001-11-28 Bill Wohler + + * mh-comp.el (mh-rejected-letter-start): Added MIME MDN. While + this allows mh-extract-rejected-mail to strip the start of the + MDN, there is still a closing MIME marker at the end. This should + be cleaned up eventually. + +2001-11-28 Peter S Galbraith + + * mh-e.el (mh-folder-seq-tool-bar-map): New tool-bar used for + folder-mode when narrowed to sequence. + * mh-seq.el (mh-narrow-to-seq): Set tool-bar to + mh-folder-seq-tool-bar-map. + (mh-widen): Set tool-bar to mh-folder-tool-bar-map. + * widen.xpm: New icon used in mh-folder-seq-tool-bar-map. + + * mh-mime.el (mh-file-mime-type): Much better check on validity of + 'file' output. + + * mh-e.el (mh-scan-subject-regexp): New regexp variable for + subject string in folder mode. Used to extract subject sequence, + and will be used for font-lock soon. + * mh-seq.el (mh-subject-thread-to-sequence): More robust code by + using mh-scan-subject-regexp, allows users with non-standard + scan format to use subject sequences. + + * mh-comp.el (mh-letter-fill-column): Fill column to use in + mh-letter-mode. (Yes, I'm doing this in spite of what Bill said; + Someone can always undo it later) + (mh-letter-mode): setq fill-column to mh-letter-fill-column. + +2001-11-28 Bill Wohler + + * mh-e.el (mh-page-msg): The first time the end of page is hit, + set mh-page-to-next-msg-p to t. The second time the end of page is + hit, go to the next message. + + * mh-utils.el: (mh-show-msg): Initialize mh-page-to-next-msg-p to + nil. + +2001-11-27 Bill Wohler + + * mh-mime.el (mh-mime-content-types): Updated list of types to + contain types used by mh-e developers, but not including types not + listed in + http://www.isi.edu/in-notes/iana/assignments/media-types/media-types. + +2001-11-27 Peter S Galbraith + + * mh-seq.el (mh-subject-thread-to-sequence) New function placing + all messages with similar subject line into a sequence named + 'subject. + (mh-narrow-to-subject-thread): New command to narrow to all + messages with similar subject line into a sequence named 'subject. + (mh-toggle-subject-thread): New command to toggle between a new + 'subject sequence or the wide view of a folder. + (mh-delete-subject-thread): New command to delete all following + messages with similar subject lines (leaving preceeding ones + untouched). + (mh-next-unseen-subject-thread): New command to create and move to + a new subject thread created from the next unseen message as a + starting point. + * mh-e.el (mh-folder-message-menu): New menu entries for subject + threads. + (mh-folder-mode-map): New keybindings for subject threads. + (mh-lessp): New function to sort messages. + + * mh-utils.el (mh-show-font-lock-keywords): and various + faces... scoped within eval-after-load "font-lock" to avoid + requiring font-lock to use its faces. + * mh-e.el (mh-folder-font-lock-keywords): Same. + +2001-11-27 Jeffrey C Honig + + * mh-mime.el (mh-file-mime-type): Use mh-temp-buffer instead of + " *mh-temp". + + * mh-comp.el (mh-insert-x-mailer): Kill mh-temp-buffer after use. + +2001-11-26 Eric Ding + + * mh-utils.el: revert to using external mimedecode to decode + MIME quoted-printable parts + +2001-11-26 Jeffrey C Honig + + * mh-e.el (mh-process-commands): Added mh-folder-updated-hook. + * mh-e.el (mh-update-unseen): Added mh-unseen-updated-hook. + +2001-11-26 Peter S Galbraith + + * mh-mime.el (mh-file-mime-type): Make sure output from file + command is known to mailcap file, otherwise prompt the user. + (mh-mime-content-types): Add "image/png" type. + + * mh-e.el (mh-folder-font-lock-keywords): Use a bunch of new + mh-folder-*-face faces. + * mh-utils.el (mh-show-font-lock-keywords): Use a bunch of new + mh-show-*-face faces. + + * mh-utils.el (mh-letter-header-font-lock): Bug fix. Fix infinite + loop in emacs20 font-locking. + (mh-header-field-font-lock): Preventive fix with similar change. + + * mh-comp.el (mh-reply-show-message-p): Typo. diplayed -> displayed. + * MH-E-NEWS: Same. + + * mh-e.el (mh-folder-tool-bar-map): Bug fix. I had + mh-repack-folder instead of mh-pack-folder. + +2001-11-26 Bill Wohler + + * mh-e.el: + Updated header for consistency and to conform with (elisp)Library + Headers. + (mh-do-not-confirm): Updated documentation string to reflect + reality (e.g., is no longer used by mh-kill-folder and is used by + more functions than just mh-undo-folder). + (mh-page-msg): Now shows the next undeleted message if looking at the + bottom of the current message. + (mh-process-or-undo-commands): Fixed indentation. + + * mh-mime.el: + (mh-mhn-compose-insertion, mh-mhn-compose-anon-ftp): If MIME type + cannot be determined with file command, use mailcap-mime-types (if + available) to provide list for completing read. + + * MH-E-NEWS: First draft of mh-e 5.1 release notes. + +2001-11-26 Eric Ding + + * mh-utils.el (mh-decode-quoted-printable): Implement + quoted-printable decoding in elisp (starting with code copied + from FLIM). + (mh-decode-quoted-printable-region): Move (require 'hexl) outside + while loop. + (mh-decode-quoted-printable): give user a choice between using + internal code or external program to decode quoted-printable + content. Resurrect code that calls external mimedecode program. + +2001-11-25 Peter S Galbraith + + * mh-utils.el (mh-highlight-citation-p): New variable to determine + whether to hightlight citations in message body with gnus, + font-lock or not at all. + (mh-show-font-lock-keywords): removed citations from keywords. + (mh-show-font-lock-keywords-with-cite): New variable, equivalent + to prior mh-show-font-lock-keywords. + (mh-gnus-article-highlight-citation): hook into gnus for + multi-level citation highlighting. + (mh-show-mode): Use either mh-show-font-lock-keywords or + mh-show-font-lock-keywords-with-cite, depending on value of + mh-highlight-citation-p, and possibly call + mh-gnus-article-highlight-citation. + * mh-comp.el (mh-letter-mode): Same as for mh-show-mode above. + +2001-11-25 Jeffrey C Honig + + * mh-comp.el (mh-redistribute): Added mh-redist-background + variable to cause mh-redistribute to run the redist command in the + background. This causes the transaction log to be visible, like + with send. + +2001-11-25 Peter S Galbraith + + * mh-e.el (mh-inc-folder): 'inc' finishes by displaying the first + new message if already showing messages. + +2001-11-22 Peter S Galbraith + + * mh-utils.el (mh-prompt-for-folder): Exit with error if no folder + specified, otherwise mh-refile-msg may try to create a folder with + empty name, and this creates problems; even mh-undo can't handle + it (Closes SF #476824). + + * mh-comp.el (mh-letter-tool-bar-map): Info button needed to + require 'info. Also tweaked help texts. + (mh-letter-menu): Use headline capitalization (Closes SF #483203). + * mh-e.el (mh-folder-tool-bar-map): Same as above. + (mh-folder-folder-menu, mh-folder-message-menu): + (mh-folder-sequence-menu): Same as above. + * mh-pick.el (mh-pick-menu): Same as above. + +2001-11-21 Peter S Galbraith + + * mh-comp.el (mh-reply-show-message-p): The setting of this + variable determines whether the MH show-buffer is diplayed with + the current message when using mh-reply without a prefix argument. + Set it to nil if you already include the message automatically in + your draft using "repl: -filter repl.filter" in your ~/.mh_profile + file. + (mh-reply): Don't show message in other window if + mh-reply-show-message-p is nil. + + * mh-e.el (mh-folder-tool-bar-map): Add mail_exec.xpm icon for + mh-execute-commands. + + * mh-utils.el (mh-show-mouse): New function to click on a message + in folder-mode and show that message. + * mh-e.el (mh-folder-mode-map): Bind mh-show-mouse to mouse-2. + + * mh-e.el (mh-page-msg): Show buffer first if not displayed, + instead of simply complaining there's no other window. + + * mh-e.el (mh-folder-tool-bar-map): New tool-bar for folder mode! + (mh-folder-mode): Setup tool-bar. + + * mh-mime.el (mh-have-file-command): try to non-fatally load + executable.el because emacs20 doesn't autoload it. + * mh-utils.el (load "executable" t t): Idem. + + * mh-utils.el (mh-clean-msg-header): Bug fix. locally bind + after-change-functions to nil, working around a strange font-lock + bug in emacs20 when (add-hook 'mh-show-mode-hook 'turn-on-font-lock) + was used. + + * mh-comp.el (require 'sendmail): Moved from mh-comp.el to + mh-utils.el because it is needed in reading mail too. + (mh-header-field-end, mh-in-header-p): Moved to mh-utils.el + because they are needed by mh-show-mode's font-lock code. + Unfortunately, this splits the field related code into two files. + Perhaps it should all go into mh-utils? + +2001-11-20 Eric Ding + + * mh-utils.el (mh-show-from-face): Fix typo in defface + +2001-11-20 Bill Wohler + + * mh-utils.el (mh-mail-header-separator): Set to -------- as + defined by MH (components, and replcomps files). This variable + cannot be a regexp since it is used as an argument to insert and + is passed through regexp-quote before being used. The previous + value broke a lot of code, including mailcrypt. + + * mh-comp.el (mh-letter-mode, mh-send-letter): Insert X-Mailer + header field from mh-send-letter. + (mh-edit-again, mh-extract-rejected-mail): Call + mh-insert-header-separator to ensure that there is a separator. + Packages such as mailcrypt depend on it. + (mh-insert-header-separator): New function to insert + mh-mail-header-separator if it doesn't exist. + +2001-11-20 Peter S Galbraith + + * mh-comp.el (mh-letter-mode): Make font-lock-defaults a local variable + * mh-e.el (mh-folder-mode): Same. + * mh-utils.el (mh-show-mode): Same. + + * mh-e.el (mh-scan-msg-num-regexp): Delete variable and replace + with mh-good-msg-regexp. + + * mh-utils.el (mh-mail-header-separator): Bug fix. Moved from + mh-comp.el to mh-utils.el (which mh-comp.el loads). + + * mh-comp.el (mh-in-header-p): Recycle sendmail.el code (as + suggested by Bill). + * mh-utils.el (mh-letter-header-font-lock): Use mh-in-header-p. + + * mh-comp.el (mh-letter-tool-bar-map): tool-bar customize button goes + to customizing mh-compose group. + + * mh-utils.el (mh-show-mode): font-lock bug fix. Locally set + font-lock-support-mode to nil. + (mh-letter-header-font-lock, mh-header-field-font-lock): font-lock + bug fix. Don't return match beyond font-lock search limit. + + * mh-comp.el (mh-letter-mode): Emacs20 bug fix. tool-bar-mode is + not a bound variable. + +2001-11-19 Peter S Galbraith + + * mh-comp.el (mh-letter-tool-bar-map): tool-bar help button goes + to 'Draft Editing' info node. + + * mh-utils.el (mh-show-from-face, mh-show-to-face): New faces used + for font-lock. + (mh-header-to-font-lock, mh-header-cc-font-lock) + (mh-header-field-font-lock): New helper function returning whole + header field arguments to font-lock. + (mh-show-font-lock-keywords): Heavily modified using the above. + + * mh-e.el (mh-scan-msg-num-regexp): Regexp matching the message + number in scan lines. + (mh-scan-date-regexp): Regexp matching a valid date in scan lines. + (mh-scan-rcpt-addr-regexp): Regexp specifying the recipient in + scan lines for messages we sent. + (mh-scan-followup-regexp): Regexp matching a followup subject + line, starting with Re: + (mh-scan-body-regexp): + Regexp matching the message body beginning displayed in scan lines. + (mh-scan.font-lock-regexp): Regexp matching output of the the + optional scan.font-lock format file. + (mh-folder-font-lock-keywords): New font-lock for folder-mode that + uses the above regexps. + +2001-11-19 chad + + * mh-comp.el (mh-letter-tool-bar-map): made both references to + mh-letter-tool-bar-map conditional on tool-bar-mode, instead of + just one. + +2001-11-19 Bill Wohler + + * mh-comp.el (mh-position-on-field): Move to the end of the header + if the field is not present. This function was documented to do + this, but wasn't doing so. + (mh-insert-x-mailer): Simplified by using existing + mh-goto-header-field and mh-insert-fields functions. Now that + mh-insert-fields is used to insert X-Mailer header field, no + longer need to include X-Mailer in mh-x-mailer-string. + +2001-11-18 Peter S Galbraith + + * mh-comp.el (mh-letter-tool-bar-map): New version of + mh-letter-mode tool-bar. Changed order of buttons; made customize + and info buttons specific to mh-e. + + * mh-e.el (mh-folder-font-lock-keywords): New font-lock regexp + uses variables mh-deleted-msg-regexp, mh-refiled-msg-regexp and + mh-cur-scan-msg-regexp, so will better adapt to non-default scan + formats. Also, lines marked for refiling are now fontified. + +2001-11-18 Bill Wohler + + * mh-utils.el (mh-show-mode): Added local variable + mail-header-separator which is initialized to + mh-mail-header-separator. + + * mh-comp.el (mh-mail-header-separator): Updated to include ^$. + Needed when running mh-edit-again, since by then the separator is + gone. Added documentation saying one should use + mail-header-separator and initialize it from + mh-mail-header-separator. + (mh-forward): Initialize mail-header-separator since + mh-letter-mode hasn't kicked in yet (which does initialize + mail-header-separator). + (mh-letter-mode): Initialize mail-header-separator from + mh-mail-header-separator, not hard-coded string. + + * mh-comp.el (mh-insert-x-mailer-p): New variable to control + whether X-Mailer string is inserted. Default: t. + (mh-x-mailer-string): New variable that caches actual X-Mailer + string. + (mh-letter-mode): Call mh-insert-x-mailer if mh-insert-x-mailer-p + is t. + (mh-insert-x-mailer): New function that inserts X-Mailer header + field. + +2001-11-17 Peter S Galbraith + + * mh-utils.el (mh-letter-header-font-lock): New function to return + the entire mail header to font-lock for sedate font-locking. + (mh-show-font-lock-keywords): Modified to fontify whole lines and use + mh-letter-header-font-lock above to fontify whole header. + +2001-11-17 Bill Wohler + + * mh-comp.el (mail-header-separator): Added ^ and $ to make more + specific. + (mh-forward, mh-letter-mode): Replaced hard-coded string with + mail-header-separator. + +2001-11-16 Bill Wohler + + * mh-e.el (mh-e-RCS-id): Renamed to mh-version. + (mh-version): The variable: Set to a number instead of Id since + the Id didn't have the mh-e version number, and both Emacs and + gnus do it this way too. + (mh-version): The function: Fixed for nmh. Now displays mh-e + version correctly. Cleaned up output and display mh-progs, etc. + (Closes SF #405620.) + +2001-11-15 Peter S Galbraith + + * mh-comp.el (mh-letter-tool-bar-map): New tool-bar support for + mh-letter-mode in emacs21. Uses icons from gnus/message.el. + * mh-comp.el (mh-letter-mode): Add buffer-local binding of + tool-bar-map to mh-letter-tool-bar-map. + +2001-11-15 Peter S Galbraith + + * mh-mime.el (mh-have-file-command): Add check for existence of + executable-find command, which Jeffrey didn't exist in emacs-20.4. + * mh-utils.el (mh-decode-quoted-printable-have-mimedecode): same + as above. + * mh-mime.el (mh-file-mime-type): Bug Fix. Some versions of + 'file' output a string like "file: Using regular magic file..." + to stderr, so discard stderr when using call-process with 'file'. + +2001-11-14 Peter S Galbraith + + * mh-mime.el (mh-have-file-command): Check if 'file' command on + system accepts arguments -i -b before accepting it for our use. + +2001-11-14 Peter S Galbraith + + * mh-utils.el (mh-find-progs): Use expand-file-name instead of + concatenating together strings into a path. + +2001-11-14 Peter S Galbraith + + * mh-e.el (mh-folder-sequence-menu): Enable mh-widen in sequence + menu only when mh-narrowed-to-seq is t. + +2001-11-14 Peter S Galbraith + + * mh-mime.el (mh-have-file-command): Use 'executable-find' instead + of more complicated and error-prone call-process to which command. + * mh-utils.el (mh-decode-quoted-printable-have-mimedecode): Same + change as above. + +2001-11-14 Jeffrey C Honig + + * mh-e.el (mh-make-folder-mode-line): Bug fix. Properly deal with + folders that do not have any lines in them. Print "no msgs" + instead of "0 msgs". Do not try to print a range when there are + no messages. + * mh-e.el (mh-regenerate-headers): Bug fix. Catch and remove the + "scan: band message list" message. + +2001-11-13 Jeffrey C Honig + + * mh-utils.el (mh-find-progs): Bug fix. Add "mh/etc" to the + subdirectories to search for "components". On BSD/OS, nmh is in + "/usr/contrib/mh/*". + +2001-11-13 Peter S Galbraith + + * mh-comp.el (mh-letter-mode): Bug fix. Load mh-mime before + setting mh-mhn-compose-insert-p (when looking at a "forw: -mime" + message containing a MIME composition) such that the variable is + properly declared as buffer-local. + +2001-11-12 Bill Wohler + + * mh-funcs.el (mh-print-msg): mhl is in the mh-lib-progs + directory, not mh-lib (closes SF #481128). + +2001-11-12 Peter S Galbraith + + * mh-seq.el (mh-widen): Bug fix (closes SF #481036). + In a sequence with pending deletes and refiles, running mh-widen + would wipe out their notations, even though the sequences are still + defined. Fixed by calling a new function, + mh-notate-deleted-and-refiled. Also changed the coping of + mh-goto-msg-num since it didn't work consistently. + * mh-seq.el (mh-notate-deleted-and-refiled): New functions written + to fix above mh-widen bug. It's a first cut, we may want to clear + all notations first, and notate the current-message sequence and + user sequences. Time will tell. + +2001-11-12 Peter S Galbraith + + * mh-seq.el (mh-widen): Make it attempt to stay on the same + message number (closes SF bug #480922). + +2001-11-11 Bill Wohler + + * import-emacs: New shell script to import Emacs changes to mh-e. + + * Makefile (import): New target to import Emacs changes. + +2001-11-09 Peter S Galbraith + + * mh-mime.el (mh-file-mime-type): Bug fix. Change regexp to + extract mime type from 'file -i' command output. + +2001-11-08 Peter S Galbraith + + * mh-utils.el (mh-update-sequences-after-mh-show): + New customizable variable telling whether to run + mh-update-sequences in mh-show-mode. Default is t. + * mh-utils.el (mh-show-msg): Run mh-update-sequences when + mh-update-sequences-after-mh-show is set. + +2001-11-08 Peter S Galbraith + + * mh-utils.el (mh-decode-quoted-printable-have-mimedecode): + New variable telling whether command 'mimedecode' is on system. + (http://www.freesoft.org/CIE/FAQ/mimedeco.c) + * mh-utils.el (mh-decode-quoted-printable): + New customizable variable telling whether to run mimedecode on + MIME message containing quoted-printable parts. mimedecode will + only alter quoted-printable parts , leaving others intact, and the + resulting message is still fully MIME. + * mh-utils.el (mh-decode-quoted-printable): New function to run + mimedecode on the current buffer. + * mh-utils.el (mh-display-msg): Conditionnaly call + mh-decode-quoted-printable function if mh-decode-quoted-printable + variable is set, to view messages containing quoted-printable + characters into 8-bit. + +2001-11-08 Peter S Galbraith + + * mh-comp.el (mh-letter-mode): Set mh-mhn-compose-insert-p if + looking at a "forw: -mime" message containing a MIME composition. + * mh-mime.el (mh-file-mime-type): Bug fix. Failed on files like + "~/.mh_profile" because of shell construct. Wrapped filename with + expand-file-name. + * mh-comp.el (mh-letter-mode-map): C-cC-o keybinding in + mh-letter-mode-map for mh-open-line. + +2001-11-07 Peter S Galbraith + + * mh-comp.el (mh-open-line): New user function to split open a line + when editing a reply with included text. + * mh-comp.el (mh-current-fill-prefix): New function used by + mh-open-line to get the fill-prefix on the current line. + * mh-comp.el: Add mh-open-line to mh-letter-mode menubar. + +2001-11-06 Peter S Galbraith + + * mh-seq.el (mh-region-to-sequence): New function, creating a + sequence named 'region containing the message list in the selected + region. + * mh-e.el (mh-delete-msg): Mark messages in region for deletion if + mark is active and in transient-mark-mode. + * mh-e.el (mh-refile-msg): Mark messages in region for refiling if + mark is active and in transient-mark-mode. + * mh-e.el (mh-undo): Undo message marks for refile or deletion if + region if mark is active and in transient-mark-mode. + +2001-11-06 Peter S Galbraith + + * mh-comp.el (mh-letter-mode): Use sendmail.el's fill-paragraph. + Copy its settings for paragraph-start, paragraph-separate, + fill-paragraph-function, adaptive-fill-regexp and + adaptive-fill-first-line-regexp. This make M-q (fill-paragraph) + work correctly! + +2001-11-05 Peter S Galbraith + + * mh-funcs.el (mh-kill-folder): Remove mh-do-not-confirm condition + and always prompt the user for such a drastic step. Also change + the prompt a bit to clarify it. + +2001-11-04 Peter S Galbraith + + * mh-mime.el (mh-mhn-compose-insert-p): New buffer-local variable + to tell when a MIME insertion was done in a letter. + * mh-mime.el (mh-mhn-compose-type): Set mh-mhn-compose-insert-p. + * mh-mime.el (mh-mhn-compose-external-type): + Set mh-mhn-compose-insert-p. + * mh-mime.el (mh-mhn-compose-forw): Set mh-mhn-compose-insert-p. + * mh-mime.el (mh-edit-mhn): Clear mh-mhn-compose-insert-p. + * mh-comp.el (mh-send-letter): Run mh-edit-mhn when + mh-mhn-compose-insert-p is set. + +2001-11-03 Peter S Galbraith + + * mh-mime.el (mh-have-file-command): new function testing whether + file command is on the system. + * mh-mime.el (mh-file-mime-type): new function returning MIME type + from file command. + * mh-mime.el (mh-mhn-compose-insertion): Make use of + mh-file-mime-type function instead of prompting. + +2001-10-30 Peter S Galbraith + + * mh-utils.el (mh-show-use-goto-addr): defcustom this new + variable, determining whether to call goto-addr in mh-show-mode. + * mh-utils.el (mh-show-mode): Call goto-address when + mh-show-use-goto-addr is t. + +2001-10-25 Peter S Galbraith + + * mh-utils.el (mh-recenter): Clarify docs and change '(t) to + (list 4) to match elisp doc on what C-u prefix argument actually is. + +2001-10-23 Peter S Galbraith + + * mh-utils.el (mh-summary-height): In my quest to make mh-e more + useful out-of-the-box for new users, set mh-summary-height to a + minimum of 4 and a maximum of 10 depending on frame height. I + typically have 70 lines in my Emacs frame, so having a default of + 4 was silly for my case. + * mh-e.el (mh-update-sequences): Check for nil value of + mh-current-folder, which happens if mh-summary-height < 4 + although I haven't tracked doen why that happens. + +2001-10-22 Peter S Galbraith + + * mh-comp.el (mh-insert-fields): Test for nil value when inserting + field. + +2001-10-20 Peter S Galbraith + + * mh-comp.el (mh-user-agent-compose): Merged-in from XEmacs-21.4 source + * mh-comp.el (mh-letter-mode): Add easy-menu-add statement for XEmacs21 + * mh-pick.el (mh-pick-mode): Add easy-menu-add statement for XEmacs21. + * mh-e.el (mh-folder-mode): Add easy-menu-add statements for XEmacs21. + * mh-utils.el: defalias 'screen-height to 'frame-height for XEmacs21. + +2001-10-19 Peter S Galbraith + + * mh-mime.el (mh-edit-mhn): Use mhbuild in nmh context. + * mh-utils.el (mh-find-progs): The variable mh-nmh-p (t when nmh + is in use rather than MH) was set assuming that the string "nmh" + will be in mh-lib-progs or mh-lib. This failed on Debian systems. + Better to check for the existence of mhbuild in directory mh-progs. + (closes SF bug #441776) + +2001-10-18 Peter S Galbraith + + * mh-e.el: Add menubar entry from contrib/mh-menubar.el + * mh-comp.el: Add menubar entry from contrib/mh-menubar.el + * mh-pick.el: Add menubar entry from contrib/mh-menubar.el + +2001-07-30 Peter S Galbraith + + * mh-e.el: Change font-lock patterns for folders. + Fontify scan.font-lock patterns (which will be documented) + and fontify subject lines prefixed with "Re:" differently. + * mh-comp.el (mh-letter-mode): Add font-lock support as in + mh-show-mode. + +2001-04-14 chad brown + + Rearrange the font-lock keywords a bit. + +2001-04-12 chad brown + + Preliminary (somewhat boring) font-lock support for mh-e. More + interesting font-lock support probably wants to have better + support for multiple format files + +2001-02-24 chad brown + + Add default nmh paths to mh-find-prog in mh-utils.el. + change to mh-kill-folder in mh-funcs.el to make it more general. + +2001-02-19 Bill Wohler + + * Makefile (EMACS): Renamed to EMACS_HOME. Also, don't define if + EMACS_HOME already exists to give developer a chance to set + environment variable. + (install): $MH-E-SRC is copied to $(EMACS_HOME)/lisp/mail, not + $(EMACS_HOME)/src. + (dist): Leave release in current directory. + + + Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc. + + Copying and distribution of this file, with or without modification, + are permitted in any medium without royalty provided the copyright + notice and this notice are preserved. diff --git a/lisp/mh-e/mh-alias.el b/lisp/mh-e/mh-alias.el index ba429f24b9f..d72036fe25d 100644 --- a/lisp/mh-e/mh-alias.el +++ b/lisp/mh-e/mh-alias.el @@ -1,7 +1,7 @@ ;;; mh-alias.el --- MH-E mail alias completion and expansion ;; ;; Copyright (C) 1994, 1995, 1996, 1997, -;; 2001, 2002, 2003, 2004 Free Software Foundation, Inc. +;; 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. ;; Author: Peter S. Galbraith ;; Maintainer: Bill Wohler diff --git a/lisp/mh-e/mh-comp.el b/lisp/mh-e/mh-comp.el index a99c05debea..a7af192ec40 100644 --- a/lisp/mh-e/mh-comp.el +++ b/lisp/mh-e/mh-comp.el @@ -1,7 +1,7 @@ ;;; mh-comp.el --- MH-E functions for composing messages ;; Copyright (C) 1993, 1995, 1997, -;; 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. +;; 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. ;; Author: Bill Wohler ;; Maintainer: Bill Wohler @@ -979,11 +979,13 @@ When a message is composed, the hooks `text-mode-hook' and (setq data-begin (match-end 0)) (setq field (match-string 1))) (setq data-begin (max point data-begin)) - (if (and field (mh-letter-skipped-header-field-p field)) - (set-match-data nil) - (set-match-data (list data-begin data-end data-begin data-end))) (goto-char (if (equal point data-end) (1+ data-end) data-end)) - t))) + (cond ((and field (mh-letter-skipped-header-field-p field)) + (set-match-data nil) + nil) + (t (set-match-data + (list data-begin data-end data-begin data-end)) + t))))) (defun mh-letter-header-end () "Find the end of the message header. @@ -1243,8 +1245,12 @@ Return t if fields added; otherwise return nil." (value (cdar entry-list))) (cond ((equal ":identity" field) - (when (and (not mh-identity-local) - (assoc value mh-identity-list)) + (when ;;(and (not mh-identity-local) + ;; Bug 1204506. But do we need to be able + ;; to set an identity manually that won't be + ;; overridden by mh-insert-auto-fields? + (assoc value mh-identity-list) + ;;) (mh-insert-identity value))) (t (mh-modify-header-field field value diff --git a/lisp/mh-e/mh-customize.el b/lisp/mh-e/mh-customize.el index 7fbb1c247b4..4dcf0ad1be8 100644 --- a/lisp/mh-e/mh-customize.el +++ b/lisp/mh-e/mh-customize.el @@ -88,15 +88,16 @@ If optional argument DELETE-OTHER-WINDOWS-FLAG is non-nil, other windows in the frame are removed." (interactive "P") - (customize-group 'mh) + (customize-group 'mh-e) (when delete-other-windows-flag (delete-other-windows))) ;;; For compiler warnings... -(defvar mh-show-buffer) -(defvar mh-show-folder-buffer) +(eval-when-compile + (defvar mh-show-buffer) + (defvar mh-show-folder-buffer)) ;;; MH-E Customization Groups @@ -301,8 +302,8 @@ aliases or addresses. The default setting flashes the address associated with an address in the minibuffer briefly, but does not display a warning if the alias is not found." :type '(choice (const :tag "Flash but Don't Warn If No Alias" t) - (const :tag "Flash and Warn If No Alias" 1) - (const :tag "Don't Flash Nor Warn If No Alias" nil)) + (const :tag "Flash and Warn If No Alias" 1) + (const :tag "Don't Flash Nor Warn If No Alias" nil)) :group 'mh-alias) (defcustom mh-alias-insert-file nil @@ -1214,6 +1215,7 @@ The gnus method uses a different color for each indentation." "Prev-Resent" ; MH "Priority:" "Received:" ; RFC 822 + "Received-SPF:" ; Gmail "References:" "Remailed-" ; MH "Replied:" ; MH @@ -1246,10 +1248,11 @@ The gnus method uses a different color for each indentation." "X-Envelope-From:" "X-Envelope-Sender:" "X-Envelope-To:" - "X-Evolution:" ; Evolution mail client + "X-Evolution:" ; Evolution mail client "X-Face:" "X-Folder:" ; Spam "X-From-Line" + "X-Gmail-" ; Gmail "X-Gnus-Mail-Source:" ; gnus "X-Greylist:" ; milter-greylist-1.2.1 "X-Habeas-SWE-1:" ; Spam @@ -1274,7 +1277,7 @@ The gnus method uses a different color for each indentation." "X-MIME-Autoconverted:" ; sendmail "X-MIMETrack:" "X-Mms-" ; T-Mobile pictures - "X-MS-" ; MS Outlook + "X-MS-" ; MS Outlook "X-MailScanner" ; ListProc(tm) by CREN "X-Mailing-List:" ; Unknown mailing list managers "X-Mailman-Version:" ; Mailman mailing list manager @@ -1894,6 +1897,7 @@ where, for y in letter-docs collect `(const :tag ,y ,x))))))) +(mh-image-load-path) (mh-tool-bar-define ((:folder mh-inc-folder mh-mime-save-parts mh-previous-undeleted-msg mh-page-msg mh-next-undeleted-msg mh-delete-msg mh-refile-msg diff --git a/lisp/mh-e/mh-e.el b/lisp/mh-e/mh-e.el index c0f47537c97..ad1093101e1 100644 --- a/lisp/mh-e/mh-e.el +++ b/lisp/mh-e/mh-e.el @@ -6,7 +6,7 @@ ;; Author: Bill Wohler ;; Maintainer: Bill Wohler -;; Version: 7.84 +;; Version: 7.84+cvs ;; Keywords: mail ;; This file is part of GNU Emacs. @@ -98,7 +98,7 @@ (defvar font-lock-auto-fontify) (defvar font-lock-defaults) -(defconst mh-version "7.84" "Version number of MH-E.") +(defconst mh-version "7.84+cvs" "Version number of MH-E.") (defvar mh-partial-folder-mode-line-annotation "select" "Annotation when displaying part of a folder. @@ -1667,8 +1667,10 @@ DESKTOP-BUFFER-MISC holds a list of miscellaneous info used by the (mh-visit-folder desktop-buffer-name) (current-buffer)) -(add-to-list 'desktop-buffer-mode-handlers - '(mh-folder-mode . mh-restore-desktop-buffer)) +;;; desktop-buffer-mode-handlers appeared in Emacs 22. +(if (fboundp 'desktop-buffer-mode-handlers) + (add-to-list 'desktop-buffer-mode-handlers + '(mh-folder-mode . mh-restore-desktop-buffer))) (defun mh-scan-folder (folder range &optional dont-exec-pending) "Scan the FOLDER over the RANGE. diff --git a/lisp/mh-e/mh-identity.el b/lisp/mh-e/mh-identity.el index c7b796c6775..1d848344897 100644 --- a/lisp/mh-e/mh-identity.el +++ b/lisp/mh-e/mh-identity.el @@ -1,6 +1,6 @@ ;;; mh-identity.el --- Multiple identify support for MH-E. -;; Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc. +;; Copyright (C) 2002, 2003, 2004, 2005 Free Software Foundation, Inc. ;; Author: Peter S. Galbraith ;; Maintainer: Bill Wohler diff --git a/lisp/mh-e/mh-init.el b/lisp/mh-e/mh-init.el index 23fe0d88b7b..06ca97f9cd6 100644 --- a/lisp/mh-e/mh-init.el +++ b/lisp/mh-e/mh-init.el @@ -41,6 +41,9 @@ (mh-require-cl) (require 'mh-utils) +;;; Avoid compiler warnings. +(eval-when-compile (defvar image-load-path)) + ;;; Set for local environment: ;;; mh-progs and mh-lib used to be set in paths.el, which tried to ;;; figure out at build time which of several possible directories MH @@ -170,7 +173,7 @@ directories to the customizable variable `mh-path'.") "*List of directories to search for variants of the MH variant. The directories will be searched for `mhparam' in addition to directories listed in `mh-sys-path' and `exec-path'." - :group 'mh + :group 'mh-e :type '(repeat (directory))) (defvar mh-variants nil @@ -297,6 +300,51 @@ by the variable `mh-variants'." (add-to-list 'mh-variants variant))))) mh-variants))) +;;; XXX The two calls to message in this function should really be calls to +;;; error. However, when this function is compiled via the top-level call in +;;; mh-customize.el, it is actually called, and in a compile environment, the +;;; errors are triggered which botches the compile. As a workaround, the calls +;;; to error have been changed to calls to message, and code following was +;;; inserted as an else clause. This is not robust, so if you can fix this, +;;; please do! +;;;###mh-autoload +(defun mh-image-load-path () + "Ensure that the MH-E images are accessible by `find-image'. +Images for MH-E are found in ../../etc/images relative to the files in +lisp/mh-e. If `image-load-path' exists (since Emacs 22), then the images +directory is added to it if isn't already there. Otherwise, the images +directory is added to the `load-path' if it isn't already there." + (let (mh-load-path mh-image-load-path) + ;; First, find mh-e in the load-path. + (let ((path load-path)) + (while path + (let* ((directory (directory-file-name (car path)))) + (setq mh-load-path + (if (and (equal (file-name-nondirectory directory) "mh-e") + (file-exists-p directory)) + directory + nil)) + (setq path (if mh-load-path nil (cdr path))))) + (if (not mh-load-path) + ;; This message be error; there shouldn't be an else. Blame compiler. + (message "Can not find mh-e in load-path (OK when compiling)") + ;; Create the image path associated with this mh-e directory. + (setq mh-image-load-path (expand-file-name + (concat (file-name-directory mh-load-path) + "../etc/images"))))) + (if (or (not mh-image-load-path) + (not (file-exists-p mh-image-load-path))) + ;; This message be error; there shouldn't be an else. Blame compiler. + (message "Can not find image directory %s (OK when compiling)" + mh-image-load-path) + ;; If image-load-path exists, and the image path isn't there add it. + (if (boundp 'image-load-path) + (if (not (member mh-image-load-path image-load-path)) + (push mh-image-load-path image-load-path)) + ;; Otherwise, if the image path isn't in the load-path, add it there. + (if (not (member mh-image-load-path load-path)) + (push mh-image-load-path load-path)))))) + (provide 'mh-init) ;;; Local Variables: diff --git a/lisp/mh-e/mh-junk.el b/lisp/mh-e/mh-junk.el index b78d85410c7..09814a4cd5a 100644 --- a/lisp/mh-e/mh-junk.el +++ b/lisp/mh-e/mh-junk.el @@ -1,6 +1,6 @@ ;;; mh-junk.el --- Interface to anti-spam measures -;; Copyright (C) 2003, 2004 Free Software Foundation, Inc. +;; Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc. ;; Author: Satyaki Das , ;; Bill Wohler diff --git a/lisp/mh-e/mh-mime.el b/lisp/mh-e/mh-mime.el index 527d322c48a..4f72fe06487 100644 --- a/lisp/mh-e/mh-mime.el +++ b/lisp/mh-e/mh-mime.el @@ -69,25 +69,45 @@ Optional argument INLINE means make it an inline attachment." (call-interactively 'mh-mhn-compose-insertion))) ;;;###mh-autoload -(defun mh-compose-forward (&optional description folder message) +(defun mh-compose-forward (&optional description folder messages) "Add a MIME directive to forward a message, using mhn or gnus. If the variable `mh-compose-insertion' is set to 'mhn, then that will be used. If it is set to 'gnus, then that will be used instead. Optional argument DESCRIPTION is a description of the attachment. Optional argument FOLDER is the folder from which the forwarded message should come. -Optional argument MESSAGE is the message to forward. +Optional argument MESSAGES is the range of messages to forward. If any of the optional arguments are absent, they are prompted for." - (interactive (list - (read-string "Forw Content-description: ") - (mh-prompt-for-folder "Message from" mh-sent-from-folder nil) - (read-string (concat "Messages" - (if (numberp mh-sent-from-msg) - (format " (default %d): " mh-sent-from-msg) - ": "))))) - (if (equal mh-compose-insertion 'gnus) - (mh-mml-forward-message description folder message) - (mh-mhn-compose-forw description folder message))) + (interactive (let* + ((description (read-string "Forw Content-description: ")) + (folder (mh-prompt-for-folder "Message from" + mh-sent-from-folder nil)) + (messages (let ((default-message + (if (and (equal + folder mh-sent-from-folder) + (numberp mh-sent-from-msg)) + mh-sent-from-msg + (nth 0 (mh-translate-range + folder "cur"))))) + (if default-message + (read-string + (format "Messages (default %d): " + default-message) + nil nil + (number-to-string default-message)) + (read-string (format "Messages: ")))))) + (list description folder messages))) + (let + ((range)) + (if (null messages) + (setq messages "")) + (setq range (mh-translate-range folder messages)) + (if (null range) + (error "No messages in specified range")) + (dolist (message range) + (if (equal mh-compose-insertion 'gnus) + (mh-mml-forward-message description folder (format "%s" message)) + (mh-mhn-compose-forw description folder message))))) ;; To do: ;; paragraph code should not fill # lines if MIME enabled. diff --git a/lisp/mh-e/mh-print.el b/lisp/mh-e/mh-print.el index 41d6a1a0020..9a1723f0b12 100644 --- a/lisp/mh-e/mh-print.el +++ b/lisp/mh-e/mh-print.el @@ -1,6 +1,6 @@ ;;; mh-print.el --- MH-E printing support -;; Copyright (C) 2003, 2004 Free Software Foundation, Inc. +;; Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc. ;; Author: Jeffrey C Honig ;; Maintainer: Bill Wohler From 86ac52df4968ab702ebd907393ae87d5cb1b4579 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Mon, 10 Oct 2005 17:14:02 +0000 Subject: [PATCH 077/168] (pascal-mode-map): Move init into declaration. (pascal-mode-syntax-table): Make (* *) markers same class as { ... }. (pascal-indent-command): Remove unused var `ind'. (pascal-indent-case): Remove unused var `oldpos'. (pascal-outline-map): Don't inherit from pascal-mode-map anymore, since it's now used as a proper minor mode map. (pascal-outline): Rename to pascal-outline-mode. (pascal-outline-mode): Use define-minor-mode. (pascal-outline-mode, pascal-outline-change): Use overlays rather than selective-display. --- lisp/progmodes/pascal.el | 182 ++++++++++++++++++--------------------- 1 file changed, 85 insertions(+), 97 deletions(-) diff --git a/lisp/progmodes/pascal.el b/lisp/progmodes/pascal.el index b84fa87a0de..3cd243580e2 100644 --- a/lisp/progmodes/pascal.el +++ b/lisp/progmodes/pascal.el @@ -69,36 +69,34 @@ "Abbrev table in use in Pascal-mode buffers.") (define-abbrev-table 'pascal-mode-abbrev-table ()) -(defvar pascal-mode-map () +(defvar pascal-mode-map + (let ((map (make-sparse-keymap))) + (define-key map ";" 'electric-pascal-semi-or-dot) + (define-key map "." 'electric-pascal-semi-or-dot) + (define-key map ":" 'electric-pascal-colon) + (define-key map "=" 'electric-pascal-equal) + (define-key map "#" 'electric-pascal-hash) + (define-key map "\r" 'electric-pascal-terminate-line) + (define-key map "\t" 'electric-pascal-tab) + (define-key map "\M-\t" 'pascal-complete-word) + (define-key map "\M-?" 'pascal-show-completions) + (define-key map "\177" 'backward-delete-char-untabify) + (define-key map "\M-\C-h" 'pascal-mark-defun) + (define-key map "\C-c\C-b" 'pascal-insert-block) + (define-key map "\M-*" 'pascal-star-comment) + (define-key map "\C-c\C-c" 'pascal-comment-area) + (define-key map "\C-c\C-u" 'pascal-uncomment-area) + (define-key map "\M-\C-a" 'pascal-beg-of-defun) + (define-key map "\M-\C-e" 'pascal-end-of-defun) + (define-key map "\C-c\C-d" 'pascal-goto-defun) + (define-key map "\C-c\C-o" 'pascal-outline-mode) + ;; A command to change the whole buffer won't be used terribly + ;; often, so no need for a key binding. + ;; (define-key map "\C-cd" 'pascal-downcase-keywords) + ;; (define-key map "\C-cu" 'pascal-upcase-keywords) + ;; (define-key map "\C-cc" 'pascal-capitalize-keywords) + map) "Keymap used in Pascal mode.") -(if pascal-mode-map - () - (setq pascal-mode-map (make-sparse-keymap)) - (define-key pascal-mode-map ";" 'electric-pascal-semi-or-dot) - (define-key pascal-mode-map "." 'electric-pascal-semi-or-dot) - (define-key pascal-mode-map ":" 'electric-pascal-colon) - (define-key pascal-mode-map "=" 'electric-pascal-equal) - (define-key pascal-mode-map "#" 'electric-pascal-hash) - (define-key pascal-mode-map "\r" 'electric-pascal-terminate-line) - (define-key pascal-mode-map "\t" 'electric-pascal-tab) - (define-key pascal-mode-map "\M-\t" 'pascal-complete-word) - (define-key pascal-mode-map "\M-?" 'pascal-show-completions) - (define-key pascal-mode-map "\177" 'backward-delete-char-untabify) - (define-key pascal-mode-map "\M-\C-h" 'pascal-mark-defun) - (define-key pascal-mode-map "\C-c\C-b" 'pascal-insert-block) - (define-key pascal-mode-map "\M-*" 'pascal-star-comment) - (define-key pascal-mode-map "\C-c\C-c" 'pascal-comment-area) - (define-key pascal-mode-map "\C-c\C-u" 'pascal-uncomment-area) - (define-key pascal-mode-map "\M-\C-a" 'pascal-beg-of-defun) - (define-key pascal-mode-map "\M-\C-e" 'pascal-end-of-defun) - (define-key pascal-mode-map "\C-c\C-d" 'pascal-goto-defun) - (define-key pascal-mode-map "\C-c\C-o" 'pascal-outline) -;;; A command to change the whole buffer won't be used terribly -;;; often, so no need for a key binding. -; (define-key pascal-mode-map "\C-cd" 'pascal-downcase-keywords) -; (define-key pascal-mode-map "\C-cu" 'pascal-upcase-keywords) -; (define-key pascal-mode-map "\C-cc" 'pascal-capitalize-keywords) - ) (defvar pascal-imenu-generic-expression '((nil "^[ \t]*\\(function\\|procedure\\)[ \t\n]+\\([a-zA-Z0-9_.:]+\\)" 2)) @@ -132,28 +130,31 @@ (defconst pascal-exclude-str-start "{-----\\/----- EXCLUDED -----\\/-----") (defconst pascal-exclude-str-end " -----/\\----- EXCLUDED -----/\\-----}") -(defvar pascal-mode-syntax-table nil +(defvar pascal-mode-syntax-table + (let ((st (make-syntax-table))) + (modify-syntax-entry ?\\ "." st) + (modify-syntax-entry ?\( "()1" st) + (modify-syntax-entry ?\) ")(4" st) + ;; This used to use comment-syntax `b'. But the only document I could + ;; find about the syntax of Pascal's comments said that (* ... } is + ;; a valid comment, just as { ... *) or (* ... *) or { ... }. + (modify-syntax-entry ?* ". 23" st) + (modify-syntax-entry ?{ "<" st) + (modify-syntax-entry ?} ">" st) + (modify-syntax-entry ?+ "." st) + (modify-syntax-entry ?- "." st) + (modify-syntax-entry ?= "." st) + (modify-syntax-entry ?% "." st) + (modify-syntax-entry ?< "." st) + (modify-syntax-entry ?> "." st) + (modify-syntax-entry ?& "." st) + (modify-syntax-entry ?| "." st) + (modify-syntax-entry ?_ "_" st) + (modify-syntax-entry ?\' "\"" st) + st) "Syntax table in use in Pascal-mode buffers.") -(if pascal-mode-syntax-table - () - (setq pascal-mode-syntax-table (make-syntax-table)) - (modify-syntax-entry ?\\ "." pascal-mode-syntax-table) - (modify-syntax-entry ?( "()1" pascal-mode-syntax-table) - (modify-syntax-entry ?) ")(4" pascal-mode-syntax-table) - (modify-syntax-entry ?* ". 23b" pascal-mode-syntax-table) - (modify-syntax-entry ?{ "<" pascal-mode-syntax-table) - (modify-syntax-entry ?} ">" pascal-mode-syntax-table) - (modify-syntax-entry ?+ "." pascal-mode-syntax-table) - (modify-syntax-entry ?- "." pascal-mode-syntax-table) - (modify-syntax-entry ?= "." pascal-mode-syntax-table) - (modify-syntax-entry ?% "." pascal-mode-syntax-table) - (modify-syntax-entry ?< "." pascal-mode-syntax-table) - (modify-syntax-entry ?> "." pascal-mode-syntax-table) - (modify-syntax-entry ?& "." pascal-mode-syntax-table) - (modify-syntax-entry ?| "." pascal-mode-syntax-table) - (modify-syntax-entry ?_ "_" pascal-mode-syntax-table) - (modify-syntax-entry ?\' "\"" pascal-mode-syntax-table)) + (defconst pascal-font-lock-keywords (purecopy (list @@ -327,7 +328,7 @@ Other useful functions are: \\[pascal-beg-of-defun]\t- Move to beginning of current function. \\[pascal-end-of-defun]\t- Move to end of current function. \\[pascal-goto-defun]\t- Goto function prompted for in the minibuffer. -\\[pascal-outline]\t- Enter pascal-outline-mode (see also pascal-outline). +\\[pascal-outline-mode]\t- Enter `pascal-outline-mode'. Variables controlling indentation/edit style: @@ -792,8 +793,7 @@ on the line which ends a function or procedure named NAME." (defun pascal-indent-command () "Indent for special part of code." (let* ((indent-str (pascal-calculate-indent)) - (type (car indent-str)) - (ind (car (cdr indent-str)))) + (type (car indent-str))) (cond ((and (eq type 'paramlist) (or (memq 'all pascal-auto-lineup) (memq 'paramlist pascal-auto-lineup))) @@ -971,7 +971,7 @@ Do not count labels, case-statements or records." (end-of-line) (point-marker) (re-search-backward "\\" nil t))) - (beg (point)) oldpos + (beg (point)) (ind 0)) ;; Get right indent (while (< (point) end) @@ -986,7 +986,6 @@ Do not count labels, case-statements or records." (setq ind (current-column))) (pascal-end-of-statement)))) (goto-char beg) - (setq oldpos (marker-position end)) ;; Indent all case statements (while (< (point) end) (if (re-search-forward @@ -999,7 +998,6 @@ Do not count labels, case-statements or records." (forward-char 1) (delete-horizontal-space) (insert " ")) - (setq oldpos (point)) (pascal-end-of-statement)) (goto-char savepos))) @@ -1490,30 +1488,20 @@ The default is a name found in the buffer around point." ;;; ;;; Pascal-outline-mode ;;; -(defvar pascal-outline-map nil "Keymap used in Pascal Outline mode.") +(defvar pascal-outline-map + (let ((map (make-sparse-keymap))) + (if (fboundp 'set-keymap-name) + (set-keymap-name pascal-outline-map 'pascal-outline-map)) + (define-key map "\M-\C-a" 'pascal-outline-prev-defun) + (define-key map "\M-\C-e" 'pascal-outline-next-defun) + (define-key map "\C-c\C-d" 'pascal-outline-goto-defun) + (define-key map "\C-c\C-s" 'pascal-show-all) + (define-key map "\C-c\C-h" 'pascal-hide-other-defuns) + map) + "Keymap used in Pascal Outline mode.") -(if pascal-outline-map - nil - (if (fboundp 'set-keymap-name) - (set-keymap-name pascal-outline-map 'pascal-outline-map)) - (if (fboundp 'set-keymap-parent) - (set-keymap-parent (setq pascal-outline-map (make-sparse-keymap)) - pascal-mode-map) - (setq pascal-outline-map (copy-keymap pascal-mode-map))) - (define-key pascal-outline-map "\M-\C-a" 'pascal-outline-prev-defun) - (define-key pascal-outline-map "\M-\C-e" 'pascal-outline-next-defun) - (define-key pascal-outline-map "\C-c\C-d" 'pascal-outline-goto-defun) - (define-key pascal-outline-map "\C-c\C-s" 'pascal-show-all) - (define-key pascal-outline-map "\C-c\C-h" 'pascal-hide-other-defuns)) - -(defvar pascal-outline-mode nil "Non-nil while using Pascal Outline mode.") -(make-variable-buffer-local 'pascal-outline-mode) -(set-default 'pascal-outline-mode nil) -(if (not (assoc 'pascal-outline-mode minor-mode-alist)) - (setq minor-mode-alist (append minor-mode-alist - (list '(pascal-outline-mode " Outl"))))) - -(defun pascal-outline (&optional arg) +(define-obsolete-function-alias 'pascal-outline 'pascal-outline-mode) +(define-minor-mode pascal-outline-mode "Outline-line minor mode for Pascal mode. When in Pascal Outline mode, portions of the text being edited may be made invisible. \\ @@ -1531,26 +1519,26 @@ Pascal Outline mode provides some additional commands. \\[pascal-hide-other-defuns]\ \t- Hide everything but the current function (function under the cursor). \\[pascal-outline]\t- Leave pascal-outline-mode." - (interactive "P") - (setq pascal-outline-mode - (if (null arg) (not pascal-outline-mode) t)) - (if (fboundp 'redraw-mode-line) - (redraw-mode-line)) - (if pascal-outline-mode - (progn - (setq selective-display t) - (use-local-map pascal-outline-map)) - (progn - (setq selective-display nil) - (pascal-show-all) - (use-local-map pascal-mode-map)))) + :init-value nil :lighter " Outl" :keymap pascal-outline-map + (add-to-invisibility-spec '(pascal . t)) + (unless pascal-outline-mode + (pascal-show-all))) (defun pascal-outline-change (b e pascal-flag) - (let ((modp (buffer-modified-p))) - (unwind-protect - (subst-char-in-region b e (if (= pascal-flag ?\n) - ?\^M ?\n) pascal-flag) - (set-buffer-modified-p modp)))) + (save-excursion + ;; This used to use selective display so the boundaries used by the + ;; callers didn't have to be precise, since it just looked for \n or \^M + ;; and switched them. + (goto-char b) (setq b (line-end-position)) + (goto-char e) (setq e (line-end-position))) + (when (> e b) + ;; We could try and optimize this in the case where the region is + ;; already hidden. But I'm not sure it's worth the trouble. + (remove-overlays b e 'invisible 'pascal) + (when (eq pascal-flag ?\^M) + (let ((ol (make-overlay b e nil t nil))) + (overlay-put ol 'invisible 'pascal) + (overlay-put ol 'evaporate t))))) (defun pascal-show-all () "Show all of the text in the buffer." @@ -1628,5 +1616,5 @@ Pascal Outline mode provides some additional commands. (provide 'pascal) -;;; arch-tag: 04535136-fd93-40b4-a505-c9bebdc051f5 +;; arch-tag: 04535136-fd93-40b4-a505-c9bebdc051f5 ;;; pascal.el ends here From e61d3a566185a12109ddab559718ebbd457a7815 Mon Sep 17 00:00:00 2001 From: Romain Francoise Date: Mon, 10 Oct 2005 17:32:57 +0000 Subject: [PATCH 078/168] *** empty log message *** --- lisp/ChangeLog | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 306705ff042..4f61c1f4625 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -23,7 +23,7 @@ * textmodes/org.el: (org-mode-map): Explicit definition of `C-c C-x' as a prefix. (orgtbl-mode-map): Full keymap instead of sparse, because all - `self-insert-command' keys are redifined in this map. + `self-insert-command' keys are redefined in this map. (org-export-as-html): Specify charset for HTML file, by taking it from the coding system. @@ -59,7 +59,7 @@ * speedbar.el (speedbar-file-key-map): Fix typo. -2005-10-09 Daniel Brockman +2005-10-09 Daniel Brockman * cus-start.el (line-spacing): Add custom spec. @@ -79,7 +79,7 @@ * progmodes/gud.el (gud-speedbar-menu-items): Use :visible instead of :active. -2005-10-08 Eric Hanchrow +2005-10-08 Eric Hanchrow * textmodes/ispell.el (ispell-check-version): Ignore hyphen, and all that follows, in aspell's version text. From 29878150b2f8783a607a70de0e34d313dafffdd6 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Mon, 10 Oct 2005 17:49:12 +0000 Subject: [PATCH 079/168] (select-tags-table-mode): Don't use selective-display. (tags-select-tags-table): Pass `button' to the action function. (select-tags-table): Place the side-info on button properties rather than in hidden text. Abbreviate file names. (select-tags-table-mode-map): Inherit rather than copy buttom-map. (select-tags-table-select): Add `button' argument. Get side-info from the button property rather than from hidden text. --- lisp/progmodes/etags.el | 64 +++++++++++++++++------------------------ 1 file changed, 27 insertions(+), 37 deletions(-) diff --git a/lisp/progmodes/etags.el b/lisp/progmodes/etags.el index ea87dce591f..f6e8697543f 100644 --- a/lisp/progmodes/etags.el +++ b/lisp/progmodes/etags.el @@ -1887,7 +1887,7 @@ directory specification." ;; XXX Kludge interface. (define-button-type 'tags-select-tags-table - 'action (lambda (button) (select-tags-table-select)) + 'action 'select-tags-table-select 'help-echo "RET, t or mouse-2: select tags table") ;; XXX If a file is in multiple tables, selection may get the wrong one. @@ -1904,30 +1904,27 @@ see the doc of that variable if you want to add names to the list." (desired-point nil) b) (when tags-table-list - (setq desired-point (point-marker)) - (setq b (point)) - (princ tags-table-list (current-buffer)) - (make-text-button b (point) 'type 'tags-select-tags-table) - (insert "\C-m") - (prin1 (car tags-table-list) (current-buffer)) ;invisible + (setq desired-point (point-marker)) + (setq b (point)) + (princ (mapcar 'abbreviate-file-name tags-table-list) (current-buffer)) + (make-text-button b (point) 'type 'tags-select-tags-table + 'etags-table (car tags-table-list)) (insert "\n")) (while set-list (unless (eq (car set-list) tags-table-list) (setq b (point)) - (princ (car set-list) (current-buffer)) - (make-text-button b (point) 'type 'tags-select-tags-table) - (insert "\C-m") - (prin1 (car (car set-list)) (current-buffer)) ;invisible + (princ (mapcar 'abbreviate-file-name (car set-list)) (current-buffer)) + (make-text-button b (point) 'type 'tags-select-tags-table + 'etags-table (car (car set-list))) (insert "\n")) (setq set-list (cdr set-list))) (when tags-file-name - (or desired-point - (setq desired-point (point-marker))) - (setq b (point)) - (insert tags-file-name) - (make-text-button b (point) 'type 'tags-select-tags-table) - (insert "\C-m") - (prin1 tags-file-name (current-buffer)) ;invisible + (or desired-point + (setq desired-point (point-marker))) + (setq b (point)) + (insert (abbreviate-file-name tags-file-name)) + (make-text-button b (point) 'type 'tags-select-tags-table + 'etags-table tags-file-name) (insert "\n")) (setq set-list (delete tags-file-name (apply 'nconc (cons (copy-sequence tags-table-list) @@ -1935,10 +1932,9 @@ see the doc of that variable if you want to add names to the list." tags-table-set-list))))) (while set-list (setq b (point)) - (insert (car set-list)) - (make-text-button b (point) 'type 'tags-select-tags-table) - (insert "\C-m") - (prin1 (car set-list) (current-buffer)) ;invisible + (insert (abbreviate-file-name (car set-list))) + (make-text-button b (point) 'type 'tags-select-tags-table + 'etags-table (car set-list)) (insert "\n") (setq set-list (delete (car set-list) set-list))) (goto-char (point-min)) @@ -1951,7 +1947,8 @@ see the doc of that variable if you want to add names to the list." (select-tags-table-mode)) (defvar select-tags-table-mode-map - (let ((map (copy-keymap button-buffer-map))) + (let ((map (make-sparse-keymap))) + (set-keymap-parent map button-buffer-map) (define-key map "t" 'push-button) (define-key map " " 'next-line) (define-key map "\^?" 'previous-line) @@ -1960,24 +1957,17 @@ see the doc of that variable if you want to add names to the list." (define-key map "q" 'select-tags-table-quit) map)) -(defun select-tags-table-mode () +(define-derived-mode select-tags-table-mode fundamental-mode "Select Tags Table" "Major mode for choosing a current tags table among those already loaded. \\{select-tags-table-mode-map}" - (interactive) - (kill-all-local-variables) - (setq buffer-read-only t - major-mode 'select-tags-table-mode - mode-name "Select Tags Table") - (use-local-map select-tags-table-mode-map) - (setq selective-display t - selective-display-ellipses nil)) + (setq buffer-read-only t)) -(defun select-tags-table-select () +(defun select-tags-table-select (button) "Select the tags table named on this line." - (interactive) - (search-forward "\C-m") - (let ((name (read (current-buffer)))) + (interactive (list (or (button-at (line-beginning-position)) + (error "No tags table on current line")))) + (let ((name (button-get button 'etags-table))) (visit-tags-table name) (select-tags-table-quit) (message "Tags table now %s" name))) @@ -2043,5 +2033,5 @@ for \\[find-tag] (which see)." (provide 'etags) -;;; arch-tag: b897c2b5-08f3-4837-b2d3-0e7d6db1b63e +;; arch-tag: b897c2b5-08f3-4837-b2d3-0e7d6db1b63e ;;; etags.el ends here From 720a5d03f43895d0e5b3750c3aa109a1303e0c4c Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Mon, 10 Oct 2005 18:05:22 +0000 Subject: [PATCH 080/168] *** empty log message *** --- lisp/ChangeLog | 53 +++++++++++++++++++++++++++++++++++++------------- 1 file changed, 40 insertions(+), 13 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 4f61c1f4625..94ba10803c5 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,14 +1,37 @@ +2005-10-10 Stefan Monnier + + * progmodes/etags.el (select-tags-table-mode): Don't use + selective-display. + (tags-select-tags-table): Pass `button' to the action function. + (select-tags-table): Place the side-info on button properties rather + than in hidden text. Abbreviate file names. + (select-tags-table-mode-map): Inherit rather than copy buttom-map. + (select-tags-table-select): Add `button' argument. + Get side-info from the button property rather than from hidden text. + 2005-10-11 Nick Roberts - * progmodes/gud.el (gud-install-speedbar-variables): Add more - bindings. + * progmodes/gud.el (gud-install-speedbar-variables): Add more bindings. (gud-speedbar-buttons): Preserve point if possible. (gud-sentinel): Restore previous speedbar display type. * progmodes/gdb-ui.el (gdba): Improve diagram. (def-gdb-auto-update-handler, gdb-info-locals-handler) - (gdb-put-breakpoint-icon, gdb-remove-breakpoint-icons): Call - get-buffer-window once. + (gdb-put-breakpoint-icon, gdb-remove-breakpoint-icons): + Call get-buffer-window once. + +2005-10-10 Stefan Monnier + + * progmodes/pascal.el (pascal-mode-map): Move init into declaration. + (pascal-mode-syntax-table): Make (* *) markers same class as { ... }. + (pascal-indent-command): Remove unused var `ind'. + (pascal-indent-case): Remove unused var `oldpos'. + (pascal-outline-map): Don't inherit from pascal-mode-map anymore, + since it's now used as a proper minor mode map. + (pascal-outline): Rename to pascal-outline-mode. + (pascal-outline-mode): Use define-minor-mode. + (pascal-outline-mode, pascal-outline-change): Use overlays rather than + selective-display. 2005-10-10 Andreas Schwab @@ -37,9 +60,9 @@ * font-lock.el (font-lock-syntactic-keywords) (font-lock-keywords): Doc fixes. - * textmodes/flyspell.el (flyspell-external-point-words): Simplify - logic, and don't try to check for consecutive appearances of one - incorrect word. + * textmodes/flyspell.el (flyspell-external-point-words): + Simplify logic, and don't try to check for consecutive appearances + of one incorrect word. 2005-10-10 Nick Roberts @@ -71,7 +94,7 @@ * term/x-win.el: Removed -i, --icon-type from comment. - * startup.el (command-line-x-option-alist): Removed options -i, + * startup.el (command-line-x-option-alist): Remove options -i, -itype, --icon-type, added -nb, --no-bitmap-icon 2005-10-09 Nick Roberts @@ -79,6 +102,10 @@ * progmodes/gud.el (gud-speedbar-menu-items): Use :visible instead of :active. +2005-10-08 Stefan Monnier + + * calendar/appt.el (appt-check): Use diary-selective-display var. + 2005-10-08 Eric Hanchrow * textmodes/ispell.el (ispell-check-version): @@ -104,8 +131,8 @@ 2005-10-08 Lars Hansen - * net/tramp.el (tramp-perl-directory-files-and-attributes): Add - error handling. + * net/tramp.el (tramp-perl-directory-files-and-attributes): + Add error handling. (tramp-handle-directory-files-and-attributes): Handle perl error msg. 2005-10-08 Michael Albinus @@ -168,9 +195,9 @@ * mh-e/mh-loaddefs.el: Removed. Now generated automatically. - * Makefile.in (AUTOGENEL): Added mh-e/mh-loaddefs.el. - (MH-E-SRC): Added. Used by mh-autoloads. - (mh-autoloads): Added. Builds mh-e/mh-loaddefs.el. Rebuilds if any + * Makefile.in (AUTOGENEL): Add mh-e/mh-loaddefs.el. + (MH-E-SRC): New. Used by mh-autoloads. + (mh-autoloads): New. Builds mh-e/mh-loaddefs.el. Rebuilds if any files in MH-E-SRC have been updated. (compile, recompile, bootstrap): Depend on mh-autoloads. From 9b909870cde9d5d7b101a3c21478f65e7d3a3b63 Mon Sep 17 00:00:00 2001 From: Jason Rumney Date: Mon, 10 Oct 2005 19:02:10 +0000 Subject: [PATCH 081/168] (remember_mouse_glyph): New function. (note_mouse_movement): Use it to remember the current glyph if changed. (XTmouse_position): Fix calculation of fake glyph under mouse. Move code to calculate glyph under mouse into remember_mouse_glyph. --- src/ChangeLog | 9 +++++++ src/xterm.c | 69 ++++++++++++++++++++++++++++++++------------------- 2 files changed, 52 insertions(+), 26 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index dada003404a..b1dca8abe3c 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,12 @@ +2005-10-10 Jason Rumney + + * xterm.c (remember_mouse_glyph): New function. + (note_mouse_movement): Use it to remember the current glyph if + changed. + (XTmouse_position): Fix calculation of fake glyph under mouse. + Move code to calculate glyph under mouse into + remember_mouse_glyph. + 2005-10-10 Jan Dj,Ad(Brv * emacs.c (USAGE3, standard_args): -nb => -nbi diff --git a/src/xterm.c b/src/xterm.c index af62cfd0c75..c2fb207bcb1 100644 --- a/src/xterm.c +++ b/src/xterm.c @@ -3582,6 +3582,8 @@ construct_mouse_click (result, event, f) static XMotionEvent last_mouse_motion_event; static Lisp_Object last_mouse_motion_frame; +static void remember_mouse_glyph P_ ((struct frame *, int, int)); + static void note_mouse_movement (frame, event) FRAME_PTR frame; @@ -3607,6 +3609,8 @@ note_mouse_movement (frame, event) frame->mouse_moved = 1; last_mouse_scroll_bar = Qnil; note_mouse_highlight (frame, event->x, event->y); + /* Remember which glyph we're now on. */ + remember_mouse_glyph (frame, event->x, event->y); } } @@ -3677,6 +3681,44 @@ glyph_rect (f, x, y, rect) } +/* Remember which glyph the mouse is over. + */ +static void +remember_mouse_glyph (f1, win_x, win_y) + FRAME_PTR f1; + int win_x, win_y; +{ + int width, height, gx, gy; + + /* Try getting the rectangle of the actual glyph. */ + if (!glyph_rect (f1, win_x, win_y, &last_mouse_glyph)) + { + /* If there is no glyph under the mouse, then we divide the screen + into a grid of the smallest glyph in the frame, and use that + as our "glyph". */ + width = FRAME_SMALLEST_CHAR_WIDTH (f1); + height = FRAME_SMALLEST_FONT_HEIGHT (f1); + gx = win_x; + gy = win_y; + + /* Arrange for the division in FRAME_PIXEL_X_TO_COL etc. to + round down even for negative values. */ + if (gx < 0) + gx -= width - 1; + if (gy < 0) + gy -= height - 1; + + gx = gx / width * width; + gy = gy / width * width; + + last_mouse_glyph.width = width; + last_mouse_glyph.height = height; + last_mouse_glyph.x = gx; + last_mouse_glyph.y = gy; + } +} + + /* Return the current position of the mouse. *FP should be a frame which indicates which display to ask about. @@ -3863,32 +3905,7 @@ XTmouse_position (fp, insist, bar_window, part, x, y, time) on it, i.e. into the same rectangles that matrices on the frame are divided into. */ - int width, height, gx, gy; - XRectangle rect; - - if (glyph_rect (f1, win_x, win_y, &rect)) - last_mouse_glyph = rect; - else - { - width = FRAME_SMALLEST_CHAR_WIDTH (f1); - height = FRAME_SMALLEST_FONT_HEIGHT (f1); - gx = win_x; - gy = win_y; - - /* Arrange for the division in FRAME_PIXEL_X_TO_COL etc. to - round down even for negative values. */ - if (gx < 0) - gx -= width - 1; - if (gy < 0) - gy -= height - 1; - gx = (gx + width - 1) / width * width; - gy = (gy + height - 1) / height * height; - - last_mouse_glyph.width = width; - last_mouse_glyph.height = height; - last_mouse_glyph.x = gx; - last_mouse_glyph.y = gy; - } + remember_mouse_glyph (f1, win_x, win_y); *bar_window = Qnil; *part = 0; From 3208fa650e0023ed27c111e4365ac661593eda10 Mon Sep 17 00:00:00 2001 From: Jay Belanger Date: Mon, 10 Oct 2005 19:37:33 +0000 Subject: [PATCH 082/168] (math-check-known-scalarp, math-check-known-matrixp): Check the values of arguments that are variables. (math-check-known-square-matrixp): New function. (math-known-square-matrixp): Use math-check-known-square-matrixp. (math-super-types): Add sqmatrix type. --- lisp/calc/calc-arith.el | 68 ++++++++++++++++++++++++++++++++--------- 1 file changed, 54 insertions(+), 14 deletions(-) diff --git a/lisp/calc/calc-arith.el b/lisp/calc/calc-arith.el index 9d4d04a5758..810ed7bdd9f 100644 --- a/lisp/calc/calc-arith.el +++ b/lisp/calc/calc-arith.el @@ -239,6 +239,7 @@ (real number) (number) (scalar) + (sqmatrix matrix vector) (matrix vector) (vector) (const))) @@ -306,16 +307,9 @@ (not (math-known-scalarp a t)))) (defun math-known-square-matrixp (a) - (if (eq (car-safe a) '^) - (math-known-square-matrixp (nth 1 a)) - (and (math-known-matrixp a) - (or (math-square-matrixp a) - (and (or - (integerp calc-matrix-mode) - (eq calc-matrix-mode 'square)) - (eq (car-safe a) 'var) - (not (math-const-var a))))))) - + (and (math-known-matrixp a) + (math-check-known-square-matrixp a))) + ;;; Try to prove that A is a scalar (i.e., a non-vector). (defun math-check-known-scalarp (a) (cond ((Math-objectp a) t) @@ -334,8 +328,17 @@ (let ((decl (if (eq (car a) 'var) (or (assq (nth 2 a) math-decls-cache) math-decls-all) - (assq (car a) math-decls-cache)))) - (memq 'scalar (nth 1 decl)))))) + (assq (car a) math-decls-cache))) + val) + (cond + ((memq 'scalar (nth 1 decl)) + t) + ((and (eq (car a) 'var) + (boundp (nth 2 a)) + (setq val (symbol-value (nth 2 a)))) + (math-check-known-scalarp val)) + (t + nil)))))) ;;; Try to prove that A is *not* a scalar. (defun math-check-known-matrixp (a) @@ -353,9 +356,46 @@ (let ((decl (if (eq (car a) 'var) (or (assq (nth 2 a) math-decls-cache) math-decls-all) - (assq (car a) math-decls-cache)))) - (memq 'vector (nth 1 decl)))))) + (assq (car a) math-decls-cache))) + val) + (cond + ((memq 'matrix (nth 1 decl)) + t) + ((and (eq (car a) 'var) + (boundp (nth 2 a)) + (setq val (symbol-value (nth 2 a)))) + (math-check-known-matrixp val)) + (t + nil)))))) +;;; Given that A is a matrix, try to prove that it is a square matrix. +(defun math-check-known-square-matrixp (a) + (cond ((math-square-matrixp a) + t) + ((eq (car-safe a) '^) + (math-check-known-square-matrixp (nth 1 a))) + (t + (let ((decl (if (eq (car a) 'var) + (or (assq (nth 2 a) math-decls-cache) + math-decls-all) + (assq (car a) math-decls-cache))) + val) + (cond + ((memq 'sqmatrix (nth 1 decl)) + t) + ((memq 'matrix (nth 1 decl)) + nil) + ((and (eq (car a) 'var) + (boundp (nth 2 a)) + (setq val (symbol-value (nth 2 a)))) + (math-check-known-square-matrixp val)) + ((and (or + (integerp calc-matrix-mode) + (eq calc-matrix-mode 'sqmatrix)) + (eq (car-safe a) 'var)) + t) + (t + nil)))))) ;;; Try to prove that A is a real (i.e., not complex). (defun math-known-realp (a) From 91f4e5461608eda157fe4fbd034bef206edfc440 Mon Sep 17 00:00:00 2001 From: Jay Belanger Date: Mon, 10 Oct 2005 19:38:02 +0000 Subject: [PATCH 083/168] (calc-matrix-mode, math-get-modes-vec): Change the mode name `square' to 'sqmatrix'. --- lisp/calc/calc-mode.el | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lisp/calc/calc-mode.el b/lisp/calc/calc-mode.el index 7782b7a1f83..d04a95831ef 100644 --- a/lisp/calc/calc-mode.el +++ b/lisp/calc/calc-mode.el @@ -352,7 +352,7 @@ (if (eq calc-complex-mode 'polar) 1 0) (cond ((eq calc-matrix-mode 'scalar) 0) ((eq calc-matrix-mode 'matrix) -2) - ((eq calc-matrix-mode 'square) -3) + ((eq calc-matrix-mode 'sqmatrix) -3) (calc-matrix-mode) (t -1)) (cond ((eq calc-simplify-mode 'none) -1) @@ -478,7 +478,7 @@ ((< (prefix-numeric-value arg) 1) (and (< (prefix-numeric-value arg) -1) 'matrix)) (arg - (if (consp arg) 'square + (if (consp arg) 'sqmatrix (prefix-numeric-value arg))) ((eq calc-matrix-mode 'matrix) 'scalar) ((eq calc-matrix-mode 'scalar) nil) @@ -488,7 +488,7 @@ calc-matrix-mode calc-matrix-mode) (message (if (eq calc-matrix-mode 'matrix) "Variables are assumed to be matrices" - (if (eq calc-matrix-mode 'square) + (if (eq calc-matrix-mode 'sqmatrix) "Variables are assumed to be square matrices" (if calc-matrix-mode "Variables are assumed to be scalars (non-matrices)" From bbcaa3e3b69ae3f3a4d88d35c1a08d24b3627453 Mon Sep 17 00:00:00 2001 From: Jay Belanger Date: Mon, 10 Oct 2005 19:41:08 +0000 Subject: [PATCH 084/168] (calc-matrix-mode, calc-set-mode-line): Change the mode name `square' to 'sqmatrix'. --- lisp/ChangeLog | 15 +++++++++++++++ lisp/calc/calc.el | 4 ++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 94ba10803c5..71500bade97 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,18 @@ +2005-10-10 Jay Belanger + + * calc/calc-arith.el (math-check-known-scalarp) + (math-check-known-matrixp): Check the values of arguments that are + variables. + (math-check-known-square-matrixp): New function. + (math-known-square-matrixp): Use math-check-known-square-matrixp. + (math-super-types): Add sqmatrix type. + + * calc/calc-mode.el (calc-matrix-mode, math-get-modes-vec): Change the + mode name `square' to 'sqmatrix'. + + * calc/calc.el (calc-matrix-mode, calc-set-mode-line): Change the + mode name `square' to 'sqmatrix'. + 2005-10-10 Stefan Monnier * progmodes/etags.el (select-tags-table-mode): Don't use diff --git a/lisp/calc/calc.el b/lisp/calc/calc.el index 2220376904f..4c6820ca90e 100644 --- a/lisp/calc/calc.el +++ b/lisp/calc/calc.el @@ -654,7 +654,7 @@ If nil, computations on numbers always yield numbers where possible.") (defcalcmodevar calc-matrix-mode nil "If `matrix', variables are assumed to be matrix-valued. If a number, variables are assumed to be NxN matrices. -If `square', variables are assumed to be square matrices of an unspecified size. +If `sqmatrix', variables are assumed to be square matrices of an unspecified size. If `scalar', variables are assumed to be scalar-valued. If nil, symbolic math routines make no assumptions about variables.") @@ -1552,7 +1552,7 @@ See calc-keypad for details." (cond ((eq calc-matrix-mode 'matrix) "Matrix ") ((integerp calc-matrix-mode) (format "Matrix%d " calc-matrix-mode)) - ((eq calc-matrix-mode 'square) "SqMatrix ") + ((eq calc-matrix-mode 'sqmatrix) "SqMatrix ") ((eq calc-matrix-mode 'scalar) "Scalar ") (t "")) (if (eq calc-complex-mode 'polar) "Polar " "") From 9c40111a84759fb7e57625a6b8f39e83a4ec40b9 Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Mon, 10 Oct 2005 19:56:42 +0000 Subject: [PATCH 085/168] (jka-compr-handler): Fix typo in `operations' prop. --- lisp/ChangeLog | 4 ++++ lisp/jka-cmpr-hook.el | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 71500bade97..83281d5a321 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,7 @@ +2005-10-10 Karl Chen + + * jka-cmpr-hook.el (jka-compr-handler): Fix typo in `operations' prop. + 2005-10-10 Jay Belanger * calc/calc-arith.el (math-check-known-scalarp) diff --git a/lisp/jka-cmpr-hook.el b/lisp/jka-cmpr-hook.el index 1967a5d6c1d..fb0a62d602d 100644 --- a/lisp/jka-cmpr-hook.el +++ b/lisp/jka-cmpr-hook.el @@ -281,7 +281,7 @@ Returns the new status of auto compression (non-nil means on)." ;;; in order to decide when to call it. (put 'jka-compr-handler 'safe-magic t) -(put 'jka-compr-handler 'operations '(jka-compr-byte-compiler-base-file-name +(put 'jka-compr-handler 'operations '(byte-compiler-base-file-name write-region insert-file-contents file-local-copy load)) From 16d661843e858435b4f51500cac2616222adb59b Mon Sep 17 00:00:00 2001 From: Jay Belanger Date: Mon, 10 Oct 2005 19:59:18 +0000 Subject: [PATCH 086/168] (math-check-known-square-matrixp): Change order in which value is checked. --- lisp/calc/calc-arith.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lisp/calc/calc-arith.el b/lisp/calc/calc-arith.el index 810ed7bdd9f..feb3c9d25a8 100644 --- a/lisp/calc/calc-arith.el +++ b/lisp/calc/calc-arith.el @@ -383,8 +383,6 @@ (cond ((memq 'sqmatrix (nth 1 decl)) t) - ((memq 'matrix (nth 1 decl)) - nil) ((and (eq (car a) 'var) (boundp (nth 2 a)) (setq val (symbol-value (nth 2 a)))) @@ -394,6 +392,8 @@ (eq calc-matrix-mode 'sqmatrix)) (eq (car-safe a) 'var)) t) + ((memq 'matrix (nth 1 decl)) + nil) (t nil)))))) From fe7d6d98eda8112f7376032641375e62478e6597 Mon Sep 17 00:00:00 2001 From: Jay Belanger Date: Mon, 10 Oct 2005 20:00:13 +0000 Subject: [PATCH 087/168] (Matrix and Scalar Modes, Kinds of Declarations): Mention square matrix mode. --- man/calc.texi | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/man/calc.texi b/man/calc.texi index 36f9f68eecd..9c8583040f1 100644 --- a/man/calc.texi +++ b/man/calc.texi @@ -12817,7 +12817,9 @@ If you press @kbd{m v} with a numeric prefix argument @var{n}, you get a special ``dimensioned'' Matrix mode in which matrices of unknown size are assumed to be @var{n}x@var{n} square matrices. Then, the function call @samp{idn(1)} will expand into an actual -matrix rather than representing a ``generic'' matrix. +matrix rather than representing a ``generic'' matrix. Simply typing +@kbd{C-u m v} will get you a square Matrix mode, in which matrices of +unknown size are assumed to be square matrices of unspecified size. @cindex Declaring scalar variables Of course these modes are approximations to the true state of @@ -13205,6 +13207,8 @@ The value is not a vector. The value is a vector. @item matrix The value is a matrix (a rectangular vector of vectors). +@item sqmatrix +The value is a square matrix. @end table These type symbols can be combined with the other type symbols @@ -15978,7 +15982,8 @@ Command is @kbd{m p}. @item Matrix/Scalar mode. Default value is @mathit{-1}. Value is 0 for Scalar -mode, @mathit{-2} for Matrix mode, or @var{N} for +mode, @mathit{-2} for Matrix mode, @mathit{-3} for square Matrix mode, +or @var{N} for @texline @math{N\times N} @infoline @var{N}x@var{N} Matrix mode. Command is @kbd{m v}. @@ -16056,7 +16061,10 @@ Symbolic mode (@kbd{m s}; @pxref{Symbolic Mode}). Matrix mode (@kbd{m v}; @pxref{Matrix Mode}). @item Matrix@var{n} -Dimensioned Matrix mode (@kbd{C-u @var{n} m v}). +Dimensioned Matrix mode (@kbd{C-u @var{n} m v}; @pxref{Matrix Mode}). + +@item SqMatrix +Square Matrix mode (@kbd{C-u m v}; @pxref{Matrix Mode}). @item Scalar Scalar mode (@kbd{m v}; @pxref{Matrix Mode}). From 58af55912424b29b7fc385bc506e2056bc25b2a6 Mon Sep 17 00:00:00 2001 From: "Kim F. Storm" Date: Mon, 10 Oct 2005 20:49:55 +0000 Subject: [PATCH 088/168] *** empty log message *** --- src/ChangeLog | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index b1dca8abe3c..51026ce3406 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,15 +1,13 @@ 2005-10-10 Jason Rumney * xterm.c (remember_mouse_glyph): New function. - (note_mouse_movement): Use it to remember the current glyph if - changed. + (note_mouse_movement): Use it to remember the current glyph if changed. (XTmouse_position): Fix calculation of fake glyph under mouse. - Move code to calculate glyph under mouse into - remember_mouse_glyph. + Move code to calculate glyph under mouse into remember_mouse_glyph. 2005-10-10 Jan Dj,Ad(Brv - * emacs.c (USAGE3, standard_args): -nb => -nbi + * emacs.c (USAGE3, standard_args): -nb => -nbi. 2005-10-10 Juanma Barranquero @@ -24,8 +22,8 @@ 2005-10-09 Jan Dj,Ad(Brv - * emacs.c (standard_args): Removed options -i, -itype, --icon-type, - added -nb, --no-bitmap-icon. + * emacs.c (standard_args): Remove options -i, -itype, --icon-type. + Add options -nb, --no-bitmap-icon. * xfns.c (Fx_create_frame): Make bitmapIcon have default on. From 17a3b6da975742dfaa02ebd52c031d9972eac2f9 Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Mon, 10 Oct 2005 21:24:29 +0000 Subject: [PATCH 089/168] (sh-tmp-file): Use mktemp. --- lisp/ChangeLog | 4 ++++ lisp/progmodes/sh-script.el | 18 +++++++++++++----- 2 files changed, 17 insertions(+), 5 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 83281d5a321..147cf2afa4d 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,7 @@ +2005-10-10 Emanuele Giaquinta + + * progmodes/sh-script.el (sh-tmp-file): Use mktemp. + 2005-10-10 Karl Chen * jka-cmpr-hook.el (jka-compr-handler): Fix typo in `operations' prop. diff --git a/lisp/progmodes/sh-script.el b/lisp/progmodes/sh-script.el index 8af9b637b0b..ee184e42446 100644 --- a/lisp/progmodes/sh-script.el +++ b/lisp/progmodes/sh-script.el @@ -3392,16 +3392,20 @@ t means to return a list of all possible completions of STRING. "Insert code to setup temporary file handling. See `sh-feature'." (bash sh-append ksh88) (csh (file-name-nondirectory (buffer-file-name)) - "set tmp = /tmp/" str ".$$" \n + "set tmp = `mktemp /tmp/" str ".XXXXXX`" \n "onintr exit" \n _ (and (goto-char (point-max)) (not (bolp)) ?\n) "exit:\n" "rm $tmp* >&/dev/null" > \n) + ;; The change to use mktemp here has not been tested; + ;; I don't know es syntax, so I had to guess. + ;; If you try it, or if you know es syntax and can check it, + ;; please tell me whether it needs any change. --rms. (es (file-name-nondirectory (buffer-file-name)) - > "local( signals = $signals sighup sigint; tmp = /tmp/" str - ".$pid ) {" \n + > "local( signals = $signals sighup sigint; tmp = `mktemp /tmp/" str + ".XXXXXX` ) {" \n > "catch @ e {" \n > "rm $tmp^* >[2]/dev/null" \n "throw $e" \n @@ -3411,11 +3415,15 @@ t means to return a list of all possible completions of STRING. ?\} > \n) (ksh88 sh-modify sh 7 "EXIT") + ;; The change to use mktemp here has not been tested; + ;; I don't know rc syntax, so I had to guess. + ;; If you try it, or if you know rc syntax and can check it, + ;; please tell me whether it needs any change. --rms. (rc (file-name-nondirectory (buffer-file-name)) - > "tmp = /tmp/" str ".$pid" \n + > "tmp = `mktemp /tmp/" str ".XXXXXX`" \n "fn sigexit { rm $tmp^* >[2]/dev/null }" \n) (sh (file-name-nondirectory (buffer-file-name)) - > "TMP=${TMPDIR:-/tmp}/" str ".$$" \n + > "TMP=`mktemp ${TMPDIR:-/tmp}/" str ".XXXXXX`" \n "trap \"rm $TMP* 2>/dev/null\" " ?0 \n)) From dba0acf67cc71bfa7b41fef694aa5a560a0a3389 Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Mon, 10 Oct 2005 22:32:07 +0000 Subject: [PATCH 090/168] (newsticker-start, newsticker-show-news): Add autoload cookies. --- lisp/ChangeLog | 5 +++++ lisp/net/newsticker.el | 38 +++++++++++++------------------------- 2 files changed, 18 insertions(+), 25 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 147cf2afa4d..6c179d40c42 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2005-10-10 Richard M. Stallman + + * net/newsticker.el (newsticker-start, newsticker-show-news): + Add autoload cookies. + 2005-10-10 Emanuele Giaquinta * progmodes/sh-script.el (sh-tmp-file): Use mktemp. diff --git a/lisp/net/newsticker.el b/lisp/net/newsticker.el index f1ee41563f3..42d9bfc9717 100644 --- a/lisp/net/newsticker.el +++ b/lisp/net/newsticker.el @@ -1,4 +1,4 @@ -;;; newsticker.el --- A Newsticker for Emacs. +;;; newsticker.el --- A news-ticker for Emacs. ;; Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc. @@ -9,11 +9,6 @@ ;; URL: http://www.nongnu.org/newsticker ;; Created: 17. June 2003 ;; Keywords: News, RSS -;; Time-stamp: "26. August 2005, 16:33:46 (ulf)" - -(defconst newsticker-version "1.8" "Version number of newsticker.el.") - -;; ====================================================================== ;; This program is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by @@ -29,7 +24,10 @@ ;; along with this program; if not, write to the Free Software Foundation, ;; Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +(defconst newsticker-version "1.8" "Version number of newsticker.el.") + ;; ====================================================================== + ;;; Commentary: ;; Overview @@ -62,8 +60,8 @@ ;; Requirements ;; ------------ -;; Newsticker can be used with GNU Emacs version 21.1 or later as well as -;; XEmacs. It requires an XML-parser (`xml.el') which is part of GNU +;; Newsticker can be used with Emacs version 21.1 or later as well as +;; XEmacs. It requires an XML-parser (`xml.el') which is part of ;; Emacs. If you are using XEmacs you want to get the `net-utils' package ;; which contains `xml.el' for XEmacs. @@ -71,21 +69,6 @@ ;; prints them to stdout. By default Newsticker will use wget for this ;; task. -;; Installation -;; ------------ -;; Place Newsticker in a directory where Emacs can find it. Add the -;; following line to your Emacs startup file (`~/.emacs'). -;; (add-to-list 'load-path "/path/to/newsticker/") -;; (autoload 'newsticker-start "newsticker" "Emacs Newsticker" t) -;; (autoload 'newsticker-show-news "newsticker" "Emacs Newsticker" t) - -;; Newsticker-mode supports imenu. It allows for navigating with the help -;; of a menu. In order to use this feature you should also add the -;; following. -;; (add-hook 'newsticker-mode-hook 'imenu-add-menubar-index) - -;; That's it. - ;; Usage ;; ----- ;; The command newsticker-show-news will display all available headlines in @@ -151,7 +134,10 @@ ;; such a tool from slightly attenuating your Editor's responsiveness every ;; once in a while. -;; Byte-compiling newsticker.el is recommended. +;; Newsticker-mode supports imenu. It allows for navigating with the help +;; of a menu. In order to use this feature you should also add the +;; following. +;; (add-hook 'newsticker-mode-hook 'imenu-add-menubar-index) ;; ====================================================================== ;;; History: @@ -204,7 +190,7 @@ ;; for sending patch. ;; * Renamed invisible buffers ` *wget-newsticker-*' to ;; ` *newsticker-wget-*'. -;; * Tested with GNU Emacs versions 21.3 and 22.0 and XEmacs 21.something. +;; * Tested with Emacs versions 21.3 and 22.0 and XEmacs 21.something. ;; 1.6 * Support for (some) optional RSS elements: guid, dc:date. See ;; `newsticker-show-all-rss-elements' `newsticker-extra-face'. @@ -2307,6 +2293,7 @@ static char * visit_xpm[] = { ;;; User fun ;; ====================================================================== +;;;###autoload (defun newsticker-start (&optional do-not-complain-if-running) "Start the newsticker. Start the timers for display and retrieval. If the newsticker, i.e. the @@ -2395,6 +2382,7 @@ if newsticker has been running." (setq newsticker--display-timer nil))) ;; the functions we need for retrieval and display +;;;###autoload (defun newsticker-show-news () "Switch to newsticker buffer. You may want to bind this to a key." (interactive) From 74051a928f2ad4ce263a49f4f8990d19f4e56268 Mon Sep 17 00:00:00 2001 From: "Kim F. Storm" Date: Mon, 10 Oct 2005 22:50:01 +0000 Subject: [PATCH 091/168] *** empty log message *** --- src/ChangeLog | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/ChangeLog b/src/ChangeLog index 51026ce3406..6f68b6a441a 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2005-10-11 Kim F. Storm + + * keyboard.c (make_lispy_position): Fix buffer position calculation for + mouse click or movement in fringe. + 2005-10-10 Jason Rumney * xterm.c (remember_mouse_glyph): New function. From 31ab1f0585b47a6dbe54b5451e94c1ed64bf1347 Mon Sep 17 00:00:00 2001 From: "Kim F. Storm" Date: Mon, 10 Oct 2005 22:54:03 +0000 Subject: [PATCH 092/168] (make_lispy_position): Fix buffer position calculation for mouse click or movement in fringe. --- src/ChangeLog | 2 ++ src/keyboard.c | 1 + 2 files changed, 3 insertions(+) diff --git a/src/ChangeLog b/src/ChangeLog index 6f68b6a441a..f0c9084da54 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,7 @@ 2005-10-11 Kim F. Storm + * xterm.c (glyph_rect): Return 0 if position is outside text area. + * keyboard.c (make_lispy_position): Fix buffer position calculation for mouse click or movement in fringe. diff --git a/src/keyboard.c b/src/keyboard.c index 3826d460e3f..1d118c7a57b 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -5096,6 +5096,7 @@ make_lispy_position (f, x, y, time) posn = (part == ON_LEFT_FRINGE) ? Qleft_fringe : Qright_fringe; rx = 0; dx = wx; + wx = (part == ON_LEFT_FRINGE) ? 0 : window_box_width (w, TEXT_AREA); if (part == ON_RIGHT_FRINGE) dx -= (window_box_width (w, LEFT_MARGIN_AREA) + window_box_width (w, TEXT_AREA) From f0ad2f4c896ffd59f3f0e7fc3c717b52e8205c1a Mon Sep 17 00:00:00 2001 From: "Kim F. Storm" Date: Mon, 10 Oct 2005 22:54:19 +0000 Subject: [PATCH 093/168] (glyph_rect): Return 0 if position is outside text area. --- src/xterm.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/xterm.c b/src/xterm.c index c2fb207bcb1..a4ad061e8db 100644 --- a/src/xterm.c +++ b/src/xterm.c @@ -3647,8 +3647,9 @@ glyph_rect (f, x, y, rect) Lisp_Object window; struct window *w; struct glyph_row *r, *end_row; + enum window_part part; - window = window_from_coordinates (f, x, y, 0, &x, &y, 0); + window = window_from_coordinates (f, x, y, &part, &x, &y, 0); if (NILP (window)) return 0; @@ -3656,6 +3657,9 @@ glyph_rect (f, x, y, rect) r = MATRIX_FIRST_TEXT_ROW (w->current_matrix); end_row = r + w->current_matrix->nrows - 1; + if (part != ON_TEXT) + return 0; + for (; r < end_row && r->enabled_p; ++r) { if (r->y >= y) From 3c02eaa7d35f169f2d17f0d02bfc5c41ea8ef9c9 Mon Sep 17 00:00:00 2001 From: Miles Bader Date: Tue, 11 Oct 2005 00:29:35 +0000 Subject: [PATCH 094/168] Add arch tagline --- lisp/mh-e/ChangeLog.1 | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lisp/mh-e/ChangeLog.1 b/lisp/mh-e/ChangeLog.1 index 1ef20c97616..77d6c287c36 100644 --- a/lisp/mh-e/ChangeLog.1 +++ b/lisp/mh-e/ChangeLog.1 @@ -11412,3 +11412,5 @@ Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. + +;; arch-tag: 2577172b-b1bf-4d87-acfb-c9d8780e8851 From 71b7a47f7972000021bade3c1cab8e34a0ce9d0c Mon Sep 17 00:00:00 2001 From: YAMAMOTO Mitsuharu Date: Tue, 11 Oct 2005 03:35:54 +0000 Subject: [PATCH 095/168] (PER_CHAR_METRIC): Remove unused macro. (fm_font_family_alist): New variable. (syms_of_macterm): Initialize and staticpro it. (decode_mac_font_name): Replace '-' in family name with '_' if it occurs just once. Lower family name. (parse_x_font_name): Rename from x_font_name_to_mac_font_name. All uses changed. Remove argument MF and code conversion for it. Add argument SIZE. Rename argument MF_DECODED to FAMILY, and CS to CHARSET. Parse font size. Lower family name. Return integer value for status of parsing. (init_font_name_table) [USE_ATSUI]: Use decode_mac_font_name. Don't use Fdowncase because family name is already lowered by decode_mac_font_name. (init_font_name_table): Always call decode_mac_font_name. Add pair of family name and its reference to fm_font_family_alist. (mac_clear_font_name_table): Clear fm_font_family_alist. (XLoadQueryFont): Move font size parsing part to parse_x_font_name. Lookup fm_font_family_alist to get font family reference. (XLoadQueryFont) [USE_ATSUI]: Don't use Fdowncase because family name is already lowered by parse_x_font_name. --- src/ChangeLog | 30 ++- src/macterm.c | 516 ++++++++++++++++++++++++++------------------------ 2 files changed, 291 insertions(+), 255 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index f0c9084da54..c723c3ee9c1 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,26 @@ +2005-10-11 YAMAMOTO Mitsuharu + + * macterm.c (PER_CHAR_METRIC): Remove unused macro. + (fm_font_family_alist): New variable. + (syms_of_macterm): Initialize and staticpro it. + (decode_mac_font_name): Replace '-' in family name with '_' if it + occurs just once. Lower family name. + (parse_x_font_name): Rename from x_font_name_to_mac_font_name. + All uses changed. Remove argument MF and code conversion for it. + Add argument SIZE. Rename argument MF_DECODED to FAMILY, and CS + to CHARSET. Parse font size. Lower family name. Return integer + value for status of parsing. + (init_font_name_table) [USE_ATSUI]: Use decode_mac_font_name. + Don't use Fdowncase because family name is already lowered by + decode_mac_font_name. + (init_font_name_table): Always call decode_mac_font_name. Add + pair of family name and its reference to fm_font_family_alist. + (mac_clear_font_name_table): Clear fm_font_family_alist. + (XLoadQueryFont): Move font size parsing part to parse_x_font_name. + Lookup fm_font_family_alist to get font family reference. + (XLoadQueryFont) [USE_ATSUI]: Don't use Fdowncase because family + name is already lowered by parse_x_font_name. + 2005-10-11 Kim F. Storm * xterm.c (glyph_rect): Return 0 if position is outside text area. @@ -52,7 +75,7 @@ [MAC_OS_X_VERSION_MAX_ALLOWED < 1020]: Specify kATSLineFractDisable. (mac_draw_string_common) [MAC_OSX && USE_ATSUI]: Clip to clipping rectangles stored in gc. - (XFreeGC): Dispose clipping region. + (XFreeGC): Dispose of clipping region. (mac_set_clip_rectangles, mac_reset_clip_rectangles): New functions. (x_draw_fringe_bitmap, x_set_glyph_string_clipping) (x_draw_relief_rect, x_draw_box_rect, x_draw_stretch_glyph_string) @@ -3772,7 +3795,7 @@ [TARGET_API_MAC_CARBON] (Fx_file_dialog): Use MAXPATHLEN for size of filename string. Set event callback function when creating dialog boxes. Add code conversions for filenames. Don't dispose - apple event descriptor record if failed to create it. + of apple event descriptor record if failed to create it. * macterm.c: Include sys/param.h. [USE_CARBON_EVENTS] (mac_handle_window_event): Add handler for @@ -6879,7 +6902,8 @@ (x_scroll_bar_handle_click): Set `(PORTION . WHOLE)' part in a scroll-bar click event. (mac_define_frame_cursor): Change the pointer shape. - (x_free_frame_resources): Reset tip_window to NULL when it is disposed. + (x_free_frame_resources): Reset tip_window to NULL when it is + disposed of. [!TARGET_API_MAC_CARBON] (arrow_cursor): New variable. [!TARGET_API_MAC_CARBON] (do_init_managers): Initialize arrow_cursor. (do_window_update): Don't do anything if the updated window is the diff --git a/src/macterm.c b/src/macterm.c index 7d75e962e9c..2142698bbf4 100644 --- a/src/macterm.c +++ b/src/macterm.c @@ -1766,19 +1766,6 @@ static XCharStruct *x_per_char_metric P_ ((XFontStruct *, XChar2b *)); static int mac_encode_char P_ ((int, XChar2b *, struct font_info *, int *)); -/* Return a pointer to per-char metric information in FONT of a - character pointed by B which is a pointer to an XChar2b. */ - -#define PER_CHAR_METRIC(font, b) \ - ((font)->per_char \ - ? ((font)->per_char + (b)->byte2 - (font)->min_char_or_byte2 \ - + (((font)->min_byte1 || (font)->max_byte1) \ - ? (((b)->byte1 - (font)->min_byte1) \ - * ((font)->max_char_or_byte2 - (font)->min_char_or_byte2 + 1)) \ - : 0)) \ - : &((font)->max_bounds)) - - /* Get metrics of character CHAR2B in FONT. Value is null if CHAR2B is not contained in the font. */ @@ -6843,7 +6830,13 @@ static char **font_name_table = NULL; static int font_name_table_size = 0; static int font_name_count = 0; +/* Alist linking font family names to Font Manager font family + references (which can also be used as QuickDraw font IDs). We use + an alist because hash tables are not ready when the terminal frame + for Mac OS Classic is created. */ +static Lisp_Object fm_font_family_alist; #if USE_ATSUI +/* Hash table linking font family names to ATSU font IDs. */ static Lisp_Object atsu_font_id_hash; #endif @@ -6893,24 +6886,39 @@ decode_mac_font_name (name, size, coding_system) struct coding_system coding; char *buf, *p; + if (!NILP (coding_system) && !NILP (Fcoding_system_p (coding_system))) + { + for (p = name; *p; p++) + if (!isascii (*p) || iscntrl (*p)) + break; + + if (*p) + { + setup_coding_system (coding_system, &coding); + coding.src_multibyte = 0; + coding.dst_multibyte = 1; + coding.mode |= CODING_MODE_LAST_BLOCK; + coding.composing = COMPOSITION_DISABLED; + buf = (char *) alloca (size); + + decode_coding (&coding, name, buf, strlen (name), size - 1); + bcopy (buf, name, coding.produced); + name[coding.produced] = '\0'; + } + } + + /* If there's just one occurrence of '-' in the family name, it is + replaced with '_'. (More than one occurrence of '-' means a + "FOUNDRY-FAMILY-CHARSET"-style name.) */ + p = strchr (name, '-'); + if (p && strchr (p + 1, '-') == NULL) + *p = '_'; + for (p = name; *p; p++) - if (!isascii (*p) || iscntrl (*p)) - break; - - if (*p == '\0' - || NILP (coding_system) || NILP (Fcoding_system_p (coding_system))) - return; - - setup_coding_system (coding_system, &coding); - coding.src_multibyte = 0; - coding.dst_multibyte = 1; - coding.mode |= CODING_MODE_LAST_BLOCK; - coding.composing = COMPOSITION_DISABLED; - buf = (char *) alloca (size); - - decode_coding (&coding, name, buf, strlen (name), size - 1); - bcopy (buf, name, coding.produced); - name[coding.produced] = '\0'; + /* On Mac OS X 10.3, tolower also converts non-ASCII characters + for some locales. */ + if (isascii (*p)) + *p = tolower (*p); } @@ -6949,32 +6957,46 @@ mac_to_x_fontname (name, size, style, charset) } -/* Convert an X font spec to the corresponding mac font name, which - can then be passed to GetFNum after conversion to a Pascal string. - For ordinary Mac fonts, this should just be their names, like - "monaco", "Taipei", etc. Fonts converted from the GNU intlfonts - collection contain their charset designation in their names, like - "ETL-Fixed-iso8859-1", "ETL-Fixed-koi8-r", etc. Both types of font - names are handled accordingly. */ -static void -x_font_name_to_mac_font_name (xf, mf, mf_decoded, style, cs) - char *xf, *mf, *mf_decoded; +/* Parse fully-specified and instantiated X11 font spec XF, and store + the results to FAMILY, *SIZE, *STYLE, and CHARSET. Return 1 if the + parsing succeeded, and 0 otherwise. For FAMILY and CHARSET, the + caller must allocate at least 256 and 32 bytes respectively. For + ordinary Mac fonts, the value stored to FAMILY should just be their + names, like "monaco", "Taipei", etc. Fonts converted from the GNU + intlfonts collection contain their charset designation in their + names, like "ETL-Fixed-iso8859-1", "ETL-Fixed-koi8-r", etc. Both + types of font names are handled accordingly. */ + +const int kDefaultFontSize = 12; + +static int +parse_x_font_name (xf, family, size, style, charset) + char *xf, *family; + int *size; Style *style; - char *cs; + char *charset; { - Str31 foundry; - Str255 family; - char weight[20], slant[2], *p; - Lisp_Object charset_info, coding_system = Qnil; - struct coding_system coding; + Str31 foundry, weight; + int point_size, avgwidth; + char slant[2], *p; - strcpy (mf, ""); + if (sscanf (xf, "-%31[^-]-%255[^-]-%31[^-]-%1[^-]-%*[^-]-%*[^-]-%d-%d-%*[^-]-%*[^-]-%*c-%d-%31s", + foundry, family, weight, slant, size, + &point_size, &avgwidth, charset) != 8 + && sscanf (xf, "-%31[^-]-%255[^-]-%31[^-]-%1[^-]-%*[^-]--%d-%d-%*[^-]-%*[^-]-%*c-%d-%31s", + foundry, family, weight, slant, size, + &point_size, &avgwidth, charset) != 8) + return 0; - if (sscanf (xf, "-%31[^-]-%255[^-]-%19[^-]-%1[^-]-%*[^-]-%*[^-]-%*[^-]-%*[^-]-%*[^-]-%*[^-]-%*c-%*[^-]-%31s", - foundry, family, weight, slant, cs) != 5 && - sscanf (xf, "-%31[^-]-%255[^-]-%19[^-]-%1[^-]-%*[^-]--%*[^-]-%*[^-]-%*[^-]-%*[^-]-%*c-%*[^-]-%31s", - foundry, family, weight, slant, cs) != 5) - return; + if (*size == 0) + { + if (point_size > 0) + *size = point_size / 10; + else if (avgwidth > 0) + *size = avgwidth / 10; + } + if (*size == 0) + *size = kDefaultFontSize; *style = normal; if (strcmp (weight, "bold") == 0) @@ -6982,32 +7004,31 @@ x_font_name_to_mac_font_name (xf, mf, mf_decoded, style, cs) if (*slant == 'i') *style |= italic; - charset_info = Fassoc (build_string (cs), Vmac_charset_info_alist); - if (!NILP (charset_info)) + if (NILP (Fassoc (build_string (charset), Vmac_charset_info_alist))) { - strcpy (mf_decoded, family); - coding_system = Fcar (Fcdr (Fcdr (charset_info))); - } - else - sprintf (mf_decoded, "%s-%s-%s", foundry, family, cs); + int foundry_len = strlen (foundry), family_len = strlen (family); - for (p = mf_decoded; *p; p++) - if (!isascii (*p) || iscntrl (*p)) - break; - - if (*p == '\0' - || NILP (coding_system) || NILP (Fcoding_system_p (coding_system))) - strcpy (mf, mf_decoded); - else - { - setup_coding_system (coding_system, &coding); - coding.src_multibyte = 1; - coding.dst_multibyte = 0; - coding.mode |= CODING_MODE_LAST_BLOCK; - encode_coding (&coding, mf_decoded, mf, - strlen (mf_decoded), sizeof (Str255) - 1); - mf[coding.produced] = '\0'; + if (foundry_len + family_len + strlen (charset) + 2 < sizeof (Str255)) + { + /* Like sprintf (family, "%s-%s-%s", foundry, family, charset), + but take overlap into account. */ + memmove (family + foundry_len + 1, family, family_len); + memcpy (family, foundry, foundry_len); + family[foundry_len] = '-'; + family[foundry_len + 1 + family_len] = '-'; + strcpy (family + foundry_len + 1 + family_len + 1, charset); + } + else + return 0; } + + for (p = family; *p; p++) + /* On Mac OS X 10.3, tolower also converts non-ASCII characters + for some locales. */ + if (isascii (*p)) + *p = tolower (*p); + + return 1; } @@ -7084,6 +7105,8 @@ init_font_name_table () kFontMacintoshPlatform, kFontNoScript, kFontNoLanguage, name_len, name, NULL, NULL); + if (err == noErr) + decode_mac_font_name (name, name_len + 1, Qnil); if (err == noErr && *name != '.' && (prev_name == NULL @@ -7099,7 +7122,7 @@ init_font_name_table () bold, cs)); add_font_name_table_entry (mac_to_x_fontname (name, 0, italic | bold, cs)); - Fputhash (Fdowncase (make_unibyte_string (name, name_len)), + Fputhash (make_unibyte_string (name, name_len), long_to_cons (font_ids[i]), atsu_font_id_hash); xfree (prev_name); prev_name = name; @@ -7149,12 +7172,14 @@ init_font_name_table () sc = GetTextEncodingBase (encoding); text_encoding_info = assq_no_quit (make_number (sc), text_encoding_info_alist); - if (!NILP (text_encoding_info)) - decode_mac_font_name (name, sizeof (name), - XCAR (XCDR (text_encoding_info))); - else + if (NILP (text_encoding_info)) text_encoding_info = assq_no_quit (make_number (kTextEncodingMacRoman), text_encoding_info_alist); + decode_mac_font_name (name, sizeof (name), + XCAR (XCDR (text_encoding_info))); + fm_font_family_alist = Fcons (Fcons (build_string (name), + make_number (ff)), + fm_font_family_alist); /* Point the instance iterator at the current font family. */ if (FMResetFontFamilyInstanceIterator (ff, &ffii) != noErr) @@ -7233,12 +7258,14 @@ init_font_name_table () scriptcode = FontToScript (fontnum); text_encoding_info = assq_no_quit (make_number (scriptcode), text_encoding_info_alist); - if (!NILP (text_encoding_info)) - decode_mac_font_name (name, sizeof (name), - XCAR (XCDR (text_encoding_info))); - else + if (NILP (text_encoding_info)) text_encoding_info = assq_no_quit (make_number (smRoman), text_encoding_info_alist); + decode_mac_font_name (name, sizeof (name), + XCAR (XCDR (text_encoding_info))); + fm_font_family_alist = Fcons (Fcons (build_string (name), + make_number (fontnum)), + fm_font_family_alist); do { HLock (font_handle); @@ -7294,6 +7321,7 @@ mac_clear_font_name_table () xfree (font_name_table); font_name_table = NULL; font_name_table_size = font_name_count = 0; + fm_font_family_alist = Qnil; } @@ -7602,9 +7630,6 @@ is_fully_specified_xlfd (char *p) } -const int kDefaultFontSize = 12; - - /* XLoadQueryFont creates and returns an internal representation for a font in a MacFontStruct struct. There is really no concept corresponding to "loading" a font on the Mac. But we check its @@ -7614,12 +7639,9 @@ const int kDefaultFontSize = 12; static MacFontStruct * XLoadQueryFont (Display *dpy, char *fontname) { - int i, size, point_size, avgwidth, is_two_byte_font, char_width; + int i, size, char_width; char *name; - GrafPtr port; - SInt16 old_fontnum, old_fontsize; - Style old_fontface; - Str255 mfontname, mfontname_decoded; + Str255 family; Str31 charset; SInt16 fontnum; #if USE_ATSUI @@ -7633,10 +7655,6 @@ XLoadQueryFont (Display *dpy, char *fontname) short scriptcode; #endif MacFontStruct *font; - FontInfo the_fontinfo; -#ifdef MAC_OSX - UInt32 old_flags, new_flags; -#endif if (is_fully_specified_xlfd (fontname)) name = fontname; @@ -7650,32 +7668,9 @@ XLoadQueryFont (Display *dpy, char *fontname) name = SDATA (XCAR (matched_fonts)); } - GetPort (&port); /* save the current font number used */ -#if TARGET_API_MAC_CARBON - old_fontnum = GetPortTextFont (port); - old_fontsize = GetPortTextSize (port); - old_fontface = GetPortTextFace (port); -#else - old_fontnum = port->txFont; - old_fontsize = port->txSize; - old_fontface = port->txFace; -#endif + if (parse_x_font_name (name, family, &size, &fontface, charset) == 0) + return NULL; - if (sscanf (name, "-%*[^-]-%*[^-]-%*[^-]-%*c-%*[^-]--%d-%d-%*[^-]-%*[^-]-%*c-%d-%*s", &size, &point_size, &avgwidth) != 3) - size = 0; - else - { - if (size == 0) - if (point_size > 0) - size = point_size / 10; - else if (avgwidth > 0) - size = avgwidth / 10; - } - if (size == 0) - size = kDefaultFontSize; - - x_font_name_to_mac_font_name (name, mfontname, mfontname_decoded, - &fontface, charset); #if USE_ATSUI if (strcmp (charset, "iso10646-1") == 0) /* XXX */ { @@ -7693,9 +7688,7 @@ XLoadQueryFont (Display *dpy, char *fontname) ATSUFontFeatureSelector selectors[] = {kAllTypeFeaturesOffSelector}; Lisp_Object font_id_cons; - font_id_cons = Fgethash (Fdowncase - (make_unibyte_string (mfontname, - strlen (mfontname))), + font_id_cons = Fgethash (make_unibyte_string (family, strlen (family)), atsu_font_id_hash, Qnil); if (NILP (font_id_cons)) return NULL; @@ -7716,24 +7709,21 @@ XLoadQueryFont (Display *dpy, char *fontname) scriptcode = kTextEncodingMacUnicode; } else +#endif { -#endif - c2pstr (mfontname); + Lisp_Object tmp = Fassoc (build_string (family), fm_font_family_alist); + + if (NILP (tmp)) + return NULL; + fontnum = XINT (XCDR (tmp)); #if TARGET_API_MAC_CARBON - fontnum = FMGetFontFamilyFromName (mfontname); - if (fontnum == kInvalidFontFamily - || FMGetFontFamilyTextEncoding (fontnum, &encoding) != noErr) - return NULL; - scriptcode = GetTextEncodingBase (encoding); + if (FMGetFontFamilyTextEncoding (fontnum, &encoding) != noErr) + return NULL; + scriptcode = GetTextEncodingBase (encoding); #else - GetFNum (mfontname, &fontnum); - if (fontnum == 0) - return NULL; - scriptcode = FontToScript (fontnum); + scriptcode = FontToScript (fontnum); #endif -#if USE_ATSUI } -#endif font = (MacFontStruct *) xmalloc (sizeof (struct MacFontStruct)); @@ -7752,7 +7742,7 @@ XLoadQueryFont (Display *dpy, char *fontname) if (scriptcode == smJapanese && strcmp (charset, "jisx0201.1976-0") == 0) font->mac_scriptcode = smRoman; - font->full_name = mac_to_x_fontname (mfontname_decoded, size, fontface, charset); + font->full_name = mac_to_x_fontname (family, size, fontface, charset); #if USE_ATSUI if (font->mac_style) @@ -7837,130 +7827,149 @@ XLoadQueryFont (Display *dpy, char *fontname) font->max_char_or_byte2 = 0xff; } else - { #endif - is_two_byte_font = font->mac_scriptcode == smJapanese || - font->mac_scriptcode == smTradChinese || - font->mac_scriptcode == smSimpChinese || - font->mac_scriptcode == smKorean; - - TextFont (fontnum); - TextSize (size); - TextFace (fontface); - - GetFontInfo (&the_fontinfo); - - font->ascent = the_fontinfo.ascent; - font->descent = the_fontinfo.descent; - - if (is_two_byte_font) { - font->min_byte1 = 0xa1; - font->max_byte1 = 0xfe; - font->min_char_or_byte2 = 0xa1; - font->max_char_or_byte2 = 0xfe; + GrafPtr port; + SInt16 old_fontnum, old_fontsize; + Style old_fontface; + FontInfo the_fontinfo; + int is_two_byte_font; - /* Use the width of an "ideographic space" of that font because - the_fontinfo.widMax returns the wrong width for some fonts. */ - switch (font->mac_scriptcode) - { - case smJapanese: - font->min_byte1 = 0x81; - font->max_byte1 = 0xfc; - font->min_char_or_byte2 = 0x40; - font->max_char_or_byte2 = 0xfc; - char_width = StringWidth("\p\x81\x40"); - break; - case smTradChinese: - font->min_char_or_byte2 = 0x40; - char_width = StringWidth("\p\xa1\x40"); - break; - case smSimpChinese: - char_width = StringWidth("\p\xa1\xa1"); - break; - case smKorean: - char_width = StringWidth("\p\xa1\xa1"); - break; - } - } - else - { - font->min_byte1 = font->max_byte1 = 0; - font->min_char_or_byte2 = 0x20; - font->max_char_or_byte2 = 0xff; + /* Save the current font number used. */ + GetPort (&port); +#if TARGET_API_MAC_CARBON + old_fontnum = GetPortTextFont (port); + old_fontsize = GetPortTextSize (port); + old_fontface = GetPortTextFace (port); +#else + old_fontnum = port->txFont; + old_fontsize = port->txSize; + old_fontface = port->txFace; +#endif - /* Do this instead of use the_fontinfo.widMax, which incorrectly - returns 15 for 12-point Monaco! */ - char_width = CharWidth ('m'); - } + TextFont (fontnum); + TextSize (size); + TextFace (fontface); - if (is_two_byte_font) - { - font->per_char = NULL; + GetFontInfo (&the_fontinfo); - if (fontface & italic) - font->max_bounds.rbearing = char_width + 1; + font->ascent = the_fontinfo.ascent; + font->descent = the_fontinfo.descent; + + is_two_byte_font = (font->mac_scriptcode == smJapanese + || font->mac_scriptcode == smTradChinese + || font->mac_scriptcode == smSimpChinese + || font->mac_scriptcode == smKorean); + + if (is_two_byte_font) + { + font->min_byte1 = 0xa1; + font->max_byte1 = 0xfe; + font->min_char_or_byte2 = 0xa1; + font->max_char_or_byte2 = 0xfe; + + /* Use the width of an "ideographic space" of that font + because the_fontinfo.widMax returns the wrong width for + some fonts. */ + switch (font->mac_scriptcode) + { + case smJapanese: + font->min_byte1 = 0x81; + font->max_byte1 = 0xfc; + font->min_char_or_byte2 = 0x40; + font->max_char_or_byte2 = 0xfc; + char_width = StringWidth("\p\x81\x40"); + break; + case smTradChinese: + font->min_char_or_byte2 = 0x40; + char_width = StringWidth("\p\xa1\x40"); + break; + case smSimpChinese: + char_width = StringWidth("\p\xa1\xa1"); + break; + case smKorean: + char_width = StringWidth("\p\xa1\xa1"); + break; + } + } else - font->max_bounds.rbearing = char_width; - font->max_bounds.lbearing = 0; - font->max_bounds.width = char_width; - font->max_bounds.ascent = the_fontinfo.ascent; - font->max_bounds.descent = the_fontinfo.descent; - - font->min_bounds = font->max_bounds; - } - else - { - int c, min_width, max_width; - Rect char_bounds, min_bounds, max_bounds; - char ch; - - font->per_char = xmalloc (sizeof (XCharStruct) * (0xff - 0x20 + 1)); - - min_width = max_width = char_width; - SetRect (&min_bounds, -32767, -32767, 32767, 32767); - SetRect (&max_bounds, 0, 0, 0, 0); - for (c = 0x20; c <= 0xff; c++) { - ch = c; - char_width = CharWidth (ch); - QDTextBounds (1, &ch, &char_bounds); - STORE_XCHARSTRUCT (font->per_char[c - 0x20], - char_width, char_bounds); - /* Some Japanese fonts (in SJIS encoding) return 0 as the - character width of 0x7f. */ - if (char_width > 0) - { - min_width = min (min_width, char_width); - max_width = max (max_width, char_width); - } - if (!EmptyRect (&char_bounds)) - { - SetRect (&min_bounds, - max (min_bounds.left, char_bounds.left), - max (min_bounds.top, char_bounds.top), - min (min_bounds.right, char_bounds.right), - min (min_bounds.bottom, char_bounds.bottom)); - UnionRect (&max_bounds, &char_bounds, &max_bounds); - } + font->min_byte1 = font->max_byte1 = 0; + font->min_char_or_byte2 = 0x20; + font->max_char_or_byte2 = 0xff; + + /* Do this instead of use the_fontinfo.widMax, which + incorrectly returns 15 for 12-point Monaco! */ + char_width = CharWidth ('m'); } - STORE_XCHARSTRUCT (font->min_bounds, min_width, min_bounds); - STORE_XCHARSTRUCT (font->max_bounds, max_width, max_bounds); - if (min_width == max_width - && max_bounds.left >= 0 && max_bounds.right <= max_width) + + if (is_two_byte_font) { - /* Fixed width and no overhangs. */ - xfree (font->per_char); font->per_char = NULL; - } - } - TextFont (old_fontnum); /* restore previous font number, size and face */ - TextSize (old_fontsize); - TextFace (old_fontface); -#if USE_ATSUI - } -#endif + if (fontface & italic) + font->max_bounds.rbearing = char_width + 1; + else + font->max_bounds.rbearing = char_width; + font->max_bounds.lbearing = 0; + font->max_bounds.width = char_width; + font->max_bounds.ascent = the_fontinfo.ascent; + font->max_bounds.descent = the_fontinfo.descent; + + font->min_bounds = font->max_bounds; + } + else + { + int c, min_width, max_width; + Rect char_bounds, min_bounds, max_bounds; + char ch; + + font->per_char = xmalloc (sizeof (XCharStruct) * (0xff - 0x20 + 1)); + bzero (font->per_char, sizeof (XCharStruct) * (0xff - 0x20 + 1)); + + min_width = max_width = char_width; + SetRect (&min_bounds, -32767, -32767, 32767, 32767); + SetRect (&max_bounds, 0, 0, 0, 0); + for (c = 0x20; c <= 0xff; c++) + { + ch = c; + char_width = CharWidth (ch); + QDTextBounds (1, &ch, &char_bounds); + STORE_XCHARSTRUCT (font->per_char[c - 0x20], + char_width, char_bounds); + /* Some Japanese fonts (in SJIS encoding) return 0 as + the character width of 0x7f. */ + if (char_width > 0) + { + min_width = min (min_width, char_width); + max_width = max (max_width, char_width); + } + if (!EmptyRect (&char_bounds)) + { + SetRect (&min_bounds, + max (min_bounds.left, char_bounds.left), + max (min_bounds.top, char_bounds.top), + min (min_bounds.right, char_bounds.right), + min (min_bounds.bottom, char_bounds.bottom)); + UnionRect (&max_bounds, &char_bounds, &max_bounds); + } + } + STORE_XCHARSTRUCT (font->min_bounds, min_width, min_bounds); + STORE_XCHARSTRUCT (font->max_bounds, max_width, max_bounds); + if (min_width == max_width + && max_bounds.left >= 0 && max_bounds.right <= max_width) + { + /* Fixed width and no overhangs. */ + xfree (font->per_char); + font->per_char = NULL; + } + } + + /* Restore previous font number, size and face. */ + TextFont (old_fontnum); + TextSize (old_fontsize); + TextFace (old_fontface); + } return font; } @@ -10988,14 +10997,17 @@ syms_of_macterm () staticpro (&Qreverse); Qreverse = intern ("reverse"); + staticpro (&Qmac_ready_for_drag_n_drop); + Qmac_ready_for_drag_n_drop = intern ("mac-ready-for-drag-n-drop"); + staticpro (&x_display_name_list); x_display_name_list = Qnil; staticpro (&last_mouse_scroll_bar); last_mouse_scroll_bar = Qnil; - Qmac_ready_for_drag_n_drop = intern ("mac-ready-for-drag-n-drop"); - staticpro (&Qmac_ready_for_drag_n_drop); + staticpro (&fm_font_family_alist); + fm_font_family_alist = Qnil; #if USE_ATSUI staticpro (&atsu_font_id_hash); From a120694fcaf58e938553439c7433505039b57ac5 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Tue, 11 Oct 2005 05:08:25 +0000 Subject: [PATCH 096/168] (appt-check): Use diary-selective-display var. --- lisp/ChangeLog | 8 ++++---- lisp/calendar/appt.el | 16 ++++++++-------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 6c179d40c42..df834d0fae9 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,7 @@ +2005-10-11 Stefan Monnier + + * calendar/appt.el (appt-check): Use diary-selective-display var. + 2005-10-10 Richard M. Stallman * net/newsticker.el (newsticker-start, newsticker-show-news): @@ -130,10 +134,6 @@ * progmodes/gud.el (gud-speedbar-menu-items): Use :visible instead of :active. -2005-10-08 Stefan Monnier - - * calendar/appt.el (appt-check): Use diary-selective-display var. - 2005-10-08 Eric Hanchrow * textmodes/ispell.el (ispell-check-version): diff --git a/lisp/calendar/appt.el b/lisp/calendar/appt.el index ae2fc3bd8e1..590fcc9b871 100644 --- a/lisp/calendar/appt.el +++ b/lisp/calendar/appt.el @@ -1,6 +1,6 @@ ;;; appt.el --- appointment notification functions -;; Copyright (C) 1989, 1990, 1994, 1998, 2004 Free Software Foundation, Inc. +;; Copyright (C) 1989, 1990, 1994, 1998, 2004, 2005 Free Software Foundation, Inc. ;; Author: Neil Mager ;; Maintainer: Glenn Morris @@ -337,13 +337,13 @@ displayed in a window: diary-hook (cons 'appt-make-list diary-hook)))) (diary)) - (let ((diary-display-hook 'appt-make-list) - (d-buff (find-buffer-visiting - (substitute-in-file-name diary-file))) - selective) - (if d-buff ; diary buffer exists - (with-current-buffer d-buff - (setq selective selective-display))) + (let* ((diary-display-hook 'appt-make-list) + (d-buff (find-buffer-visiting + (substitute-in-file-name diary-file))) + (selective + (if d-buff ; Diary buffer exists. + (with-current-buffer d-buff + diary-selective-display)))) (diary) ;; If the diary buffer existed before this command, ;; restore its display state. Otherwise, kill it. From 655e5fd57a5f8a7b31c06d06ce36decd8fef7535 Mon Sep 17 00:00:00 2001 From: Juri Linkov Date: Tue, 11 Oct 2005 05:47:11 +0000 Subject: [PATCH 097/168] Rearrange nodes. (Top): Update menu. Change ref `Info for Experts' to `Advanced Info Commands'. (Getting Started): Fix description of manual's parts. (Help-Int): Change xref `Info Search' to `Search Index', and `Expert Info' to `Advanced'. (Advanced): Move node one level up. (Search Text, Search Index): New nodes split out from `Info Search'. (Go to node, Choose menu subtopic, Create Info buffer): New nodes split out from `Advanced'. (Advanced, Emacs Info Variables): De-document editing an Info file in Info. (Emacs Info Variables): Move node from `Expert Info' to `Advanced'. (Creating an Info File): Delete node and move its text to `Expert Info'. --- man/info.texi | 526 ++++++++++++++++++++++++-------------------------- 1 file changed, 256 insertions(+), 270 deletions(-) diff --git a/man/info.texi b/man/info.texi index 95e736ab246..532478ca521 100644 --- a/man/info.texi +++ b/man/info.texi @@ -72,28 +72,28 @@ If you are new to the Info reader and want to learn how to use it, type the command @kbd{h} now. It brings you to a programmed instruction sequence. -To read about expert-level Info commands, type @kbd{n} twice. This -brings you to @cite{Info for Experts}, skipping over the `Getting +To read about advanced Info commands, type @kbd{n} twice. This +brings you to @cite{Advanced Info Commands}, skipping over the `Getting Started' chapter. @end ifinfo @end ifnottex @menu * Getting Started:: Getting started using an Info reader. +* Advanced:: Advanced Info commands. * Expert Info:: Info commands for experts. -* Creating an Info File:: How to make your own Info file. * Index:: An index of topics, commands, and variables. @end menu -@node Getting Started, Expert Info, Top, Top +@node Getting Started, Advanced, Top, Top @comment node-name, next, previous, up @chapter Getting Started This first part of this Info manual describes how to get around inside of Info. The second part of the manual describes various advanced -Info commands, and how to write an Info as distinct from a Texinfo -file. The third part briefly explains how to generate Info files from -Texinfo files. +Info commands. The third part briefly explains how to generate Info +files from Texinfo files, and describes how to write an Info as +distinct from a Texinfo file. @ifnotinfo This manual is primarily designed for browsing with an Info reader @@ -847,7 +847,7 @@ describes the topic you want. There is also a short-cut Info command, @kbd{i}, which does all of that for you. It searches the index for a given topic (a string) and goes to the node which is listed in the index for that topic. -@xref{Info Search}, for a full explanation. +@xref{Search Index}, for a full explanation. @kindex l @r{(Info mode)} @findex Info-history-back @@ -905,135 +905,31 @@ is @code{Info-top-node}. >> Now type @kbd{n} to see the last node of the course. @end format - @xref{Expert Info}, for more advanced Info features. + @xref{Advanced}, for more advanced Info features. @c If a menu appears at the end of this node, remove it. @c It is an accident of the menu updating command. -@node Expert Info -@chapter Info for Experts +@node Advanced +@chapter Advanced Info Commands - This chapter describes various Info commands for experts. (If you + This chapter describes various advanced Info commands. (If you are using a stand-alone Info reader, there are additional commands specific to it, which are documented in several chapters of @ref{Top,, GNU Info, info-stnd, GNU Info}.) - This chapter also explains how to write an Info as distinct from a -Texinfo file. (However, in most cases, writing a Texinfo file is -better, since you can use it to make a printed manual or produce other -formats, such as HTML and DocBook, as well as for generating Info -files.) @xref{Top,, Overview of Texinfo, texinfo, Texinfo: The GNU -Documentation Format}. - @menu -* Advanced:: Advanced Info commands: g, e, and 1 - 9. -* Info Search:: How to search Info documents for specific subjects. -* Add:: Describes how to add new nodes to the hierarchy. - Also tells what nodes look like. -* Menus:: How to add to or create menus in Info nodes. -* Cross-refs:: How to add cross-references to Info nodes. -* Tags:: How to make tags tables for Info files. -* Checking:: Checking an Info File. +* Search Text:: How to search Info documents. +* Search Index:: How to search the indices for specific subjects. +* Go to node:: How to go to a node by name. +* Choose menu subtopic:: How to choose a menu subtopic by its number. +* Create Info buffer:: How to create a new Info buffer in Emacs. * Emacs Info Variables:: Variables modifying the behavior of Emacs Info. @end menu -@node Advanced, Info Search, , Expert Info +@node Search Text, Search Index, , Advanced @comment node-name, next, previous, up -@section Advanced Info Commands - -Here are some more Info commands that make it easier to move around. - -@subheading @kbd{g} goes to a node by name - -@kindex g @r{(Info mode)} -@findex Info-goto-node -@cindex go to a node by name - If you know a node's name, you can go there by typing @kbd{g}, the -name, and @key{RET}. Thus, @kbd{gTop@key{RET}} would go to the node -called @samp{Top} in this file. (This is equivalent to @kbd{t}, see -@ref{Help-Int}.) @kbd{gAdvanced@key{RET}} would come back here. -@kbd{g} in Emacs runs the command @code{Info-goto-node}. - - Unlike @kbd{m}, @kbd{g} does not allow the use of abbreviations. -But it does allow completion, so you can type @key{TAB} to complete a -partial node name. - -@cindex go to another Info file - To go to a node in another file, you can include the file name in the -node name by putting it at the front, in parentheses. Thus, -@kbd{g(dir)Top@key{RET}} would go to the Info Directory node, which is -the node @samp{Top} in the Info file @file{dir}. Likewise, -@kbd{g(emacs)Top@key{RET}} goes to the top node of the Emacs manual. - - The node name @samp{*} specifies the whole file. So you can look at -all of the current file by typing @kbd{g*@key{RET}} or all of any -other file with @kbd{g(@var{filename})*@key{RET}}. - -@subheading @kbd{1}--@kbd{9} choose a menu subtopic by its number - -@kindex 1 @r{through} 9 @r{(Info mode)} -@findex Info-nth-menu-item -@cindex select @var{n}'th menu item - If you begrudge each character of type-in which your system requires, -you might like to use the commands @kbd{1}, @kbd{2}, @kbd{3}, @kbd{4}, -@dots{}, @kbd{9}. They are short for the @kbd{m} command together -with a name of a menu subtopic. @kbd{1} goes through the first item -in the current node's menu; @kbd{2} goes through the second item, etc. -In the stand-alone reader, @kbd{0} goes through the last menu item; -this is so you need not count how many entries are there. In Emacs, -the digit keys run the command @code{Info-nth-menu-item}. - - If your display supports multiple fonts, colors or underlining, and -you are using Emacs' Info mode to read Info files, the third, sixth -and ninth menu items have a @samp{*} that stands out, either in color -or in some other attribute, such as underline; this makes it easy to -see at a glance which number to use for an item. - - Some terminals don't support either multiple fonts, colors or -underlining. If you need to actually count items, it is better to use -@kbd{m} instead, and specify the name, or use @key{TAB} to quickly -move between menu items. - -@subheading @kbd{e} makes Info document editable - -@kindex e @r{(Info mode)} -@findex Info-edit -@cindex edit Info document - The Info command @kbd{e} changes from Info mode to an ordinary -Emacs editing mode, so that you can edit the text of the current node. -Type @kbd{C-c C-c} to switch back to Info. The @kbd{e} command is allowed -only if the variable @code{Info-enable-edit} is non-@code{nil}. - - The @kbd{e} command only works in Emacs, where it runs the command -@code{Info-edit}. The stand-alone Info reader doesn't allow you to -edit the Info file, so typing @kbd{e} there goes to the end of the -current node. - -@subheading @kbd{M-n} creates a new independent Info buffer in Emacs - -@kindex M-n @r{(Info mode)} -@findex clone-buffer -@cindex multiple Info buffers - If you are reading Info in Emacs, you can select a new independent -Info buffer in the same window by typing @kbd{M-n}. The new buffer -starts out as an exact copy of the old one, but you will be able to -move independently between nodes in the two buffers. (In Info mode, -@kbd{M-n} runs the Emacs command @code{clone-buffer}.) - - In Emacs Info, you can also produce new Info buffers by giving a -numeric prefix argument to the @kbd{m} and @kbd{g} commands. @kbd{C-u -m} and @kbd{C-u g} go to a new node in exactly the same way that -@kbd{m} and @kbd{g} do, but they do so in a new Info buffer which they -select in another window. - - Another way to produce new Info buffers in Emacs is to use a numeric -prefix argument for the @kbd{C-h i} command (@code{info}) which -switches to the Info buffer with that number. Thus, @kbd{C-u 2 C-h i} -switches to the buffer @samp{*info*<2>}, creating it if necessary. - -@node Info Search, Add, Advanced, Expert Info -@comment node-name, next, previous, up -@section How to search Info documents for specific subjects +@section How to search Info documents @cindex searching Info documents @cindex Info document as a reference @@ -1046,8 +942,44 @@ read the entire manual before you start using the programs it describes. Info has powerful searching facilities that let you find things -quickly. You can search either the manual indices or its text. +quickly. You can search either the manual text or its indices. +@kindex s @r{(Info mode)} +@findex Info-search + The @kbd{s} command allows you to search a whole Info file for a string. +It switches to the next node if and when that is necessary. You +type @kbd{s} followed by the string to search for, terminated by +@key{RET}. To search for the same string again, just @kbd{s} followed +by @key{RET} will do. The file's nodes are scanned in the order +they are in the file, which has no necessary relationship to the +order that they may be in the tree structure of menus and @samp{next} +pointers. But normally the two orders are not very different. In any +case, you can always look at the echo area to find out what node you have +reached, if the header is not visible (this can happen, because @kbd{s} +puts your cursor at the occurrence of the string, not at the beginning +of the node). + +@kindex M-s @r{(Info mode)} + In Emacs, @kbd{Meta-s} is equivalent to @kbd{s}. That is for +compatibility with other GNU packages that use @kbd{M-s} for a similar +kind of search command. Both @kbd{s} and @kbd{M-s} run in Emacs the +command @code{Info-search}. + +@kindex C-s @r{(Info mode)} +@kindex C-r @r{(Info mode)} +@findex isearch + Instead of using @kbd{s} in Emacs Info and in the stand-alone Info, +you can use an incremental search started with @kbd{C-s} or @kbd{C-r}. +It can search through multiple Info nodes. @xref{Incremental Search,,, +emacs, The GNU Emacs Manual}. In Emacs, this behavior is enabled only +if the variable @code{Info-isearch-search} is non-@code{nil} +(@pxref{Emacs Info Variables}). + +@node Search Index, Go to node, Search Text, Advanced +@comment node-name, next, previous, up +@section How to search the indices for specific subjects + +@cindex searching Info indices @kindex i @r{(Info mode)} @findex Info-index Since most subjects related to what the manual describes should be @@ -1093,38 +1025,207 @@ in the stand-alone reader. It prompts for a string and then looks up that string in all the indices of all the Info documents installed on your system. -@kindex s @r{(Info mode)} -@findex Info-search - The @kbd{s} command allows you to search a whole file for a string. -It switches to the next node if and when that is necessary. You -type @kbd{s} followed by the string to search for, terminated by -@key{RET}. To search for the same string again, just @kbd{s} followed -by @key{RET} will do. The file's nodes are scanned in the order -they are in the file, which has no necessary relationship to the -order that they may be in the tree structure of menus and @samp{next} -pointers. But normally the two orders are not very different. In any -case, you can always look at the echo area to find out what node you have -reached, if the header is not visible (this can happen, because @kbd{s} -puts your cursor at the occurrence of the string, not at the beginning -of the node). +@node Go to node, Choose menu subtopic, Search Index, Advanced +@comment node-name, next, previous, up +@section @kbd{g} goes to a node by name -@kindex M-s @r{(Info mode)} - In Emacs, @kbd{Meta-s} is equivalent to @kbd{s}. That is for -compatibility with other GNU packages that use @kbd{M-s} for a similar -kind of search command. Both @kbd{s} and @kbd{M-s} run in Emacs the -command @code{Info-search}. +@kindex g @r{(Info mode)} +@findex Info-goto-node +@cindex go to a node by name + If you know a node's name, you can go there by typing @kbd{g}, the +name, and @key{RET}. Thus, @kbd{gTop@key{RET}} would go to the node +called @samp{Top} in this file. (This is equivalent to @kbd{t}, see +@ref{Help-Int}.) @kbd{gGo to node@key{RET}} would come back here. +@kbd{g} in Emacs runs the command @code{Info-goto-node}. -@kindex C-s @r{(Info mode)} -@kindex C-r @r{(Info mode)} -@findex isearch - Instead of using @kbd{s} in Emacs Info and in the stand-alone Info, -you can use an incremental search started with @kbd{C-s} or @kbd{C-r}. -It can search through multiple Info nodes. @xref{Incremental Search,,, -emacs, The GNU Emacs Manual}. In Emacs, this behavior is enabled only -if the variable @code{Info-isearch-search} is non-@code{nil} -(@pxref{Emacs Info Variables}). + Unlike @kbd{m}, @kbd{g} does not allow the use of abbreviations. +But it does allow completion, so you can type @key{TAB} to complete a +partial node name. -@node Add, Menus, Info Search, Expert Info +@cindex go to another Info file + To go to a node in another file, you can include the file name in the +node name by putting it at the front, in parentheses. Thus, +@kbd{g(dir)Top@key{RET}} would go to the Info Directory node, which is +the node @samp{Top} in the Info file @file{dir}. Likewise, +@kbd{g(emacs)Top@key{RET}} goes to the top node of the Emacs manual. + + The node name @samp{*} specifies the whole file. So you can look at +all of the current file by typing @kbd{g*@key{RET}} or all of any +other file with @kbd{g(@var{filename})*@key{RET}}. + +@node Choose menu subtopic, Create Info buffer, Go to node, Advanced +@comment node-name, next, previous, up +@section @kbd{1}--@kbd{9} choose a menu subtopic by its number + +@kindex 1 @r{through} 9 @r{(Info mode)} +@findex Info-nth-menu-item +@cindex select @var{n}'th menu item + If you begrudge each character of type-in which your system requires, +you might like to use the commands @kbd{1}, @kbd{2}, @kbd{3}, @kbd{4}, +@dots{}, @kbd{9}. They are short for the @kbd{m} command together +with a name of a menu subtopic. @kbd{1} goes through the first item +in the current node's menu; @kbd{2} goes through the second item, etc. +In the stand-alone reader, @kbd{0} goes through the last menu item; +this is so you need not count how many entries are there. In Emacs, +the digit keys run the command @code{Info-nth-menu-item}. + + If your display supports multiple fonts, colors or underlining, and +you are using Emacs' Info mode to read Info files, the third, sixth +and ninth menu items have a @samp{*} that stands out, either in color +or in some other attribute, such as underline; this makes it easy to +see at a glance which number to use for an item. + + Some terminals don't support either multiple fonts, colors or +underlining. If you need to actually count items, it is better to use +@kbd{m} instead, and specify the name, or use @key{TAB} to quickly +move between menu items. + +@node Create Info buffer, Emacs Info Variables, Choose menu subtopic, Advanced +@comment node-name, next, previous, up +@section @kbd{M-n} creates a new independent Info buffer in Emacs + +@kindex M-n @r{(Info mode)} +@findex clone-buffer +@cindex multiple Info buffers + If you are reading Info in Emacs, you can select a new independent +Info buffer in the same window by typing @kbd{M-n}. The new buffer +starts out as an exact copy of the old one, but you will be able to +move independently between nodes in the two buffers. (In Info mode, +@kbd{M-n} runs the Emacs command @code{clone-buffer}.) + + In Emacs Info, you can also produce new Info buffers by giving a +numeric prefix argument to the @kbd{m} and @kbd{g} commands. @kbd{C-u +m} and @kbd{C-u g} go to a new node in exactly the same way that +@kbd{m} and @kbd{g} do, but they do so in a new Info buffer which they +select in another window. + + Another way to produce new Info buffers in Emacs is to use a numeric +prefix argument for the @kbd{C-h i} command (@code{info}) which +switches to the Info buffer with that number. Thus, @kbd{C-u 2 C-h i} +switches to the buffer @samp{*info*<2>}, creating it if necessary. + +@node Emacs Info Variables, , Create Info buffer, Advanced +@comment node-name, next, previous, up +@section Emacs Info-mode Variables + +The following variables may modify the behavior of Info-mode in Emacs; +you may wish to set one or several of these variables interactively, or +in your @file{~/.emacs} init file. @xref{Examining, Examining and Setting +Variables, Examining and Setting Variables, emacs, The GNU Emacs +Manual}. The stand-alone Info reader program has its own set of +variables, described in @ref{Variables,, Manipulating Variables, +info-stnd, GNU Info}. + +@vtable @code +@item Info-directory-list +The list of directories to search for Info files. Each element is a +string (directory name) or @code{nil} (try default directory). If not +initialized Info uses the environment variable @env{INFOPATH} to +initialize it, or @code{Info-default-directory-list} if there is no +@env{INFOPATH} variable in the environment. + +If you wish to customize the Info directory search list for both Emacs +Info and stand-alone Info, it is best to set the @env{INFOPATH} +environment variable, since that applies to both programs. + +@item Info-additional-directory-list +A list of additional directories to search for Info documentation files. +These directories are not searched for merging the @file{dir} file. + +@item Info-mode-hook +Hooks run when @code{Info-mode} is called. By default, it contains +the hook @code{turn-on-font-lock} which enables highlighting of Info +files. You can change how the highlighting looks by customizing the +faces @code{info-node}, @code{info-xref}, @code{info-xref-visited}, +@code{info-header-xref}, @code{info-header-node}, @code{info-menu-header}, +@code{info-menu-star}, and @code{info-title-@var{n}} (where @var{n} +is the level of the section, a number between 1 and 4). To customize +a face, type @kbd{M-x customize-face @key{RET} @var{face} @key{RET}}, +where @var{face} is one of the face names listed here. + +@item Info-fontify-maximum-menu-size +Maximum size of menu to fontify if @code{font-lock-mode} is non-@code{nil}. + +@item Info-fontify-visited-nodes +If non-@code{nil}, menu items and cross-references pointing to visited +nodes are displayed in the @code{info-xref-visited} face. + +@item Info-use-header-line +If non-@code{nil}, Emacs puts in the Info buffer a header line showing +the @samp{Next}, @samp{Prev}, and @samp{Up} links. A header line does +not scroll with the rest of the buffer, making these links always +visible. + +@item Info-hide-note-references +As explained in earlier nodes, the Emacs version of Info normally +hides some text in menus and cross-references. You can completely +disable this feature, by setting this option to @code{nil}. Setting +it to a value that is neither @code{nil} nor @code{t} produces an +intermediate behavior, hiding a limited amount of text, but showing +all text that could potentially be useful. + +@item Info-scroll-prefer-subnodes +If set to a non-@code{nil} value, @key{SPC} and @key{BACKSPACE} (or +@key{DEL}) keys in a menu visit subnodes of the current node before +scrolling to its end or beginning, respectively. For example, if the +node's menu appears on the screen, the next @key{SPC} moves to a +subnode indicated by the following menu item. Setting this option to +@code{nil} results in behavior similar to the stand-alone Info reader +program, which visits the first subnode from the menu only when you +hit the end of the current node. The default is @code{nil}. + +@item Info-isearch-search +If non-@code{nil}, isearch in Info searches through multiple nodes. + +@item Info-enable-active-nodes +When set to a non-@code{nil} value, allows Info to execute Lisp code +associated with nodes. The Lisp code is executed when the node is +selected. The Lisp code to be executed should follow the node +delimiter (the @samp{DEL} character) and an @samp{execute: } tag, like +this: + +@example +^_execute: (message "This is an active node!") +@end example +@end vtable + + +@node Expert Info +@chapter Info for Experts + + This chapter explains how to write an Info as distinct from a +Texinfo file. However, in most cases, writing a Texinfo file is +better, since you can use it to make a printed manual or produce other +formats, such as HTML and DocBook, as well as for generating Info +files. + +@code{makeinfo} is a utility that converts a Texinfo file into an Info +file; @code{texinfo-format-region} and @code{texinfo-format-buffer} are +GNU Emacs functions that do the same. + +@xref{Top,, Overview of Texinfo, texinfo, Texinfo: The GNU +Documentation Format}, to learn how to write a Texinfo file. + +@xref{Creating an Info File,,, texinfo, Texinfo: The GNU Documentation +Format}, to learn how to create an Info file from a Texinfo file. + +@xref{Installing an Info File,,, texinfo, Texinfo: The GNU +Documentation Format}, to learn how to install an Info file after you +have created one. + +However, if you want to edit an Info file manually and install it manually, +here is how. + +@menu +* Add:: Describes how to add new nodes to the hierarchy. + Also tells what nodes look like. +* Menus:: How to add to or create menus in Info nodes. +* Cross-refs:: How to add cross-references to Info nodes. +* Tags:: How to make tags tables for Info files. +* Checking:: Checking an Info File. +@end menu + +@node Add, Menus, , Expert Info @comment node-name, next, previous, up @section Adding a new node to Info @@ -1137,14 +1238,6 @@ Create some nodes, in some file, to document that topic. Put that topic in the menu in the directory. @xref{Menus, Menu}. @end enumerate - Usually, the way to create the nodes is with Texinfo (@pxref{Top,, -Overview of Texinfo, texinfo, Texinfo: The GNU Documentation Format}); -this has the advantage that you can also make a printed manual or HTML -from them. You would use the @samp{@@dircategory} and -@samp{@@direntry} commands to put the manual into the Info directory. -However, if you want to edit an Info file manually and install it -manually, here is how. - @cindex node delimiters The new node can live in an existing documentation file, or in a new one. It must have a @samp{^_} character before it (invisible to the @@ -1324,7 +1417,7 @@ as new users should do when they learn a new package. something quickly in a manual---that is, when you need to use a manual as a reference rather than as a tutorial. We urge you to learn these search commands as well. If you want to do that now, follow this -cross reference to @ref{Info Search}. +cross reference to @ref{Advanced}. Yet another set of commands are meant for experienced users; you can find them by looking in the Directory node for documentation on Info. @@ -1382,8 +1475,7 @@ the beginning of the node's header (ending just after the node name), a @samp{DEL} character, and the character position in the file of the beginning of the node. - -@node Checking, Emacs Info Variables, Tags, Expert Info +@node Checking, , Tags, Expert Info @section Checking an Info File When creating an Info file, it is easy to forget the name of a node when @@ -1402,112 +1494,6 @@ usually few. To check an Info file, do @kbd{M-x Info-validate} while looking at any node of the file with Emacs Info mode. -@node Emacs Info Variables, , Checking, Expert Info -@section Emacs Info-mode Variables - -The following variables may modify the behavior of Info-mode in Emacs; -you may wish to set one or several of these variables interactively, or -in your @file{~/.emacs} init file. @xref{Examining, Examining and Setting -Variables, Examining and Setting Variables, emacs, The GNU Emacs -Manual}. The stand-alone Info reader program has its own set of -variables, described in @ref{Variables,, Manipulating Variables, -info-stnd, GNU Info}. - -@vtable @code -@item Info-directory-list -The list of directories to search for Info files. Each element is a -string (directory name) or @code{nil} (try default directory). If not -initialized Info uses the environment variable @env{INFOPATH} to -initialize it, or @code{Info-default-directory-list} if there is no -@env{INFOPATH} variable in the environment. - -If you wish to customize the Info directory search list for both Emacs -Info and stand-alone Info, it is best to set the @env{INFOPATH} -environment variable, since that applies to both programs. - -@item Info-additional-directory-list -A list of additional directories to search for Info documentation files. -These directories are not searched for merging the @file{dir} file. - -@item Info-mode-hook -Hooks run when @code{Info-mode} is called. By default, it contains -the hook @code{turn-on-font-lock} which enables highlighting of Info -files. You can change how the highlighting looks by customizing the -faces @code{info-node}, @code{info-xref}, @code{info-xref-visited}, -@code{info-header-xref}, @code{info-header-node}, @code{info-menu-header}, -@code{info-menu-star}, and @code{info-title-@var{n}} (where @var{n} -is the level of the section, a number between 1 and 4). To customize -a face, type @kbd{M-x customize-face @key{RET} @var{face} @key{RET}}, -where @var{face} is one of the face names listed here. - -@item Info-fontify-maximum-menu-size -Maximum size of menu to fontify if @code{font-lock-mode} is non-@code{nil}. - -@item Info-fontify-visited-nodes -If non-@code{nil}, menu items and cross-references pointing to visited -nodes are displayed in the @code{info-xref-visited} face. - -@item Info-use-header-line -If non-@code{nil}, Emacs puts in the Info buffer a header line showing -the @samp{Next}, @samp{Prev}, and @samp{Up} links. A header line does -not scroll with the rest of the buffer, making these links always -visible. - -@item Info-hide-note-references -As explained in earlier nodes, the Emacs version of Info normally -hides some text in menus and cross-references. You can completely -disable this feature, by setting this option to @code{nil}. Setting -it to a value that is neither @code{nil} nor @code{t} produces an -intermediate behavior, hiding a limited amount of text, but showing -all text that could potentially be useful. - -@item Info-scroll-prefer-subnodes -If set to a non-@code{nil} value, @key{SPC} and @key{BACKSPACE} (or -@key{DEL}) keys in a menu visit subnodes of the current node before -scrolling to its end or beginning, respectively. For example, if the -node's menu appears on the screen, the next @key{SPC} moves to a -subnode indicated by the following menu item. Setting this option to -@code{nil} results in behavior similar to the stand-alone Info reader -program, which visits the first subnode from the menu only when you -hit the end of the current node. The default is @code{nil}. - -@item Info-isearch-search -If non-@code{nil}, isearch in Info searches through multiple nodes. - -@item Info-enable-active-nodes -When set to a non-@code{nil} value, allows Info to execute Lisp code -associated with nodes. The Lisp code is executed when the node is -selected. The Lisp code to be executed should follow the node -delimiter (the @samp{DEL} character) and an @samp{execute: } tag, like -this: - -@example -^_execute: (message "This is an active node!") -@end example - -@item Info-enable-edit -Set to @code{nil}, disables the @samp{e} (@code{Info-edit}) command. A -non-@code{nil} value enables it. @xref{Add, Edit}. -@end vtable - - -@node Creating an Info File -@chapter Creating an Info File from a Texinfo File - -@code{makeinfo} is a utility that converts a Texinfo file into an Info -file; @code{texinfo-format-region} and @code{texinfo-format-buffer} are -GNU Emacs functions that do the same. - -@xref{Top,, Overview of Texinfo, texinfo, Texinfo: The GNU -Documentation Format}, to learn how to write a Texinfo file. - -@xref{Creating an Info File,,, texinfo, Texinfo: The GNU Documentation -Format}, to learn how to create an Info file from a Texinfo file. - -@xref{Installing an Info File,,, texinfo, Texinfo: The GNU -Documentation Format}, to learn how to install an Info file after you -have created one. - @node Index @unnumbered Index From 8300a5b5c72e7950f8ce1c00cb979dd2ae07f64c Mon Sep 17 00:00:00 2001 From: Juri Linkov Date: Tue, 11 Oct 2005 05:47:55 +0000 Subject: [PATCH 098/168] (Info-mode-menu): Delete menu item "Edit". (Info-mode): Delete description of Info-edit from docstring, and rearrange descriptions of Info commands in the order they are documented in the Info manual. --- lisp/info.el | 37 +++++++++++++++++-------------------- 1 file changed, 17 insertions(+), 20 deletions(-) diff --git a/lisp/info.el b/lisp/info.el index 5a0c0b510c1..4dc129db152 100644 --- a/lisp/info.el +++ b/lisp/info.el @@ -3150,8 +3150,6 @@ if point is in a menu item description, follow that menu item." :help "Look for another occurrence of previous item"] ["Lookup a string in all indices..." info-apropos :help "Look for a string in the indices of all manuals"]) - ["Edit" Info-edit :help "Edit contents of this node" - :active Info-enable-edit] ["Copy Node Name" Info-copy-current-node-name :help "Copy the name of the current node into the kill ring"] ["Clone Info buffer" clone-buffer @@ -3290,18 +3288,17 @@ Selecting other nodes: \\[Info-menu] Pick menu item specified by name (or abbreviation). Picking a menu item causes another node to be selected. \\[Info-directory] Go to the Info directory node. +\\[Info-top-node] Go to the Top node of this file. +\\[Info-final-node] Go to the final node in this file. +\\[Info-backward-node] Go backward one node, considering all nodes as forming one sequence. +\\[Info-forward-node] Go forward one node, considering all nodes as forming one sequence. +\\[Info-next-reference] Move cursor to next cross-reference or menu item. +\\[Info-prev-reference] Move cursor to previous cross-reference or menu item. \\[Info-follow-reference] Follow a cross reference. Reads name of reference. \\[Info-history-back] Move back in history to the last node you were at. \\[Info-history-forward] Move forward in history to the node you returned from after using \\[Info-history-back]. \\[Info-history] Go to menu of visited nodes. \\[Info-toc] Go to table of contents of the current Info file. -\\[Info-top-node] Go to the Top node of this file. -\\[Info-final-node] Go to the final node in this file. -\\[Info-backward-node] Go backward one node, considering all nodes as forming one sequence. -\\[Info-forward-node] Go forward one node, considering all nodes as forming one sequence. -\\[Info-index] Look up a topic in this file's Index and move to that node. -\\[Info-index-next] (comma) Move to the next match from a previous \\\\[Info-index] command. -\\[info-apropos] Look for a string in the indices of all manuals. Moving within a node: \\[Info-scroll-up] Normally, scroll forward a full screen. @@ -3315,22 +3312,22 @@ Moving within a node: \\[beginning-of-buffer] Go to beginning of node. Advanced commands: -\\[Info-copy-current-node-name] Put name of current Info node in the kill ring. -\\[clone-buffer] Select a new cloned Info buffer in another window. -\\[Info-edit] Edit contents of selected node. -1 .. 9 Pick first ... ninth item in node's menu. - Every third `*' is highlighted to help pick the right number. -\\[Info-goto-node] Move to node specified by name. - You may include a filename as well, as (FILENAME)NODENAME. -\\[universal-argument] \\[info] Move to new Info file with completion. -\\[universal-argument] N \\[info] Select Info buffer with prefix number in the name *info*. \\[Info-search] Search through this Info file for specified regexp, and select the node in which the next occurrence is found. \\[Info-search-case-sensitively] Search through this Info file for specified regexp case-sensitively. \\[Info-search-next] Search for another occurrence of regexp from a previous \\\\[Info-search] command. -\\[Info-next-reference] Move cursor to next cross-reference or menu item. -\\[Info-prev-reference] Move cursor to previous cross-reference or menu item." +\\[Info-index] Look up a topic in this file's Index and move to that node. +\\[Info-index-next] (comma) Move to the next match from a previous \\\\[Info-index] command. +\\[info-apropos] Look for a string in the indices of all manuals. +\\[Info-goto-node] Move to node specified by name. + You may include a filename as well, as (FILENAME)NODENAME. +1 .. 9 Pick first ... ninth item in node's menu. + Every third `*' is highlighted to help pick the right number. +\\[Info-copy-current-node-name] Put name of current Info node in the kill ring. +\\[clone-buffer] Select a new cloned Info buffer in another window. +\\[universal-argument] \\[info] Move to new Info file with completion. +\\[universal-argument] N \\[info] Select Info buffer with prefix number in the name *info*." (kill-all-local-variables) (setq major-mode 'Info-mode) (setq mode-name "Info") From 25f7a98cab8266ad91084084b558cd663bb1d42f Mon Sep 17 00:00:00 2001 From: Juri Linkov Date: Tue, 11 Oct 2005 05:55:17 +0000 Subject: [PATCH 099/168] *** empty log message *** --- lisp/ChangeLog | 7 +++++++ man/ChangeLog | 18 ++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index df834d0fae9..cf155de293a 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,10 @@ +2005-10-11 Juri Linkov + + * info.el (Info-mode-menu): Delete menu item "Edit". + (Info-mode): Delete description of Info-edit from docstring, + and rearrange descriptions of Info commands in the order + they are documented in the Info manual. + 2005-10-11 Stefan Monnier * calendar/appt.el (appt-check): Use diary-selective-display var. diff --git a/man/ChangeLog b/man/ChangeLog index c4e793ac00f..02c946cd642 100644 --- a/man/ChangeLog +++ b/man/ChangeLog @@ -1,3 +1,21 @@ +2005-10-11 Juri Linkov + + * info.texi: Rearrange nodes. + (Top): Update menu. Change ref `Info for Experts' to + `Advanced Info Commands'. + (Getting Started): Fix description of manual's parts. + (Help-Int): Change xref `Info Search' to `Search Index', and + `Expert Info' to `Advanced'. + (Advanced): Move node one level up. + (Search Text, Search Index): New nodes split out from `Info Search'. + (Go to node, Choose menu subtopic, Create Info buffer): New nodes + split out from `Advanced'. + (Advanced, Emacs Info Variables): De-document editing an Info file + in Info. + (Emacs Info Variables): Move node from `Expert Info' to `Advanced'. + (Creating an Info File): Delete node and move its text to + `Expert Info'. + 2005-10-10 Jan Dj,Ad(Brv * cmdargs.texi (Icons X): -nb => -nbi From bf0b151d474697b409a122d5eb24c9e2df81c41e Mon Sep 17 00:00:00 2001 From: Juanma Barranquero Date: Tue, 11 Oct 2005 08:23:28 +0000 Subject: [PATCH 100/168] (FATAL ERRORS): Remove item about JPEG libraries on Windows (Done). --- admin/FOR-RELEASE | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/admin/FOR-RELEASE b/admin/FOR-RELEASE index 92f3d634d05..73309bbb7e5 100644 --- a/admin/FOR-RELEASE +++ b/admin/FOR-RELEASE @@ -53,16 +53,6 @@ test), it may be better just to avoid displaying such images for emacs 22. ** Investigate reported crashes related to using an invalid pointer from string_free_list. -** Emacs on Windows crashes reading JPEG images from files. - -The problem is caused by the Emacs executable and the image library -having multiple, incompatible copies of the run-time code, which can -happen when mixing a MSVC build of Emacs with a MinGW build of the -jpeg library (or the other way around). The fix is straightforward -and has already been posted on the developers' list, but it is on the -back burner waiting for a legal comment or an alternate implementation -(around 30 lines of code). - * BUGS ** Make a new interface for specifying window configurations From b25a72ab313708c70b4219916fe875fbfc20b59d Mon Sep 17 00:00:00 2001 From: Juanma Barranquero Date: Tue, 11 Oct 2005 08:25:27 +0000 Subject: [PATCH 101/168] (fn_jpeg_stdio_src): Don't define it. (init_jpeg_functions): Don't initialize `fn_jpeg_stdio_src'. (our_common_init_source): Rename from `our_init_source'. (our_common_term_source): Rename from `our_term_source'. (our_memory_fill_input_buffer): Rename from `our_fill_input_buffer'. (our_memory_skip_input_data): Rename from `our_skip_input_data'. (jpeg_memory_src): Use the new names. (struct jpeg_stdio_mgr): New struct. (JPEG_STDIO_BUFFER_SIZE): New constant. (our_stdio_fill_input_buffer, our_stdio_skip_input_data, jpeg_file_src): New functions. (jpeg_load): Use `jpeg_file_src' instead of `fn_jpeg_stdio_src'. --- src/image.c | 153 ++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 132 insertions(+), 21 deletions(-) diff --git a/src/image.c b/src/image.c index 3b6969b0c28..2463c24a33a 100644 --- a/src/image.c +++ b/src/image.c @@ -6358,7 +6358,6 @@ DEF_IMGLIB_FN (jpeg_finish_decompress); DEF_IMGLIB_FN (jpeg_destroy_decompress); DEF_IMGLIB_FN (jpeg_read_header); DEF_IMGLIB_FN (jpeg_read_scanlines); -DEF_IMGLIB_FN (jpeg_stdio_src); DEF_IMGLIB_FN (jpeg_std_error); DEF_IMGLIB_FN (jpeg_resync_to_restart); @@ -6374,7 +6373,6 @@ init_jpeg_functions (Lisp_Object libraries) LOAD_IMGLIB_FN (library, jpeg_read_scanlines); LOAD_IMGLIB_FN (library, jpeg_start_decompress); LOAD_IMGLIB_FN (library, jpeg_read_header); - LOAD_IMGLIB_FN (library, jpeg_stdio_src); LOAD_IMGLIB_FN (library, jpeg_CreateDecompress); LOAD_IMGLIB_FN (library, jpeg_destroy_decompress); LOAD_IMGLIB_FN (library, jpeg_std_error); @@ -6400,7 +6398,6 @@ jpeg_resync_to_restart_wrapper(cinfo, desired) #define fn_jpeg_destroy_decompress jpeg_destroy_decompress #define fn_jpeg_read_header jpeg_read_header #define fn_jpeg_read_scanlines jpeg_read_scanlines -#define fn_jpeg_stdio_src jpeg_stdio_src #define fn_jpeg_std_error jpeg_std_error #define jpeg_resync_to_restart_wrapper jpeg_resync_to_restart @@ -6427,7 +6424,17 @@ my_error_exit (cinfo) libjpeg.doc from the JPEG lib distribution. */ static void -our_init_source (cinfo) +our_common_init_source (cinfo) + j_decompress_ptr cinfo; +{ +} + + +/* Method to terminate data source. Called by + jpeg_finish_decompress() after all data has been processed. */ + +static void +our_common_term_source (cinfo) j_decompress_ptr cinfo; { } @@ -6438,7 +6445,7 @@ our_init_source (cinfo) so this only adds a fake end of input marker at the end. */ static boolean -our_fill_input_buffer (cinfo) +our_memory_fill_input_buffer (cinfo) j_decompress_ptr cinfo; { /* Insert a fake EOI marker. */ @@ -6458,7 +6465,7 @@ our_fill_input_buffer (cinfo) is the JPEG data source manager. */ static void -our_skip_input_data (cinfo, num_bytes) +our_memory_skip_input_data (cinfo, num_bytes) j_decompress_ptr cinfo; long num_bytes; { @@ -6475,16 +6482,6 @@ our_skip_input_data (cinfo, num_bytes) } -/* Method to terminate data source. Called by - jpeg_finish_decompress() after all data has been processed. */ - -static void -our_term_source (cinfo) - j_decompress_ptr cinfo; -{ -} - - /* Set up the JPEG lib for reading an image from DATA which contains LEN bytes. CINFO is the decompression info structure created for reading the image. */ @@ -6508,16 +6505,130 @@ jpeg_memory_src (cinfo, data, len) } src = (struct jpeg_source_mgr *) cinfo->src; - src->init_source = our_init_source; - src->fill_input_buffer = our_fill_input_buffer; - src->skip_input_data = our_skip_input_data; + src->init_source = our_common_init_source; + src->fill_input_buffer = our_memory_fill_input_buffer; + src->skip_input_data = our_memory_skip_input_data; src->resync_to_restart = jpeg_resync_to_restart_wrapper; /* Use default method. */ - src->term_source = our_term_source; + src->term_source = our_common_term_source; src->bytes_in_buffer = len; src->next_input_byte = data; } +struct jpeg_stdio_mgr +{ + struct jpeg_source_mgr mgr; + boolean finished; + FILE *file; + JOCTET *buffer; +}; + + +/* Size of buffer to read JPEG from file. + Not too big, as we want to use alloc_small. */ +#define JPEG_STDIO_BUFFER_SIZE 8192 + + +/* Fill input buffer method for JPEG data source manager. Called + whenever more data is needed. The data is read from a FILE *. */ + +static boolean +our_stdio_fill_input_buffer (cinfo) + j_decompress_ptr cinfo; +{ + struct jpeg_stdio_mgr *src; + + src = (struct jpeg_stdio_mgr *) cinfo->src; + if (!src->finished) + { + size_t bytes; + + bytes = fread (src->buffer, 1, JPEG_STDIO_BUFFER_SIZE, src->file); + if (bytes > 0) + src->mgr.bytes_in_buffer = bytes; + else + { + WARNMS (cinfo, JWRN_JPEG_EOF); + src->finished = 1; + src->buffer[0] = (JOCTET) 0xFF; + src->buffer[1] = (JOCTET) JPEG_EOI; + src->mgr.bytes_in_buffer = 2; + } + src->mgr.next_input_byte = src->buffer; + } + + return 1; +} + + +/* Method to skip over NUM_BYTES bytes in the image data. CINFO->src + is the JPEG data source manager. */ + +static void +our_stdio_skip_input_data (cinfo, num_bytes) + j_decompress_ptr cinfo; + long num_bytes; +{ + struct jpeg_stdio_mgr *src; + src = (struct jpeg_stdio_mgr *) cinfo->src; + + while (num_bytes > 0 && !src->finished) + { + if (num_bytes <= src->mgr.bytes_in_buffer) + { + src->mgr.bytes_in_buffer -= num_bytes; + src->mgr.next_input_byte += num_bytes; + break; + } + else + { + num_bytes -= src->mgr.bytes_in_buffer; + src->mgr.bytes_in_buffer = 0; + src->mgr.next_input_byte = NULL; + + our_stdio_fill_input_buffer (cinfo); + } + } +} + + +/* Set up the JPEG lib for reading an image from a FILE *. + CINFO is the decompression info structure created for + reading the image. */ + +static void +jpeg_file_src (cinfo, fp) + j_decompress_ptr cinfo; + FILE *fp; +{ + struct jpeg_stdio_mgr *src; + + if (cinfo->src != NULL) + src = (struct jpeg_stdio_mgr *) cinfo->src; + else + { + /* First time for this JPEG object? */ + cinfo->src = (struct jpeg_source_mgr *) + (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_PERMANENT, + sizeof (struct jpeg_stdio_mgr)); + src = (struct jpeg_stdio_mgr *) cinfo->src; + src->buffer = (JOCTET *) + (*cinfo->mem->alloc_small) ((j_common_ptr) cinfo, JPOOL_PERMANENT, + JPEG_STDIO_BUFFER_SIZE); + } + + src->file = fp; + src->finished = 0; + src->mgr.init_source = our_common_init_source; + src->mgr.fill_input_buffer = our_stdio_fill_input_buffer; + src->mgr.skip_input_data = our_stdio_skip_input_data; + src->mgr.resync_to_restart = jpeg_resync_to_restart_wrapper; /* Use default method. */ + src->mgr.term_source = our_common_term_source; + src->mgr.bytes_in_buffer = 0; + src->mgr.next_input_byte = NULL; +} + + /* Load image IMG for use on frame F. Patterned after example.c from the JPEG lib. */ @@ -6601,7 +6712,7 @@ jpeg_load (f, img) fn_jpeg_CreateDecompress (&cinfo, JPEG_LIB_VERSION, sizeof (cinfo)); if (NILP (specified_data)) - fn_jpeg_stdio_src (&cinfo, (FILE *) fp); + jpeg_file_src (&cinfo, (FILE *) fp); else jpeg_memory_src (&cinfo, SDATA (specified_data), SBYTES (specified_data)); From 2d4713aa66331fd3067ce46409dcd3f8e9f10218 Mon Sep 17 00:00:00 2001 From: Juanma Barranquero Date: Tue, 11 Oct 2005 08:32:08 +0000 Subject: [PATCH 102/168] *** empty log message *** --- admin/ChangeLog | 5 +++++ src/ChangeLog | 20 ++++++++++++++++++-- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/admin/ChangeLog b/admin/ChangeLog index df7954d73bb..3ed09ce60c9 100644 --- a/admin/ChangeLog +++ b/admin/ChangeLog @@ -1,3 +1,8 @@ +2005-10-11 Juanma Barranquero + + * FOR-RELEASE (FATAL ERRORS): Remove item about JPEG + libraries on Windows (Done). + 2005-10-01 Jason Rumney * admin.el (set-version): Set version numbers in nt/emacs.rc. diff --git a/src/ChangeLog b/src/ChangeLog index c723c3ee9c1..ee79add8dba 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,19 @@ +2005-10-11 Juanma Barranquero + + * image.c (fn_jpeg_stdio_src): Don't define it. + (init_jpeg_functions): Don't initialize `fn_jpeg_stdio_src'. + (our_common_init_source): Rename from `our_init_source'. + (our_common_term_source): Rename from `our_term_source'. + (our_memory_fill_input_buffer): Rename from + `our_fill_input_buffer'. + (our_memory_skip_input_data): Rename from `our_skip_input_data'. + (jpeg_memory_src): Use the new names. + (struct jpeg_stdio_mgr): New struct. + (JPEG_STDIO_BUFFER_SIZE): New constant. + (our_stdio_fill_input_buffer, our_stdio_skip_input_data) + (jpeg_file_src): New functions. + (jpeg_load): Use `jpeg_file_src' instead of `fn_jpeg_stdio_src'. + 2005-10-11 YAMAMOTO Mitsuharu * macterm.c (PER_CHAR_METRIC): Remove unused macro. @@ -1620,7 +1636,7 @@ 2005-06-04 Jan Dj,Ad(Brv * macmenu.c (cleanup_popup_menu): New function. - (Fx_popup_menu): unwind protect cleanup_popup_menu in case + (Fx_popup_menu): Unwind protect cleanup_popup_menu in case mac_menu_show Quit:s. (mac_menu_show): Quit on cancel if not popped up on click (i.e. a dialog). @@ -16922,7 +16938,7 @@ * w32.c (sys_getpeername, fcntl): New functions. (_sys_read_ahead): Temporarily block on non-blocking sockets. - * w32proc.c: include sys/file.h. + * w32proc.c: Include sys/file.h. 2002-05-03 Colin Walters From ac644d50c07b7bcae616e72349057343f4f1204a Mon Sep 17 00:00:00 2001 From: Juanma Barranquero Date: Tue, 11 Oct 2005 10:45:59 +0000 Subject: [PATCH 103/168] (update-directory-autoloads): Doc fix. (autoload-print-form-outbuf): Add docstring. --- lisp/emacs-lisp/autoload.el | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/lisp/emacs-lisp/autoload.el b/lisp/emacs-lisp/autoload.el index 3cd6fe53bad..b14a556e02d 100644 --- a/lisp/emacs-lisp/autoload.el +++ b/lisp/emacs-lisp/autoload.el @@ -175,7 +175,8 @@ markers before we call `read'." (goto-char (point-min)) (read (current-buffer)))))) -(defvar autoload-print-form-outbuf) +(defvar autoload-print-form-outbuf nil + "Buffer which gets the output of `autoload-print-form'.") (defun autoload-print-form (form) "Print FORM such that `make-docfile' will find the docstrings. @@ -492,7 +493,7 @@ Autoload section for %s is up to date." (defun update-directory-autoloads (&rest dirs) "\ Update loaddefs.el with all the current autoloads from DIRS, and no old ones. -This uses `update-file-autoloads' (which see) do its work. +This uses `update-file-autoloads' (which see) to do its work. In an interactive call, you must give one argument, the name of a single directory. In a call from Lisp, you can supply multiple directories as separate arguments, but this usage is discouraged. From 4e0c0d75ab93be457ed801c27e68b59696644510 Mon Sep 17 00:00:00 2001 From: Juanma Barranquero Date: Tue, 11 Oct 2005 10:54:03 +0000 Subject: [PATCH 104/168] *** empty log message *** --- lisp/ChangeLog | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index cf155de293a..6f63f2b4845 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2005-10-11 Juanma Barranquero + + * emacs-lisp/autoload.el (update-directory-autoloads): Doc fix. + (autoload-print-form-outbuf): Add docstring. + 2005-10-11 Juri Linkov * info.el (Info-mode-menu): Delete menu item "Edit". @@ -131,7 +136,7 @@ 2005-10-09 Jan Dj,Ad(Brv - * term/x-win.el: Removed -i, --icon-type from comment. + * term/x-win.el: Remove -i, --icon-type from comment. * startup.el (command-line-x-option-alist): Remove options -i, -itype, --icon-type, added -nb, --no-bitmap-icon @@ -228,7 +233,7 @@ 2005-10-06 Bill Wohler - * mh-e/mh-loaddefs.el: Removed. Now generated automatically. + * mh-e/mh-loaddefs.el: Remove. Now generated automatically. * Makefile.in (AUTOGENEL): Add mh-e/mh-loaddefs.el. (MH-E-SRC): New. Used by mh-autoloads. @@ -244,7 +249,7 @@ * progmodes/gdb-ui.el (gdb-fringe-width -> gdb-buffer-fringe-width): Typo. -2005-10-06 Michael Cadilhac (tiny change) +2005-10-06 Michael Cadilhac (tiny change) * play/zone.el (zone): Wrap body with save-window-excursion. From 55a4ac3e2001588ae0c48a7f48f76bfff1479dc8 Mon Sep 17 00:00:00 2001 From: "Kim F. Storm" Date: Tue, 11 Oct 2005 15:06:48 +0000 Subject: [PATCH 105/168] *** empty log message *** --- src/ChangeLog | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/ChangeLog b/src/ChangeLog index ee79add8dba..5b089a24505 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,11 @@ +2005-10-11 Kim F. Storm + + * window.c (coordinates_in_window): Fix returned y position when + ON_SCROLL_BAR. + + * keyboard.c (make_lispy_position): Fix buffer calculations for + mouse click or movement in right fringe and the margins. + 2005-10-11 Juanma Barranquero * image.c (fn_jpeg_stdio_src): Don't define it. From 4d1add72eb8cf8a01a13d087855545625e3205ec Mon Sep 17 00:00:00 2001 From: "Kim F. Storm" Date: Tue, 11 Oct 2005 15:07:07 +0000 Subject: [PATCH 106/168] (coordinates_in_window): Fix returned y position when ON_SCROLL_BAR. --- src/window.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/window.c b/src/window.c index ff01b2c902c..17c8f52c286 100644 --- a/src/window.c +++ b/src/window.c @@ -682,7 +682,10 @@ coordinates_in_window (w, x, y) /* Outside any interesting column? */ if (*x < left_x || *x > right_x) - return ON_SCROLL_BAR; + { + *y -= top_y; + return ON_SCROLL_BAR; + } lmargin_width = window_box_width (w, LEFT_MARGIN_AREA); rmargin_width = window_box_width (w, RIGHT_MARGIN_AREA); From a65fc2c39764e81adc7359ce18e95f1990285b81 Mon Sep 17 00:00:00 2001 From: "Kim F. Storm" Date: Tue, 11 Oct 2005 15:07:28 +0000 Subject: [PATCH 107/168] (make_lispy_position): Fix buffer calculations for mouse click or movement in right fringe and the margins. --- src/keyboard.c | 39 +++++++++++++++++++++++++++------------ 1 file changed, 27 insertions(+), 12 deletions(-) diff --git a/src/keyboard.c b/src/keyboard.c index 1d118c7a57b..56419ef5679 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -5090,21 +5090,37 @@ make_lispy_position (f, x, y, time) &object, &dx, &dy, &width, &height); if (STRINGP (string)) string_info = Fcons (string, make_number (charpos)); + if (part == ON_LEFT_MARGIN) + wx = 0; + else + wx = window_box_right_offset (w, TEXT_AREA) - 1; } - else if (part == ON_LEFT_FRINGE || part == ON_RIGHT_FRINGE) + else if (part == ON_LEFT_FRINGE) { - posn = (part == ON_LEFT_FRINGE) ? Qleft_fringe : Qright_fringe; + posn = Qleft_fringe; rx = 0; dx = wx; - wx = (part == ON_LEFT_FRINGE) ? 0 : window_box_width (w, TEXT_AREA); - if (part == ON_RIGHT_FRINGE) - dx -= (window_box_width (w, LEFT_MARGIN_AREA) - + window_box_width (w, TEXT_AREA) - + (WINDOW_HAS_FRINGES_OUTSIDE_MARGINS (w) - ? window_box_width (w, RIGHT_MARGIN_AREA) - : 0)); - else if (!WINDOW_HAS_FRINGES_OUTSIDE_MARGINS (w)) - dx -= window_box_width (w, LEFT_MARGIN_AREA); + wx = (WINDOW_HAS_FRINGES_OUTSIDE_MARGINS (w) + ? 0 + : window_box_width (w, LEFT_MARGIN_AREA)); + dx -= wx; + } + else if (part == ON_RIGHT_FRINGE) + { + posn = Qright_fringe; + rx = 0; + dx = wx; + wx = (window_box_width (w, LEFT_MARGIN_AREA) + + window_box_width (w, TEXT_AREA) + + (WINDOW_HAS_FRINGES_OUTSIDE_MARGINS (w) + ? window_box_width (w, RIGHT_MARGIN_AREA) + : 0)); + dx -= wx; + } + else + { + /* Note: We have no special posn for part == ON_SCROLL_BAR. */ + wx = max (WINDOW_LEFT_MARGIN_WIDTH (w), wx); } if (textpos < 0) @@ -5113,7 +5129,6 @@ make_lispy_position (f, x, y, time) struct display_pos p; int dx2, dy2; int width2, height2; - wx = max (WINDOW_LEFT_MARGIN_WIDTH (w), wx); string2 = buffer_posn_from_coords (w, &wx, &wy, &p, &object2, &dx2, &dy2, &width2, &height2); From f727012811582df647c0221f7a43d710e0998137 Mon Sep 17 00:00:00 2001 From: Romain Francoise Date: Tue, 11 Oct 2005 15:18:36 +0000 Subject: [PATCH 108/168] *** empty log message *** --- src/ChangeLog | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 5b089a24505..0f8adef5759 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -110,7 +110,7 @@ * macterm.h (mac_term_init): Add types to extern. (struct mac_output): Remove members mWP and pending_menu_activation. - Put members scroll_bar_foreground_pixel and + Put members scroll_bar_foreground_pixel and scroll_bar_background_pixel in #if 0. (FRAME_MAC_WINDOW, FRAME_X_WINDOW): Use window_desc. @@ -149,11 +149,11 @@ (get_glyph_string_clip_rect): Use get_glyph_string_clip_rects. (fill_composite_glyph_string, fill_glyph_string, draw_glyphs): Rename argument OVERLAPS_P to OVERLAPS. All uses in macros changed. - (x_fix_overlapping_area): Add OVERLAPS arg. Pass it to draw_glyphs. + (x_fix_overlapping_area): Add OVERLAPS arg. Pass it to draw_glyphs. (draw_phys_cursor_glyph): Set width of erased cursor to use it for calculating clipping rectangles later. Call x_fix_overlapping_area with new OVERLAPS arg to draw only erased cursor area. - (expose_overlaps): Call x_fix_overlapping_area with new OVERLAPS arg + (expose_overlaps): Call x_fix_overlapping_area with new OVERLAPS arg to draw overlaps in both preceding and succeeding rows. * xterm.c, w32term.c, macterm.c: Rename member for_overlaps_p in From 592b0a3b6daee2a5ffc51a8530f441b974cb9f6f Mon Sep 17 00:00:00 2001 From: Chong Yidong Date: Tue, 11 Oct 2005 15:30:31 +0000 Subject: [PATCH 109/168] (mouse-drag-region-1): Don't try to catch a double-click when doing follow-link (it's overridden anyway). --- lisp/mouse.el | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/lisp/mouse.el b/lisp/mouse.el index 5390abacb5c..90f2b3ba879 100644 --- a/lisp/mouse.el +++ b/lisp/mouse.el @@ -1026,10 +1026,7 @@ at the same position." (and (integerp t0) (integerp t1) (if (> mouse-1-click-follows-link 0) (<= (- t1 t0) mouse-1-click-follows-link) - (< (- t0 t1) mouse-1-click-follows-link))))) - (or (not double-click-time) - (sit-for 0 (if (integerp double-click-time) - double-click-time 500) t))))) + (< (- t0 t1) mouse-1-click-follows-link)))))))) (if (or (vectorp on-link) (stringp on-link)) (setq event (aref on-link 0)) (setcar event 'mouse-2))) From 351b3bee2f61d381f810a097ecc527483cb33f32 Mon Sep 17 00:00:00 2001 From: Chong Yidong Date: Tue, 11 Oct 2005 15:30:31 +0000 Subject: [PATCH 110/168] * mouse.el (mouse-drag-region-1): Don't try to catch a double-click when doing follow-link (it's overridden anyway). --- lisp/ChangeLog | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 6f63f2b4845..c93f5f43089 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2005-10-11 Chong Yidong + + * mouse.el (mouse-drag-region-1): Don't try to catch a + double-click when doing follow-link (it's overridden anyway). + 2005-10-11 Juanma Barranquero * emacs-lisp/autoload.el (update-directory-autoloads): Doc fix. From b682966a61dafc6658778c83ea6692147a13b0f7 Mon Sep 17 00:00:00 2001 From: Jay Belanger Date: Tue, 11 Oct 2005 19:41:48 +0000 Subject: [PATCH 111/168] (calc-integral): With an argument, compute the definite integral. --- lisp/calc/calcalg2.el | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/lisp/calc/calcalg2.el b/lisp/calc/calcalg2.el index a534e4fd459..c0fa5310bf4 100644 --- a/lisp/calc/calcalg2.el +++ b/lisp/calc/calcalg2.el @@ -52,19 +52,21 @@ (setq expr (list func expr var))) (calc-enter-result n "derv" expr)))) -(defun calc-integral (var) - (interactive "sIntegration variable: ") - (calc-slow-wrapper - (if (or (equal var "") (equal var "$")) - (calc-enter-result 2 "intg" (list 'calcFunc-integ - (calc-top-n 2) - (calc-top-n 1))) - (let ((var (math-read-expr var))) - (if (eq (car-safe var) 'error) - (error "Bad format in expression: %s" (nth 1 var))) - (calc-enter-result 1 "intg" (list 'calcFunc-integ - (calc-top-n 1) - var)))))) +(defun calc-integral (var &optional arg) + (interactive "sIntegration variable: \nP") + (if arg + (calc-tabular-command 'calcFunc-integ "Integration" "intg" nil var nil nil) + (calc-slow-wrapper + (if (or (equal var "") (equal var "$")) + (calc-enter-result 2 "intg" (list 'calcFunc-integ + (calc-top-n 2) + (calc-top-n 1))) + (let ((var (math-read-expr var))) + (if (eq (car-safe var) 'error) + (error "Bad format in expression: %s" (nth 1 var))) + (calc-enter-result 1 "intg" (list 'calcFunc-integ + (calc-top-n 1) + var))))))) (defun calc-num-integral (&optional varname lowname highname) (interactive "sIntegration variable: ") From bc7fb067935f62f2d2d4f79ba271c267c98e8ce6 Mon Sep 17 00:00:00 2001 From: Jay Belanger Date: Tue, 11 Oct 2005 19:43:00 +0000 Subject: [PATCH 112/168] (Integration): Mention using `a i' to compute definite integrals. --- man/calc.texi | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/man/calc.texi b/man/calc.texi index 9c8583040f1..6e397a0052c 100644 --- a/man/calc.texi +++ b/man/calc.texi @@ -23506,11 +23506,11 @@ argument once). @tindex integ The @kbd{a i} (@code{calc-integral}) [@code{integ}] command computes the indefinite integral of the expression on the top of the stack with -respect to a variable. The integrator is not guaranteed to work for -all integrable functions, but it is able to integrate several large -classes of formulas. In particular, any polynomial or rational function -(a polynomial divided by a polynomial) is acceptable. (Rational functions -don't have to be in explicit quotient form, however; +respect to a prompted-for variable. The integrator is not guaranteed to +work for all integrable functions, but it is able to integrate several +large classes of formulas. In particular, any polynomial or rational +function (a polynomial divided by a polynomial) is acceptable. +(Rational functions don't have to be in explicit quotient form, however; @texline @math{x/(1+x^{-2})} @infoline @expr{x/(1+x^-2)} is not strictly a quotient of polynomials, but it is equivalent to @@ -23519,6 +23519,11 @@ is not strictly a quotient of polynomials, but it is equivalent to integrated. Finally, rational functions involving trigonometric or hyperbolic functions can be integrated. +With an argument (@kbd{C-u a i}), this command will compute the definite +integral of the expression on top of the stack. In this case, the +command will again prompt for an integration variable, then prompt for a +lower limit and an upper limit. + @ifinfo If you use the @code{integ} function directly in an algebraic formula, you can also write @samp{integ(f,x,v)} which expresses the resulting From 125df7f5c8dddeaf81f839f07b33fa0832874f3f Mon Sep 17 00:00:00 2001 From: Jay Belanger Date: Tue, 11 Oct 2005 19:46:24 +0000 Subject: [PATCH 113/168] *** empty log message *** --- lisp/ChangeLog | 5 +++++ man/ChangeLog | 5 +++++ 2 files changed, 10 insertions(+) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index c93f5f43089..505c3a589db 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2005-10-11 Jay Belanger + + * calc/calcalg2.el (calc-integral): With an argument, compute the + definite integral. + 2005-10-11 Chong Yidong * mouse.el (mouse-drag-region-1): Don't try to catch a diff --git a/man/ChangeLog b/man/ChangeLog index 02c946cd642..66f7caa1ee8 100644 --- a/man/ChangeLog +++ b/man/ChangeLog @@ -1,3 +1,8 @@ +2005-10-11 Jay Belanger + + * calc.texi (Integration): Mention using `a i' to compute definite + integrals. + 2005-10-11 Juri Linkov * info.texi: Rearrange nodes. From f8b4fcda052b72cb32c1adb822d6d47138dea308 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Tue, 11 Oct 2005 21:22:14 +0000 Subject: [PATCH 114/168] Sync with version in the GNU MDK project. Try to fix up minor layout issues like indentation, line break, etc... (mixal-mode-syntax-table): Don't try to specify comment syntax, because it doesn't work. (mixal-operation-codes): Add some more codes. (mixal-font-lock-keywords): Process comments here. (mixal-mode): mixasm no longer needs -g option. --- lisp/progmodes/mixal-mode.el | 89 ++++++++++++++++++++++-------------- 1 file changed, 54 insertions(+), 35 deletions(-) diff --git a/lisp/progmodes/mixal-mode.el b/lisp/progmodes/mixal-mode.el index fd494324303..5134cf8292e 100644 --- a/lisp/progmodes/mixal-mode.el +++ b/lisp/progmodes/mixal-mode.el @@ -17,8 +17,8 @@ ;; Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, ;; MA 02110-1301 USA -;; Author: Pieter E.J. Pareit -;; Maintainer: Pieter E.J. Pareit +;; Author: Pieter E.J. Pareit +;; Maintainer: Pieter E.J. Pareit ;; Created: 09 Nov 2002 ;; Version: 0.1 ;; Keywords: Knuth mix mixal asm mixvm "The Art Of Computer Programming" @@ -27,17 +27,17 @@ ;; Major mode for the mix asm language. ;; The mix asm language is described in "The Art Of Computer Programming". ;; -;; For optimal use, also use GNU MDK. Compiling needs mixasm, running -;; and debugging needs mixvm and mixvm.el from GNU MDK. You can get +;; For optimal use, also use GNU MDK. Compiling needs mixasm, running +;; and debugging needs mixvm and mixvm.el from GNU MDK. You can get ;; GNU MDK from `https://savannah.gnu.org/projects/mdk/' and ;; `ftp://ftp.gnu.org/pub/gnu/mdk'. ;; ;; To use this mode, place the following in your .emacs file: ;; `(load-file "/PATH-TO-FILE/mixal-mode.el")'. ;; When you load a file with the extension .mixal the mode will be started -;; automatic. If you want to start the mode manual, use `M-x mixal-mode'. -;; Font locking will work, the behavior of tabs is the same as emacs -;; default behavior. You can compile a source file with `C-c c' you can +;; automatic. If you want to start the mode manual, use `M-x mixal-mode'. +;; Font locking will work, the behavior of tabs is the same as Emacs's +;; default behavior. You can compile a source file with `C-c c' you can ;; run a compiled file with `C-c r' or run it in debug mode with `C-c d'. ;; You can get more information about a particular operation code by using ;; mixal-describe-operation-code or `C-h o'. @@ -45,6 +45,15 @@ ;; Have fun. ;;; History: +;; Version 0.3: +;; 08/10/05: sync mdk and emacs cvs +;; from emacs: compile-command and require-final-newline +;; from mdk: see version 0.2 +;; correct my email address +;; Version 0.2: +;; 06/04/05: mixasm no longer needs -g option +;; fontlocking of comments works in all? cases now +;; added some more mixal-operation-codes ;; Version 0.1: ;; Version 0.1.1: ;; 22/11/02: bugfix in fontlocking, needed to add a '-' to the regex. @@ -54,7 +63,6 @@ ;; 09/11/02: started mixal-mode. ;;; Code: - (defvar compile-command) ;;; Key map @@ -66,13 +74,13 @@ (define-key map "\C-ho" 'mixal-describe-operation-code) map) "Keymap for `mixal-mode'.") -; (makunbound 'mixal-mode-map) +;; (makunbound 'mixal-mode-map) ;;; Syntax table (defvar mixal-mode-syntax-table (let ((st (make-syntax-table))) - (modify-syntax-entry ?* "<" st) - (modify-syntax-entry ?\n ">" st) + ;; (modify-syntax-entry ?* "<" st) we need to do a bit more to make + ;; (modify-syntax-entry ?\n ">" st) fontlocking for comments work st) "Syntax table for `dot-mode'.") @@ -97,6 +105,7 @@ value.") "LD4" "LD5" "LD6" "LDX" "LDAN" "LD1N" "LD2N" "LD3N" "LD4N" "LD5N" "LD6N" "LDXN" "STA" "ST1" "ST2" "ST3" "ST4" "ST5" "ST6" "STX" "STJ" "STZ" "JBUS" "IOC" "IN" "OUT" "JRAD" "JMP" "JSJ" "JOV" "JNOV" + "JL" "JE" "JG" "JGE" "JNE" "JLE" "JAN" "J1N" "J2N" "J3N" "J4N" "J5N" "J6N" "JXN" "JAZ" "J1Z" "J2Z" "J3Z" "J4Z" "J5Z" "J6Z" "JXZ" "JAP" "J1P" "J2P" "J3P" "J4P" "J5P" "J6P" "JXP" @@ -109,11 +118,11 @@ value.") "INCX" "DECX" "ENTX" "ENNX" "CMPA" "FCMP" "CMP1" "CMP2" "CMP3" "CMP4" "CMP5" "CMP6" "CMPX") "List of possible operation codes as strings.") -; (makunbound 'mixal-operation-codes) +;; (makunbound 'mixal-operation-codes) (defvar mixal-assembly-pseudoinstructions '("ORIG" "EQU" "CON" "ALF" "END") - "List of possible assembly pseudoinstructions") + "List of possible assembly pseudoinstructions.") ;;; Font-locking: (defvar mixal-font-lock-keywords @@ -124,10 +133,13 @@ value.") (,(regexp-opt mixal-assembly-pseudoinstructions 'words) . mixal-font-lock-assembly-pseudoinstruction-face) - ("^[A-Z0-9a-z]*[ \t]+[A-Z0-9a-z]+[ \t]+[\\-A-Z0-9a-z,():]*[\t]+\\(.*\\)$" - (1 font-lock-comment-face))) + ("^[A-Z0-9a-z]*[ \t]+[A-ZO-9a-z]+[ \t]+\\(=.*=\\).*$" + (1 font-lock-constant-face)) + ("^[A-Z0-9a-z]*[ \t]+[A-Z0-9a-z]+[ \t]+[A-Z0-9a-z,():+-\\*=\" ]*\t+\\(.*\\)$" + (1 font-lock-comment-face)) + ("^\\*.*$" . font-lock-comment-face)) "Keyword highlighting specification for `mixal-mode'.") -; (makunbound 'mixal-font-lock-keywords) +;; (makunbound 'mixal-font-lock-keywords) ;;;; Compilation ;; Output from mixasm is compatible with default behavior of emacs, @@ -139,19 +151,24 @@ value.") ;;;; Describe (defvar mixal-operation-codes-alist '() "Alist that contains all the possible operation codes for mix. -Each elt has the form (OP-CODE GROUP FULL-NAME C-BYTE F-BYTE DESCRIPTION EXECUTION-TIME) -Where OP-CODE is the text of the opcode as an symbol, FULL-NAME is the human readable name -as a string, C-BYTE is the operation code telling what operation is to be performed, F-BYTE holds -an modification of the operation code which can be a symbol or a number, DESCRIPTION contains -an string with a description about the operation code and EXECUTION-TIME holds info -about the time it takes, number or string.") -; (makunbound 'mixal-operation-codes-alist) +Each elt has the form + (OP-CODE GROUP FULL-NAME C-BYTE F-BYTE DESCRIPTION EXECUTION-TIME) +Where OP-CODE is the text of the opcode as an symbol, +FULL-NAME is the human readable name as a string, +C-BYTE is the operation code telling what operation is to be performed, +F-BYTE holds a modification of the operation code which can be a symbol + or a number, +DESCRIPTION contains an string with a description about the operation code and +EXECUTION-TIME holds info about the time it takes, number or string.") +;; (makunbound 'mixal-operation-codes-alist) -(defun mixal-add-operation-code (op-code group full-name C-byte F-byte description execution-time) - "Add an operation code to the list that contains information about possible op code's." - (setq mixal-operation-codes-alist (cons (list op-code group full-name C-byte F-byte - description execution-time) - mixal-operation-codes-alist ))) +(defun mixal-add-operation-code (op-code group full-name C-byte F-byte + description execution-time) + "Add an operation code to `mixal-operation-codes-alist'." + (setq mixal-operation-codes-alist + (cons (list op-code group full-name C-byte F-byte + description execution-time) + mixal-operation-codes-alist))) ;; now add each operation code @@ -1250,7 +1267,8 @@ The converted character representation is stored in rAX." (defun mixal-describe-operation-code (&optional op-code) "Display the full documentation of OP-CODE." (interactive) - ;; we like to provide completition and history, so do it ourself (interactive "?bla")? + ;; We like to provide completion and history, so do it ourself + ;; (interactive "?bla")? (unless op-code (let* ((completion-ignore-case t) ;; we already have a list, but it is not in the right format @@ -1282,13 +1300,14 @@ The converted character representation is stored in rAX." ;;;; Running (defun mixal-run () - "Run's mixal file in current buffer, assumes that file has been compiled" + "Run mixal file in current buffer, assumes that file has been compiled." (interactive) (mixvm (concat "mixvm -r -t -d " (file-name-sans-extension (buffer-file-name))))) (defun mixal-debug () - "Starts mixvm for debugging, assumes that file has been compiled with debugging support" + "Start mixvm for debugging. +Assumes that file has been compiled with debugging support." (interactive) (mixvm (concat "mixvm " (file-name-sans-extension (buffer-file-name))))) @@ -1300,9 +1319,9 @@ The converted character representation is stored in rAX." (set (make-local-variable 'comment-start) "*") (set (make-local-variable 'comment-start-skip) "*") (set (make-local-variable 'font-lock-defaults) '(mixal-font-lock-keywords)) -; might add an indent function in the future -; (set (make-local-variable 'indent-line-function) 'mixal-indent-line) - (set (make-local-variable 'compile-command) (concat "mixasm -g " + ;; might add an indent function in the future + ;; (set (make-local-variable 'indent-line-function) 'mixal-indent-line) + (set (make-local-variable 'compile-command) (concat "mixasm " buffer-file-name)) ;; mixasm will do strange when there is no final newline, ;; so let Emacs ensure that it is always there @@ -1314,5 +1333,5 @@ The converted character representation is stored in rAX." (provide 'mixal-mode) -;;; arch-tag: be7c128a-bf61-4951-a90e-9398267ce3f3 +;; arch-tag: be7c128a-bf61-4951-a90e-9398267ce3f3 ;;; mixal-mode.el ends here From decb2a9e5b5569ae033ec289ede43af7fa1cd53b Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Tue, 11 Oct 2005 22:06:53 +0000 Subject: [PATCH 115/168] (sh-tmp-file): Use mktemp -t. Finish support for es and rc shells. --- lisp/ChangeLog | 5 +++++ lisp/progmodes/sh-script.el | 18 +++++------------- 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 505c3a589db..1de2034918d 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2005-10-11 Sven Joachim + + * progmodes/sh-script.el (sh-tmp-file): + Use mktemp -t. Finish support for es and rc shells. + 2005-10-11 Jay Belanger * calc/calcalg2.el (calc-integral): With an argument, compute the diff --git a/lisp/progmodes/sh-script.el b/lisp/progmodes/sh-script.el index ee184e42446..b8c425428b5 100644 --- a/lisp/progmodes/sh-script.el +++ b/lisp/progmodes/sh-script.el @@ -3392,20 +3392,16 @@ t means to return a list of all possible completions of STRING. "Insert code to setup temporary file handling. See `sh-feature'." (bash sh-append ksh88) (csh (file-name-nondirectory (buffer-file-name)) - "set tmp = `mktemp /tmp/" str ".XXXXXX`" \n + "set tmp = `mktemp -t " str ".XXXXXX`" \n "onintr exit" \n _ (and (goto-char (point-max)) (not (bolp)) ?\n) "exit:\n" "rm $tmp* >&/dev/null" > \n) - ;; The change to use mktemp here has not been tested; - ;; I don't know es syntax, so I had to guess. - ;; If you try it, or if you know es syntax and can check it, - ;; please tell me whether it needs any change. --rms. (es (file-name-nondirectory (buffer-file-name)) - > "local( signals = $signals sighup sigint; tmp = `mktemp /tmp/" str - ".XXXXXX` ) {" \n + > "local( signals = $signals sighup sigint;" \n + > "tmp = `{ mktemp -t " str ".XXXXXX } ) {" \n > "catch @ e {" \n > "rm $tmp^* >[2]/dev/null" \n "throw $e" \n @@ -3415,15 +3411,11 @@ t means to return a list of all possible completions of STRING. ?\} > \n) (ksh88 sh-modify sh 7 "EXIT") - ;; The change to use mktemp here has not been tested; - ;; I don't know rc syntax, so I had to guess. - ;; If you try it, or if you know rc syntax and can check it, - ;; please tell me whether it needs any change. --rms. (rc (file-name-nondirectory (buffer-file-name)) - > "tmp = `mktemp /tmp/" str ".XXXXXX`" \n + > "tmp = `{ mktemp -t " str ".XXXXXX }" \n "fn sigexit { rm $tmp^* >[2]/dev/null }" \n) (sh (file-name-nondirectory (buffer-file-name)) - > "TMP=`mktemp ${TMPDIR:-/tmp}/" str ".XXXXXX`" \n + > "TMP=`mktemp -t " str ".XXXXXX`" \n "trap \"rm $TMP* 2>/dev/null\" " ?0 \n)) From d76432f581bd62ff107336cbbb57b884d0cd891c Mon Sep 17 00:00:00 2001 From: "Kim F. Storm" Date: Tue, 11 Oct 2005 22:21:36 +0000 Subject: [PATCH 116/168] *** empty log message *** --- src/ChangeLog | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 0f8adef5759..ed10e9e17d3 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,7 +1,11 @@ +2005-10-12 Kim F. Storm + + * window.c (coordinates_in_window): Fix x position for ON_RIGHT_MARGIN. + Fix x position for ON_TEXT when left margin width > 0. + 2005-10-11 Kim F. Storm - * window.c (coordinates_in_window): Fix returned y position when - ON_SCROLL_BAR. + * window.c (coordinates_in_window): Fix y position for ON_SCROLL_BAR. * keyboard.c (make_lispy_position): Fix buffer calculations for mouse click or movement in right fringe and the margins. From 66d41723c56b69b7358f22c485e079384b6fade9 Mon Sep 17 00:00:00 2001 From: "Kim F. Storm" Date: Tue, 11 Oct 2005 22:21:50 +0000 Subject: [PATCH 117/168] (coordinates_in_window): Fix x position for ON_RIGHT_MARGIN. Fix x position for ON_TEXT when left margin width > 0. --- src/window.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/window.c b/src/window.c index 17c8f52c286..a9e2569cbf1 100644 --- a/src/window.c +++ b/src/window.c @@ -742,9 +742,9 @@ coordinates_in_window (w, x, y) ? (*x < right_x - WINDOW_RIGHT_FRINGE_WIDTH (w)) : (*x >= right_x - rmargin_width))) { - *x -= right_x; - if (!WINDOW_HAS_FRINGES_OUTSIDE_MARGINS (w)) - *x -= WINDOW_RIGHT_FRINGE_WIDTH (w); + *x -= right_x - rmargin_width; + if (WINDOW_HAS_FRINGES_OUTSIDE_MARGINS (w)) + *x += WINDOW_RIGHT_FRINGE_WIDTH (w); *y -= top_y; return ON_RIGHT_MARGIN; } @@ -756,7 +756,7 @@ coordinates_in_window (w, x, y) } /* Everything special ruled out - must be on text area */ - *x -= left_x + WINDOW_LEFT_FRINGE_WIDTH (w); + *x -= text_left; *y -= top_y; return ON_TEXT; } From 7a1277840dddc133eb1160e133daaaa76a0766f3 Mon Sep 17 00:00:00 2001 From: "Kim F. Storm" Date: Tue, 11 Oct 2005 22:35:06 +0000 Subject: [PATCH 118/168] *** empty log message *** --- src/ChangeLog | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/ChangeLog b/src/ChangeLog index ed10e9e17d3..d8c93e96754 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,5 +1,25 @@ 2005-10-12 Kim F. Storm + * xdisp.c (remember_mouse_glyph): New generic version based on + glyph_rect and remember_mouse_glyph from xterm.c enhanced to + properly handle all different window areas. + + * dispextern.h (remember_mouse_glyph): Add prototype. + + * xterm.c (glyph_rect, remember_mouse_glyph): Remove X versions. + (note_mouse_movement, XTmouse_position): Use generic + remember_mouse_glyph, add last_mouse_glyph arg. + + * w32term.c (note_mouse_movement): Fix last_mouse_glyph check. + (glyph_rect, remember_mouse_glyph): Remove w32 specific versions. + (note_mouse_movement, w32_mouse_position): Use generic + remember_mouse_glyph, add last_mouse_glyph arg. + + * macterm.c (note_mouse_movement): Add call to remember_mouse_glyph. + (glyph_rect, remember_mouse_glyph): Remove mac specific versions. + (XTmouse_position): Adapt to use generic remember_mouse_glyph + instead of pixel_to_glyph_coords. + * window.c (coordinates_in_window): Fix x position for ON_RIGHT_MARGIN. Fix x position for ON_TEXT when left margin width > 0. From d7f18f68ff720399e4a8a48ba27b218f93992203 Mon Sep 17 00:00:00 2001 From: "Kim F. Storm" Date: Tue, 11 Oct 2005 22:35:22 +0000 Subject: [PATCH 119/168] (remember_mouse_glyph): Add prototype. --- src/dispextern.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/dispextern.h b/src/dispextern.h index 63922183a0b..5700a958cd3 100644 --- a/src/dispextern.h +++ b/src/dispextern.h @@ -2615,6 +2615,8 @@ int estimate_mode_line_height P_ ((struct frame *, enum face_id)); void pixel_to_glyph_coords P_ ((struct frame *, int, int, int *, int *, NativeRectangle *, int)); int glyph_to_pixel_coords P_ ((struct window *, int, int, int *, int *)); +void remember_mouse_glyph P_ ((struct frame *, int, int, NativeRectangle *)); + void mark_window_display_accurate P_ ((Lisp_Object, int)); void redisplay_preserve_echo_area P_ ((int)); void set_cursor_from_row P_ ((struct window *, struct glyph_row *, From e2570d37b26c728ac4b5d90c7f6e362b880ba243 Mon Sep 17 00:00:00 2001 From: "Kim F. Storm" Date: Tue, 11 Oct 2005 22:35:40 +0000 Subject: [PATCH 120/168] (note_mouse_movement): Add call to remember_mouse_glyph. (glyph_rect, remember_mouse_glyph): Remove mac specific versions. (XTmouse_position): Adapt to use generic remember_mouse_glyph instead of pixel_to_glyph_coords. --- src/macterm.c | 169 ++++++++++++-------------------------------------- 1 file changed, 39 insertions(+), 130 deletions(-) diff --git a/src/macterm.c b/src/macterm.c index 2142698bbf4..e18f3ee48a0 100644 --- a/src/macterm.c +++ b/src/macterm.c @@ -4190,6 +4190,8 @@ note_mouse_movement (frame, pos) frame->mouse_moved = 1; last_mouse_scroll_bar = Qnil; note_mouse_highlight (frame, pos->h, pos->v); + /* Remember which glyph we're now on. */ + remember_mouse_glyph (frame, pos->h, pos->v, &last_mouse_glyph); } } @@ -4198,9 +4200,6 @@ note_mouse_movement (frame, pos) Mouse Face ************************************************************************/ -static int glyph_rect P_ ((struct frame *f, int, int, Rect *)); - - /* MAC TODO: This should be called from somewhere (or removed) ++KFS */ static void @@ -4214,110 +4213,6 @@ redo_mouse_highlight () } -/* Try to determine frame pixel position and size of the glyph under - frame pixel coordinates X/Y on frame F . Return the position and - size in *RECT. Value is non-zero if we could compute these - values. */ - -static int -glyph_rect (f, x, y, rect) - struct frame *f; - int x, y; - Rect *rect; -{ - Lisp_Object window; - - window = window_from_coordinates (f, x, y, 0, &x, &y, 0); - - if (!NILP (window)) - { - struct window *w = XWINDOW (window); - struct glyph_row *r = MATRIX_FIRST_TEXT_ROW (w->current_matrix); - struct glyph_row *end = r + w->current_matrix->nrows - 1; - - for (; r < end && r->enabled_p; ++r) - if (r->y <= y && r->y + r->height > y) - { - /* Found the row at y. */ - struct glyph *g = r->glyphs[TEXT_AREA]; - struct glyph *end = g + r->used[TEXT_AREA]; - int gx; - - rect->top = WINDOW_TO_FRAME_PIXEL_Y (w, r->y); - rect->bottom = rect->top + r->height; - - if (x < r->x) - { - /* x is to the left of the first glyph in the row. */ - /* Shouldn't this be a pixel value? - WINDOW_LEFT_EDGE_X (w) seems to be the right value. - ++KFS */ - rect->left = WINDOW_LEFT_EDGE_COL (w); - rect->right = WINDOW_TO_FRAME_PIXEL_X (w, r->x); - return 1; - } - - for (gx = r->x; g < end; gx += g->pixel_width, ++g) - if (gx <= x && gx + g->pixel_width > x) - { - /* x is on a glyph. */ - rect->left = WINDOW_TO_FRAME_PIXEL_X (w, gx); - rect->right = rect->left + g->pixel_width; - return 1; - } - - /* x is to the right of the last glyph in the row. */ - rect->left = WINDOW_TO_FRAME_PIXEL_X (w, gx); - /* Shouldn't this be a pixel value? - WINDOW_RIGHT_EDGE_X (w) seems to be the right value. - ++KFS */ - rect->right = WINDOW_RIGHT_EDGE_COL (w); - return 1; - } - } - - /* The y is not on any row. */ - return 0; -} - -/* MAC TODO: This should be called from somewhere (or removed) ++KFS */ - -/* Record the position of the mouse in last_mouse_glyph. */ -static void -remember_mouse_glyph (f1, gx, gy) - struct frame * f1; - int gx, gy; -{ - if (!glyph_rect (f1, gx, gy, &last_mouse_glyph)) - { - int width = FRAME_SMALLEST_CHAR_WIDTH (f1); - int height = FRAME_SMALLEST_FONT_HEIGHT (f1); - - /* Arrange for the division in FRAME_PIXEL_X_TO_COL etc. to - round down even for negative values. */ - if (gx < 0) - gx -= width - 1; - if (gy < 0) - gy -= height - 1; -#if 0 - /* This was the original code from XTmouse_position, but it seems - to give the position of the glyph diagonally next to the one - the mouse is over. */ - gx = (gx + width - 1) / width * width; - gy = (gy + height - 1) / height * height; -#else - gx = gx / width * width; - gy = gy / height * height; -#endif - - last_mouse_glyph.left = gx; - last_mouse_glyph.top = gy; - last_mouse_glyph.right = gx + width; - last_mouse_glyph.bottom = gy + height; - } -} - - static struct frame * mac_focus_frame (dpyinfo) struct mac_display_info *dpyinfo; @@ -4333,18 +4228,18 @@ mac_focus_frame (dpyinfo) /* Return the current position of the mouse. - *fp should be a frame which indicates which display to ask about. + *FP should be a frame which indicates which display to ask about. - If the mouse movement started in a scroll bar, set *fp, *bar_window, - and *part to the frame, window, and scroll bar part that the mouse - is over. Set *x and *y to the portion and whole of the mouse's + If the mouse movement started in a scroll bar, set *FP, *BAR_WINDOW, + and *PART to the frame, window, and scroll bar part that the mouse + is over. Set *X and *Y to the portion and whole of the mouse's position on the scroll bar. - If the mouse movement started elsewhere, set *fp to the frame the - mouse is on, *bar_window to nil, and *x and *y to the character cell + If the mouse movement started elsewhere, set *FP to the frame the + mouse is on, *BAR_WINDOW to nil, and *X and *Y to the character cell the mouse is over. - Set *time to the server time-stamp for the time at which the mouse + Set *TIME to the server time-stamp for the time at which the mouse was at this position. Don't store anything if we don't have a valid set of values to report. @@ -4361,11 +4256,7 @@ XTmouse_position (fp, insist, bar_window, part, x, y, time) Lisp_Object *x, *y; unsigned long *time; { - Point mouse_pos; - int ignore1, ignore2; - struct frame *f = mac_focus_frame (FRAME_MAC_DISPLAY_INFO (*fp)); - WindowPtr wp = FRAME_MAC_WINDOW (f); - Lisp_Object frame, tail; + FRAME_PTR f1; BLOCK_INPUT; @@ -4373,25 +4264,43 @@ XTmouse_position (fp, insist, bar_window, part, x, y, time) x_scroll_bar_report_motion (fp, bar_window, part, x, y, time); else { + Lisp_Object frame, tail; + /* Clear the mouse-moved flag for every frame on this display. */ FOR_EACH_FRAME (tail, frame) - XFRAME (frame)->mouse_moved = 0; + XFRAME (frame)->mouse_moved = 0; last_mouse_scroll_bar = Qnil; - SetPortWindowPort (wp); + if (FRAME_MAC_DISPLAY_INFO (*fp)->grabbed && last_mouse_frame + && FRAME_LIVE_P (last_mouse_frame)) + f1 = last_mouse_frame; + else + f1 = mac_focus_frame (FRAME_MAC_DISPLAY_INFO (*fp)); - GetMouse (&mouse_pos); + if (f1) + { + /* Ok, we found a frame. Store all the values. + last_mouse_glyph is a rectangle used to reduce the + generation of mouse events. To not miss any motion + events, we must divide the frame into rectangles of the + size of the smallest character that could be displayed + on it, i.e. into the same rectangles that matrices on + the frame are divided into. */ + Point mouse_pos; - pixel_to_glyph_coords (f, mouse_pos.h, mouse_pos.v, &ignore1, &ignore2, - &last_mouse_glyph, insist); + SetPortWindowPort (FRAME_MAC_WINDOW (f1)); + GetMouse (&mouse_pos); + remember_mouse_glyph (f1, mouse_pos.h, mouse_pos.v, + &last_mouse_glyph); - *bar_window = Qnil; - *part = scroll_bar_handle; - *fp = f; - XSETINT (*x, mouse_pos.h); - XSETINT (*y, mouse_pos.v); - *time = last_mouse_movement_time; + *bar_window = Qnil; + *part = 0; + *fp = f1; + XSETINT (*x, mouse_pos.h); + XSETINT (*y, mouse_pos.v); + *time = last_mouse_movement_time; + } } UNBLOCK_INPUT; From 1bb92ecaf315a4327bbdd9a98f0b9504d6ede91f Mon Sep 17 00:00:00 2001 From: "Kim F. Storm" Date: Tue, 11 Oct 2005 22:36:35 +0000 Subject: [PATCH 121/168] (note_mouse_movement): Fix last_mouse_glyph check. (glyph_rect, remember_mouse_glyph): Remove w32 specific versions. (note_mouse_movement, w32_mouse_position): Use generic remember_mouse_glyph, add last_mouse_glyph arg. --- src/w32term.c | 114 ++------------------------------------------------ 1 file changed, 4 insertions(+), 110 deletions(-) diff --git a/src/w32term.c b/src/w32term.c index 7e352bfd50d..96d26344b53 100644 --- a/src/w32term.c +++ b/src/w32term.c @@ -3204,8 +3204,6 @@ construct_drag_n_drop (result, msg, f) static MSG last_mouse_motion_event; static Lisp_Object last_mouse_motion_frame; -static void remember_mouse_glyph P_ ((struct frame *, int, int)); - static void note_mouse_movement (frame, msg) FRAME_PTR frame; @@ -3227,9 +3225,9 @@ note_mouse_movement (frame, msg) /* Has the mouse moved off the glyph it was on at the last sighting? */ else if (mouse_x < last_mouse_glyph.left - || mouse_x > last_mouse_glyph.right + || mouse_x >= last_mouse_glyph.right || mouse_y < last_mouse_glyph.top - || mouse_y > last_mouse_glyph.bottom) + || mouse_y >= last_mouse_glyph.bottom) { frame->mouse_moved = 1; last_mouse_scroll_bar = Qnil; @@ -3238,7 +3236,7 @@ note_mouse_movement (frame, msg) gets called when mouse tracking is enabled but we also need to keep track of the mouse for help_echo and highlighting at other times. */ - remember_mouse_glyph (frame, mouse_x, mouse_y); + remember_mouse_glyph (frame, mouse_x, mouse_y, &last_mouse_glyph); } } @@ -3250,8 +3248,6 @@ note_mouse_movement (frame, msg) static struct scroll_bar *x_window_to_scroll_bar (); static void x_scroll_bar_report_motion (); static void x_check_fullscreen P_ ((struct frame *)); -static int glyph_rect P_ ((struct frame *f, int, int, RECT *)); - static void redo_mouse_highlight () @@ -3270,108 +3266,6 @@ w32_define_cursor (window, cursor) { PostMessage (window, WM_EMACS_SETCURSOR, (WPARAM) cursor, 0); } - -/* Try to determine frame pixel position and size of the glyph under - frame pixel coordinates X/Y on frame F . Return the position and - size in *RECT. Value is non-zero if we could compute these - values. */ - -static int -glyph_rect (f, x, y, rect) - struct frame *f; - int x, y; - RECT *rect; -{ - Lisp_Object window; - - window = window_from_coordinates (f, x, y, 0, &x, &y, 0); - - if (!NILP (window)) - { - struct window *w = XWINDOW (window); - struct glyph_row *r = MATRIX_FIRST_TEXT_ROW (w->current_matrix); - struct glyph_row *end = r + w->current_matrix->nrows - 1; - - for (; r < end && r->enabled_p; ++r) - if (r->y <= y && r->y + r->height > y) - { - /* Found the row at y. */ - struct glyph *g = r->glyphs[TEXT_AREA]; - struct glyph *end = g + r->used[TEXT_AREA]; - int gx; - - rect->top = WINDOW_TO_FRAME_PIXEL_Y (w, r->y); - rect->bottom = rect->top + r->height; - - if (x < r->x) - { - /* x is to the left of the first glyph in the row. */ - /* Shouldn't this be a pixel value? - WINDOW_LEFT_EDGE_X (w) seems to be the right value. - ++KFS */ - rect->left = WINDOW_LEFT_EDGE_COL (w); - rect->right = WINDOW_TO_FRAME_PIXEL_X (w, r->x); - return 1; - } - - for (gx = r->x; g < end; gx += g->pixel_width, ++g) - if (gx <= x && gx + g->pixel_width > x) - { - /* x is on a glyph. */ - rect->left = WINDOW_TO_FRAME_PIXEL_X (w, gx); - rect->right = rect->left + g->pixel_width; - return 1; - } - - /* x is to the right of the last glyph in the row. */ - rect->left = WINDOW_TO_FRAME_PIXEL_X (w, gx); - /* Shouldn't this be a pixel value? - WINDOW_RIGHT_EDGE_X (w) seems to be the right value. - ++KFS */ - rect->right = WINDOW_RIGHT_EDGE_COL (w); - return 1; - } - } - - /* The y is not on any row. */ - return 0; -} - -/* Record the position of the mouse in last_mouse_glyph. */ -static void -remember_mouse_glyph (f1, gx, gy) - struct frame * f1; - int gx, gy; -{ - if (!glyph_rect (f1, gx, gy, &last_mouse_glyph)) - { - int width = FRAME_SMALLEST_CHAR_WIDTH (f1); - int height = FRAME_SMALLEST_FONT_HEIGHT (f1); - - /* Arrange for the division in FRAME_PIXEL_X_TO_COL etc. to - round down even for negative values. */ - if (gx < 0) - gx -= width - 1; - if (gy < 0) - gy -= height - 1; -#if 0 - /* This was the original code from XTmouse_position, but it seems - to give the position of the glyph diagonally next to the one - the mouse is over. */ - gx = (gx + width - 1) / width * width; - gy = (gy + height - 1) / height * height; -#else - gx = gx / width * width; - gy = gy / height * height; -#endif - - last_mouse_glyph.left = gx; - last_mouse_glyph.top = gy; - last_mouse_glyph.right = gx + width; - last_mouse_glyph.bottom = gy + height; - } -} - /* Return the current position of the mouse. *fp should be a frame which indicates which display to ask about. @@ -3474,7 +3368,7 @@ w32_mouse_position (fp, insist, bar_window, part, x, y, time) || insist); #else ScreenToClient (FRAME_W32_WINDOW (f1), &pt); - remember_mouse_glyph (f1, pt.x, pt.y); + remember_mouse_glyph (f1, pt.x, pt.y, &last_mouse_glyph); #endif *bar_window = Qnil; From 984c107d5e0904a8446faf575f12305f7422ad70 Mon Sep 17 00:00:00 2001 From: "Kim F. Storm" Date: Tue, 11 Oct 2005 22:36:46 +0000 Subject: [PATCH 122/168] (remember_mouse_glyph): New generic version based on glyph_rect and remember_mouse_glyph from xterm.c enhanced to properly handle all different window areas. --- src/xdisp.c | 175 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 175 insertions(+) diff --git a/src/xdisp.c b/src/xdisp.c index 9e29bfa0e46..14757b92c59 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -2027,6 +2027,181 @@ get_phys_cursor_geometry (w, row, glyph, heightp) return WINDOW_TO_FRAME_PIXEL_Y (w, y); } +/* + * Remember which glyph the mouse is over. + */ + +void +remember_mouse_glyph (f, gx, gy, rect) + struct frame *f; + int gx, gy; + NativeRectangle *rect; +{ + Lisp_Object window; + struct window *w; + struct glyph_row *r, *gr, *end_row; + enum window_part part; + enum glyph_row_area area; + int x, y, width, height; + + /* Try to determine frame pixel position and size of the glyph under + frame pixel coordinates X/Y on frame F. */ + + window = window_from_coordinates (f, gx, gy, &part, &x, &y, 0); + if (NILP (window)) + { + width = FRAME_SMALLEST_CHAR_WIDTH (f); + height = FRAME_SMALLEST_FONT_HEIGHT (f); + goto virtual_glyph; + } + + w = XWINDOW (window); + width = WINDOW_FRAME_COLUMN_WIDTH (w); + height = WINDOW_FRAME_LINE_HEIGHT (w); + + r = MATRIX_FIRST_TEXT_ROW (w->current_matrix); + end_row = r + w->current_matrix->nrows - 1; + + if (w->pseudo_window_p) + { + area = TEXT_AREA; + part = ON_MODE_LINE; /* Don't adjust margin. */ + goto text_glyph; + } + + switch (part) + { + case ON_LEFT_MARGIN: + area = LEFT_MARGIN_AREA; + goto text_glyph; + + case ON_RIGHT_MARGIN: + area = RIGHT_MARGIN_AREA; + goto text_glyph; + + case ON_TEXT: + case ON_MODE_LINE: + case ON_HEADER_LINE: + area = TEXT_AREA; + + text_glyph: + gr = 0; gy = 0; + for (; r < end_row && r->enabled_p; ++r) + if (r->y + r->height > y) + { + gr = r; gy = r->y; + break; + } + + if (gr && gy <= y) + { + struct glyph *g = gr->glyphs[area]; + struct glyph *end = g + gr->used[area]; + + height = gr->height; + for (gx = gr->x; g < end; gx += g->pixel_width, ++g) + if (gx + g->pixel_width > x) + break; + + if (g < end) + width = g->pixel_width; + else + { + /* Use nominal char spacing at end of line. */ + x -= gx; + gx += (x / width) * width; + } + + if (part != ON_MODE_LINE && part != ON_HEADER_LINE) + gx += window_box_left_offset (w, area); + } + else + { + /* Use nominal line height at end of window. */ + gx = (x / width) * width; + y -= gy; + gy += (y / height) * height; + } + break; + + case ON_LEFT_FRINGE: + gx = (WINDOW_HAS_FRINGES_OUTSIDE_MARGINS (w) + ? WINDOW_LEFT_SCROLL_BAR_AREA_WIDTH (w) + : window_box_right_offset (w, LEFT_MARGIN_AREA)); + width = WINDOW_LEFT_FRINGE_WIDTH (w); + goto row_glyph; + + case ON_RIGHT_FRINGE: + gx = (WINDOW_HAS_FRINGES_OUTSIDE_MARGINS (w) + ? window_box_right_offset (w, RIGHT_MARGIN_AREA) + : window_box_right_offset (w, TEXT_AREA)); + width = WINDOW_RIGHT_FRINGE_WIDTH (w); + goto row_glyph; + + case ON_SCROLL_BAR: + gx = (WINDOW_HAS_VERTICAL_SCROLL_BAR_ON_LEFT (w) + ? 0 + : (window_box_right_offset (w, RIGHT_MARGIN_AREA) + + (WINDOW_HAS_FRINGES_OUTSIDE_MARGINS (w) + ? WINDOW_RIGHT_FRINGE_WIDTH (w) + : 0))); + width = WINDOW_SCROLL_BAR_AREA_WIDTH (w); + + row_glyph: + gr = 0, gy = 0; + for (; r < end_row && r->enabled_p; ++r) + if (r->y + r->height > y) + { + gr = r; gy = r->y; + break; + } + + if (gr && gy <= y) + height = gr->height; + else + { + /* Use nominal line height at end of window. */ + y -= gy; + gy += (y / height) * height; + } + break; + + default: + ; + virtual_glyph: + /* If there is no glyph under the mouse, then we divide the screen + into a grid of the smallest glyph in the frame, and use that + as our "glyph". */ + + /* Arrange for the division in FRAME_PIXEL_X_TO_COL etc. to + round down even for negative values. */ + if (gx < 0) + gx -= width - 1; + if (gy < 0) + gy -= height - 1; + + gx = (gx / width) * width; + gy = (gy / height) * height; + + goto store_rect; + } + + gx += WINDOW_LEFT_EDGE_X (w); + gy += WINDOW_TOP_EDGE_Y (w); + + store_rect: + STORE_NATIVE_RECT (*rect, gx, gy, width, height); + + /* Visible feedback for debugging. */ +#if 0 +#if HAVE_X_WINDOWS + XDrawRectangle (FRAME_X_DISPLAY (f), FRAME_X_WINDOW (f), + f->output_data.x->normal_gc, + gx, gy, width, height); +#endif +#endif +} + #endif /* HAVE_WINDOW_SYSTEM */ From cc9e7d9176843a243ca4217229302c1b396dbb6e Mon Sep 17 00:00:00 2001 From: "Kim F. Storm" Date: Tue, 11 Oct 2005 22:37:01 +0000 Subject: [PATCH 123/168] (glyph_rect, remember_mouse_glyph): Remove X versions. (note_mouse_movement, XTmouse_position): Use generic remember_mouse_glyph, add last_mouse_glyph arg. --- src/xterm.c | 98 ++--------------------------------------------------- 1 file changed, 2 insertions(+), 96 deletions(-) diff --git a/src/xterm.c b/src/xterm.c index a4ad061e8db..743247771d4 100644 --- a/src/xterm.c +++ b/src/xterm.c @@ -3582,8 +3582,6 @@ construct_mouse_click (result, event, f) static XMotionEvent last_mouse_motion_event; static Lisp_Object last_mouse_motion_frame; -static void remember_mouse_glyph P_ ((struct frame *, int, int)); - static void note_mouse_movement (frame, event) FRAME_PTR frame; @@ -3610,7 +3608,7 @@ note_mouse_movement (frame, event) last_mouse_scroll_bar = Qnil; note_mouse_highlight (frame, event->x, event->y); /* Remember which glyph we're now on. */ - remember_mouse_glyph (frame, event->x, event->y); + remember_mouse_glyph (frame, event->x, event->y, &last_mouse_glyph); } } @@ -3630,98 +3628,6 @@ redo_mouse_highlight () } -static int glyph_rect P_ ((struct frame *f, int, int, XRectangle *)); - - -/* Try to determine frame pixel position and size of the glyph under - frame pixel coordinates X/Y on frame F . Return the position and - size in *RECT. Value is non-zero if we could compute these - values. */ - -static int -glyph_rect (f, x, y, rect) - struct frame *f; - int x, y; - XRectangle *rect; -{ - Lisp_Object window; - struct window *w; - struct glyph_row *r, *end_row; - enum window_part part; - - window = window_from_coordinates (f, x, y, &part, &x, &y, 0); - if (NILP (window)) - return 0; - - w = XWINDOW (window); - r = MATRIX_FIRST_TEXT_ROW (w->current_matrix); - end_row = r + w->current_matrix->nrows - 1; - - if (part != ON_TEXT) - return 0; - - for (; r < end_row && r->enabled_p; ++r) - { - if (r->y >= y) - { - struct glyph *g = r->glyphs[TEXT_AREA]; - struct glyph *end = g + r->used[TEXT_AREA]; - int gx = r->x; - while (g < end && gx < x) - gx += g->pixel_width, ++g; - if (g < end) - { - rect->width = g->pixel_width; - rect->height = r->height; - rect->x = WINDOW_TO_FRAME_PIXEL_X (w, gx); - rect->y = WINDOW_TO_FRAME_PIXEL_Y (w, r->y); - return 1; - } - break; - } - } - - return 0; -} - - -/* Remember which glyph the mouse is over. - */ -static void -remember_mouse_glyph (f1, win_x, win_y) - FRAME_PTR f1; - int win_x, win_y; -{ - int width, height, gx, gy; - - /* Try getting the rectangle of the actual glyph. */ - if (!glyph_rect (f1, win_x, win_y, &last_mouse_glyph)) - { - /* If there is no glyph under the mouse, then we divide the screen - into a grid of the smallest glyph in the frame, and use that - as our "glyph". */ - width = FRAME_SMALLEST_CHAR_WIDTH (f1); - height = FRAME_SMALLEST_FONT_HEIGHT (f1); - gx = win_x; - gy = win_y; - - /* Arrange for the division in FRAME_PIXEL_X_TO_COL etc. to - round down even for negative values. */ - if (gx < 0) - gx -= width - 1; - if (gy < 0) - gy -= height - 1; - - gx = gx / width * width; - gy = gy / width * width; - - last_mouse_glyph.width = width; - last_mouse_glyph.height = height; - last_mouse_glyph.x = gx; - last_mouse_glyph.y = gy; - } -} - /* Return the current position of the mouse. *FP should be a frame which indicates which display to ask about. @@ -3909,7 +3815,7 @@ XTmouse_position (fp, insist, bar_window, part, x, y, time) on it, i.e. into the same rectangles that matrices on the frame are divided into. */ - remember_mouse_glyph (f1, win_x, win_y); + remember_mouse_glyph (f1, win_x, win_y, &last_mouse_glyph); *bar_window = Qnil; *part = 0; From 97b3a2143e3a556ddd42e6d3c2945c32498242f7 Mon Sep 17 00:00:00 2001 From: Lars Hansen Date: Wed, 12 Oct 2005 09:16:55 +0000 Subject: [PATCH 124/168] (desktop-load-file): Do nothing when FUNCTION is nil. --- lisp/ChangeLog | 5 +++++ lisp/desktop.el | 9 +++++---- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 1de2034918d..82189b2d492 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2005-10-12 Lars Hansen + + * desktop.el (desktop-load-file): Do nothing when FUNCTION is nil. + Reported by Reiner Steib . + 2005-10-11 Sven Joachim * progmodes/sh-script.el (sh-tmp-file): diff --git a/lisp/desktop.el b/lisp/desktop.el index cf4d387c7b1..0d5d18da191 100644 --- a/lisp/desktop.el +++ b/lisp/desktop.el @@ -963,10 +963,11 @@ directory DIRNAME." (defun desktop-load-file (function) "Load the file where auto loaded FUNCTION is defined." - (let ((fcell (symbol-function function))) - (when (and (listp fcell) - (eq 'autoload (car fcell))) - (load (cadr fcell))))) + (when function + (let ((fcell (symbol-function function))) + (when (and (listp fcell) + (eq 'autoload (car fcell))) + (load (cadr fcell)))))) ;; ---------------------------------------------------------------------------- ;; Create a buffer, load its file, set its mode, ...; From 76d8f04c6d9974b985be86694026feaa7f29e965 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Mitsuharu Date: Wed, 12 Oct 2005 09:50:50 +0000 Subject: [PATCH 125/168] (remember_mouse_glyph): Use MATRIX_BOTTOM_TEXT_ROW to get end of text rows. Obtain header-line/mode-line rows directly. --- src/ChangeLog | 5 +++++ src/xdisp.c | 18 +++++++++++++----- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index d8c93e96754..fef8efe2c12 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2005-10-12 YAMAMOTO Mitsuharu + + * xdisp.c (remember_mouse_glyph): Use MATRIX_BOTTOM_TEXT_ROW to + get end of text rows. Obtain header-line/mode-line rows directly. + 2005-10-12 Kim F. Storm * xdisp.c (remember_mouse_glyph): New generic version based on diff --git a/src/xdisp.c b/src/xdisp.c index 14757b92c59..de24049d830 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -2060,7 +2060,7 @@ remember_mouse_glyph (f, gx, gy, rect) height = WINDOW_FRAME_LINE_HEIGHT (w); r = MATRIX_FIRST_TEXT_ROW (w->current_matrix); - end_row = r + w->current_matrix->nrows - 1; + end_row = MATRIX_BOTTOM_TEXT_ROW (w->current_matrix, w); if (w->pseudo_window_p) { @@ -2079,20 +2079,28 @@ remember_mouse_glyph (f, gx, gy, rect) area = RIGHT_MARGIN_AREA; goto text_glyph; - case ON_TEXT: - case ON_MODE_LINE: case ON_HEADER_LINE: + case ON_MODE_LINE: + gr = (part == ON_HEADER_LINE + ? MATRIX_HEADER_LINE_ROW (w->current_matrix) + : MATRIX_MODE_LINE_ROW (w->current_matrix)); + gy = gr->y; + area = TEXT_AREA; + goto text_glyph_row_found; + + case ON_TEXT: area = TEXT_AREA; text_glyph: gr = 0; gy = 0; - for (; r < end_row && r->enabled_p; ++r) + for (; r <= end_row && r->enabled_p; ++r) if (r->y + r->height > y) { gr = r; gy = r->y; break; } + text_glyph_row_found: if (gr && gy <= y) { struct glyph *g = gr->glyphs[area]; @@ -2149,7 +2157,7 @@ remember_mouse_glyph (f, gx, gy, rect) row_glyph: gr = 0, gy = 0; - for (; r < end_row && r->enabled_p; ++r) + for (; r <= end_row && r->enabled_p; ++r) if (r->y + r->height > y) { gr = r; gy = r->y; From 49ee8895072cd34b106d6a288394854335ae1c3b Mon Sep 17 00:00:00 2001 From: Lars Hansen Date: Wed, 12 Oct 2005 10:04:57 +0000 Subject: [PATCH 126/168] *** empty log message *** --- lisp/ChangeLog | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 82189b2d492..d2dbc4509cc 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,7 +1,6 @@ -2005-10-12 Lars Hansen +2005-10-12 Reiner Steib * desktop.el (desktop-load-file): Do nothing when FUNCTION is nil. - Reported by Reiner Steib . 2005-10-11 Sven Joachim From 136b3a73a2190deacd4292d402b14d0e05d25a4f Mon Sep 17 00:00:00 2001 From: Romain Francoise Date: Wed, 12 Oct 2005 10:10:04 +0000 Subject: [PATCH 127/168] *** empty log message *** --- lisp/ChangeLog | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index d2dbc4509cc..e3a054a4d33 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,4 +1,4 @@ -2005-10-12 Reiner Steib +2005-10-12 Reiner Steib * desktop.el (desktop-load-file): Do nothing when FUNCTION is nil. From b639c9be359e158b50835af475af4365fdcbe932 Mon Sep 17 00:00:00 2001 From: Romain Francoise Date: Wed, 12 Oct 2005 10:14:41 +0000 Subject: [PATCH 128/168] (init_buffer): Rename `rc' to `len' for clarity. --- src/ChangeLog | 4 ++++ src/buffer.c | 12 ++++++------ 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index fef8efe2c12..340f8e1089f 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,7 @@ +2005-10-12 Romain Francoise + + * buffer.c (init_buffer): Rename `rc' to `len' for clarity. + 2005-10-12 YAMAMOTO Mitsuharu * xdisp.c (remember_mouse_glyph): Use MATRIX_BOTTOM_TEXT_ROW to diff --git a/src/buffer.c b/src/buffer.c index fb1ff1c22e9..c173136961e 100644 --- a/src/buffer.c +++ b/src/buffer.c @@ -5114,7 +5114,7 @@ init_buffer () char *pwd; struct stat dotstat, pwdstat; Lisp_Object temp; - int rc; + int len; #ifdef USE_MMAP_FOR_BUFFERS { @@ -5141,13 +5141,13 @@ init_buffer () #ifndef VMS /* Maybe this should really use some standard subroutine whose definition is filename syntax dependent. */ - rc = strlen (pwd); - if (!(IS_DIRECTORY_SEP (pwd[rc - 1]))) + len = strlen (pwd); + if (!(IS_DIRECTORY_SEP (pwd[len - 1]))) { /* Grow buffer to add directory separator and '\0'. */ - pwd = (char *) xrealloc (pwd, rc + 2); - pwd[rc] = DIRECTORY_SEP; - pwd[rc + 1] = '\0'; + pwd = (char *) xrealloc (pwd, len + 2); + pwd[len] = DIRECTORY_SEP; + pwd[len + 1] = '\0'; } #endif /* not VMS */ From 47b40faff44bc6a9b32daab56c791bcd96eb8c57 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Mitsuharu Date: Wed, 12 Oct 2005 11:18:01 +0000 Subject: [PATCH 129/168] (note_mouse_movement): Restore help_echo_string if mouse is moved inside last_mouse_glyph. --- src/macterm.c | 2 ++ src/w32term.c | 2 ++ 2 files changed, 4 insertions(+) diff --git a/src/macterm.c b/src/macterm.c index e18f3ee48a0..c41e1f0ffed 100644 --- a/src/macterm.c +++ b/src/macterm.c @@ -4193,6 +4193,8 @@ note_mouse_movement (frame, pos) /* Remember which glyph we're now on. */ remember_mouse_glyph (frame, pos->h, pos->v, &last_mouse_glyph); } + else + help_echo_string = previous_help_echo_string; } diff --git a/src/w32term.c b/src/w32term.c index 96d26344b53..b6349eb63a1 100644 --- a/src/w32term.c +++ b/src/w32term.c @@ -3238,6 +3238,8 @@ note_mouse_movement (frame, msg) other times. */ remember_mouse_glyph (frame, mouse_x, mouse_y, &last_mouse_glyph); } + else + help_echo_string = previous_help_echo_string; } From 621036f968d0a33ce5ca260cfc88e51a7f18c118 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Mitsuharu Date: Wed, 12 Oct 2005 11:19:29 +0000 Subject: [PATCH 130/168] *** empty log message *** --- src/ChangeLog | 3 +++ src/xterm.c | 2 ++ 2 files changed, 5 insertions(+) diff --git a/src/ChangeLog b/src/ChangeLog index 340f8e1089f..c06400ab1a4 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -7,6 +7,9 @@ * xdisp.c (remember_mouse_glyph): Use MATRIX_BOTTOM_TEXT_ROW to get end of text rows. Obtain header-line/mode-line rows directly. + * xterm.c, w32term.c, macterm.c (note_mouse_movement): Restore + help_echo_string if mouse is moved inside last_mouse_glyph. + 2005-10-12 Kim F. Storm * xdisp.c (remember_mouse_glyph): New generic version based on diff --git a/src/xterm.c b/src/xterm.c index 743247771d4..370a35fe6e6 100644 --- a/src/xterm.c +++ b/src/xterm.c @@ -3610,6 +3610,8 @@ note_mouse_movement (frame, event) /* Remember which glyph we're now on. */ remember_mouse_glyph (frame, event->x, event->y, &last_mouse_glyph); } + else + help_echo_string = previous_help_echo_string; } From d54f452e20a88627c4405ad325b8aa12f2bc585c Mon Sep 17 00:00:00 2001 From: "Kim F. Storm" Date: Wed, 12 Oct 2005 11:22:57 +0000 Subject: [PATCH 131/168] =?UTF-8?q?(fancy-splash-default-action):=20Discar?= =?UTF-8?q?d=20mouse=20click=20in=20the=20spash=20screen=20window,=20as=20?= =?UTF-8?q?it=20has=20no=20sensible=20meaning=20in=20the=20next=20window?= =?UTF-8?q?=20to=20be=20selected.=20=20Fixes=20error=20reported=20by=20Jan?= =?UTF-8?q?=20Dj=C3=A4rv?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lisp/startup.el | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lisp/startup.el b/lisp/startup.el index 3315e7236fb..3190d7c5aa7 100644 --- a/lisp/startup.el +++ b/lisp/startup.el @@ -1250,7 +1250,13 @@ This is an internal function used to turn off the splash screen after the user caused an input event by hitting a key or clicking with the mouse." (interactive) - (push last-command-event unread-command-events) + (if (and (consp last-command-event) + (eq (posn-window (event-start last-command-event)) + (selected-window))) + ;; This is a mouse-down event in the spash screen window. + ;; Ignore it and consume the corresponding mouse-up event. + (read-event) + (push last-command-event unread-command-events)) (throw 'exit nil)) From 78f3b91f6882c6aac85cc7bb9981b0fdd0e4b07b Mon Sep 17 00:00:00 2001 From: "Kim F. Storm" Date: Wed, 12 Oct 2005 11:43:26 +0000 Subject: [PATCH 132/168] *** empty log message *** --- lisp/ChangeLog | 6 ++++++ src/ChangeLog | 4 ++++ 2 files changed, 10 insertions(+) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index e3a054a4d33..3620d6a8971 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,9 @@ +2005-10-12 Kim F. Storm + + * startup.el (fancy-splash-default-action): Discard mouse click in + the spash screen window, as it has no sensible meaning in the + next window to be selected. Fixes error reported by Jan D. + 2005-10-12 Reiner Steib * desktop.el (desktop-load-file): Do nothing when FUNCTION is nil. diff --git a/src/ChangeLog b/src/ChangeLog index c06400ab1a4..0708c45faf4 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,7 @@ +2005-10-12 Kim F. Storm + + * xterm.c (handle_one_xevent): Clear last_mouse_glyph on mouse up/down. + 2005-10-12 Romain Francoise * buffer.c (init_buffer): Rename `rc' to `len' for clarity. From ce728a0c84a71c8b075a350ec1160d0710748e05 Mon Sep 17 00:00:00 2001 From: "Kim F. Storm" Date: Wed, 12 Oct 2005 11:43:57 +0000 Subject: [PATCH 133/168] (handle_one_xevent): Clear last_mouse_glyph on mouse up/down. --- src/xterm.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src/xterm.c b/src/xterm.c index 370a35fe6e6..f6c15c1cdeb 100644 --- a/src/xterm.c +++ b/src/xterm.c @@ -6634,6 +6634,7 @@ handle_one_xevent (dpyinfo, eventp, finish, hold_quit) int tool_bar_p = 0; bzero (&compose_status, sizeof (compose_status)); + bzero (&last_mouse_glyph, sizeof (last_mouse_glyph)); if (dpyinfo->grabbed && last_mouse_frame From 6de0e1a2931f6b91a0fc8de1960e86dfb714def2 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Mitsuharu Date: Wed, 12 Oct 2005 12:19:15 +0000 Subject: [PATCH 134/168] (note_mouse_movement): Undo last change. --- src/ChangeLog | 4 ++++ src/macterm.c | 2 -- src/w32term.c | 2 -- src/xterm.c | 2 -- 4 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 0708c45faf4..c6de7000e88 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,7 @@ +2005-10-12 YAMAMOTO Mitsuharu + + * xterm.c, w32term.c, macterm.c (note_mouse_movement): Undo last change. + 2005-10-12 Kim F. Storm * xterm.c (handle_one_xevent): Clear last_mouse_glyph on mouse up/down. diff --git a/src/macterm.c b/src/macterm.c index c41e1f0ffed..e18f3ee48a0 100644 --- a/src/macterm.c +++ b/src/macterm.c @@ -4193,8 +4193,6 @@ note_mouse_movement (frame, pos) /* Remember which glyph we're now on. */ remember_mouse_glyph (frame, pos->h, pos->v, &last_mouse_glyph); } - else - help_echo_string = previous_help_echo_string; } diff --git a/src/w32term.c b/src/w32term.c index b6349eb63a1..96d26344b53 100644 --- a/src/w32term.c +++ b/src/w32term.c @@ -3238,8 +3238,6 @@ note_mouse_movement (frame, msg) other times. */ remember_mouse_glyph (frame, mouse_x, mouse_y, &last_mouse_glyph); } - else - help_echo_string = previous_help_echo_string; } diff --git a/src/xterm.c b/src/xterm.c index f6c15c1cdeb..d9a4f9d68f6 100644 --- a/src/xterm.c +++ b/src/xterm.c @@ -3610,8 +3610,6 @@ note_mouse_movement (frame, event) /* Remember which glyph we're now on. */ remember_mouse_glyph (frame, event->x, event->y, &last_mouse_glyph); } - else - help_echo_string = previous_help_echo_string; } From 339ef8ceee03aff715cadf8a02b098eee056ec71 Mon Sep 17 00:00:00 2001 From: Kenichi Handa Date: Wed, 12 Oct 2005 13:03:09 +0000 Subject: [PATCH 135/168] (Position Info): Describe the case that Emacs shows "part of display ...". --- man/ChangeLog | 5 +++++ man/basic.texi | 11 +++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/man/ChangeLog b/man/ChangeLog index 66f7caa1ee8..8cb4f3a48a1 100644 --- a/man/ChangeLog +++ b/man/ChangeLog @@ -1,3 +1,8 @@ +2005-10-12 Kenichi Handa + + * basic.texi (Position Info): Describe the case that Emacs shows + "part of display ...". + 2005-10-11 Jay Belanger * calc.texi (Integration): Mention using `a i' to compute definite diff --git a/man/basic.texi b/man/basic.texi index 2f5aa3162e1..292de46fc7c 100644 --- a/man/basic.texi +++ b/man/basic.texi @@ -636,10 +636,17 @@ Char: c (0143, 99, 0x63) point=21044 of 26883(78%) column 53 The four values after @samp{Char:} describe the character that follows point, first by showing it and then by giving its character code in octal, decimal and hex. For a non-@acronym{ASCII} multibyte character, these are -followed by @samp{ext} and the character's representation, in hex, in +followed by @samp{file} and the character's representation, in hex, in the buffer's coding system, if that coding system encodes the character safely and with a single byte (@pxref{Coding Systems}). If the -character's encoding is longer than one byte, Emacs shows @samp{ext ...}. +character's encoding is longer than one byte, Emacs shows @samp{file ...}. + + However, if the character displayed is in the range 0200 through +0377 octal, there's a case that it actually represents an invalid +UTF-8 byte. Emacs represents such a byte in a buffer by a sequence of +8-bit characters, but displays only the original invalid byte in octal +form. In such a case, Emacs shows @samp{part of display ...} instead +of @samp{file}. @samp{point=} is followed by the position of point expressed as a character count. The front of the buffer counts as position 1, one character later From 1b3b0b5f0b92e018705d41954b9717b511f6bbe6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Dj=C3=A4rv?= Date: Wed, 12 Oct 2005 14:21:23 +0000 Subject: [PATCH 136/168] * cmdargs.texi (Icons X): Fix typo. --- man/ChangeLog | 4 ++++ man/cmdargs.texi | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/man/ChangeLog b/man/ChangeLog index 8cb4f3a48a1..bd137642867 100644 --- a/man/ChangeLog +++ b/man/ChangeLog @@ -1,3 +1,7 @@ +2005-10-12 Jan Dj,Ad(Brv + + * cmdargs.texi (Icons X): Fix typo. + 2005-10-12 Kenichi Handa * basic.texi (Position Info): Describe the case that Emacs shows diff --git a/man/cmdargs.texi b/man/cmdargs.texi index bdb57d9b063..28cb567f0cd 100644 --- a/man/cmdargs.texi +++ b/man/cmdargs.texi @@ -1188,7 +1188,7 @@ Start Emacs in iconified state. @end table By default Emacs uses an icon window containing a picture of the GNU gnu. -The @samp{-np} or @samp{--no-bitmap-icon} option tells Emacs to let the +The @samp{-nbi} or @samp{--no-bitmap-icon} option tells Emacs to let the window manager choose what sort of icon to use---usually just a small rectangle containing the frame's title. From c755acf3df2059a8225e761c5fc511126b92b9db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Dj=C3=A4rv?= Date: Wed, 12 Oct 2005 14:22:36 +0000 Subject: [PATCH 137/168] * startup.el (command-line-x-option-alist): -nb => -nbi --- lisp/ChangeLog | 4 ++++ lisp/startup.el | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 3620d6a8971..bf29ee8420c 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,7 @@ +2005-10-12 Jan Dj,Ad(Brv + + * startup.el (command-line-x-option-alist): -nb => -nbi + 2005-10-12 Kim F. Storm * startup.el (fancy-splash-default-action): Discard mouse click in diff --git a/lisp/startup.el b/lisp/startup.el index 3190d7c5aa7..82191509ef9 100644 --- a/lisp/startup.el +++ b/lisp/startup.el @@ -121,7 +121,7 @@ This is normally copied from `default-directory' when Emacs starts.") ("-bg" 1 x-handle-switch background-color) ("-background" 1 x-handle-switch background-color) ("-ms" 1 x-handle-switch mouse-color) - ("-nb" 0 x-handle-switch icon-type nil) + ("-nbi" 0 x-handle-switch icon-type nil) ("-iconic" 0 x-handle-iconic) ("-xrm" 1 x-handle-xrm-switch) ("-cr" 1 x-handle-switch cursor-color) From 0471d42690abdf59abc4a0946789171c658e026f Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Wed, 12 Oct 2005 17:29:57 +0000 Subject: [PATCH 138/168] (mixal-mode-syntax-table): Add \n as end-comment. (mixal-operation-codes): Remove. (mixal-operation-codes-alist): Immediately initialize to full value. (mixal-add-operation-code): Remove. (mixal-describe-operation-code): Make the arg non-optional. Use the interactive spec instead. Use mixal-operation-codes-alist rather than mixal-operation-codes. (mixal-font-lock-keywords): Don't highlight comments here any more. (mixal-font-lock-syntactic-keywords): New var. (mixal-mode): Use it. Fix comment-start-skip. --- lisp/ChangeLog | 23 + lisp/progmodes/mixal-mode.el | 2147 ++++++++++++++++------------------ 2 files changed, 1019 insertions(+), 1151 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index bf29ee8420c..776db60e33a 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,16 @@ +2005-10-12 Stefan Monnier + + * progmodes/mixal-mode.el (mixal-operation-codes): Remove. + (mixal-mode-syntax-table): Add \n as end-comment. + (mixal-operation-codes-alist): Immediately initialize to full value. + (mixal-add-operation-code): Remove. + (mixal-describe-operation-code): Make the arg non-optional. + Use the interactive spec instead. + Use mixal-operation-codes-alist rather than mixal-operation-codes. + (mixal-font-lock-keywords): Don't highlight comments here any more. + (mixal-font-lock-syntactic-keywords): New var. + (mixal-mode): Use it. Fix comment-start-skip. + 2005-10-12 Jan Dj,Ad(Brv * startup.el (command-line-x-option-alist): -nb => -nbi @@ -12,6 +25,16 @@ * desktop.el (desktop-load-file): Do nothing when FUNCTION is nil. +2005-10-11 Stefan Monnier + + * progmodes/mixal-mode.el: Sync with version in the GNU MDK project. + Try to fix up minor layout issues like indentation, line break, etc... + (mixal-mode-syntax-table): Don't try to specify comment syntax, + because it doesn't work. + (mixal-operation-codes): Add some more codes. + (mixal-font-lock-keywords): Process comments here. + (mixal-mode): mixasm no longer needs -g option. + 2005-10-11 Sven Joachim * progmodes/sh-script.el (sh-tmp-file): diff --git a/lisp/progmodes/mixal-mode.el b/lisp/progmodes/mixal-mode.el index 5134cf8292e..8c9359ae859 100644 --- a/lisp/progmodes/mixal-mode.el +++ b/lisp/progmodes/mixal-mode.el @@ -46,6 +46,14 @@ ;;; History: ;; Version 0.3: +;; 12/10/05: Stefan Monnier +;; Use font-lock-syntactic-keywords to detect/mark comments. +;; Use [^ \t\n]+ to match the operand part of a line. +;; Drop mixal-operation-codes. +;; Build the mixal-operation-codes-alist immediately. +;; Use `interactive' in mixal-describe-operation-code. +;; Remove useless ".*$" at the end of some regexps. +;; Fix the definition of comment-start-skip. ;; 08/10/05: sync mdk and emacs cvs ;; from emacs: compile-command and require-final-newline ;; from mdk: see version 0.2 @@ -79,10 +87,12 @@ ;;; Syntax table (defvar mixal-mode-syntax-table (let ((st (make-syntax-table))) - ;; (modify-syntax-entry ?* "<" st) we need to do a bit more to make - ;; (modify-syntax-entry ?\n ">" st) fontlocking for comments work + ;; We need to do a bit more to make fontlocking for comments work. + ;; See mixal-font-lock-syntactic-keywords. + ;; (modify-syntax-entry ?* "<" st) + (modify-syntax-entry ?\n ">" st) st) - "Syntax table for `dot-mode'.") + "Syntax table for `mixal-mode'.") (defvar mixal-font-lock-label-face 'font-lock-variable-name-face "Face name to use for label names. @@ -99,48 +109,10 @@ value.") Default value is that of `font-lock-builtin-face', but you can modify its value.") -(defvar mixal-operation-codes - '("NOP" "ADD" "FADD" "SUB" "FSUB" "MUL" "FMUL" "DIV" "FDIV" "NUM" "CHAR" - "HLT" "SLA" "SRA" "SLAX" "SRAX" "SLC" "SRC" "MOVE" "LDA" "LD1" "LD2" "LD3" - "LD4" "LD5" "LD6" "LDX" "LDAN" "LD1N" "LD2N" "LD3N" "LD4N" "LD5N" "LD6N" - "LDXN" "STA" "ST1" "ST2" "ST3" "ST4" "ST5" "ST6" "STX" "STJ" "STZ" "JBUS" - "IOC" "IN" "OUT" "JRAD" "JMP" "JSJ" "JOV" "JNOV" - "JL" "JE" "JG" "JGE" "JNE" "JLE" - "JAN" "J1N" "J2N" "J3N" "J4N" "J5N" "J6N" "JXN" - "JAZ" "J1Z" "J2Z" "J3Z" "J4Z" "J5Z" "J6Z" "JXZ" - "JAP" "J1P" "J2P" "J3P" "J4P" "J5P" "J6P" "JXP" - "JANN" "J1NN" "J2NN" "J3NN" "J4NN" "J5NN" "J6NN" "JXNN" - "JANZ" "J1NZ" "J2NZ" "J3NZ" "J4NZ" "J5NZ" "J6NZ" "JXNZ" - "JANP" "J1NP" "J2NP" "J3NP" "J4NP" "J5NP" "J6NP" "JXNP" - "INCA" "DECA" "ENTA" "ENNA" "INC1" "DEC1" "ENT1" "ENN1" - "INC2" "DEC2" "ENT2" "ENN2" "INC3" "DEC3" "ENT3" "ENN3" "INC4" "DEC4" - "ENT4" "ENN4" "INC5" "DEC5" "ENT5" "ENN5" "INC6" "DEC6" "ENT6" "ENN6" - "INCX" "DECX" "ENTX" "ENNX" "CMPA" "FCMP" "CMP1" "CMP2" "CMP3" "CMP4" - "CMP5" "CMP6" "CMPX") - "List of possible operation codes as strings.") -;; (makunbound 'mixal-operation-codes) - (defvar mixal-assembly-pseudoinstructions '("ORIG" "EQU" "CON" "ALF" "END") "List of possible assembly pseudoinstructions.") -;;; Font-locking: -(defvar mixal-font-lock-keywords - `(("^\\([A-Z0-9a-z]+\\).*$" - (1 mixal-font-lock-label-face)) - (,(regexp-opt mixal-operation-codes 'words) - . mixal-font-lock-operation-code-face) - (,(regexp-opt - mixal-assembly-pseudoinstructions 'words) - . mixal-font-lock-assembly-pseudoinstruction-face) - ("^[A-Z0-9a-z]*[ \t]+[A-ZO-9a-z]+[ \t]+\\(=.*=\\).*$" - (1 font-lock-constant-face)) - ("^[A-Z0-9a-z]*[ \t]+[A-Z0-9a-z]+[ \t]+[A-Z0-9a-z,():+-\\*=\" ]*\t+\\(.*\\)$" - (1 font-lock-comment-face)) - ("^\\*.*$" . font-lock-comment-face)) - "Keyword highlighting specification for `mixal-mode'.") -;; (makunbound 'mixal-font-lock-keywords) - ;;;; Compilation ;; Output from mixasm is compatible with default behavior of emacs, ;; I just added a key (C-cc) and modified the make-command. @@ -149,7 +121,954 @@ value.") ;; Tabs works well by default. ;;;; Describe -(defvar mixal-operation-codes-alist '() +(defvar mixal-operation-codes-alist + ;; FIXME: the codes FADD, FSUB, FMUL, FDIV, JRAD, and FCMP were in + ;; mixal-operation-codes but not here. They should probably be added here. + `((LDA loading "load A" 8 field + "Put in rA the contents of cell no. M. +Uses a + when there is no sign in subfield. Subfield is left padded with +zeros to make a word." + 2) + + (LDX loading "load X" 15 field + "Put in rX the contents of cell no. M. +Uses a + when there is no sign in subfield. Subfield is left padded with +zeros to make a word." + 2) + + (LD1 loading "load I1" ,(+ 8 1) field + "Put in rI1 the contents of cell no. M. +Uses a + when there is no sign in subfield. Subfield is left padded with +zeros to make a word. Index registers only have 2 bytes and a sign, Trying +to set anything more that that will result in undefined behavior." + 2) + + (LD2 loading "load I2" ,(+ 8 2) field + "Put in rI2 the contents of cell no. M. +Uses a + when there is no sign in subfield. Subfield is left padded with +zeros to make a word. Index registers only have 2 bytes and a sign, Trying +to set anything more that that will result in undefined behavior." + 2) + + (LD3 loading "load I3" ,(+ 8 3) field + "Put in rI3 the contents of cell no. M. +Uses a + when there is no sign in subfield. Subfield is left padded with +zeros to make a word. Index registers only have 2 bytes and a sign, Trying +to set anything more that that will result in undefined behavior." + 2) + + (LD4 loading "load I4" ,(+ 8 4) field + "Put in rI4 the contents of cell no. M. +Uses a + when there is no sign in subfield. Subfield is left padded with +zeros to make a word. Index registers only have 2 bytes and a sign, Trying +to set anything more that that will result in undefined behavior." + 2) + + (LD5 loading "load I5" ,(+ 8 5) field + "Put in rI5 the contents of cell no. M. +Uses a + when there is no sign in subfield. Subfield is left padded with +zeros to make a word. Index registers only have 2 bytes and a sign, Trying +to set anything more that that will result in undefined behavior." + 2) + + (LD6 loading "load I6" ,(+ 8 6) field + "Put in rI6 the contents of cell no. M. +Uses a + when there is no sign in subfield. Subfield is left padded with +zeros to make a word. Index registers only have 2 bytes and a sign, Trying +to set anything more that that will result in undefined behavior." + 2) + + (LDAN loading "load A negative" 16 field + "Put in rA the contents of cell no. M, with opposite sign. +Uses a + when there is no sign in subfield, otherwise use the opposite sign. +Subfield is left padded with zeros to make a word." + 2) + + (LDXN loading "load X negative" 23 field + "Put in rX the contents of cell no. M, with opposite sign. +Uses a + when there is no sign in subfield, otherwise use the opposite sign. +Subfield is left padded with zeros to make a word." + 2) + + (LD1N loading "load I1 negative" ,(+ 16 1) field + "Put in rI1 the contents of cell no. M, with opposite sign. +Uses a + when there is no sign in subfield, otherwise use the opposite sign. +Subfield is left padded with zeros to make a word. Index registers only +have 2 bytes and a sign, Trying to set anything more that that will result +in undefined behavior." + 2) + + (LD2N loading "load I2 negative" ,(+ 16 2) field + "Put in rI2 the contents of cell no. M, with opposite sign. +Uses a + when there is no sign in subfield, otherwise use the opposite sign. +Subfield is left padded with zeros to make a word. Index registers only +have 2 bytes and a sign, Trying to set anything more that that will result +in undefined behavior." + 2) + + (LD3N loading "load I3 negative" ,(+ 16 3) field + "Put in rI3 the contents of cell no. M, with opposite sign. +Uses a + when there is no sign in subfield, otherwise use the opposite sign. +Subfield is left padded with zeros to make a word. Index registers only +have 2 bytes and a sign, Trying to set anything more that that will result +in undefined behavior." + 2) + + (LD4N loading "load I4 negative" ,(+ 16 4) field + "Put in rI4 the contents of cell no. M, with opposite sign. +Uses a + when there is no sign in subfield, otherwise use the opposite sign. +Subfield is left padded with zeros to make a word. Index registers only +have 2 bytes and a sign, Trying to set anything more that that will result +in undefined behavior." + 2) + + (LD5N loading "load I5 negative" ,(+ 16 5) field + "Put in rI5 the contents of cell no. M, with opposite sign. +Uses a + when there is no sign in subfield, otherwise use the opposite sign. +Subfield is left padded with zeros to make a word. Index registers only +have 2 bytes and a sign, Trying to set anything more that that will result +in undefined behavior." + 2) + + (LD6N loading "load I6 negative" ,(+ 16 6) field + "Put in rI6 the contents of cell no. M, with opposite sign. +Uses a + when there is no sign in subfield, otherwise use the opposite sign. +Subfield is left padded with zeros to make a word. Index registers only +have 2 bytes and a sign, Trying to set anything more that that will result +in undefined behavior." + 2) + + (STA storing "store A" 24 field + "Store in cell Nr. M the contents of rA. +The modification of the operation code represents the subfield of the +memory cell that is to be overwritten with bytes from a register. These +bytes are taken beginning by the rightmost side of the register. The +sign of the memory cell is not changed, unless it is part of the subfield." + 2) + + (STX storing "store X" 31 field + "Store in cell Nr. M the contents of rX. +The modification of the operation code represents the subfield of the +memory cell that is to be overwritten with bytes from a register. These +bytes are taken beginning by the rightmost side of the register. The +sign of the memory cell is not changed, unless it is part of the subfield." + 2) + + (ST1 storing "store I1" ,(+ 24 1) field + "Store in cell Nr. M the contents of rI1. +The modification of the operation code represents the subfield of the +memory cell that is to be overwritten with bytes from a register. These +bytes are taken beginning by the rightmost side of the register. The +sign of the memory cell is not changed, unless it is part of the subfield. +Because index registers only have 2 bytes and a sign, the rest of the bytes +are assumed to be 0." + 2) + + (ST2 storing "store I2" ,(+ 24 2) field + "Store in cell Nr. M the contents of rI2. +The modification of the operation code represents the subfield of the +memory cell that is to be overwritten with bytes from a register. These +bytes are taken beginning by the rightmost side of the register. The +sign of the memory cell is not changed, unless it is part of the subfield. +Because index registers only have 2 bytes and a sign, the rest of the bytes +are assumed to be 0." + 2) + + (ST3 storing "store I3" ,(+ 24 3) field + "Store in cell Nr. M the contents of rI3. +The modification of the operation code represents the subfield of the +memory cell that is to be overwritten with bytes from a register. These +bytes are taken beginning by the rightmost side of the register. The +sign of the memory cell is not changed, unless it is part of the subfield. +Because index registers only have 2 bytes and a sign, the rest of the bytes +are assumed to be 0." + 2) + + (ST4 storing "store I4" ,(+ 24 4) field + "Store in cell Nr. M the contents of rI4. +The modification of the operation code represents the subfield of the +memory cell that is to be overwritten with bytes from a register. These +bytes are taken beginning by the rightmost side of the register. The +sign of the memory cell is not changed, unless it is part of the subfield. +Because index registers only have 2 bytes and a sign, the rest of the bytes +are assumed to be 0." + 2) + + (ST5 storing "store I5" ,(+ 24 5) field + "Store in cell Nr. M the contents of rI5. +The modification of the operation code represents the subfield of the +memory cell that is to be overwritten with bytes from a register. These +bytes are taken beginning by the rightmost side of the register. The +sign of the memory cell is not changed, unless it is part of the subfield. +Because index registers only have 2 bytes and a sign, the rest of the bytes +are assumed to be 0." + 2) + + (ST6 storing "store I6" ,(+ 24 6) field + "Store in cell Nr. M the contents of rI6. +The modification of the operation code represents the subfield of the +memory cell that is to be overwritten with bytes from a register. These +bytes are taken beginning by the rightmost side of the register. The +sign of the memory cell is not changed, unless it is part of the subfield. +Because index registers only have 2 bytes and a sign, the rest of the bytes +are assumed to be 0." + 2) + + (STJ storing "store J" 32 field + "Store in cell Nr. M the contents of rJ. +The modification of the operation code represents the subfield of the +memory cell that is to be overwritten with bytes from a register. These +bytes are taken beginning by the rightmost side of the register. The sign +of rJ is always +, sign of the memory cell is not changed, unless it is +part of the subfield. The default field for STJ is (0:2)." + 2) + + (STZ storing "store zero" 33 field + "Store in cell Nr. M '+ 0'. +The modification of the operation code represents the subfield of the +memory cell that is to be overwritten with zeros." + 2) + + (ADD arithmetic "add" 1 field + "Add to A the contents of cell Nr. M. +Subfield is padded with zero to make a word. +If the result is to large, the operation result modulo 1,073,741,823 (the +maximum value storable in a MIX word) is stored in `rA', and the overflow +toggle is set to TRUE." + 2) + + (SUB arithmetic "subtract" 2 field + "Subtract to A the contents of cell Nr. M. +Subfield is padded with zero to make a word. +If the result is to large, the operation result modulo 1,073,741,823 (the +maximum value storable in a MIX word) is stored in `rA', and the overflow +toggle is set to TRUE." + 2) + + (MUL arithmetic "multiply" 3 field + "Multiplies the contents of cell Nr. M with A, result is 10 bytes and stored in rA and rX. +The sign is + if the sign of rA and cell M where the same, otherwise, it is -" + 10) + + (DIV arithmetic "divide" 4 field + "Both rA and rX are taken together and divided by cell Nr. M, quotient is placed in rA, remainder in rX. +The sign is taken from rA, and after the divide the sign of rA is set to + when +both the sign of rA and M where the same. Divide by zero and overflow of rA +result in undefined behavior." + 12) + + (ENTA address-transfer "enter A" 48 + "Literal value is stored in rA. +Indexed, stores value of index in rA." + 1) + + (ENTX address-transfer "enter X" 55 + "Literal value is stored in rX. +Indexed, stores value of index in rX." + 1) + + (ENT1 address-transfer "Enter rI1" ,(+ 48 1) + "Literal value is stored in rI1. +Indexed, stores value of index in rI1." + 1) + + (ENT2 address-transfer "Enter rI2" ,(+ 48 2) + "Literal value is stored in rI2. +Indexed, stores value of index in rI2." + 1) + + (ENT3 address-transfer "Enter rI3" ,(+ 48 3) + "Literal value is stored in rI3. +Indexed, stores value of index in rI3." + 1) + + (ENT4 address-transfer "Enter rI4" ,(+ 48 4) + "Literal value is stored in rI4. +Indexed, stores value of index in rI4." + 1) + + (ENT5 address-transfer "Enter rI5" ,(+ 48 5) + "Literal value is stored in rI5. +Indexed, stores value of index in rI5." + 1) + + (ENT6 address-transfer "Enter rI6" ,(+ 48 6) + "Literal value is stored in rI6. +Indexed, stores value of index in rI6." + 1) + + (ENNA address-transfer "enter negative A" 48 + "Literal value is stored in rA with opposite sign. +Indexed, stores value of index in rA with opposite sign." + 1) + + (ENNX address-transfer "enter negative X" 55 + "Literal value is stored in rX with opposite sign. +Indexed, stores value of index in rX with opposite sign." + 1) + + (ENN1 address-transfer "Enter negative rI1" ,(+ 48 1) + "Literal value is stored in rI1 with opposite sign. +Indexed, stores value of index in rI1 with opposite sign." + 1) + + (ENN2 address-transfer "Enter negative rI2" ,(+ 48 2) + "Literal value is stored in rI2 with opposite sign. +Indexed, stores value of index in rI2 with opposite sign." + 1) + + (ENN3 address-transfer "Enter negative rI3" ,(+ 48 3) + "Literal value is stored in rI3 with opposite sign. +Indexed, stores value of index in rI3 with opposite sign." + 1) + + (ENN4 address-transfer "Enter negative rI4" ,(+ 48 4) + "Literal value is stored in rI4 with opposite sign. +Indexed, stores value of index in rI4 with opposite sign." + 1) + + (ENN5 address-transfer "Enter negative rI5" ,(+ 48 5) + "Literal value is stored in rI5 with opposite sign. +Indexed, stores value of index in rI5 with opposite sign." + 1) + + (ENN6 address-transfer "Enter negative rI6" ,(+ 48 6) + "Literal value is stored in rI6 with opposite sign. +Indexed, stores value of index in rI6 with opposite sign." + 1) + + (INCA address-transfer "increase A" 48 + "Increase register A with the literal value of M. +On overflow the overflow toggle is set." + 1) + + (INCX address-transfer "increase X" 55 + "Increase register X with the literal value of M. +On overflow the overflow toggle is set." + 1) + + (INC1 address-transfer "increase I1" ,(+ 48 1) + "Increase register I1 with the literal value of M. +The result is undefined when the result does not fit in +2 bytes." + 1) + + (INC2 address-transfer "increase I2" ,(+ 48 2) + "Increase register I2 with the literal value of M. +The result is undefined when the result does not fit in +2 bytes." + 1) + + (INC3 address-transfer "increase I3" ,(+ 48 3) + "Increase register I3 with the literal value of M. +The result is undefined when the result does not fit in +2 bytes." + 1) + + (INC4 address-transfer "increase I4" ,(+ 48 4) + "Increase register I4 with the literal value of M. +The result is undefined when the result does not fit in +2 bytes." + 1) + + (INC5 address-transfer "increase I5" ,(+ 48 5) + "Increase register I5 with the literal value of M. +The result is undefined when the result does not fit in +2 bytes." + 1) + + (INC6 address-transfer "increase I6" ,(+ 48 6) + "Increase register I6 with the literal value of M. +The result is undefined when the result does not fit in +2 bytes." + 1) + + (DECA address-transfer "decrease A" 48 + "Decrease register A with the literal value of M. +On overflow the overflow toggle is set." + 1) + + (DECX address-transfer "decrease X" 55 + "Decrease register X with the literal value of M. +On overflow the overflow toggle is set." + 1) + + (DEC1 address-transfer "decrease I1" ,(+ 48 1) + "Decrease register I1 with the literal value of M. +The result is undefined when the result does not fit in +2 bytes." + 1) + + (DEC2 address-transfer "decrease I2" ,(+ 48 2) + "Decrease register I2 with the literal value of M. +The result is undefined when the result does not fit in +2 bytes." + 1) + + (DEC3 address-transfer "decrease I3" ,(+ 48 3) + "Decrease register I3 with the literal value of M. +The result is undefined when the result does not fit in +2 bytes." + 1) + + (DEC4 address-transfer "decrease I4" ,(+ 48 4) + "Decrease register I4 with the literal value of M. +The result is undefined when the result does not fit in +2 bytes." + 1) + + (DEC5 address-transfer "decrease I5" ,(+ 48 5) + "Decrease register I5 with the literal value of M. +The result is undefined when the result does not fit in +2 bytes." + 1) + + (DEC6 address-transfer "decrease I6" ,(+ 48 6) + "Decrease register I6 with the literal value of M. +The result is undefined when the result does not fit in +2 bytes." + 1) + + (CMPA comparison "compare A" 56 field + "Compare contents of A with contents of M. +The field specifier works on both fields. The comparison indicator +is set to LESS, EQUAL or GREATER depending on the outcome." + 2) + + + (CMPX comparison "compare X" 63 field + "Compare contents of rX with contents of M. +The field specifier works on both fields. The comparison indicator +is set to LESS, EQUAL or GREATER depending on the outcome." + 2) + + + (CMP1 comparison "compare I1" ,(+ 56 1) field + "Compare contents of rI1 with contents of M. +The field specifier works on both fields. The comparison indicator +is set to LESS, EQUAL or GREATER depending on the outcome. Bit 1,2 and 3 +have a value of 0." + 2) + + + (CMP2 comparison "compare I2" ,(+ 56 2) field + "Compare contents of rI2 with contents of M. +The field specifier works on both fields. The comparison indicator +is set to LESS, EQUAL or GREATER depending on the outcome. Bit 1,2 and 3 +have a value of 0." + 2) + + + (CMP3 comparison "compare I3" ,(+ 56 3) field + "Compare contents of rI3 with contents of M. +The field specifier works on both fields. The comparison indicator +is set to LESS, EQUAL or GREATER depending on the outcome. Bit 1,2 and 3 +have a value of 0." + 2) + + + (CMP4 comparison "compare I4" ,(+ 56 4) field + "Compare contents of rI4 with contents of M. +The field specifier works on both fields. The comparison indicator +is set to LESS, EQUAL or GREATER depending on the outcome. Bit 1,2 and 3 +have a value of 0." + 2) + + + (CMP5 comparison "compare I5" ,(+ 56 5) field + "Compare contents of rI5 with contents of M. +The field specifier works on both fields. The comparison indicator +is set to LESS, EQUAL or GREATER depending on the outcome. Bit 1,2 and 3 +have a value of 0." + 2) + + + (CMP6 comparison "compare I6" ,(+ 56 6) field + "Compare contents of rI6 with contents of M. +The field specifier works on both fields. The comparison indicator +is set to LESS, EQUAL or GREATER depending on the outcome. Bit 1,2 and 3 +have a value of 0." + 2) + + (JMP jump "jump" 39 + "Unconditional jump. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (JSJ jump "jump, save J" 39 + "Unconditional jump, but rJ is not modified." + 1) + + (JOV jump "jump on overflow" 39 + "Jump if OV is set (and turn it off). +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (JNOV jump "Jump on no overflow" 39 + "Jump if OV is not set (and turn it off). +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (JL jump "Jump on less" 39 + "Jump if '[CM] = L'. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + + (JE jump "Jump on equal" 39 + "Jump if '[CM] = E'. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + + (JG jump "Jump on greater" 39 + "Jump if '[CM] = G'. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + + (JGE jump "Jump on not less" 39 + "Jump if '[CM]' does not equal 'L'. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + + (JNE jump "Jump on not equal" 39 + "Jump if '[CM]' does not equal 'E'. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + + (JLE jump "Jump on not greater" 39 + "Jump if '[CM]' does not equal 'G'. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (JAN jump "jump A negative" 40 + "Jump if the content of rA is negative. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + + (JAZ jump "jump A zero" 40 + "Jump if the content of rA is zero. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + + (JAP jump "jump A positive" 40 + "Jump if the content of rA is positive. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + + (JANN jump "jump A non-negative" 40 + "Jump if the content of rA is non-negative. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + + (JANZ jump "jump A non-zero" 40 + "Jump if the content of rA is non-zero. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + + (JANP jump "jump A non-positive" 40 + "Jump if the content of rA is non-positive. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (JXN jump "jump X negative" 47 + "Jump if the content of rX is negative. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + + (JXZ jump "jump X zero" 47 + "Jump if the content of rX is zero. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + + (JXP jump "jump X positive" 47 + "Jump if the content of rX is positive. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + + (JXNN jump "jump X non-negative" 47 + "Jump if the content of rX is non-negative. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + + (JXNZ jump "jump X non-zero" 47 + "Jump if the content of rX is non-zero. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + + (JXNP jump "jump X non-positive" 47 + "Jump if the content of rX is non-positive. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (J1N jump "jump I1 negative" ,(+ 40 1) + "Jump if the content of rI1 is negative. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + + (J1Z jump "jump I1 zero" ,(+ 40 1) + "Jump if the content of rI1 is zero. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + + (J1P jump "jump I1 positive" ,(+ 40 1) + "Jump if the content of rI1 is positive. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + + (J1NN jump "jump I1 non-negative" ,(+ 40 1) + "Jump if the content of rI1 is non-negative. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + + (J1NZ jump "jump I1 non-zero" ,(+ 40 1) + "Jump if the content of rI1 is non-zero. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + + (J1NP jump "jump I1 non-positive" ,(+ 40 1) + "Jump if the content of rI1 is non-positive. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (J2N jump "jump I2 negative" ,(+ 40 1) + "Jump if the content of rI2 is negative. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + + (J2Z jump "jump I2 zero" ,(+ 40 1) + "Jump if the content of rI2 is zero. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + + (J2P jump "jump I2 positive" ,(+ 40 1) + "Jump if the content of rI2 is positive. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + + (J2NN jump "jump I2 non-negative" ,(+ 40 1) + "Jump if the content of rI2 is non-negative. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + + (J2NZ jump "jump I2 non-zero" ,(+ 40 1) + "Jump if the content of rI2 is non-zero. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + + (J2NP jump "jump I2 non-positive" ,(+ 40 1) + "Jump if the content of rI2 is non-positive. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + + (J3N jump "jump I3 negative" ,(+ 40 1) + "Jump if the content of rI3 is negative. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + + (J3Z jump "jump I3 zero" ,(+ 40 1) + "Jump if the content of rI3 is zero. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + + (J3P jump "jump I3 positive" ,(+ 40 1) + "Jump if the content of rI3 is positive. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + + (J3NN jump "jump I3 non-negative" ,(+ 40 1) + "Jump if the content of rI3 is non-negative. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + + (J3NZ jump "jump I3 non-zero" ,(+ 40 1) + "Jump if the content of rI3 is non-zero. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + + (J3NP jump "jump I3 non-positive" ,(+ 40 1) + "Jump if the content of rI3 is non-positive. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + + (J4N jump "jump I4 negative" ,(+ 40 1) + "Jump if the content of rI4 is negative. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + + (J4Z jump "jump I4 zero" ,(+ 40 1) + "Jump if the content of rI4 is zero. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + + (J4P jump "jump I4 positive" ,(+ 40 1) + "Jump if the content of rI4 is positive. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + + (J4NN jump "jump I4 non-negative" ,(+ 40 1) + "Jump if the content of rI4 is non-negative. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + + (J4NZ jump "jump I4 non-zero" ,(+ 40 1) + "Jump if the content of rI4 is non-zero. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + + (J4NP jump "jump I4 non-positive" ,(+ 40 1) + "Jump if the content of rI4 is non-positive. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + + (J5N jump "jump I5 negative" ,(+ 40 1) + "Jump if the content of rI5 is negative. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + + (J5Z jump "jump I5 zero" ,(+ 40 1) + "Jump if the content of rI5 is zero. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + + (J5P jump "jump I5 positive" ,(+ 40 1) + "Jump if the content of rI5 is positive. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + + (J5NN jump "jump I5 non-negative" ,(+ 40 1) + "Jump if the content of rI5 is non-negative. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + + (J5NZ jump "jump I5 non-zero" ,(+ 40 1) + "Jump if the content of rI5 is non-zero. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + + (J5NP jump "jump I5 non-positive" ,(+ 40 1) + "Jump if the content of rI5 is non-positive. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + + (J6N jump "jump I6 negative" ,(+ 40 1) + "Jump if the content of rI6 is negative. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + + (J6Z jump "jump I6 zero" ,(+ 40 1) + "Jump if the content of rI6 is zero. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + + (J6P jump "jump I6 positive" ,(+ 40 1) + "Jump if the content of rI6 is positive. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + + (J6NN jump "jump I6 non-negative" ,(+ 40 1) + "Jump if the content of rI6 is non-negative. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + + (J6NZ jump "jump I6 non-zero" ,(+ 40 1) + "Jump if the content of rI6 is non-zero. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + + (J6NP jump "jump I6 non-positive" ,(+ 40 1) + "Jump if the content of rI6 is non-positive. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (SLA miscellaneous "shift left A" 6 + "Shift to A, M bytes left. +Hero's will be added to the right." + 2) + + + (SRA miscellaneous "shift right A" 6 + "Shift to A, M bytes right. +Zeros will be added to the left." + 2) + + + (SLAX miscellaneous "shift left AX" 6 + "Shift AX, M bytes left. +Zeros will be added to the right." + 2) + + + + (SRAX miscellaneous "shift right AX" 6 + "Shift AX, M bytes right. +Zeros will be added to the left." + 2) + + + (SLC miscellaneous "shift left AX circularly" 6 + "Shift AX, M bytes left circularly. +The bytes that fall off to the left will be added to the right." + 2) + + + (SRC miscellaneous "shift right AX circularly" 6 + "Shift AX, M bytes right circularly. +The bytes that fall off to the right will be added to the left." + 2) + + (MOVE miscellaneous "move" 7 number + "Move MOD words from M to the location stored in rI1." + (+ 1 (* 2 number))) + + (NOP miscellaneous "no operation" 0 ignored + "No operation, M and F are not used by the machine." + 1) + + (HLT miscellaneous "halt" 5 + "Halt. +Stop instruction fetching." + 1) + + (IN input-output "input" 36 unit + "Transfer a block of words from the specified unit to memory. +The transfer starts at address M." + 1) + + (OUT input-output "output" 37 unit + "Transfer a block of words from memory. +The transfer starts at address M to the specified unit." + 1) + + (IOC input-output "input-output control" 35 unit + "Perform a control operation. +The control operation is given by M on the specified unit." + 1) + + (JRED input-output "jump ready" 38 unit + "Jump to M if the specified unit is ready." + 1) + + + (JBUS input-output "jump busy" 34 unit + "Jump to M if the specified unit is busy." + 1) + + (NUM conversion "convert to numeric" 5 + "Convert rAX to its numerical value and store it in rA. +the register rAX is assumed to contain a character representation of +a number." + 10) + + (CHAR conversion "convert to characters" 5 + "Convert the number stored in rA to a character representation. +The converted character representation is stored in rAX." + 10)) + "Alist that contains all the possible operation codes for mix. Each elt has the form (OP-CODE GROUP FULL-NAME C-BYTE F-BYTE DESCRIPTION EXECUTION-TIME) @@ -162,1114 +1081,36 @@ DESCRIPTION contains an string with a description about the operation code and EXECUTION-TIME holds info about the time it takes, number or string.") ;; (makunbound 'mixal-operation-codes-alist) -(defun mixal-add-operation-code (op-code group full-name C-byte F-byte - description execution-time) - "Add an operation code to `mixal-operation-codes-alist'." - (setq mixal-operation-codes-alist - (cons (list op-code group full-name C-byte F-byte - description execution-time) - mixal-operation-codes-alist))) -;; now add each operation code - -(mixal-add-operation-code - 'LDA 'loading "load A" 8 'field - "Put in rA the contents of cell no. M. -Uses a + when there is no sign in subfield. Subfield is left padded with -zeros to make a word." - 2) - -(mixal-add-operation-code - 'LDX 'loading "load X" 15 'field - "Put in rX the contents of cell no. M. -Uses a + when there is no sign in subfield. Subfield is left padded with -zeros to make a word." - 2) - -(mixal-add-operation-code - 'LD1 'loading "load I1" (+ 8 1) 'field - "Put in rI1 the contents of cell no. M. -Uses a + when there is no sign in subfield. Subfield is left padded with -zeros to make a word. Index registers only have 2 bytes and a sign, Trying -to set anything more that that will result in undefined behavior." - 2) - -(mixal-add-operation-code - 'LD2 'loading "load I2" (+ 8 2) 'field - "Put in rI2 the contents of cell no. M. -Uses a + when there is no sign in subfield. Subfield is left padded with -zeros to make a word. Index registers only have 2 bytes and a sign, Trying -to set anything more that that will result in undefined behavior." - 2) - -(mixal-add-operation-code - 'LD3 'loading "load I3" (+ 8 3) 'field - "Put in rI3 the contents of cell no. M. -Uses a + when there is no sign in subfield. Subfield is left padded with -zeros to make a word. Index registers only have 2 bytes and a sign, Trying -to set anything more that that will result in undefined behavior." - 2) - -(mixal-add-operation-code - 'LD4 'loading "load I4" (+ 8 4) 'field - "Put in rI4 the contents of cell no. M. -Uses a + when there is no sign in subfield. Subfield is left padded with -zeros to make a word. Index registers only have 2 bytes and a sign, Trying -to set anything more that that will result in undefined behavior." - 2) - -(mixal-add-operation-code - 'LD5 'loading "load I5" (+ 8 5) 'field - "Put in rI5 the contents of cell no. M. -Uses a + when there is no sign in subfield. Subfield is left padded with -zeros to make a word. Index registers only have 2 bytes and a sign, Trying -to set anything more that that will result in undefined behavior." - 2) - -(mixal-add-operation-code - 'LD6 'loading "load I6" (+ 8 6) 'field - "Put in rI6 the contents of cell no. M. -Uses a + when there is no sign in subfield. Subfield is left padded with -zeros to make a word. Index registers only have 2 bytes and a sign, Trying -to set anything more that that will result in undefined behavior." - 2) - -(mixal-add-operation-code - 'LDAN 'loading "load A negative" 16 'field - "Put in rA the contents of cell no. M, with opposite sign. -Uses a + when there is no sign in subfield, otherwise use the opposite sign. -Subfield is left padded with zeros to make a word." - 2) - -(mixal-add-operation-code - 'LDXN 'loading "load X negative" 23 'field - "Put in rX the contents of cell no. M, with opposite sign. -Uses a + when there is no sign in subfield, otherwise use the opposite sign. -Subfield is left padded with zeros to make a word." - 2) - -(mixal-add-operation-code - 'LD1N 'loading "load I1 negative" (+ 16 1) 'field - "Put in rI1 the contents of cell no. M, with opposite sign. -Uses a + when there is no sign in subfield, otherwise use the opposite sign. -Subfield is left padded with zeros to make a word. Index registers only -have 2 bytes and a sign, Trying to set anything more that that will result -in undefined behavior." - 2) - -(mixal-add-operation-code - 'LD2N 'loading "load I2 negative" (+ 16 2) 'field - "Put in rI2 the contents of cell no. M, with opposite sign. -Uses a + when there is no sign in subfield, otherwise use the opposite sign. -Subfield is left padded with zeros to make a word. Index registers only -have 2 bytes and a sign, Trying to set anything more that that will result -in undefined behavior." - 2) - -(mixal-add-operation-code - 'LD3N 'loading "load I3 negative" (+ 16 3) 'field - "Put in rI3 the contents of cell no. M, with opposite sign. -Uses a + when there is no sign in subfield, otherwise use the opposite sign. -Subfield is left padded with zeros to make a word. Index registers only -have 2 bytes and a sign, Trying to set anything more that that will result -in undefined behavior." - 2) - -(mixal-add-operation-code - 'LD4N 'loading "load I4 negative" (+ 16 4) 'field - "Put in rI4 the contents of cell no. M, with opposite sign. -Uses a + when there is no sign in subfield, otherwise use the opposite sign. -Subfield is left padded with zeros to make a word. Index registers only -have 2 bytes and a sign, Trying to set anything more that that will result -in undefined behavior." - 2) - -(mixal-add-operation-code - 'LD5N 'loading "load I5 negative" (+ 16 5) 'field - "Put in rI5 the contents of cell no. M, with opposite sign. -Uses a + when there is no sign in subfield, otherwise use the opposite sign. -Subfield is left padded with zeros to make a word. Index registers only -have 2 bytes and a sign, Trying to set anything more that that will result -in undefined behavior." - 2) - -(mixal-add-operation-code - 'LD6N 'loading "load I6 negative" (+ 16 6) 'field - "Put in rI6 the contents of cell no. M, with opposite sign. -Uses a + when there is no sign in subfield, otherwise use the opposite sign. -Subfield is left padded with zeros to make a word. Index registers only -have 2 bytes and a sign, Trying to set anything more that that will result -in undefined behavior." - 2) - -(mixal-add-operation-code - 'STA 'storing "store A" 24 'field - "Store in cell Nr. M the contents of rA. -The modification of the operation code represents the subfield of the -memory cell that is to be overwritten with bytes from a register. These -bytes are taken beginning by the rightmost side of the register. The -sign of the memory cell is not changed, unless it is part of the subfield." - 2) - -(mixal-add-operation-code - 'STX 'storing "store X" 31 'field - "Store in cell Nr. M the contents of rX. -The modification of the operation code represents the subfield of the -memory cell that is to be overwritten with bytes from a register. These -bytes are taken beginning by the rightmost side of the register. The -sign of the memory cell is not changed, unless it is part of the subfield." - 2) - -(mixal-add-operation-code - 'ST1 'storing "store I1" (+ 24 1) 'field - "Store in cell Nr. M the contents of rI1. -The modification of the operation code represents the subfield of the -memory cell that is to be overwritten with bytes from a register. These -bytes are taken beginning by the rightmost side of the register. The -sign of the memory cell is not changed, unless it is part of the subfield. -Because index registers only have 2 bytes and a sign, the rest of the bytes -are assumed to be 0." - 2) - -(mixal-add-operation-code - 'ST2 'storing "store I2" (+ 24 2) 'field - "Store in cell Nr. M the contents of rI2. -The modification of the operation code represents the subfield of the -memory cell that is to be overwritten with bytes from a register. These -bytes are taken beginning by the rightmost side of the register. The -sign of the memory cell is not changed, unless it is part of the subfield. -Because index registers only have 2 bytes and a sign, the rest of the bytes -are assumed to be 0." - 2) - -(mixal-add-operation-code - 'ST3 'storing "store I3" (+ 24 3) 'field - "Store in cell Nr. M the contents of rI3. -The modification of the operation code represents the subfield of the -memory cell that is to be overwritten with bytes from a register. These -bytes are taken beginning by the rightmost side of the register. The -sign of the memory cell is not changed, unless it is part of the subfield. -Because index registers only have 2 bytes and a sign, the rest of the bytes -are assumed to be 0." - 2) - -(mixal-add-operation-code - 'ST4 'storing "store I4" (+ 24 4) 'field - "Store in cell Nr. M the contents of rI4. -The modification of the operation code represents the subfield of the -memory cell that is to be overwritten with bytes from a register. These -bytes are taken beginning by the rightmost side of the register. The -sign of the memory cell is not changed, unless it is part of the subfield. -Because index registers only have 2 bytes and a sign, the rest of the bytes -are assumed to be 0." - 2) - -(mixal-add-operation-code - 'ST5 'storing "store I5" (+ 24 5) 'field - "Store in cell Nr. M the contents of rI5. -The modification of the operation code represents the subfield of the -memory cell that is to be overwritten with bytes from a register. These -bytes are taken beginning by the rightmost side of the register. The -sign of the memory cell is not changed, unless it is part of the subfield. -Because index registers only have 2 bytes and a sign, the rest of the bytes -are assumed to be 0." - 2) - -(mixal-add-operation-code - 'ST6 'storing "store I6" (+ 24 6) 'field - "Store in cell Nr. M the contents of rI6. -The modification of the operation code represents the subfield of the -memory cell that is to be overwritten with bytes from a register. These -bytes are taken beginning by the rightmost side of the register. The -sign of the memory cell is not changed, unless it is part of the subfield. -Because index registers only have 2 bytes and a sign, the rest of the bytes -are assumed to be 0." - 2) - -(mixal-add-operation-code - 'STJ 'storing "store J" 32 'field - "Store in cell Nr. M the contents of rJ. -The modification of the operation code represents the subfield of the -memory cell that is to be overwritten with bytes from a register. These -bytes are taken beginning by the rightmost side of the register. The sign -of rJ is always +, sign of the memory cell is not changed, unless it is -part of the subfield. The default field for STJ is (0:2)." - 2) - -(mixal-add-operation-code - 'STZ 'storing "store zero" 33 'field - "Store in cell Nr. M '+ 0'. -The modification of the operation code represents the subfield of the -memory cell that is to be overwritten with zeros." - 2) - -(mixal-add-operation-code - 'ADD 'arithmetic "add" 1 'field - "Add to A the contents of cell Nr. M. -Subfield is padded with zero to make a word. -If the result is to large, the operation result modulo 1,073,741,823 (the -maximum value storable in a MIX word) is stored in `rA', and the overflow -toggle is set to TRUE." - 2) - -(mixal-add-operation-code - 'SUB 'arithmetic "subtract" 2 'field - "Subtract to A the contents of cell Nr. M. -Subfield is padded with zero to make a word. -If the result is to large, the operation result modulo 1,073,741,823 (the -maximum value storable in a MIX word) is stored in `rA', and the overflow -toggle is set to TRUE." - 2) - -(mixal-add-operation-code - 'MUL 'arithmetic "multiply" 3 'field - "Multiplies the contents of cell Nr. M with A, result is 10 bytes and stored in rA and rX. -The sign is + if the sign of rA and cell M where the same, otherwise, it is -" - 10) - -(mixal-add-operation-code - 'DIV 'arithmetic "divide" 4 'field - "Both rA and rX are taken together and divided by cell Nr. M, quotient is placed in rA, remainder in rX. -The sign is taken from rA, and after the divide the sign of rA is set to + when -both the sign of rA and M where the same. Divide by zero and overflow of rA result -in undefined behavior." - 12) - -(mixal-add-operation-code - 'ENTA 'address-transfer "enter A" 48 2 - "Literal value is stored in rA. -Indexed, stores value of index in rA." - 1) - -(mixal-add-operation-code - 'ENTX 'address-transfer "enter X" 55 2 - "Literal value is stored in rX. -Indexed, stores value of index in rX." - 1) - -(mixal-add-operation-code - 'ENT1 'address-transfer "Enter rI1" (+ 48 1) 2 - "Literal value is stored in rI1. -Indexed, stores value of index in rI1." - 1) - -(mixal-add-operation-code - 'ENT2 'address-transfer "Enter rI2" (+ 48 2) 2 - "Literal value is stored in rI2. -Indexed, stores value of index in rI2." - 1) - -(mixal-add-operation-code - 'ENT3 'address-transfer "Enter rI3" (+ 48 3) 2 - "Literal value is stored in rI3. -Indexed, stores value of index in rI3." - 1) - -(mixal-add-operation-code - 'ENT4 'address-transfer "Enter rI4" (+ 48 4) 2 - "Literal value is stored in rI4. -Indexed, stores value of index in rI4." - 1) - -(mixal-add-operation-code - 'ENT5 'address-transfer "Enter rI5" (+ 48 5) 2 - "Literal value is stored in rI5. -Indexed, stores value of index in rI5." - 1) - -(mixal-add-operation-code - 'ENT6 'address-transfer "Enter rI6" (+ 48 6) 2 - "Literal value is stored in rI6. -Indexed, stores value of index in rI6." - 1) - -(mixal-add-operation-code - 'ENNA 'address-transfer "enter negative A" 48 3 - "Literal value is stored in rA with opposite sign. -Indexed, stores value of index in rA with opposite sign." - 1) - -(mixal-add-operation-code - 'ENNX 'address-transfer "enter negative X" 55 3 - "Literal value is stored in rX with opposite sign. -Indexed, stores value of index in rX with opposite sign." - 1) - -(mixal-add-operation-code - 'ENN1 'address-transfer "Enter negative rI1" (+ 48 1) 3 - "Literal value is stored in rI1 with opposite sign. -Indexed, stores value of index in rI1 with opposite sign." - 1) - -(mixal-add-operation-code - 'ENN2 'address-transfer "Enter negative rI2" (+ 48 2) 3 - "Literal value is stored in rI2 with opposite sign. -Indexed, stores value of index in rI2 with opposite sign." - 1) - -(mixal-add-operation-code - 'ENN3 'address-transfer "Enter negative rI3" (+ 48 3) 3 - "Literal value is stored in rI3 with opposite sign. -Indexed, stores value of index in rI3 with opposite sign." - 1) - -(mixal-add-operation-code - 'ENN4 'address-transfer "Enter negative rI4" (+ 48 4) 3 - "Literal value is stored in rI4 with opposite sign. -Indexed, stores value of index in rI4 with opposite sign." - 1) - -(mixal-add-operation-code - 'ENN5 'address-transfer "Enter negative rI5" (+ 48 5) 3 - "Literal value is stored in rI5 with opposite sign. -Indexed, stores value of index in rI5 with opposite sign." - 1) - -(mixal-add-operation-code - 'ENN6 'address-transfer "Enter negative rI6" (+ 48 6) 3 - "Literal value is stored in rI6 with opposite sign. -Indexed, stores value of index in rI6 with opposite sign." - 1) - -(mixal-add-operation-code - 'INCA 'address-transfer "increase A" 48 0 - "Increase register A with the literal value of M. -On overflow the overflow toggle is set." - 1) - -(mixal-add-operation-code - 'INCX 'address-transfer "increase X" 55 0 - "Increase register X with the literal value of M. -On overflow the overflow toggle is set." - 1) - -(mixal-add-operation-code - 'INC1 'address-transfer "increase I1" (+ 48 1) 0 - "Increase register I1 with the literal value of M. -The result is undefined when the result does not fit in -2 bytes." - 1) - -(mixal-add-operation-code - 'INC2 'address-transfer "increase I2" (+ 48 2) 0 - "Increase register I2 with the literal value of M. -The result is undefined when the result does not fit in -2 bytes." - 1) - -(mixal-add-operation-code - 'INC3 'address-transfer "increase I3" (+ 48 3) 0 - "Increase register I3 with the literal value of M. -The result is undefined when the result does not fit in -2 bytes." - 1) - -(mixal-add-operation-code - 'INC4 'address-transfer "increase I4" (+ 48 4) 0 - "Increase register I4 with the literal value of M. -The result is undefined when the result does not fit in -2 bytes." - 1) - -(mixal-add-operation-code - 'INC5 'address-transfer "increase I5" (+ 48 5) 0 - "Increase register I5 with the literal value of M. -The result is undefined when the result does not fit in -2 bytes." - 1) - -(mixal-add-operation-code - 'INC6 'address-transfer "increase I6" (+ 48 6) 0 - "Increase register I6 with the literal value of M. -The result is undefined when the result does not fit in -2 bytes." - 1) - -(mixal-add-operation-code - 'DECA 'address-transfer "decrease A" 48 1 - "Decrease register A with the literal value of M. -On overflow the overflow toggle is set." - 1) - -(mixal-add-operation-code - 'DECX 'address-transfer "decrease X" 55 1 - "Decrease register X with the literal value of M. -On overflow the overflow toggle is set." - 1) - -(mixal-add-operation-code - 'DEC1 'address-transfer "decrease I1" (+ 48 1) 1 - "Decrease register I1 with the literal value of M. -The result is undefined when the result does not fit in -2 bytes." - 1) - -(mixal-add-operation-code - 'DEC2 'address-transfer "decrease I2" (+ 48 2) 1 - "Decrease register I2 with the literal value of M. -The result is undefined when the result does not fit in -2 bytes." - 1) - -(mixal-add-operation-code - 'DEC3 'address-transfer "decrease I3" (+ 48 3) 1 - "Decrease register I3 with the literal value of M. -The result is undefined when the result does not fit in -2 bytes." - 1) - -(mixal-add-operation-code - 'DEC4 'address-transfer "decrease I4" (+ 48 4) 1 - "Decrease register I4 with the literal value of M. -The result is undefined when the result does not fit in -2 bytes." - 1) - -(mixal-add-operation-code - 'DEC5 'address-transfer "decrease I5" (+ 48 5) 1 - "Decrease register I5 with the literal value of M. -The result is undefined when the result does not fit in -2 bytes." - 1) - -(mixal-add-operation-code - 'DEC6 'address-transfer "decrease I6" (+ 48 6) 1 - "Decrease register I6 with the literal value of M. -The result is undefined when the result does not fit in -2 bytes." - 1) - -(mixal-add-operation-code - 'CMPA 'comparison "compare A" 56 'field - "Compare contents of A with contents of M. -The field specifier works on both fields. The comparison indicator -is set to LESS, EQUAL or GREATER depending on the outcome." - 2) - - -(mixal-add-operation-code - 'CMPX 'comparison "compare X" 63 'field - "Compare contents of rX with contents of M. -The field specifier works on both fields. The comparison indicator -is set to LESS, EQUAL or GREATER depending on the outcome." - 2) - - -(mixal-add-operation-code - 'CMP1 'comparison "compare I1" (+ 56 1) 'field - "Compare contents of rI1 with contents of M. -The field specifier works on both fields. The comparison indicator -is set to LESS, EQUAL or GREATER depending on the outcome. Bit 1,2 and 3 -have a value of 0." - 2) - - -(mixal-add-operation-code - 'CMP2 'comparison "compare I2" (+ 56 2) 'field - "Compare contents of rI2 with contents of M. -The field specifier works on both fields. The comparison indicator -is set to LESS, EQUAL or GREATER depending on the outcome. Bit 1,2 and 3 -have a value of 0." - 2) - - -(mixal-add-operation-code - 'CMP3 'comparison "compare I3" (+ 56 3) 'field - "Compare contents of rI3 with contents of M. -The field specifier works on both fields. The comparison indicator -is set to LESS, EQUAL or GREATER depending on the outcome. Bit 1,2 and 3 -have a value of 0." - 2) - - -(mixal-add-operation-code - 'CMP4 'comparison "compare I4" (+ 56 4) 'field - "Compare contents of rI4 with contents of M. -The field specifier works on both fields. The comparison indicator -is set to LESS, EQUAL or GREATER depending on the outcome. Bit 1,2 and 3 -have a value of 0." - 2) - - -(mixal-add-operation-code - 'CMP5 'comparison "compare I5" (+ 56 5) 'field - "Compare contents of rI5 with contents of M. -The field specifier works on both fields. The comparison indicator -is set to LESS, EQUAL or GREATER depending on the outcome. Bit 1,2 and 3 -have a value of 0." - 2) - - -(mixal-add-operation-code - 'CMP6 'comparison "compare I6" (+ 56 6) 'field - "Compare contents of rI6 with contents of M. -The field specifier works on both fields. The comparison indicator -is set to LESS, EQUAL or GREATER depending on the outcome. Bit 1,2 and 3 -have a value of 0." - 2) - -(mixal-add-operation-code - 'JMP 'jump "jump" 39 0 - "Unconditional jump. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - -(mixal-add-operation-code - 'JSJ 'jump "jump, save J" 39 1 - "Unconditional jump, but rJ is not modified." - 1) - -(mixal-add-operation-code - 'JOV 'jump "jump on overflow" 39 2 - "Jump if OV is set (and turn it off). -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - -(mixal-add-operation-code - 'JNOV 'jump "Jump on no overflow" 39 3 - "Jump if OV is not set (and turn it off). -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - -(mixal-add-operation-code - 'JL 'jump "Jump on less" 39 4 - "Jump if '[CM] = L'. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'JE 'jump "Jump on equal" 39 5 - "Jump if '[CM] = E'. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'JG 'jump "Jump on greater" 39 6 - "Jump if '[CM] = G'. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'JGE 'jump "Jump on not less" 39 7 - "Jump if '[CM]' does not equal 'L'. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'JNE 'jump "Jump on not equal" 39 8 - "Jump if '[CM]' does not equal 'E'. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'JLE 'jump "Jump on not greater" 39 9 - "Jump if '[CM]' does not equal 'G'. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - -(mixal-add-operation-code - 'JAN 'jump "jump A negative" 40 0 - "Jump if the content of rA is negative. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'JAZ 'jump "jump A zero" 40 1 - "Jump if the content of rA is zero. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'JAP 'jump "jump A positive" 40 2 - "Jump if the content of rA is positive. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'JANN 'jump "jump A non-negative" 40 3 - "Jump if the content of rA is non-negative. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'JANZ 'jump "jump A non-zero" 40 4 - "Jump if the content of rA is non-zero. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'JANP 'jump "jump A non-positive" 40 5 - "Jump if the content of rA is non-positive. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - -(mixal-add-operation-code - 'JXN 'jump "jump X negative" 47 0 - "Jump if the content of rX is negative. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'JXZ 'jump "jump X zero" 47 1 - "Jump if the content of rX is zero. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'JXP 'jump "jump X positive" 47 2 - "Jump if the content of rX is positive. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'JXNN 'jump "jump X non-negative" 47 3 - "Jump if the content of rX is non-negative. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'JXNZ 'jump "jump X non-zero" 47 4 - "Jump if the content of rX is non-zero. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'JXNP 'jump "jump X non-positive" 47 5 - "Jump if the content of rX is non-positive. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - -(mixal-add-operation-code - 'J1N 'jump "jump I1 negative" (+ 40 1) 0 - "Jump if the content of rI1 is negative. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J1Z 'jump "jump I1 zero" (+ 40 1) 1 - "Jump if the content of rI1 is zero. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J1P 'jump "jump I1 positive" (+ 40 1) 2 - "Jump if the content of rI1 is positive. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J1NN 'jump "jump I1 non-negative" (+ 40 1) 3 - "Jump if the content of rI1 is non-negative. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J1NZ 'jump "jump I1 non-zero" (+ 40 1) 4 - "Jump if the content of rI1 is non-zero. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J1NP 'jump "jump I1 non-positive" (+ 40 1) 5 - "Jump if the content of rI1 is non-positive. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - -(mixal-add-operation-code - 'J2N 'jump "jump I2 negative" (+ 40 1) 0 - "Jump if the content of rI2 is negative. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J2Z 'jump "jump I2 zero" (+ 40 1) 1 - "Jump if the content of rI2 is zero. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J2P 'jump "jump I2 positive" (+ 40 1) 2 - "Jump if the content of rI2 is positive. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J2NN 'jump "jump I2 non-negative" (+ 40 1) 3 - "Jump if the content of rI2 is non-negative. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J2NZ 'jump "jump I2 non-zero" (+ 40 1) 4 - "Jump if the content of rI2 is non-zero. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J2NP 'jump "jump I2 non-positive" (+ 40 1) 5 - "Jump if the content of rI2 is non-positive. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J3N 'jump "jump I3 negative" (+ 40 1) 0 - "Jump if the content of rI3 is negative. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J3Z 'jump "jump I3 zero" (+ 40 1) 1 - "Jump if the content of rI3 is zero. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J3P 'jump "jump I3 positive" (+ 40 1) 2 - "Jump if the content of rI3 is positive. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J3NN 'jump "jump I3 non-negative" (+ 40 1) 3 - "Jump if the content of rI3 is non-negative. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J3NZ 'jump "jump I3 non-zero" (+ 40 1) 4 - "Jump if the content of rI3 is non-zero. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J3NP 'jump "jump I3 non-positive" (+ 40 1) 5 - "Jump if the content of rI3 is non-positive. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J4N 'jump "jump I4 negative" (+ 40 1) 0 - "Jump if the content of rI4 is negative. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J4Z 'jump "jump I4 zero" (+ 40 1) 1 - "Jump if the content of rI4 is zero. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J4P 'jump "jump I4 positive" (+ 40 1) 2 - "Jump if the content of rI4 is positive. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J4NN 'jump "jump I4 non-negative" (+ 40 1) 3 - "Jump if the content of rI4 is non-negative. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J4NZ 'jump "jump I4 non-zero" (+ 40 1) 4 - "Jump if the content of rI4 is non-zero. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J4NP 'jump "jump I4 non-positive" (+ 40 1) 5 - "Jump if the content of rI4 is non-positive. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J5N 'jump "jump I5 negative" (+ 40 1) 0 - "Jump if the content of rI5 is negative. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J5Z 'jump "jump I5 zero" (+ 40 1) 1 - "Jump if the content of rI5 is zero. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J5P 'jump "jump I5 positive" (+ 40 1) 2 - "Jump if the content of rI5 is positive. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J5NN 'jump "jump I5 non-negative" (+ 40 1) 3 - "Jump if the content of rI5 is non-negative. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J5NZ 'jump "jump I5 non-zero" (+ 40 1) 4 - "Jump if the content of rI5 is non-zero. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J5NP 'jump "jump I5 non-positive" (+ 40 1) 5 - "Jump if the content of rI5 is non-positive. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J6N 'jump "jump I6 negative" (+ 40 1) 0 - "Jump if the content of rI6 is negative. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J6Z 'jump "jump I6 zero" (+ 40 1) 1 - "Jump if the content of rI6 is zero. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J6P 'jump "jump I6 positive" (+ 40 1) 2 - "Jump if the content of rI6 is positive. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J6NN 'jump "jump I6 non-negative" (+ 40 1) 3 - "Jump if the content of rI6 is non-negative. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J6NZ 'jump "jump I6 non-zero" (+ 40 1) 4 - "Jump if the content of rI6 is non-zero. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - -(mixal-add-operation-code - 'J6NP 'jump "jump I6 non-positive" (+ 40 1) 5 - "Jump if the content of rI6 is non-positive. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - -(mixal-add-operation-code - 'SLA 'miscellaneous "shift left A" 6 0 - "Shift to A, M bytes left. -Hero's will be added to the right." - 2) - - -(mixal-add-operation-code - 'SRA 'miscellaneous "shift right A" 6 1 - "Shift to A, M bytes right. -Zeros will be added to the left." - 2) - - -(mixal-add-operation-code - 'SLAX 'miscellaneous "shift left AX" 6 2 - "Shift AX, M bytes left. -Zeros will be added to the right." - 2) - - - -(mixal-add-operation-code - 'SRAX 'miscellaneous "shift right AX" 6 3 - "Shift AX, M bytes right. -Zeros will be added to the left." - 2) - - -(mixal-add-operation-code - 'SLC 'miscellaneous "shift left AX circularly" 6 4 - "Shift AX, M bytes left circularly. -The bytes that fall off to the left will be added to the right." - 2) - - -(mixal-add-operation-code - 'SRC 'miscellaneous "shift right AX circularly" 6 4 - "Shift AX, M bytes right circularly. -The bytes that fall off to the right will be added to the left." - 2) - -(mixal-add-operation-code - 'MOVE 'miscellaneous "move" 7 'number - "Move MOD words from M to the location stored in rI1." - '(+ 1 (* 2 number))) - -(mixal-add-operation-code - 'NOP 'miscellaneous "no operation" 0 'ignored - "No operation, M and F are not used by the machine." - 1) - -(mixal-add-operation-code - 'HLT 'miscellaneous "halt" 5 2 - "Halt. -Stop instruction fetching." - 1) - -(mixal-add-operation-code - 'IN 'input-output "input" 36 'unit - "Transfer a block of words from the specified unit to memory. -The transfer starts at address M." - 1) - -(mixal-add-operation-code - 'OUT 'input-output "output" 37 'unit - "Transfer a block of words from memory. -The transfer starts at address M to the specified unit." - 1) - -(mixal-add-operation-code - 'IOC 'input-output "input-output control" 35 'unit - "Perform a control operation. -The control operation is given by M on the specified unit." - 1) - -(mixal-add-operation-code - 'JRED 'input-output "jump ready" 38 'unit - "Jump to M if the specified unit is ready." - 1) - - -(mixal-add-operation-code - 'JBUS 'input-output "jump busy" 34 'unit - "Jump to M if the specified unit is busy." - 1) - -(mixal-add-operation-code - 'NUM 'conversion "convert to numeric" 5 0 - "Convert rAX to its numerical value and store it in rA. -the register rAX is assumed to contain a character representation of -a number." - 10) - -(mixal-add-operation-code - 'CHAR 'conversion "convert to characters" 5 1 - "Convert the number stored in rA to a character representation. -The converted character representation is stored in rAX." - 10) +;;; Font-locking: +(defvar mixal-font-lock-syntactic-keywords + ;; Normal comments start with a * in column 0 and end at end of line. + '(("^\\*" (0 '(11))) ;(string-to-syntax "<") == '(11) + ;; Every line can end with a comment which is placed after the operand. + ;; I assume here that mnemonics without operands can not have a comment. + ("^[[:alnum:]]*[ \t]+[[:alnum:]]+[ \t]+[^ \n\t]+[ \t]*\\([ \t]\\)[^\n \t]" + (1 '(11))))) + +(defvar mixal-font-lock-keywords + `(("^\\([A-Z0-9a-z]+\\)" + (1 mixal-font-lock-label-face)) + (,(regexp-opt (mapcar (lambda (x) (symbol-name (car x))) + mixal-operation-codes-alist) 'words) + . mixal-font-lock-operation-code-face) + (,(regexp-opt mixal-assembly-pseudoinstructions 'words) + . mixal-font-lock-assembly-pseudoinstruction-face) + ("^[A-Z0-9a-z]*[ \t]+[A-ZO-9a-z]+[ \t]+\\(=.*=\\)" + (1 font-lock-constant-face))) + "Keyword highlighting specification for `mixal-mode'.") +;; (makunbound 'mixal-font-lock-keywords) (defvar mixal-describe-operation-code-history nil "History list for describe operation code.") -(defun mixal-describe-operation-code (&optional op-code) +(defun mixal-describe-operation-code (op-code) "Display the full documentation of OP-CODE." - (interactive) - ;; We like to provide completion and history, so do it ourself - ;; (interactive "?bla")? - (unless op-code + (interactive + (list (let* ((completion-ignore-case t) ;; we already have a list, but it is not in the right format ;; transform it to a valid table so completition can use it @@ -1277,15 +1118,16 @@ The converted character representation is stored in rAX." (cons (symbol-name (car elm)) nil)) mixal-operation-codes-alist)) ;; prompt is different depending on we are close to a valid op-code - (have-default (member (current-word) mixal-operation-codes)) + (have-default (assq (intern-soft (current-word)) + mixal-operation-codes-alist)) (prompt (concat "Describe operation code " (if have-default (concat "(default " (current-word) "): ") ": ")))) - ;; as the operation code to the user - (setq op-code (completing-read prompt table nil t nil - 'mixal-describe-operation-code-history - (current-word))))) + ;; As the operation code to the user. + (completing-read prompt table nil t nil + 'mixal-describe-operation-code-history + (current-word))))) ;; get the info on the op-code and output it to the help buffer (let ((op-code-help (assq (intern-soft op-code) mixal-operation-codes-alist))) (when op-code-help @@ -1317,8 +1159,11 @@ Assumes that file has been compiled with debugging support." "Major mode for the mixal asm language. \\{mixal-mode-map}" (set (make-local-variable 'comment-start) "*") - (set (make-local-variable 'comment-start-skip) "*") - (set (make-local-variable 'font-lock-defaults) '(mixal-font-lock-keywords)) + (set (make-local-variable 'comment-start-skip) "^\\*[ \t]*") + (set (make-local-variable 'font-lock-defaults) + `(mixal-font-lock-keywords nil nil nil nil + (font-lock-syntactic-keywords . ,mixal-font-lock-syntactic-keywords) + (parse-sexp-lookup-properties . t))) ;; might add an indent function in the future ;; (set (make-local-variable 'indent-line-function) 'mixal-indent-line) (set (make-local-variable 'compile-command) (concat "mixasm " From de22f49c43050fa184cd0426e25db61c0c9a8d6e Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Wed, 12 Oct 2005 19:47:24 +0000 Subject: [PATCH 139/168] (Info-fontify-node): Don't be fooled by a lone "...". Don't hide the underline of titles if font-lock-mode is disabled. --- lisp/info.el | 44 +++++++++++++++++++++++++------------------- 1 file changed, 25 insertions(+), 19 deletions(-) diff --git a/lisp/info.el b/lisp/info.el index 4dc129db152..5d86d0cb46e 100644 --- a/lisp/info.el +++ b/lisp/info.el @@ -3666,23 +3666,23 @@ the variable `Info-file-list-for-emacs'." ((equal tag "Up") Info-up-link-keymap)))))) (when Info-use-header-line (goto-char (point-min)) - (let ((header-end (line-end-position)) - header) - ;; If we find neither Next: nor Prev: link, show the entire - ;; node header. Otherwise, don't show the File: and Node: - ;; parts, to avoid wasting precious space on information that - ;; is available in the mode line. - (if (re-search-forward - "\\(next\\|up\\|prev[ious]*\\): " - header-end t) - (progn - (goto-char (match-beginning 1)) - (setq header (buffer-substring (point) header-end))) - (if (re-search-forward "node:[ \t]*[^ \t]+[ \t]*" header-end t) - (setq header + (let* ((header-end (line-end-position)) + (header + ;; If we find neither Next: nor Prev: link, show the entire + ;; node header. Otherwise, don't show the File: and Node: + ;; parts, to avoid wasting precious space on information that + ;; is available in the mode line. + (if (re-search-forward + "\\(next\\|up\\|prev[ious]*\\): " + header-end t) + (progn + (goto-char (match-beginning 1)) + (buffer-substring (point) header-end)) + (if (re-search-forward "node:[ \t]*[^ \t]+[ \t]*" + header-end t) (concat "No next, prev or up links -- " - (buffer-substring (point) header-end))) - (setq header (buffer-substring (point) header-end)))) + (buffer-substring (point) header-end)) + (buffer-substring (point) header-end))))) (put-text-property (point-min) (1+ (point-min)) 'header-line (replace-regexp-in-string @@ -3698,9 +3698,15 @@ the variable `Info-file-list-for-emacs'." ;; Fontify titles (goto-char (point-min)) - (when not-fontified-p - (while (re-search-forward "\n\\([^ \t\n].+\\)\n\\(\\*\\*+\\|==+\\|--+\\|\\.\\.+\\)$" - nil t) + (when (and font-lock-mode not-fontified-p) + (while (and (re-search-forward "\n\\([^ \t\n].+\\)\n\\(\\*\\*+\\|==+\\|--+\\|\\.\\.+\\)$" + nil t) + ;; Only consider it as an underlined title if the ASCII + ;; underline has the same size as the text. A typical + ;; counter example is when a continuation "..." is alone + ;; on a line. + (= (- (match-end 1) (match-beginning 1)) + (- (match-end 2) (match-beginning 2)))) (let* ((c (preceding-char)) (face (cond ((= c ?*) 'info-title-1) From ba2b267309bc09e19eb86bda2032fbc6ca9ac2bb Mon Sep 17 00:00:00 2001 From: Bill Wohler Date: Wed, 12 Oct 2005 23:06:20 +0000 Subject: [PATCH 140/168] (MH-E-SRC): New. Used by mh-autoloads. (mh-autoloads): New. Builds mh-e/mh-loaddefs.el. Rebuilds if any files in MH-E-SRC have been updated. (updates, compile, recompile, bootstrap): Depend on mh-autoloads. --- lisp/ChangeLog | 7 +++++++ lisp/makefile.w32-in | 46 ++++++++++++++++++++++++++++++++++++++++---- 2 files changed, 49 insertions(+), 4 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 776db60e33a..3a2931dafb0 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,10 @@ +2005-10-12 Bill Wohler + + * makefile.w32-in (MH-E-SRC): New. Used by mh-autoloads. + (mh-autoloads): New. Builds mh-e/mh-loaddefs.el. Rebuilds if any + files in MH-E-SRC have been updated. + (updates, compile, recompile, bootstrap): Depend on mh-autoloads. + 2005-10-12 Stefan Monnier * progmodes/mixal-mode.el (mixal-operation-codes): Remove. diff --git a/lisp/makefile.w32-in b/lisp/makefile.w32-in index 6d3cacecc6a..17e1dd76019 100644 --- a/lisp/makefile.w32-in +++ b/lisp/makefile.w32-in @@ -176,7 +176,7 @@ update-subdirs-SH: doit $(srcdir)/update-subdirs $$file; \ done; -updates: update-subdirs autoloads finder-data custom-deps +updates: update-subdirs autoloads mh-autoloads finder-data custom-deps # Update the AUTHORS file. @@ -207,7 +207,7 @@ TAGS-LISP: $(lisptagsfiles1) $(lisptagsfiles2) # compiled find the right files. # Need separate version for sh and native cmd.exe -compile: subdirs.el compile-$(SHELLTYPE) doit +compile: subdirs.el mh-autoloads compile-$(SHELLTYPE) doit compile-CMD: # -for %%f in ($(lisp) $(WINS)) do for %%g in (%%f\*.elc) do @attrib -r %%g @@ -282,9 +282,47 @@ compile-after-backup: backup-compiled-files compile-always # Note that this doesn't create .elc files. It only recompiles if an # .elc is present. -recompile: doit +recompile: mh-autoloads doit $(emacs) -f batch-byte-recompile-directory $(lisp) +# Update MH-E internal autoloads. These are not to be confused with +# the autoloads for the MH-E entry points, which are already in +# loaddefs.el. +MH-E-SRC = $(lisp)/mh-e/mh-acros.el $(lisp)/mh-e/mh-alias.el \ + $(lisp)/mh-e/mh-comp.el $(lisp)/mh-e/mh-customize.el \ + $(lisp)/mh-e/mh-e.el $(lisp)/mh-e/mh-funcs.el \ + $(lisp)/mh-e/mh-mime.el $(lisp)/mh-e/mh-pick.el \ + $(lisp)/mh-e/mh-print.el $(lisp)/mh-e/mh-inc.el \ + $(lisp)/mh-e/mh-init.el $(lisp)/mh-e/mh-index.el \ + $(lisp)/mh-e/mh-identity.el $(lisp)/mh-e/mh-junk.el \ + $(lisp)/mh-e/mh-seq.el $(lisp)/mh-e/mh-speed.el \ + $(lisp)/mh-e/mh-utils.el + +mh-autoloads: $(lisp)/mh-e/mh-loaddefs.el +$(lisp)/mh-e/mh-loaddefs.el: $(MH-E-SRC) + echo ";;; mh-loaddefs.el --- automatically extracted autoloads" > $@ + echo ";;" >> $@ + echo ";;; Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc." >> $@ + echo ";;; Author: Bill Wohler " >> $@ + echo ";;; Keywords: mail" >> $@ + echo ";;; Commentary:" >> $@ + echo ";;; Change Log:" >> $@ + echo ";;; Code:" >> $@ + $(EMACS) $(EMACSOPT) \ + -l autoload \ + --eval "(setq generate-autoload-cookie \";;;###mh-autoload\")" \ + --eval "(setq generated-autoload-file \"$(lisp)/mh-e/mh-loaddefs.el\")" \ + --eval "(setq make-backup-files nil)" \ + -f batch-update-autoloads $(lisp)/mh-e + echo " " >> $@ + echo "(provide 'mh-loaddefs)" >> $@ + echo ";;; Local Variables:" >> $@ + echo ";;; version-control: never" >> $@ + echo ";;; no-byte-compile: t" >> $@ + echo ";;; no-update-autoloads: t" >> $@ + echo ";;; End:" >> $@ + echo ";;; mh-loaddefs.el ends here" >> $@ + # Prepare a bootstrap in the lisp subdirectory. # # Build loaddefs.el to make sure it's up-to-date. If it's not, that @@ -316,7 +354,7 @@ bootstrap-clean-SH: # When done, remove bootstrap-emacs from ../bin, so that # it will not be mistaken for an installed binary. -bootstrap: update-subdirs autoloads compile finder-data custom-deps +bootstrap: update-subdirs autoloads mh-autoloads compile finder-data custom-deps - $(DEL) $(EMACS) # From f086544bb146c7e6f6e347d9562a0e882d6f2f3b Mon Sep 17 00:00:00 2001 From: Kenichi Handa Date: Thu, 13 Oct 2005 02:25:34 +0000 Subject: [PATCH 141/168] (ccl-encode-unicode-font): Lookup utf-subst-table-for-encode, not ucs-mule-cjk-to-unicode. Handle the case that ucs-mule-to-mule-unicode translates a character to ASCII (usually for IPA characters). --- lisp/ChangeLog | 7 +++++ lisp/international/fontset.el | 55 ++++++++++++++++++----------------- 2 files changed, 36 insertions(+), 26 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 3a2931dafb0..1a76bf76bf0 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,10 @@ +2005-10-13 Kenichi Handa + + * international/fontset.el (ccl-encode-unicode-font): Lookup + utf-subst-table-for-encode, not ucs-mule-cjk-to-unicode. Handle + the case that ucs-mule-to-mule-unicode translates a character to + ASCII (usually for IPA characters). + 2005-10-12 Bill Wohler * makefile.w32-in (MH-E-SRC): New. Used by mh-autoloads. diff --git a/lisp/international/fontset.el b/lisp/international/fontset.el index c441b72166c..1e5c9508f4e 100644 --- a/lisp/international/fontset.el +++ b/lisp/international/fontset.el @@ -173,39 +173,42 @@ ((if (r2 >= 0) ;; This is a 2D charset. (r1 = ((r1 << 7) | r2))) - (lookup-character ucs-mule-cjk-to-unicode r0 r1) + (lookup-character utf-subst-table-for-encode r0 r1) (if r7 ;; We got it! ((r1 = (r0 >> 8)) (r2 = (r0 & #xFF))) ;; Look for a translation for non-ASCII chars. ((translate-character ucs-mule-to-mule-unicode r0 r1) - (if (r0 == ,(charset-id 'latin-iso8859-1)) - ((r2 = (r1 + 128)) + (if (r0 == ,(charset-id 'ascii)) + ((r2 = r1) (r1 = 0)) - ((r2 = (r1 & #x7F)) - (r1 >>= 7) - (if (r0 == ,(charset-id 'mule-unicode-0100-24ff)) - ((r1 *= 96) - (r1 += r2) - (r1 += ,(- #x100 (* 32 96) 32)) - (r1 >8= 0) - (r2 = r7)) - (if (r0 == ,(charset-id 'mule-unicode-2500-33ff)) - ((r1 *= 96) - (r1 += r2) - (r1 += ,(- #x2500 (* 32 96) 32)) - (r1 >8= 0) - (r2 = r7)) - (if (r0 == ,(charset-id 'mule-unicode-e000-ffff)) - ((r1 *= 96) - (r1 += r2) - (r1 += ,(- #xe000 (* 32 96) 32)) - (r1 >8= 0) - (r2 = r7)) - ;; No way, use the glyph for U+FFFD. - ((r1 = #xFF) - (r2 = #xFD))))))))))))) + ((if (r0 == ,(charset-id 'latin-iso8859-1)) + ((r2 = (r1 + 128)) + (r1 = 0)) + ((r2 = (r1 & #x7F)) + (r1 >>= 7) + (if (r0 == ,(charset-id 'mule-unicode-0100-24ff)) + ((r1 *= 96) + (r1 += r2) + (r1 += ,(- #x100 (* 32 96) 32)) + (r1 >8= 0) + (r2 = r7)) + (if (r0 == ,(charset-id 'mule-unicode-2500-33ff)) + ((r1 *= 96) + (r1 += r2) + (r1 += ,(- #x2500 (* 32 96) 32)) + (r1 >8= 0) + (r2 = r7)) + (if (r0 == ,(charset-id 'mule-unicode-e000-ffff)) + ((r1 *= 96) + (r1 += r2) + (r1 += ,(- #xe000 (* 32 96) 32)) + (r1 >8= 0) + (r2 = r7)) + ;; No way, use the glyph for U+FFFD. + ((r1 = #xFF) + (r2 = #xFD))))))))))))))) "Encode characters for display with iso10646 font. Translate through the translation-hash-table named `ucs-mule-cjk-to-unicode' and the translation-table named From 170e42a17e3fe9d983b0cd4a5f6a19eb447ba823 Mon Sep 17 00:00:00 2001 From: Kenichi Handa Date: Thu, 13 Oct 2005 05:28:12 +0000 Subject: [PATCH 142/168] (Position Info): Fix previous change. --- man/basic.texi | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/man/basic.texi b/man/basic.texi index 292de46fc7c..2c78de612ad 100644 --- a/man/basic.texi +++ b/man/basic.texi @@ -642,11 +642,11 @@ safely and with a single byte (@pxref{Coding Systems}). If the character's encoding is longer than one byte, Emacs shows @samp{file ...}. However, if the character displayed is in the range 0200 through -0377 octal, there's a case that it actually represents an invalid -UTF-8 byte. Emacs represents such a byte in a buffer by a sequence of -8-bit characters, but displays only the original invalid byte in octal -form. In such a case, Emacs shows @samp{part of display ...} instead -of @samp{file}. +0377 octal, it may actually stand for an invalid UTF-8 byte read from +a file. In Emacs, that byte is represented as a sequence of 8-bit +characters, but all of them together display as the original invalid +byte, in octal code. In this case, @kbd{C-x =} shows @samp{part of +display ...} instead of @samp{file}. @samp{point=} is followed by the position of point expressed as a character count. The front of the buffer counts as position 1, one character later From 6e3b8c5dd5e80a395f8fff690bc72515fb925c29 Mon Sep 17 00:00:00 2001 From: Kenichi Handa Date: Thu, 13 Oct 2005 05:39:31 +0000 Subject: [PATCH 143/168] (utf-8-compose): Display an invalid UTF-8 byte with `escape-glyph' face. --- lisp/international/utf-8.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lisp/international/utf-8.el b/lisp/international/utf-8.el index 56043630817..384d973db9f 100644 --- a/lisp/international/utf-8.el +++ b/lisp/international/utf-8.el @@ -934,7 +934,8 @@ Move point to the end of the sequence." 'help-echo 'utf-8-help-echo) (if (= l 2) (put-text-property (point) (min (point-max) (+ l (point))) - 'display (format "\\%03o" ch)) + 'display (propertize (format "\\%03o" ch) + 'face 'escape-glyph)) (compose-region (point) (+ l (point)) ?$,3u=(B)) (forward-char l)) (forward-char 1)))) From 179f2d7b88c34be77533c00db360ad6cedb63bce Mon Sep 17 00:00:00 2001 From: Kenichi Handa Date: Thu, 13 Oct 2005 05:39:55 +0000 Subject: [PATCH 144/168] *** empty log message *** --- lisp/ChangeLog | 3 +++ man/ChangeLog | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 1a76bf76bf0..890ec0d9af7 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,8 @@ 2005-10-13 Kenichi Handa + * international/utf-8.el (utf-8-compose): Display an invalid UTF-8 + byte with `escape-glyph' face. + * international/fontset.el (ccl-encode-unicode-font): Lookup utf-subst-table-for-encode, not ucs-mule-cjk-to-unicode. Handle the case that ucs-mule-to-mule-unicode translates a character to diff --git a/man/ChangeLog b/man/ChangeLog index bd137642867..8ba536739fc 100644 --- a/man/ChangeLog +++ b/man/ChangeLog @@ -1,3 +1,7 @@ +2005-10-13 Kenichi Handa + + * basic.texi (Position Info): Fix previous change. + 2005-10-12 Jan Dj,Ad(Brv * cmdargs.texi (Icons X): Fix typo. From 79a5708286321a49f0ec3ad1accd342c6fe82883 Mon Sep 17 00:00:00 2001 From: Romain Francoise Date: Thu, 13 Oct 2005 06:07:43 +0000 Subject: [PATCH 145/168] *** empty log message *** --- lisp/ChangeLog | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 890ec0d9af7..3e6c02b0379 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -52,7 +52,7 @@ (mixal-font-lock-keywords): Process comments here. (mixal-mode): mixasm no longer needs -g option. -2005-10-11 Sven Joachim +2005-10-11 Sven Joachim (tiny change) * progmodes/sh-script.el (sh-tmp-file): Use mktemp -t. Finish support for es and rc shells. @@ -852,7 +852,7 @@ color rxvt terminals by using the code xterm.el used to use before 2005-04-09 in order to match the colors used by rxvt. -2005-09-24 Emanuele Giaquinta (tiny change) +2005-09-24 Emanuele Giaquinta (tiny change) * term/rxvt.el (rxvt-register-default-colors): Add support for 88 colors rxvt-unicode terminals by using the same code as xterm.el. From 6e5b2385802f15d7e5cf476561bc1cd3dc1ebf8e Mon Sep 17 00:00:00 2001 From: Andreas Schwab Date: Thu, 13 Oct 2005 09:29:18 +0000 Subject: [PATCH 146/168] (request_sigio, unrequest_sigio): Do nothing in non-interactive mode. --- src/ChangeLog | 5 +++++ src/sysdep.c | 24 ++++++++++++++++-------- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index c6de7000e88..a6d056f579d 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,8 @@ +2005-10-13 Andreas Schwab + + * sysdep.c (request_sigio, unrequest_sigio): Do nothing in + non-interactive mode. + 2005-10-12 YAMAMOTO Mitsuharu * xterm.c, w32term.c, macterm.c (note_mouse_movement): Undo last change. diff --git a/src/sysdep.c b/src/sysdep.c index f70d4b18cff..3bc72c51193 100644 --- a/src/sysdep.c +++ b/src/sysdep.c @@ -1012,7 +1012,7 @@ reset_sigio () void request_sigio () { - if (read_socket_hook) + if (noninteractive || read_socket_hook) return; #ifdef SIGWINCH @@ -1026,7 +1026,7 @@ request_sigio () void unrequest_sigio () { - if (read_socket_hook) + if (noninteractive || read_socket_hook) return; #ifdef SIGWINCH @@ -1044,7 +1044,7 @@ request_sigio () { int on = 1; - if (read_socket_hook) + if (noninteractive || read_socket_hook) return; ioctl (input_fd, FIOASYNC, &on); @@ -1056,7 +1056,7 @@ unrequest_sigio () { int off = 0; - if (read_socket_hook) + if (noninteractive || read_socket_hook) return; ioctl (input_fd, FIOASYNC, &off); @@ -1075,7 +1075,7 @@ request_sigio () int on = 1; sigset_t st; - if (read_socket_hook) + if (noninteractive || read_socket_hook) return; sigemptyset (&st); @@ -1090,7 +1090,7 @@ unrequest_sigio () { int off = 0; - if (read_socket_hook) + if (noninteractive || read_socket_hook) return; ioctl (input_fd, FIOASYNC, &off); @@ -1103,7 +1103,7 @@ unrequest_sigio () void request_sigio () { - if (read_socket_hook) + if (noninteractive || read_socket_hook) return; croak ("request_sigio"); @@ -1112,7 +1112,7 @@ request_sigio () void unrequest_sigio () { - if (read_socket_hook) + if (noninteractive || read_socket_hook) return; croak ("unrequest_sigio"); @@ -2235,12 +2235,16 @@ reset_sigio () void request_sigio () { + if (noninteractive) + return; croak ("request sigio"); } void unrequest_sigio () { + if (noninteractive) + return; croak ("unrequest sigio"); } @@ -2775,6 +2779,8 @@ reset_sigio () void request_sigio () { + if (noninteractive) + return; sigrelse (SIGTINT); interrupts_deferred = 0; @@ -2783,6 +2789,8 @@ request_sigio () void unrequest_sigio () { + if (noninteractive) + return; sighold (SIGTINT); interrupts_deferred = 1; From b4a63d75fb4eab5d9bfeba0cd59989a013f2f298 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Thu, 13 Oct 2005 13:55:40 +0000 Subject: [PATCH 147/168] (mixal-operation-codes-alist): Don't waste the byte-compiler's time on constant data. --- lisp/progmodes/mixal-mode.el | 967 ++++++++++++++++++----------------- 1 file changed, 484 insertions(+), 483 deletions(-) diff --git a/lisp/progmodes/mixal-mode.el b/lisp/progmodes/mixal-mode.el index 8c9359ae859..0e881c0d79f 100644 --- a/lisp/progmodes/mixal-mode.el +++ b/lisp/progmodes/mixal-mode.el @@ -124,950 +124,951 @@ value.") (defvar mixal-operation-codes-alist ;; FIXME: the codes FADD, FSUB, FMUL, FDIV, JRAD, and FCMP were in ;; mixal-operation-codes but not here. They should probably be added here. - `((LDA loading "load A" 8 field - "Put in rA the contents of cell no. M. + (eval-when-compile + `((LDA loading "load A" 8 field + "Put in rA the contents of cell no. M. Uses a + when there is no sign in subfield. Subfield is left padded with zeros to make a word." - 2) + 2) - (LDX loading "load X" 15 field - "Put in rX the contents of cell no. M. + (LDX loading "load X" 15 field + "Put in rX the contents of cell no. M. Uses a + when there is no sign in subfield. Subfield is left padded with zeros to make a word." - 2) + 2) - (LD1 loading "load I1" ,(+ 8 1) field - "Put in rI1 the contents of cell no. M. + (LD1 loading "load I1" ,(+ 8 1) field + "Put in rI1 the contents of cell no. M. Uses a + when there is no sign in subfield. Subfield is left padded with zeros to make a word. Index registers only have 2 bytes and a sign, Trying to set anything more that that will result in undefined behavior." - 2) + 2) - (LD2 loading "load I2" ,(+ 8 2) field - "Put in rI2 the contents of cell no. M. + (LD2 loading "load I2" ,(+ 8 2) field + "Put in rI2 the contents of cell no. M. Uses a + when there is no sign in subfield. Subfield is left padded with zeros to make a word. Index registers only have 2 bytes and a sign, Trying to set anything more that that will result in undefined behavior." - 2) + 2) - (LD3 loading "load I3" ,(+ 8 3) field - "Put in rI3 the contents of cell no. M. + (LD3 loading "load I3" ,(+ 8 3) field + "Put in rI3 the contents of cell no. M. Uses a + when there is no sign in subfield. Subfield is left padded with zeros to make a word. Index registers only have 2 bytes and a sign, Trying to set anything more that that will result in undefined behavior." - 2) + 2) - (LD4 loading "load I4" ,(+ 8 4) field - "Put in rI4 the contents of cell no. M. + (LD4 loading "load I4" ,(+ 8 4) field + "Put in rI4 the contents of cell no. M. Uses a + when there is no sign in subfield. Subfield is left padded with zeros to make a word. Index registers only have 2 bytes and a sign, Trying to set anything more that that will result in undefined behavior." - 2) + 2) - (LD5 loading "load I5" ,(+ 8 5) field - "Put in rI5 the contents of cell no. M. + (LD5 loading "load I5" ,(+ 8 5) field + "Put in rI5 the contents of cell no. M. Uses a + when there is no sign in subfield. Subfield is left padded with zeros to make a word. Index registers only have 2 bytes and a sign, Trying to set anything more that that will result in undefined behavior." - 2) + 2) - (LD6 loading "load I6" ,(+ 8 6) field - "Put in rI6 the contents of cell no. M. + (LD6 loading "load I6" ,(+ 8 6) field + "Put in rI6 the contents of cell no. M. Uses a + when there is no sign in subfield. Subfield is left padded with zeros to make a word. Index registers only have 2 bytes and a sign, Trying to set anything more that that will result in undefined behavior." - 2) + 2) - (LDAN loading "load A negative" 16 field - "Put in rA the contents of cell no. M, with opposite sign. + (LDAN loading "load A negative" 16 field + "Put in rA the contents of cell no. M, with opposite sign. Uses a + when there is no sign in subfield, otherwise use the opposite sign. Subfield is left padded with zeros to make a word." - 2) + 2) - (LDXN loading "load X negative" 23 field - "Put in rX the contents of cell no. M, with opposite sign. + (LDXN loading "load X negative" 23 field + "Put in rX the contents of cell no. M, with opposite sign. Uses a + when there is no sign in subfield, otherwise use the opposite sign. Subfield is left padded with zeros to make a word." - 2) + 2) - (LD1N loading "load I1 negative" ,(+ 16 1) field - "Put in rI1 the contents of cell no. M, with opposite sign. + (LD1N loading "load I1 negative" ,(+ 16 1) field + "Put in rI1 the contents of cell no. M, with opposite sign. Uses a + when there is no sign in subfield, otherwise use the opposite sign. Subfield is left padded with zeros to make a word. Index registers only have 2 bytes and a sign, Trying to set anything more that that will result in undefined behavior." - 2) + 2) - (LD2N loading "load I2 negative" ,(+ 16 2) field - "Put in rI2 the contents of cell no. M, with opposite sign. + (LD2N loading "load I2 negative" ,(+ 16 2) field + "Put in rI2 the contents of cell no. M, with opposite sign. Uses a + when there is no sign in subfield, otherwise use the opposite sign. Subfield is left padded with zeros to make a word. Index registers only have 2 bytes and a sign, Trying to set anything more that that will result in undefined behavior." - 2) + 2) - (LD3N loading "load I3 negative" ,(+ 16 3) field - "Put in rI3 the contents of cell no. M, with opposite sign. + (LD3N loading "load I3 negative" ,(+ 16 3) field + "Put in rI3 the contents of cell no. M, with opposite sign. Uses a + when there is no sign in subfield, otherwise use the opposite sign. Subfield is left padded with zeros to make a word. Index registers only have 2 bytes and a sign, Trying to set anything more that that will result in undefined behavior." - 2) + 2) - (LD4N loading "load I4 negative" ,(+ 16 4) field - "Put in rI4 the contents of cell no. M, with opposite sign. + (LD4N loading "load I4 negative" ,(+ 16 4) field + "Put in rI4 the contents of cell no. M, with opposite sign. Uses a + when there is no sign in subfield, otherwise use the opposite sign. Subfield is left padded with zeros to make a word. Index registers only have 2 bytes and a sign, Trying to set anything more that that will result in undefined behavior." - 2) + 2) - (LD5N loading "load I5 negative" ,(+ 16 5) field - "Put in rI5 the contents of cell no. M, with opposite sign. + (LD5N loading "load I5 negative" ,(+ 16 5) field + "Put in rI5 the contents of cell no. M, with opposite sign. Uses a + when there is no sign in subfield, otherwise use the opposite sign. Subfield is left padded with zeros to make a word. Index registers only have 2 bytes and a sign, Trying to set anything more that that will result in undefined behavior." - 2) + 2) - (LD6N loading "load I6 negative" ,(+ 16 6) field - "Put in rI6 the contents of cell no. M, with opposite sign. + (LD6N loading "load I6 negative" ,(+ 16 6) field + "Put in rI6 the contents of cell no. M, with opposite sign. Uses a + when there is no sign in subfield, otherwise use the opposite sign. Subfield is left padded with zeros to make a word. Index registers only have 2 bytes and a sign, Trying to set anything more that that will result in undefined behavior." - 2) + 2) - (STA storing "store A" 24 field - "Store in cell Nr. M the contents of rA. + (STA storing "store A" 24 field + "Store in cell Nr. M the contents of rA. The modification of the operation code represents the subfield of the memory cell that is to be overwritten with bytes from a register. These bytes are taken beginning by the rightmost side of the register. The sign of the memory cell is not changed, unless it is part of the subfield." - 2) + 2) - (STX storing "store X" 31 field - "Store in cell Nr. M the contents of rX. + (STX storing "store X" 31 field + "Store in cell Nr. M the contents of rX. The modification of the operation code represents the subfield of the memory cell that is to be overwritten with bytes from a register. These bytes are taken beginning by the rightmost side of the register. The sign of the memory cell is not changed, unless it is part of the subfield." - 2) + 2) - (ST1 storing "store I1" ,(+ 24 1) field - "Store in cell Nr. M the contents of rI1. + (ST1 storing "store I1" ,(+ 24 1) field + "Store in cell Nr. M the contents of rI1. The modification of the operation code represents the subfield of the memory cell that is to be overwritten with bytes from a register. These bytes are taken beginning by the rightmost side of the register. The sign of the memory cell is not changed, unless it is part of the subfield. Because index registers only have 2 bytes and a sign, the rest of the bytes are assumed to be 0." - 2) + 2) - (ST2 storing "store I2" ,(+ 24 2) field - "Store in cell Nr. M the contents of rI2. + (ST2 storing "store I2" ,(+ 24 2) field + "Store in cell Nr. M the contents of rI2. The modification of the operation code represents the subfield of the memory cell that is to be overwritten with bytes from a register. These bytes are taken beginning by the rightmost side of the register. The sign of the memory cell is not changed, unless it is part of the subfield. Because index registers only have 2 bytes and a sign, the rest of the bytes are assumed to be 0." - 2) + 2) - (ST3 storing "store I3" ,(+ 24 3) field - "Store in cell Nr. M the contents of rI3. + (ST3 storing "store I3" ,(+ 24 3) field + "Store in cell Nr. M the contents of rI3. The modification of the operation code represents the subfield of the memory cell that is to be overwritten with bytes from a register. These bytes are taken beginning by the rightmost side of the register. The sign of the memory cell is not changed, unless it is part of the subfield. Because index registers only have 2 bytes and a sign, the rest of the bytes are assumed to be 0." - 2) + 2) - (ST4 storing "store I4" ,(+ 24 4) field - "Store in cell Nr. M the contents of rI4. + (ST4 storing "store I4" ,(+ 24 4) field + "Store in cell Nr. M the contents of rI4. The modification of the operation code represents the subfield of the memory cell that is to be overwritten with bytes from a register. These bytes are taken beginning by the rightmost side of the register. The sign of the memory cell is not changed, unless it is part of the subfield. Because index registers only have 2 bytes and a sign, the rest of the bytes are assumed to be 0." - 2) + 2) - (ST5 storing "store I5" ,(+ 24 5) field - "Store in cell Nr. M the contents of rI5. + (ST5 storing "store I5" ,(+ 24 5) field + "Store in cell Nr. M the contents of rI5. The modification of the operation code represents the subfield of the memory cell that is to be overwritten with bytes from a register. These bytes are taken beginning by the rightmost side of the register. The sign of the memory cell is not changed, unless it is part of the subfield. Because index registers only have 2 bytes and a sign, the rest of the bytes are assumed to be 0." - 2) + 2) - (ST6 storing "store I6" ,(+ 24 6) field - "Store in cell Nr. M the contents of rI6. + (ST6 storing "store I6" ,(+ 24 6) field + "Store in cell Nr. M the contents of rI6. The modification of the operation code represents the subfield of the memory cell that is to be overwritten with bytes from a register. These bytes are taken beginning by the rightmost side of the register. The sign of the memory cell is not changed, unless it is part of the subfield. Because index registers only have 2 bytes and a sign, the rest of the bytes are assumed to be 0." - 2) + 2) - (STJ storing "store J" 32 field - "Store in cell Nr. M the contents of rJ. + (STJ storing "store J" 32 field + "Store in cell Nr. M the contents of rJ. The modification of the operation code represents the subfield of the memory cell that is to be overwritten with bytes from a register. These bytes are taken beginning by the rightmost side of the register. The sign of rJ is always +, sign of the memory cell is not changed, unless it is part of the subfield. The default field for STJ is (0:2)." - 2) + 2) - (STZ storing "store zero" 33 field - "Store in cell Nr. M '+ 0'. + (STZ storing "store zero" 33 field + "Store in cell Nr. M '+ 0'. The modification of the operation code represents the subfield of the memory cell that is to be overwritten with zeros." - 2) + 2) - (ADD arithmetic "add" 1 field - "Add to A the contents of cell Nr. M. + (ADD arithmetic "add" 1 field + "Add to A the contents of cell Nr. M. Subfield is padded with zero to make a word. If the result is to large, the operation result modulo 1,073,741,823 (the maximum value storable in a MIX word) is stored in `rA', and the overflow toggle is set to TRUE." - 2) + 2) - (SUB arithmetic "subtract" 2 field - "Subtract to A the contents of cell Nr. M. + (SUB arithmetic "subtract" 2 field + "Subtract to A the contents of cell Nr. M. Subfield is padded with zero to make a word. If the result is to large, the operation result modulo 1,073,741,823 (the maximum value storable in a MIX word) is stored in `rA', and the overflow toggle is set to TRUE." - 2) + 2) - (MUL arithmetic "multiply" 3 field - "Multiplies the contents of cell Nr. M with A, result is 10 bytes and stored in rA and rX. + (MUL arithmetic "multiply" 3 field + "Multiplies the contents of cell Nr. M with A, result is 10 bytes and stored in rA and rX. The sign is + if the sign of rA and cell M where the same, otherwise, it is -" - 10) + 10) - (DIV arithmetic "divide" 4 field - "Both rA and rX are taken together and divided by cell Nr. M, quotient is placed in rA, remainder in rX. + (DIV arithmetic "divide" 4 field + "Both rA and rX are taken together and divided by cell Nr. M, quotient is placed in rA, remainder in rX. The sign is taken from rA, and after the divide the sign of rA is set to + when both the sign of rA and M where the same. Divide by zero and overflow of rA result in undefined behavior." - 12) + 12) - (ENTA address-transfer "enter A" 48 - "Literal value is stored in rA. + (ENTA address-transfer "enter A" 48 + "Literal value is stored in rA. Indexed, stores value of index in rA." - 1) + 1) - (ENTX address-transfer "enter X" 55 - "Literal value is stored in rX. + (ENTX address-transfer "enter X" 55 + "Literal value is stored in rX. Indexed, stores value of index in rX." - 1) + 1) - (ENT1 address-transfer "Enter rI1" ,(+ 48 1) - "Literal value is stored in rI1. + (ENT1 address-transfer "Enter rI1" ,(+ 48 1) + "Literal value is stored in rI1. Indexed, stores value of index in rI1." - 1) + 1) - (ENT2 address-transfer "Enter rI2" ,(+ 48 2) - "Literal value is stored in rI2. + (ENT2 address-transfer "Enter rI2" ,(+ 48 2) + "Literal value is stored in rI2. Indexed, stores value of index in rI2." - 1) + 1) - (ENT3 address-transfer "Enter rI3" ,(+ 48 3) - "Literal value is stored in rI3. + (ENT3 address-transfer "Enter rI3" ,(+ 48 3) + "Literal value is stored in rI3. Indexed, stores value of index in rI3." - 1) + 1) - (ENT4 address-transfer "Enter rI4" ,(+ 48 4) - "Literal value is stored in rI4. + (ENT4 address-transfer "Enter rI4" ,(+ 48 4) + "Literal value is stored in rI4. Indexed, stores value of index in rI4." - 1) + 1) - (ENT5 address-transfer "Enter rI5" ,(+ 48 5) - "Literal value is stored in rI5. + (ENT5 address-transfer "Enter rI5" ,(+ 48 5) + "Literal value is stored in rI5. Indexed, stores value of index in rI5." - 1) + 1) - (ENT6 address-transfer "Enter rI6" ,(+ 48 6) - "Literal value is stored in rI6. + (ENT6 address-transfer "Enter rI6" ,(+ 48 6) + "Literal value is stored in rI6. Indexed, stores value of index in rI6." - 1) + 1) - (ENNA address-transfer "enter negative A" 48 - "Literal value is stored in rA with opposite sign. + (ENNA address-transfer "enter negative A" 48 + "Literal value is stored in rA with opposite sign. Indexed, stores value of index in rA with opposite sign." - 1) + 1) - (ENNX address-transfer "enter negative X" 55 - "Literal value is stored in rX with opposite sign. + (ENNX address-transfer "enter negative X" 55 + "Literal value is stored in rX with opposite sign. Indexed, stores value of index in rX with opposite sign." - 1) + 1) - (ENN1 address-transfer "Enter negative rI1" ,(+ 48 1) - "Literal value is stored in rI1 with opposite sign. + (ENN1 address-transfer "Enter negative rI1" ,(+ 48 1) + "Literal value is stored in rI1 with opposite sign. Indexed, stores value of index in rI1 with opposite sign." - 1) + 1) - (ENN2 address-transfer "Enter negative rI2" ,(+ 48 2) - "Literal value is stored in rI2 with opposite sign. + (ENN2 address-transfer "Enter negative rI2" ,(+ 48 2) + "Literal value is stored in rI2 with opposite sign. Indexed, stores value of index in rI2 with opposite sign." - 1) + 1) - (ENN3 address-transfer "Enter negative rI3" ,(+ 48 3) - "Literal value is stored in rI3 with opposite sign. + (ENN3 address-transfer "Enter negative rI3" ,(+ 48 3) + "Literal value is stored in rI3 with opposite sign. Indexed, stores value of index in rI3 with opposite sign." - 1) + 1) - (ENN4 address-transfer "Enter negative rI4" ,(+ 48 4) - "Literal value is stored in rI4 with opposite sign. + (ENN4 address-transfer "Enter negative rI4" ,(+ 48 4) + "Literal value is stored in rI4 with opposite sign. Indexed, stores value of index in rI4 with opposite sign." - 1) + 1) - (ENN5 address-transfer "Enter negative rI5" ,(+ 48 5) - "Literal value is stored in rI5 with opposite sign. + (ENN5 address-transfer "Enter negative rI5" ,(+ 48 5) + "Literal value is stored in rI5 with opposite sign. Indexed, stores value of index in rI5 with opposite sign." - 1) + 1) - (ENN6 address-transfer "Enter negative rI6" ,(+ 48 6) - "Literal value is stored in rI6 with opposite sign. + (ENN6 address-transfer "Enter negative rI6" ,(+ 48 6) + "Literal value is stored in rI6 with opposite sign. Indexed, stores value of index in rI6 with opposite sign." - 1) + 1) - (INCA address-transfer "increase A" 48 - "Increase register A with the literal value of M. + (INCA address-transfer "increase A" 48 + "Increase register A with the literal value of M. On overflow the overflow toggle is set." - 1) + 1) - (INCX address-transfer "increase X" 55 - "Increase register X with the literal value of M. + (INCX address-transfer "increase X" 55 + "Increase register X with the literal value of M. On overflow the overflow toggle is set." - 1) + 1) - (INC1 address-transfer "increase I1" ,(+ 48 1) - "Increase register I1 with the literal value of M. + (INC1 address-transfer "increase I1" ,(+ 48 1) + "Increase register I1 with the literal value of M. The result is undefined when the result does not fit in 2 bytes." - 1) + 1) - (INC2 address-transfer "increase I2" ,(+ 48 2) - "Increase register I2 with the literal value of M. + (INC2 address-transfer "increase I2" ,(+ 48 2) + "Increase register I2 with the literal value of M. The result is undefined when the result does not fit in 2 bytes." - 1) + 1) - (INC3 address-transfer "increase I3" ,(+ 48 3) - "Increase register I3 with the literal value of M. + (INC3 address-transfer "increase I3" ,(+ 48 3) + "Increase register I3 with the literal value of M. The result is undefined when the result does not fit in 2 bytes." - 1) + 1) - (INC4 address-transfer "increase I4" ,(+ 48 4) - "Increase register I4 with the literal value of M. + (INC4 address-transfer "increase I4" ,(+ 48 4) + "Increase register I4 with the literal value of M. The result is undefined when the result does not fit in 2 bytes." - 1) + 1) - (INC5 address-transfer "increase I5" ,(+ 48 5) - "Increase register I5 with the literal value of M. + (INC5 address-transfer "increase I5" ,(+ 48 5) + "Increase register I5 with the literal value of M. The result is undefined when the result does not fit in 2 bytes." - 1) + 1) - (INC6 address-transfer "increase I6" ,(+ 48 6) - "Increase register I6 with the literal value of M. + (INC6 address-transfer "increase I6" ,(+ 48 6) + "Increase register I6 with the literal value of M. The result is undefined when the result does not fit in 2 bytes." - 1) + 1) - (DECA address-transfer "decrease A" 48 - "Decrease register A with the literal value of M. + (DECA address-transfer "decrease A" 48 + "Decrease register A with the literal value of M. On overflow the overflow toggle is set." - 1) + 1) - (DECX address-transfer "decrease X" 55 - "Decrease register X with the literal value of M. + (DECX address-transfer "decrease X" 55 + "Decrease register X with the literal value of M. On overflow the overflow toggle is set." - 1) + 1) - (DEC1 address-transfer "decrease I1" ,(+ 48 1) - "Decrease register I1 with the literal value of M. + (DEC1 address-transfer "decrease I1" ,(+ 48 1) + "Decrease register I1 with the literal value of M. The result is undefined when the result does not fit in 2 bytes." - 1) + 1) - (DEC2 address-transfer "decrease I2" ,(+ 48 2) - "Decrease register I2 with the literal value of M. + (DEC2 address-transfer "decrease I2" ,(+ 48 2) + "Decrease register I2 with the literal value of M. The result is undefined when the result does not fit in 2 bytes." - 1) + 1) - (DEC3 address-transfer "decrease I3" ,(+ 48 3) - "Decrease register I3 with the literal value of M. + (DEC3 address-transfer "decrease I3" ,(+ 48 3) + "Decrease register I3 with the literal value of M. The result is undefined when the result does not fit in 2 bytes." - 1) + 1) - (DEC4 address-transfer "decrease I4" ,(+ 48 4) - "Decrease register I4 with the literal value of M. + (DEC4 address-transfer "decrease I4" ,(+ 48 4) + "Decrease register I4 with the literal value of M. The result is undefined when the result does not fit in 2 bytes." - 1) + 1) - (DEC5 address-transfer "decrease I5" ,(+ 48 5) - "Decrease register I5 with the literal value of M. + (DEC5 address-transfer "decrease I5" ,(+ 48 5) + "Decrease register I5 with the literal value of M. The result is undefined when the result does not fit in 2 bytes." - 1) + 1) - (DEC6 address-transfer "decrease I6" ,(+ 48 6) - "Decrease register I6 with the literal value of M. + (DEC6 address-transfer "decrease I6" ,(+ 48 6) + "Decrease register I6 with the literal value of M. The result is undefined when the result does not fit in 2 bytes." - 1) + 1) - (CMPA comparison "compare A" 56 field - "Compare contents of A with contents of M. + (CMPA comparison "compare A" 56 field + "Compare contents of A with contents of M. The field specifier works on both fields. The comparison indicator is set to LESS, EQUAL or GREATER depending on the outcome." - 2) + 2) - (CMPX comparison "compare X" 63 field - "Compare contents of rX with contents of M. + (CMPX comparison "compare X" 63 field + "Compare contents of rX with contents of M. The field specifier works on both fields. The comparison indicator is set to LESS, EQUAL or GREATER depending on the outcome." - 2) + 2) - (CMP1 comparison "compare I1" ,(+ 56 1) field - "Compare contents of rI1 with contents of M. + (CMP1 comparison "compare I1" ,(+ 56 1) field + "Compare contents of rI1 with contents of M. The field specifier works on both fields. The comparison indicator is set to LESS, EQUAL or GREATER depending on the outcome. Bit 1,2 and 3 have a value of 0." - 2) + 2) - (CMP2 comparison "compare I2" ,(+ 56 2) field - "Compare contents of rI2 with contents of M. + (CMP2 comparison "compare I2" ,(+ 56 2) field + "Compare contents of rI2 with contents of M. The field specifier works on both fields. The comparison indicator is set to LESS, EQUAL or GREATER depending on the outcome. Bit 1,2 and 3 have a value of 0." - 2) + 2) - (CMP3 comparison "compare I3" ,(+ 56 3) field - "Compare contents of rI3 with contents of M. + (CMP3 comparison "compare I3" ,(+ 56 3) field + "Compare contents of rI3 with contents of M. The field specifier works on both fields. The comparison indicator is set to LESS, EQUAL or GREATER depending on the outcome. Bit 1,2 and 3 have a value of 0." - 2) + 2) - (CMP4 comparison "compare I4" ,(+ 56 4) field - "Compare contents of rI4 with contents of M. + (CMP4 comparison "compare I4" ,(+ 56 4) field + "Compare contents of rI4 with contents of M. The field specifier works on both fields. The comparison indicator is set to LESS, EQUAL or GREATER depending on the outcome. Bit 1,2 and 3 have a value of 0." - 2) + 2) - (CMP5 comparison "compare I5" ,(+ 56 5) field - "Compare contents of rI5 with contents of M. + (CMP5 comparison "compare I5" ,(+ 56 5) field + "Compare contents of rI5 with contents of M. The field specifier works on both fields. The comparison indicator is set to LESS, EQUAL or GREATER depending on the outcome. Bit 1,2 and 3 have a value of 0." - 2) + 2) - (CMP6 comparison "compare I6" ,(+ 56 6) field - "Compare contents of rI6 with contents of M. + (CMP6 comparison "compare I6" ,(+ 56 6) field + "Compare contents of rI6 with contents of M. The field specifier works on both fields. The comparison indicator is set to LESS, EQUAL or GREATER depending on the outcome. Bit 1,2 and 3 have a value of 0." - 2) + 2) - (JMP jump "jump" 39 - "Unconditional jump. + (JMP jump "jump" 39 + "Unconditional jump. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - (JSJ jump "jump, save J" 39 - "Unconditional jump, but rJ is not modified." - 1) + (JSJ jump "jump, save J" 39 + "Unconditional jump, but rJ is not modified." + 1) - (JOV jump "jump on overflow" 39 - "Jump if OV is set (and turn it off). + (JOV jump "jump on overflow" 39 + "Jump if OV is set (and turn it off). Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - (JNOV jump "Jump on no overflow" 39 - "Jump if OV is not set (and turn it off). + (JNOV jump "Jump on no overflow" 39 + "Jump if OV is not set (and turn it off). Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - (JL jump "Jump on less" 39 - "Jump if '[CM] = L'. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - - (JE jump "Jump on equal" 39 - "Jump if '[CM] = E'. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - - (JG jump "Jump on greater" 39 - "Jump if '[CM] = G'. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - - (JGE jump "Jump on not less" 39 - "Jump if '[CM]' does not equal 'L'. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - - (JNE jump "Jump on not equal" 39 - "Jump if '[CM]' does not equal 'E'. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - - (JLE jump "Jump on not greater" 39 - "Jump if '[CM]' does not equal 'G'. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - (JAN jump "jump A negative" 40 - "Jump if the content of rA is negative. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - - (JAZ jump "jump A zero" 40 - "Jump if the content of rA is zero. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - - (JAP jump "jump A positive" 40 - "Jump if the content of rA is positive. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - - (JANN jump "jump A non-negative" 40 - "Jump if the content of rA is non-negative. + (JL jump "Jump on less" 39 + "Jump if '[CM] = L'. Register J is set to the value of the next instruction that would have been executed when there was no jump." 1) - (JANZ jump "jump A non-zero" 40 - "Jump if the content of rA is non-zero. + (JE jump "Jump on equal" 39 + "Jump if '[CM] = E'. Register J is set to the value of the next instruction that would have been executed when there was no jump." 1) - (JANP jump "jump A non-positive" 40 - "Jump if the content of rA is non-positive. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - (JXN jump "jump X negative" 47 - "Jump if the content of rX is negative. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - - (JXZ jump "jump X zero" 47 - "Jump if the content of rX is zero. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - - (JXP jump "jump X positive" 47 - "Jump if the content of rX is positive. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - - (JXNN jump "jump X non-negative" 47 - "Jump if the content of rX is non-negative. + (JG jump "Jump on greater" 39 + "Jump if '[CM] = G'. Register J is set to the value of the next instruction that would have been executed when there was no jump." 1) - (JXNZ jump "jump X non-zero" 47 - "Jump if the content of rX is non-zero. + (JGE jump "Jump on not less" 39 + "Jump if '[CM]' does not equal 'L'. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - (JXNP jump "jump X non-positive" 47 - "Jump if the content of rX is non-positive. + (JNE jump "Jump on not equal" 39 + "Jump if '[CM]' does not equal 'E'. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - (J1N jump "jump I1 negative" ,(+ 40 1) - "Jump if the content of rI1 is negative. + + (JLE jump "Jump on not greater" 39 + "Jump if '[CM]' does not equal 'G'. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - - (J1Z jump "jump I1 zero" ,(+ 40 1) - "Jump if the content of rI1 is zero. + (JAN jump "jump A negative" 40 + "Jump if the content of rA is negative. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - (J1P jump "jump I1 positive" ,(+ 40 1) - "Jump if the content of rI1 is positive. + (JAZ jump "jump A zero" 40 + "Jump if the content of rA is zero. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - (J1NN jump "jump I1 non-negative" ,(+ 40 1) - "Jump if the content of rI1 is non-negative. + (JAP jump "jump A positive" 40 + "Jump if the content of rA is positive. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - (J1NZ jump "jump I1 non-zero" ,(+ 40 1) - "Jump if the content of rI1 is non-zero. + (JANN jump "jump A non-negative" 40 + "Jump if the content of rA is non-negative. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - (J1NP jump "jump I1 non-positive" ,(+ 40 1) - "Jump if the content of rI1 is non-positive. + (JANZ jump "jump A non-zero" 40 + "Jump if the content of rA is non-zero. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - (J2N jump "jump I2 negative" ,(+ 40 1) - "Jump if the content of rI2 is negative. + + (JANP jump "jump A non-positive" 40 + "Jump if the content of rA is non-positive. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - - (J2Z jump "jump I2 zero" ,(+ 40 1) - "Jump if the content of rI2 is zero. + (JXN jump "jump X negative" 47 + "Jump if the content of rX is negative. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - (J2P jump "jump I2 positive" ,(+ 40 1) - "Jump if the content of rI2 is positive. + (JXZ jump "jump X zero" 47 + "Jump if the content of rX is zero. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - (J2NN jump "jump I2 non-negative" ,(+ 40 1) - "Jump if the content of rI2 is non-negative. + (JXP jump "jump X positive" 47 + "Jump if the content of rX is positive. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - (J2NZ jump "jump I2 non-zero" ,(+ 40 1) - "Jump if the content of rI2 is non-zero. + (JXNN jump "jump X non-negative" 47 + "Jump if the content of rX is non-negative. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - (J2NP jump "jump I2 non-positive" ,(+ 40 1) - "Jump if the content of rI2 is non-positive. + (JXNZ jump "jump X non-zero" 47 + "Jump if the content of rX is non-zero. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - (J3N jump "jump I3 negative" ,(+ 40 1) - "Jump if the content of rI3 is negative. + (JXNP jump "jump X non-positive" 47 + "Jump if the content of rX is non-positive. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - - (J3Z jump "jump I3 zero" ,(+ 40 1) - "Jump if the content of rI3 is zero. + (J1N jump "jump I1 negative" ,(+ 40 1) + "Jump if the content of rI1 is negative. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - (J3P jump "jump I3 positive" ,(+ 40 1) - "Jump if the content of rI3 is positive. + (J1Z jump "jump I1 zero" ,(+ 40 1) + "Jump if the content of rI1 is zero. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - (J3NN jump "jump I3 non-negative" ,(+ 40 1) - "Jump if the content of rI3 is non-negative. + (J1P jump "jump I1 positive" ,(+ 40 1) + "Jump if the content of rI1 is positive. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - (J3NZ jump "jump I3 non-zero" ,(+ 40 1) - "Jump if the content of rI3 is non-zero. + (J1NN jump "jump I1 non-negative" ,(+ 40 1) + "Jump if the content of rI1 is non-negative. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - (J3NP jump "jump I3 non-positive" ,(+ 40 1) - "Jump if the content of rI3 is non-positive. + (J1NZ jump "jump I1 non-zero" ,(+ 40 1) + "Jump if the content of rI1 is non-zero. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - (J4N jump "jump I4 negative" ,(+ 40 1) - "Jump if the content of rI4 is negative. + (J1NP jump "jump I1 non-positive" ,(+ 40 1) + "Jump if the content of rI1 is non-positive. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - - (J4Z jump "jump I4 zero" ,(+ 40 1) - "Jump if the content of rI4 is zero. + (J2N jump "jump I2 negative" ,(+ 40 1) + "Jump if the content of rI2 is negative. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - (J4P jump "jump I4 positive" ,(+ 40 1) - "Jump if the content of rI4 is positive. + (J2Z jump "jump I2 zero" ,(+ 40 1) + "Jump if the content of rI2 is zero. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - (J4NN jump "jump I4 non-negative" ,(+ 40 1) - "Jump if the content of rI4 is non-negative. + (J2P jump "jump I2 positive" ,(+ 40 1) + "Jump if the content of rI2 is positive. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - (J4NZ jump "jump I4 non-zero" ,(+ 40 1) - "Jump if the content of rI4 is non-zero. + (J2NN jump "jump I2 non-negative" ,(+ 40 1) + "Jump if the content of rI2 is non-negative. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - (J4NP jump "jump I4 non-positive" ,(+ 40 1) - "Jump if the content of rI4 is non-positive. + (J2NZ jump "jump I2 non-zero" ,(+ 40 1) + "Jump if the content of rI2 is non-zero. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - (J5N jump "jump I5 negative" ,(+ 40 1) - "Jump if the content of rI5 is negative. + (J2NP jump "jump I2 non-positive" ,(+ 40 1) + "Jump if the content of rI2 is non-positive. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - (J5Z jump "jump I5 zero" ,(+ 40 1) - "Jump if the content of rI5 is zero. + (J3N jump "jump I3 negative" ,(+ 40 1) + "Jump if the content of rI3 is negative. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - (J5P jump "jump I5 positive" ,(+ 40 1) - "Jump if the content of rI5 is positive. + (J3Z jump "jump I3 zero" ,(+ 40 1) + "Jump if the content of rI3 is zero. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - (J5NN jump "jump I5 non-negative" ,(+ 40 1) - "Jump if the content of rI5 is non-negative. + (J3P jump "jump I3 positive" ,(+ 40 1) + "Jump if the content of rI3 is positive. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - (J5NZ jump "jump I5 non-zero" ,(+ 40 1) - "Jump if the content of rI5 is non-zero. + (J3NN jump "jump I3 non-negative" ,(+ 40 1) + "Jump if the content of rI3 is non-negative. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - (J5NP jump "jump I5 non-positive" ,(+ 40 1) - "Jump if the content of rI5 is non-positive. + (J3NZ jump "jump I3 non-zero" ,(+ 40 1) + "Jump if the content of rI3 is non-zero. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - (J6N jump "jump I6 negative" ,(+ 40 1) - "Jump if the content of rI6 is negative. + (J3NP jump "jump I3 non-positive" ,(+ 40 1) + "Jump if the content of rI3 is non-positive. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - (J6Z jump "jump I6 zero" ,(+ 40 1) - "Jump if the content of rI6 is zero. + (J4N jump "jump I4 negative" ,(+ 40 1) + "Jump if the content of rI4 is negative. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - (J6P jump "jump I6 positive" ,(+ 40 1) - "Jump if the content of rI6 is positive. + (J4Z jump "jump I4 zero" ,(+ 40 1) + "Jump if the content of rI4 is zero. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - (J6NN jump "jump I6 non-negative" ,(+ 40 1) - "Jump if the content of rI6 is non-negative. + (J4P jump "jump I4 positive" ,(+ 40 1) + "Jump if the content of rI4 is positive. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - (J6NZ jump "jump I6 non-zero" ,(+ 40 1) - "Jump if the content of rI6 is non-zero. + (J4NN jump "jump I4 non-negative" ,(+ 40 1) + "Jump if the content of rI4 is non-negative. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - (J6NP jump "jump I6 non-positive" ,(+ 40 1) - "Jump if the content of rI6 is non-positive. + (J4NZ jump "jump I4 non-zero" ,(+ 40 1) + "Jump if the content of rI4 is non-zero. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - (SLA miscellaneous "shift left A" 6 - "Shift to A, M bytes left. + + (J4NP jump "jump I4 non-positive" ,(+ 40 1) + "Jump if the content of rI4 is non-positive. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + + (J5N jump "jump I5 negative" ,(+ 40 1) + "Jump if the content of rI5 is negative. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + + (J5Z jump "jump I5 zero" ,(+ 40 1) + "Jump if the content of rI5 is zero. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + + (J5P jump "jump I5 positive" ,(+ 40 1) + "Jump if the content of rI5 is positive. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + + (J5NN jump "jump I5 non-negative" ,(+ 40 1) + "Jump if the content of rI5 is non-negative. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + + (J5NZ jump "jump I5 non-zero" ,(+ 40 1) + "Jump if the content of rI5 is non-zero. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + + (J5NP jump "jump I5 non-positive" ,(+ 40 1) + "Jump if the content of rI5 is non-positive. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + + (J6N jump "jump I6 negative" ,(+ 40 1) + "Jump if the content of rI6 is negative. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + + (J6Z jump "jump I6 zero" ,(+ 40 1) + "Jump if the content of rI6 is zero. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + + (J6P jump "jump I6 positive" ,(+ 40 1) + "Jump if the content of rI6 is positive. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + + (J6NN jump "jump I6 non-negative" ,(+ 40 1) + "Jump if the content of rI6 is non-negative. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + + (J6NZ jump "jump I6 non-zero" ,(+ 40 1) + "Jump if the content of rI6 is non-zero. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + + (J6NP jump "jump I6 non-positive" ,(+ 40 1) + "Jump if the content of rI6 is non-positive. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (SLA miscellaneous "shift left A" 6 + "Shift to A, M bytes left. Hero's will be added to the right." - 2) + 2) - (SRA miscellaneous "shift right A" 6 - "Shift to A, M bytes right. + (SRA miscellaneous "shift right A" 6 + "Shift to A, M bytes right. Zeros will be added to the left." - 2) + 2) - (SLAX miscellaneous "shift left AX" 6 - "Shift AX, M bytes left. + (SLAX miscellaneous "shift left AX" 6 + "Shift AX, M bytes left. Zeros will be added to the right." - 2) + 2) - (SRAX miscellaneous "shift right AX" 6 - "Shift AX, M bytes right. + (SRAX miscellaneous "shift right AX" 6 + "Shift AX, M bytes right. Zeros will be added to the left." - 2) + 2) - (SLC miscellaneous "shift left AX circularly" 6 - "Shift AX, M bytes left circularly. + (SLC miscellaneous "shift left AX circularly" 6 + "Shift AX, M bytes left circularly. The bytes that fall off to the left will be added to the right." - 2) + 2) - (SRC miscellaneous "shift right AX circularly" 6 - "Shift AX, M bytes right circularly. + (SRC miscellaneous "shift right AX circularly" 6 + "Shift AX, M bytes right circularly. The bytes that fall off to the right will be added to the left." - 2) + 2) - (MOVE miscellaneous "move" 7 number - "Move MOD words from M to the location stored in rI1." - (+ 1 (* 2 number))) + (MOVE miscellaneous "move" 7 number + "Move MOD words from M to the location stored in rI1." + (+ 1 (* 2 number))) - (NOP miscellaneous "no operation" 0 ignored - "No operation, M and F are not used by the machine." - 1) + (NOP miscellaneous "no operation" 0 ignored + "No operation, M and F are not used by the machine." + 1) - (HLT miscellaneous "halt" 5 - "Halt. + (HLT miscellaneous "halt" 5 + "Halt. Stop instruction fetching." - 1) + 1) - (IN input-output "input" 36 unit - "Transfer a block of words from the specified unit to memory. + (IN input-output "input" 36 unit + "Transfer a block of words from the specified unit to memory. The transfer starts at address M." - 1) + 1) - (OUT input-output "output" 37 unit - "Transfer a block of words from memory. + (OUT input-output "output" 37 unit + "Transfer a block of words from memory. The transfer starts at address M to the specified unit." - 1) + 1) - (IOC input-output "input-output control" 35 unit - "Perform a control operation. + (IOC input-output "input-output control" 35 unit + "Perform a control operation. The control operation is given by M on the specified unit." - 1) + 1) - (JRED input-output "jump ready" 38 unit - "Jump to M if the specified unit is ready." - 1) + (JRED input-output "jump ready" 38 unit + "Jump to M if the specified unit is ready." + 1) - (JBUS input-output "jump busy" 34 unit - "Jump to M if the specified unit is busy." - 1) + (JBUS input-output "jump busy" 34 unit + "Jump to M if the specified unit is busy." + 1) - (NUM conversion "convert to numeric" 5 - "Convert rAX to its numerical value and store it in rA. + (NUM conversion "convert to numeric" 5 + "Convert rAX to its numerical value and store it in rA. the register rAX is assumed to contain a character representation of a number." - 10) + 10) - (CHAR conversion "convert to characters" 5 - "Convert the number stored in rA to a character representation. + (CHAR conversion "convert to characters" 5 + "Convert the number stored in rA to a character representation. The converted character representation is stored in rAX." - 10)) + 10))) "Alist that contains all the possible operation codes for mix. Each elt has the form From e9b286507deee12f3fd79defdd742342324299e3 Mon Sep 17 00:00:00 2001 From: Bill Wohler Date: Thu, 13 Oct 2005 15:53:38 +0000 Subject: [PATCH 148/168] (MH_E_SRC): Renamed from MH-E-SRC per NMAKE restrictions. Suggested by David Robinow . --- lisp/ChangeLog | 5 +++++ lisp/makefile.w32-in | 4 ++-- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 3e6c02b0379..1818e11f3da 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2005-10-13 Bill Wohler + + * makefile.w32-in (MH_E_SRC): Renamed from MH-E-SRC per NMAKE + restrictions. Suggested by David Robinow . + 2005-10-13 Kenichi Handa * international/utf-8.el (utf-8-compose): Display an invalid UTF-8 diff --git a/lisp/makefile.w32-in b/lisp/makefile.w32-in index 17e1dd76019..df92500a006 100644 --- a/lisp/makefile.w32-in +++ b/lisp/makefile.w32-in @@ -288,7 +288,7 @@ recompile: mh-autoloads doit # Update MH-E internal autoloads. These are not to be confused with # the autoloads for the MH-E entry points, which are already in # loaddefs.el. -MH-E-SRC = $(lisp)/mh-e/mh-acros.el $(lisp)/mh-e/mh-alias.el \ +MH_E_SRC = $(lisp)/mh-e/mh-acros.el $(lisp)/mh-e/mh-alias.el \ $(lisp)/mh-e/mh-comp.el $(lisp)/mh-e/mh-customize.el \ $(lisp)/mh-e/mh-e.el $(lisp)/mh-e/mh-funcs.el \ $(lisp)/mh-e/mh-mime.el $(lisp)/mh-e/mh-pick.el \ @@ -299,7 +299,7 @@ MH-E-SRC = $(lisp)/mh-e/mh-acros.el $(lisp)/mh-e/mh-alias.el \ $(lisp)/mh-e/mh-utils.el mh-autoloads: $(lisp)/mh-e/mh-loaddefs.el -$(lisp)/mh-e/mh-loaddefs.el: $(MH-E-SRC) +$(lisp)/mh-e/mh-loaddefs.el: $(MH_E_SRC) echo ";;; mh-loaddefs.el --- automatically extracted autoloads" > $@ echo ";;" >> $@ echo ";;; Copyright (C) 2003, 2004, 2005 Free Software Foundation, Inc." >> $@ From e1f1d04732aeb05775ca4491389fbb467b1a4abc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Dj=C3=A4rv?= Date: Thu, 13 Oct 2005 17:38:18 +0000 Subject: [PATCH 149/168] * toolbar/diropen.xpm, toolbar/diropen.pbm: New versions made from Gnome file-manager.png as suggested by Joachim Nilsson . * toolbar/README: Add diropen.xpm. --- lisp/ChangeLog | 8 ++ lisp/toolbar/README | 2 + lisp/toolbar/diropen.pbm | Bin 81 -> 81 bytes lisp/toolbar/diropen.xpm | 255 +++++++-------------------------------- 4 files changed, 52 insertions(+), 213 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 1818e11f3da..44e83cafb41 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,11 @@ +2005-10-13 Jan Dj,Ad(Brv + + * toolbar/diropen.xpm, toolbar/diropen.pbm: New versions made from + Gnome file-manager.png as suggested by + Joachim Nilsson . + + * toolbar/README: Add diropen.xpm. + 2005-10-13 Bill Wohler * makefile.w32-in (MH_E_SRC): Renamed from MH-E-SRC per NMAKE diff --git a/lisp/toolbar/README b/lisp/toolbar/README index 4bf1700dd91..81df0c874bd 100644 --- a/lisp/toolbar/README +++ b/lisp/toolbar/README @@ -7,4 +7,6 @@ The following icons are from GTK+ 2.x: back_arrow.xpm and fwd_arrow.xpm are slightly modified undo and redo. + diropen.xpm is file-manager.png from Gnome hicolor theme. + They are not part of Emacs, but distributed and used by Emacs. diff --git a/lisp/toolbar/diropen.pbm b/lisp/toolbar/diropen.pbm index 0f1996db78c8f6d791856dd62509c7186d9104d1..61adc3b2a23223f43d12a1c93c8db54161e72b0c 100644 GIT binary patch literal 81 zcmWGA;WD&TFf!q?|KH%i;LyOJ07DBJ7#1`VMS#{{Yhpq5=4S97+HH diff --git a/lisp/toolbar/diropen.xpm b/lisp/toolbar/diropen.xpm index bdc0b19d7dd..6937b99a44d 100644 --- a/lisp/toolbar/diropen.xpm +++ b/lisp/toolbar/diropen.xpm @@ -1,215 +1,44 @@ /* XPM */ static char * diropen_xpm[] = { -"24 24 188 2", -" c None", -". c #000000", -"+ c #010100", -"@ c #B5B8A5", -"# c #E4E7D2", -"$ c #878A76", -"% c #33342B", -"& c #0B0B0B", -"* c #E2E5CF", -"= c #CFD4AF", -"- c #CED3AE", -"; c #B2B696", -"> c #2D2D25", -", c #23241D", -"' c #9D9F90", -") c #C6CAA6", -"! c #C4C9A5", -"~ c #C6CBA7", -"{ c #C7CCA8", -"] c #C9CEA9", -"^ c #555847", -"/ c #1A1B15", -"( c #20201A", -"_ c #D4D6C2", -": c #BEC2A0", -"< c #B3B896", -"[ c #B0B595", -"} c #B3B797", -"| c #B6BB99", -"1 c #BBC09E", -"2 c #BCC19F", -"3 c #81856C", -"4 c #3E3F32", -"5 c #010101", -"6 c #DADDC8", -"7 c #AFB494", -"8 c #AAAF8F", -"9 c #A3A789", -"0 c #A6AA8B", -"a c #A9AD8E", -"b c #A7AB8D", -"c c #A4A88A", -"d c #A1A588", -"e c #AAAD96", -"f c #B3B5A5", -"g c #B8BBAA", -"h c #BABCAB", -"i c #40413B", -"j c #CACDBB", -"k c #BABDA8", -"l c #0C0C09", -"m c #DDDFCB", -"n c #969B7E", -"o c #9DA286", -"p c #95987C", -"q c #96997E", -"r c #9A9D81", -"s c #999D80", -"t c #9DA184", -"u c #A5AA8B", -"v c #A4A98A", -"w c #A3A889", -"x c #A2A588", -"y c #33352B", -"z c #9B9E83", -"A c #898D74", -"B c #D8DBC9", -"C c #84866E", -"D c #7D8169", -"E c #151612", -"F c #D7DAC9", -"G c #797D67", -"H c #3D3F34", -"I c #E0E0D9", -"J c #EBEDDD", -"K c #E8EBD9", -"L c #D8DBCA", -"M c #1A1A18", -"N c #0A0A09", -"O c #6E7067", -"P c #8D8F84", -"Q c #4A4B45", -"R c #2C2D29", -"S c #4B4C46", -"T c #E7EAD8", -"U c #E3E6D4", -"V c #DEE1D0", -"W c #DADCCC", -"X c #DADCD1", -"Y c #2B2C28", -"Z c #D7DAC6", -"` c #6F735E", -" . c #0D0D0D", -".. c #F4F4EC", -"+. c #606251", -"@. c #92957B", -"#. c #4A4C3E", -"$. c #434438", -"%. c #CACFAB", -"&. c #C6CBA8", -"*. c #C2C6A4", -"=. c #ABB091", -"-. c #23251E", -";. c #494B3D", -">. c #DCDCD4", -",. c #EAECDD", -"'. c #CDD2AD", -"). c #20201B", -"!. c #1C1C17", -"~. c #A4A88B", -"{. c #414337", -"]. c #BABF9D", -"^. c #B5B999", -"/. c #81836C", -"(. c #070806", -"_. c #D5D8C4", -":. c #161616", -"<. c #F2F2EA", -"[. c #CACFAA", -"}. c #050504", -"|. c #3C3D32", -"1. c #C9CEAA", -"2. c #C8CDA9", -"3. c #BFC4A2", -"4. c #3E4035", -"5. c #BCC09F", -"6. c #B6BB9A", -"7. c #B0B494", -"8. c #9DA185", -"9. c #535445", -"0. c #B6B8A7", -"a. c #747470", -"b. c #ECECE2", -"c. c #C3C8A5", -"d. c #C2C7A4", -"e. c #393B30", -"f. c #BFC4A1", -"g. c #BDC2A0", -"h. c #C0C5A2", -"i. c #3A3B31", -"j. c #A9AD8F", -"k. c #A3A78A", -"l. c #80836D", -"m. c #020201", -"n. c #A6A998", -"o. c #B8BC9B", -"p. c #1B1C17", -"q. c #181814", -"r. c #AFB394", -"s. c #ACB091", -"t. c #878A72", -"u. c #9B9F83", -"v. c #9A9D82", -"w. c #8A8D75", -"x. c #4F5243", -"y. c #070705", -"z. c #9E9F91", -"A. c #E5E6DA", -"B. c #ADB192", -"C. c #A6AA8C", -"D. c #A5A98C", -"E. c #4B4D3F", -"F. c #70735F", -"G. c #9FA286", -"H. c #999D81", -"I. c #35362D", -"J. c #2D2E26", -"K. c #8A8D74", -"L. c #71735F", -"M. c #080908", -"N. c #E3E5D9", -"O. c #C0C3AF", -"P. c #94987C", -"Q. c #8F9379", -"R. c #8B8F75", -"S. c #8A8E74", -"T. c #888C73", -"U. c #7D816A", -"V. c #0E0F0C", -"W. c #3E4034", -"X. c #4E5042", -"Y. c #282922", -"Z. c #121310", -"`. c #24251F", -" + c #71745F", -".+ c #6A6D59", -"++ c #434538", -"@+ c #080907", -" ", -" ", -" ", -" . . . . . . . ", -" + @ # # # # # $ % ", -" & * = = = - - ; > ", -", ' * ) ! ~ { ] ] ^ / . . ", -"( _ : < [ } | 1 2 3 4 5 . . . . . . . ", -", 6 7 8 9 0 8 a b c d e f g h . i j k . ", -"l m n o p q r s q t u v w x 9 . y z A . ", -". B C D E . . . . . . . . . . . . . . . 5 5 ", -". F G H I J K K L M N O P Q R . S T U V W X Y ", -". Z ` ...= = = +.. @.= = = #.. $.%.&.*.1 =.-. ", -". Z ;.>.,.'.- - ).!.'.'.'.'.~.. {.&.*.].^./.(. ", -". _.:.<.%.[.%.[.}.|.1.{ 2.2.3.. 4.5.6.7.8.9.l ", -". 0.a.b.c.d.d.*.}.e.f.g.h.g.} . i.[ j.k.l.m. ", -". n.>.o.o.^.} } p.q.r.r.r.s.t.. % u.v.w.x.y. ", -". z.A.B.j.C.D.k.E.. F.G.u.H.I.. J.K.K.L.M. ", -". N.O.P.Q.R.S.T.U.V.}.W.X.Y.Z.. `. +.+++@+ ", -" . . . . . . . . . . . . . . . . . . }. ", -" ", -" ", -" ", -" "}; +"19 24 17 1", +" c None", +". c #000100", +"+ c #C6C9A6", +"@ c #D0D3AF", +"# c #93997C", +"$ c #E6E7D0", +"% c #BEC19E", +"& c #B4B895", +"* c #A7AA88", +"= c #6B6D59", +"- c #4A4E40", +"; c #7C8166", +"> c #898E72", +", c #3C4032", +"' c #575845", +") c #34332C", +"! c #24231D", +" ............... ", +" .+@@@@@@@@@@@@@#. ", +".$@@@@@@@@@@@@@@@#.", +".++++%%%%%%%%%&&&*.", +".&&&&&&&&&&******#.", +".*%+++%%%%%%%%%&=#.", +".*+***********##-#.", +".*+****;===;####-#.", +".*+****=*****###-#.", +".*+****;*****###-#.", +".*+****########>-#.", +".*&######>>>>>>>,>.", +".*#-------------'>)", +".*&&&&&&&&&&&&&*#>)", +".*&************#'>)", +".*&***********##,>)", +".*&****====;###>,>)", +".#&****=**#**##>,;)", +".#&****>****###>,;)", +".#&****########>,;)", +".##''''''''''''',;)", +".#>==============;)", +".''''''''''''''''-!", +" ................. "}; From fcd52625ed78a3d108300a5f16dee1aa09183299 Mon Sep 17 00:00:00 2001 From: Bill Wohler Date: Thu, 13 Oct 2005 21:46:40 +0000 Subject: [PATCH 150/168] (mh-autoloads.el): Added. --- lisp/mh-e/.gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/lisp/mh-e/.gitignore b/lisp/mh-e/.gitignore index 150b33984e4..19a8825a278 100644 --- a/lisp/mh-e/.gitignore +++ b/lisp/mh-e/.gitignore @@ -1 +1,2 @@ +mh-autoloads.el mh-loaddefs.el From 8511877a9f2522eb07c6525d31a13adf07f638f4 Mon Sep 17 00:00:00 2001 From: Stefan Monnier Date: Thu, 13 Oct 2005 22:17:58 +0000 Subject: [PATCH 151/168] (mixal-operation-codes-alist): Use a constant. --- lisp/ChangeLog | 42 +- lisp/progmodes/mixal-mode.el | 987 +++++++++++++++++------------------ 2 files changed, 487 insertions(+), 542 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 44e83cafb41..00c71e23aeb 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,24 +1,29 @@ 2005-10-13 Jan Dj,Ad(Brv * toolbar/diropen.xpm, toolbar/diropen.pbm: New versions made from - Gnome file-manager.png as suggested by + Gnome file-manager.png. Suggested by Joachim Nilsson . * toolbar/README: Add diropen.xpm. 2005-10-13 Bill Wohler - * makefile.w32-in (MH_E_SRC): Renamed from MH-E-SRC per NMAKE - restrictions. Suggested by David Robinow . + * makefile.w32-in (MH_E_SRC): Rename from MH-E-SRC per NMAKE + restrictions. Suggested by David Robinow . + +2005-10-13 Stefan Monnier + + * progmodes/mixal-mode.el (mixal-operation-codes-alist): + Don't waste the byte-compiler's time on constant data. 2005-10-13 Kenichi Handa * international/utf-8.el (utf-8-compose): Display an invalid UTF-8 byte with `escape-glyph' face. - * international/fontset.el (ccl-encode-unicode-font): Lookup - utf-subst-table-for-encode, not ucs-mule-cjk-to-unicode. Handle - the case that ucs-mule-to-mule-unicode translates a character to + * international/fontset.el (ccl-encode-unicode-font): + Lookup utf-subst-table-for-encode, not ucs-mule-cjk-to-unicode. + Handle the case that ucs-mule-to-mule-unicode translates a character to ASCII (usually for IPA characters). 2005-10-12 Bill Wohler @@ -6007,8 +6012,8 @@ * log-view.el (log-view-file, log-view-message): Remove "-face" suffix from face names. - (log-view-file-face, log-view-message-face): New - backward-compatibility aliases for renamed faces. + (log-view-file-face, log-view-message-face): + New backward-compatibility aliases for renamed faces. (log-view-file-face, log-view-message-face): Use renamed log-view faces. @@ -6028,8 +6033,8 @@ (ruler-mode-margins-face, ruler-mode-fringes-face) (ruler-mode-column-number-face, ruler-mode-fill-column-face) (ruler-mode-comment-column-face, ruler-mode-goal-column-face) - (ruler-mode-tab-stop-face, ruler-mode-current-column-face): New - backward-compatibility aliases for renamed faces. + (ruler-mode-tab-stop-face, ruler-mode-current-column-face): + New backward-compatibility aliases for renamed faces. (ruler-mode-pad, ruler-mode-margins, ruler-mode-fringes) (ruler-mode-column-number, ruler-mode-fill-column) (ruler-mode-comment-column, ruler-mode-goal-column) @@ -6152,8 +6157,7 @@ * comint.el (comint-check-proc, make-comint-in-buffer) (comint-source-default): Doc fixes. - * term.el (term-send-string): Improve argument/docstring - consistency. + * term.el (term-send-string): Improve argument/docstring consistency. 2005-06-09 Luc Teirlinck @@ -6270,12 +6274,11 @@ XEmacs code. (flyspell-word): Minor simplification. (flyspell-math-tex-command-p): Quieten the byte-compiler. - (flyspell-external-point-words): Remove unused vars `size' and - `start'. - (flyspell-do-correct): Rename from flyspell-xemacs-correct. Merge - the corresponding Emacs code. - (flyspell-correct-word, flyspell-xemacs-popup): Use - flyspell-do-correct. + (flyspell-external-point-words): Remove unused vars `size' and `start'. + (flyspell-do-correct): Rename from flyspell-xemacs-correct. + Merge the corresponding Emacs code. + (flyspell-correct-word, flyspell-xemacs-popup): + Use flyspell-do-correct. * emacs-lisp/debug.el (debug): Don't bury the buffer unless it's in a dedicated window. @@ -6314,8 +6317,7 @@ Add a completion-base-size-function property. * simple.el (completion-setup-function): Look for - completion-base-size-function property of - minibuffer-completion-table. + completion-base-size-function property of minibuffer-completion-table. * files.el (locate-file-completion): Doc fix. diff --git a/lisp/progmodes/mixal-mode.el b/lisp/progmodes/mixal-mode.el index 0e881c0d79f..741ae8097a0 100644 --- a/lisp/progmodes/mixal-mode.el +++ b/lisp/progmodes/mixal-mode.el @@ -124,951 +124,894 @@ value.") (defvar mixal-operation-codes-alist ;; FIXME: the codes FADD, FSUB, FMUL, FDIV, JRAD, and FCMP were in ;; mixal-operation-codes but not here. They should probably be added here. - (eval-when-compile - `((LDA loading "load A" 8 field - "Put in rA the contents of cell no. M. + ;; + ;; We used to define this with a backquote and subexps like ,(+ 8 3) for + ;; better clarity, but the resulting code was too big and caused the + ;; byte-compiler to eat up all the stack space. Even using + ;; `eval-when-compile' didn't help because the byte-compiler insists on + ;; compiling the code before evaluating it. + '((LDA loading "load A" 8 field + "Put in rA the contents of cell no. M. Uses a + when there is no sign in subfield. Subfield is left padded with zeros to make a word." - 2) + 2) - (LDX loading "load X" 15 field - "Put in rX the contents of cell no. M. + (LDX loading "load X" 15 field + "Put in rX the contents of cell no. M. Uses a + when there is no sign in subfield. Subfield is left padded with zeros to make a word." - 2) + 2) - (LD1 loading "load I1" ,(+ 8 1) field - "Put in rI1 the contents of cell no. M. + (LD1 loading "load I1" 9 field + "Put in rI1 the contents of cell no. M. Uses a + when there is no sign in subfield. Subfield is left padded with zeros to make a word. Index registers only have 2 bytes and a sign, Trying to set anything more that that will result in undefined behavior." - 2) + 2) - (LD2 loading "load I2" ,(+ 8 2) field - "Put in rI2 the contents of cell no. M. + (LD2 loading "load I2" 10 field + "Put in rI2 the contents of cell no. M. Uses a + when there is no sign in subfield. Subfield is left padded with zeros to make a word. Index registers only have 2 bytes and a sign, Trying to set anything more that that will result in undefined behavior." - 2) + 2) - (LD3 loading "load I3" ,(+ 8 3) field - "Put in rI3 the contents of cell no. M. + (LD3 loading "load I3" 11 field + "Put in rI3 the contents of cell no. M. Uses a + when there is no sign in subfield. Subfield is left padded with zeros to make a word. Index registers only have 2 bytes and a sign, Trying to set anything more that that will result in undefined behavior." - 2) + 2) - (LD4 loading "load I4" ,(+ 8 4) field - "Put in rI4 the contents of cell no. M. + (LD4 loading "load I4" 12 field + "Put in rI4 the contents of cell no. M. Uses a + when there is no sign in subfield. Subfield is left padded with zeros to make a word. Index registers only have 2 bytes and a sign, Trying to set anything more that that will result in undefined behavior." - 2) + 2) - (LD5 loading "load I5" ,(+ 8 5) field - "Put in rI5 the contents of cell no. M. + (LD5 loading "load I5" 13 field + "Put in rI5 the contents of cell no. M. Uses a + when there is no sign in subfield. Subfield is left padded with zeros to make a word. Index registers only have 2 bytes and a sign, Trying to set anything more that that will result in undefined behavior." - 2) + 2) - (LD6 loading "load I6" ,(+ 8 6) field - "Put in rI6 the contents of cell no. M. + (LD6 loading "load I6" 14 field + "Put in rI6 the contents of cell no. M. Uses a + when there is no sign in subfield. Subfield is left padded with zeros to make a word. Index registers only have 2 bytes and a sign, Trying to set anything more that that will result in undefined behavior." - 2) + 2) - (LDAN loading "load A negative" 16 field - "Put in rA the contents of cell no. M, with opposite sign. + (LDAN loading "load A negative" 16 field + "Put in rA the contents of cell no. M, with opposite sign. Uses a + when there is no sign in subfield, otherwise use the opposite sign. Subfield is left padded with zeros to make a word." - 2) + 2) - (LDXN loading "load X negative" 23 field - "Put in rX the contents of cell no. M, with opposite sign. + (LDXN loading "load X negative" 23 field + "Put in rX the contents of cell no. M, with opposite sign. Uses a + when there is no sign in subfield, otherwise use the opposite sign. Subfield is left padded with zeros to make a word." - 2) + 2) - (LD1N loading "load I1 negative" ,(+ 16 1) field - "Put in rI1 the contents of cell no. M, with opposite sign. + (LD1N loading "load I1 negative" 17 field + "Put in rI1 the contents of cell no. M, with opposite sign. Uses a + when there is no sign in subfield, otherwise use the opposite sign. Subfield is left padded with zeros to make a word. Index registers only have 2 bytes and a sign, Trying to set anything more that that will result in undefined behavior." - 2) + 2) - (LD2N loading "load I2 negative" ,(+ 16 2) field - "Put in rI2 the contents of cell no. M, with opposite sign. + (LD2N loading "load I2 negative" 18 field + "Put in rI2 the contents of cell no. M, with opposite sign. Uses a + when there is no sign in subfield, otherwise use the opposite sign. Subfield is left padded with zeros to make a word. Index registers only have 2 bytes and a sign, Trying to set anything more that that will result in undefined behavior." - 2) + 2) - (LD3N loading "load I3 negative" ,(+ 16 3) field - "Put in rI3 the contents of cell no. M, with opposite sign. + (LD3N loading "load I3 negative" 19 field + "Put in rI3 the contents of cell no. M, with opposite sign. Uses a + when there is no sign in subfield, otherwise use the opposite sign. Subfield is left padded with zeros to make a word. Index registers only have 2 bytes and a sign, Trying to set anything more that that will result in undefined behavior." - 2) + 2) - (LD4N loading "load I4 negative" ,(+ 16 4) field - "Put in rI4 the contents of cell no. M, with opposite sign. + (LD4N loading "load I4 negative" 20 field + "Put in rI4 the contents of cell no. M, with opposite sign. Uses a + when there is no sign in subfield, otherwise use the opposite sign. Subfield is left padded with zeros to make a word. Index registers only have 2 bytes and a sign, Trying to set anything more that that will result in undefined behavior." - 2) + 2) - (LD5N loading "load I5 negative" ,(+ 16 5) field - "Put in rI5 the contents of cell no. M, with opposite sign. + (LD5N loading "load I5 negative" 21 field + "Put in rI5 the contents of cell no. M, with opposite sign. Uses a + when there is no sign in subfield, otherwise use the opposite sign. Subfield is left padded with zeros to make a word. Index registers only have 2 bytes and a sign, Trying to set anything more that that will result in undefined behavior." - 2) + 2) - (LD6N loading "load I6 negative" ,(+ 16 6) field - "Put in rI6 the contents of cell no. M, with opposite sign. + (LD6N loading "load I6 negative" 22 field + "Put in rI6 the contents of cell no. M, with opposite sign. Uses a + when there is no sign in subfield, otherwise use the opposite sign. Subfield is left padded with zeros to make a word. Index registers only have 2 bytes and a sign, Trying to set anything more that that will result in undefined behavior." - 2) + 2) - (STA storing "store A" 24 field - "Store in cell Nr. M the contents of rA. + (STA storing "store A" 24 field + "Store in cell Nr. M the contents of rA. The modification of the operation code represents the subfield of the memory cell that is to be overwritten with bytes from a register. These bytes are taken beginning by the rightmost side of the register. The sign of the memory cell is not changed, unless it is part of the subfield." - 2) + 2) - (STX storing "store X" 31 field - "Store in cell Nr. M the contents of rX. + (STX storing "store X" 31 field + "Store in cell Nr. M the contents of rX. The modification of the operation code represents the subfield of the memory cell that is to be overwritten with bytes from a register. These bytes are taken beginning by the rightmost side of the register. The sign of the memory cell is not changed, unless it is part of the subfield." - 2) + 2) - (ST1 storing "store I1" ,(+ 24 1) field - "Store in cell Nr. M the contents of rI1. + (ST1 storing "store I1" 25 field + "Store in cell Nr. M the contents of rI1. The modification of the operation code represents the subfield of the memory cell that is to be overwritten with bytes from a register. These bytes are taken beginning by the rightmost side of the register. The sign of the memory cell is not changed, unless it is part of the subfield. Because index registers only have 2 bytes and a sign, the rest of the bytes are assumed to be 0." - 2) + 2) - (ST2 storing "store I2" ,(+ 24 2) field - "Store in cell Nr. M the contents of rI2. + (ST2 storing "store I2" 26 field + "Store in cell Nr. M the contents of rI2. The modification of the operation code represents the subfield of the memory cell that is to be overwritten with bytes from a register. These bytes are taken beginning by the rightmost side of the register. The sign of the memory cell is not changed, unless it is part of the subfield. Because index registers only have 2 bytes and a sign, the rest of the bytes are assumed to be 0." - 2) + 2) - (ST3 storing "store I3" ,(+ 24 3) field - "Store in cell Nr. M the contents of rI3. + (ST3 storing "store I3" 27 field + "Store in cell Nr. M the contents of rI3. The modification of the operation code represents the subfield of the memory cell that is to be overwritten with bytes from a register. These bytes are taken beginning by the rightmost side of the register. The sign of the memory cell is not changed, unless it is part of the subfield. Because index registers only have 2 bytes and a sign, the rest of the bytes are assumed to be 0." - 2) + 2) - (ST4 storing "store I4" ,(+ 24 4) field - "Store in cell Nr. M the contents of rI4. + (ST4 storing "store I4" 28 field + "Store in cell Nr. M the contents of rI4. The modification of the operation code represents the subfield of the memory cell that is to be overwritten with bytes from a register. These bytes are taken beginning by the rightmost side of the register. The sign of the memory cell is not changed, unless it is part of the subfield. Because index registers only have 2 bytes and a sign, the rest of the bytes are assumed to be 0." - 2) + 2) - (ST5 storing "store I5" ,(+ 24 5) field - "Store in cell Nr. M the contents of rI5. + (ST5 storing "store I5" 29 field + "Store in cell Nr. M the contents of rI5. The modification of the operation code represents the subfield of the memory cell that is to be overwritten with bytes from a register. These bytes are taken beginning by the rightmost side of the register. The sign of the memory cell is not changed, unless it is part of the subfield. Because index registers only have 2 bytes and a sign, the rest of the bytes are assumed to be 0." - 2) + 2) - (ST6 storing "store I6" ,(+ 24 6) field - "Store in cell Nr. M the contents of rI6. + (ST6 storing "store I6" 30 field + "Store in cell Nr. M the contents of rI6. The modification of the operation code represents the subfield of the memory cell that is to be overwritten with bytes from a register. These bytes are taken beginning by the rightmost side of the register. The sign of the memory cell is not changed, unless it is part of the subfield. Because index registers only have 2 bytes and a sign, the rest of the bytes are assumed to be 0." - 2) + 2) - (STJ storing "store J" 32 field - "Store in cell Nr. M the contents of rJ. + (STJ storing "store J" 32 field + "Store in cell Nr. M the contents of rJ. The modification of the operation code represents the subfield of the memory cell that is to be overwritten with bytes from a register. These bytes are taken beginning by the rightmost side of the register. The sign of rJ is always +, sign of the memory cell is not changed, unless it is part of the subfield. The default field for STJ is (0:2)." - 2) + 2) - (STZ storing "store zero" 33 field - "Store in cell Nr. M '+ 0'. + (STZ storing "store zero" 33 field + "Store in cell Nr. M '+ 0'. The modification of the operation code represents the subfield of the memory cell that is to be overwritten with zeros." - 2) + 2) - (ADD arithmetic "add" 1 field - "Add to A the contents of cell Nr. M. + (ADD arithmetic "add" 1 field + "Add to A the contents of cell Nr. M. Subfield is padded with zero to make a word. If the result is to large, the operation result modulo 1,073,741,823 (the maximum value storable in a MIX word) is stored in `rA', and the overflow toggle is set to TRUE." - 2) + 2) - (SUB arithmetic "subtract" 2 field - "Subtract to A the contents of cell Nr. M. + (SUB arithmetic "subtract" 2 field + "Subtract to A the contents of cell Nr. M. Subfield is padded with zero to make a word. If the result is to large, the operation result modulo 1,073,741,823 (the maximum value storable in a MIX word) is stored in `rA', and the overflow toggle is set to TRUE." - 2) + 2) - (MUL arithmetic "multiply" 3 field - "Multiplies the contents of cell Nr. M with A, result is 10 bytes and stored in rA and rX. + (MUL arithmetic "multiply" 3 field + "Multiplies the contents of cell Nr. M with A, result is 10 bytes and stored in rA and rX. The sign is + if the sign of rA and cell M where the same, otherwise, it is -" - 10) + 10) - (DIV arithmetic "divide" 4 field - "Both rA and rX are taken together and divided by cell Nr. M, quotient is placed in rA, remainder in rX. + (DIV arithmetic "divide" 4 field + "Both rA and rX are taken together and divided by cell Nr. M, quotient is placed in rA, remainder in rX. The sign is taken from rA, and after the divide the sign of rA is set to + when both the sign of rA and M where the same. Divide by zero and overflow of rA result in undefined behavior." - 12) + 12) - (ENTA address-transfer "enter A" 48 - "Literal value is stored in rA. + (ENTA address-transfer "enter A" 48 + "Literal value is stored in rA. Indexed, stores value of index in rA." - 1) + 1) - (ENTX address-transfer "enter X" 55 - "Literal value is stored in rX. + (ENTX address-transfer "enter X" 55 + "Literal value is stored in rX. Indexed, stores value of index in rX." - 1) + 1) - (ENT1 address-transfer "Enter rI1" ,(+ 48 1) - "Literal value is stored in rI1. + (ENT1 address-transfer "Enter rI1" 49 + "Literal value is stored in rI1. Indexed, stores value of index in rI1." - 1) + 1) - (ENT2 address-transfer "Enter rI2" ,(+ 48 2) - "Literal value is stored in rI2. + (ENT2 address-transfer "Enter rI2" 50 + "Literal value is stored in rI2. Indexed, stores value of index in rI2." - 1) + 1) - (ENT3 address-transfer "Enter rI3" ,(+ 48 3) - "Literal value is stored in rI3. + (ENT3 address-transfer "Enter rI3" 51 + "Literal value is stored in rI3. Indexed, stores value of index in rI3." - 1) + 1) - (ENT4 address-transfer "Enter rI4" ,(+ 48 4) - "Literal value is stored in rI4. + (ENT4 address-transfer "Enter rI4" 52 + "Literal value is stored in rI4. Indexed, stores value of index in rI4." - 1) + 1) - (ENT5 address-transfer "Enter rI5" ,(+ 48 5) - "Literal value is stored in rI5. + (ENT5 address-transfer "Enter rI5" 53 + "Literal value is stored in rI5. Indexed, stores value of index in rI5." - 1) + 1) - (ENT6 address-transfer "Enter rI6" ,(+ 48 6) - "Literal value is stored in rI6. + (ENT6 address-transfer "Enter rI6" 54 + "Literal value is stored in rI6. Indexed, stores value of index in rI6." - 1) + 1) - (ENNA address-transfer "enter negative A" 48 - "Literal value is stored in rA with opposite sign. + (ENNA address-transfer "enter negative A" 48 + "Literal value is stored in rA with opposite sign. Indexed, stores value of index in rA with opposite sign." - 1) + 1) - (ENNX address-transfer "enter negative X" 55 - "Literal value is stored in rX with opposite sign. + (ENNX address-transfer "enter negative X" 55 + "Literal value is stored in rX with opposite sign. Indexed, stores value of index in rX with opposite sign." - 1) + 1) - (ENN1 address-transfer "Enter negative rI1" ,(+ 48 1) - "Literal value is stored in rI1 with opposite sign. + (ENN1 address-transfer "Enter negative rI1" 49 + "Literal value is stored in rI1 with opposite sign. Indexed, stores value of index in rI1 with opposite sign." - 1) + 1) - (ENN2 address-transfer "Enter negative rI2" ,(+ 48 2) - "Literal value is stored in rI2 with opposite sign. + (ENN2 address-transfer "Enter negative rI2" 50 + "Literal value is stored in rI2 with opposite sign. Indexed, stores value of index in rI2 with opposite sign." - 1) + 1) - (ENN3 address-transfer "Enter negative rI3" ,(+ 48 3) - "Literal value is stored in rI3 with opposite sign. + (ENN3 address-transfer "Enter negative rI3" 51 + "Literal value is stored in rI3 with opposite sign. Indexed, stores value of index in rI3 with opposite sign." - 1) + 1) - (ENN4 address-transfer "Enter negative rI4" ,(+ 48 4) - "Literal value is stored in rI4 with opposite sign. + (ENN4 address-transfer "Enter negative rI4" 52 + "Literal value is stored in rI4 with opposite sign. Indexed, stores value of index in rI4 with opposite sign." - 1) + 1) - (ENN5 address-transfer "Enter negative rI5" ,(+ 48 5) - "Literal value is stored in rI5 with opposite sign. + (ENN5 address-transfer "Enter negative rI5" 53 + "Literal value is stored in rI5 with opposite sign. Indexed, stores value of index in rI5 with opposite sign." - 1) + 1) - (ENN6 address-transfer "Enter negative rI6" ,(+ 48 6) - "Literal value is stored in rI6 with opposite sign. + (ENN6 address-transfer "Enter negative rI6" 54 + "Literal value is stored in rI6 with opposite sign. Indexed, stores value of index in rI6 with opposite sign." - 1) + 1) - (INCA address-transfer "increase A" 48 - "Increase register A with the literal value of M. + (INCA address-transfer "increase A" 48 + "Increase register A with the literal value of M. On overflow the overflow toggle is set." - 1) + 1) - (INCX address-transfer "increase X" 55 - "Increase register X with the literal value of M. + (INCX address-transfer "increase X" 55 + "Increase register X with the literal value of M. On overflow the overflow toggle is set." - 1) + 1) - (INC1 address-transfer "increase I1" ,(+ 48 1) - "Increase register I1 with the literal value of M. + (INC1 address-transfer "increase I1" 49 + "Increase register I1 with the literal value of M. The result is undefined when the result does not fit in 2 bytes." - 1) + 1) - (INC2 address-transfer "increase I2" ,(+ 48 2) - "Increase register I2 with the literal value of M. + (INC2 address-transfer "increase I2" 50 + "Increase register I2 with the literal value of M. The result is undefined when the result does not fit in 2 bytes." - 1) + 1) - (INC3 address-transfer "increase I3" ,(+ 48 3) - "Increase register I3 with the literal value of M. + (INC3 address-transfer "increase I3" 51 + "Increase register I3 with the literal value of M. The result is undefined when the result does not fit in 2 bytes." - 1) + 1) - (INC4 address-transfer "increase I4" ,(+ 48 4) - "Increase register I4 with the literal value of M. + (INC4 address-transfer "increase I4" 52 + "Increase register I4 with the literal value of M. The result is undefined when the result does not fit in 2 bytes." - 1) + 1) - (INC5 address-transfer "increase I5" ,(+ 48 5) - "Increase register I5 with the literal value of M. + (INC5 address-transfer "increase I5" 53 + "Increase register I5 with the literal value of M. The result is undefined when the result does not fit in 2 bytes." - 1) + 1) - (INC6 address-transfer "increase I6" ,(+ 48 6) - "Increase register I6 with the literal value of M. + (INC6 address-transfer "increase I6" 54 + "Increase register I6 with the literal value of M. The result is undefined when the result does not fit in 2 bytes." - 1) + 1) - (DECA address-transfer "decrease A" 48 - "Decrease register A with the literal value of M. + (DECA address-transfer "decrease A" 48 + "Decrease register A with the literal value of M. On overflow the overflow toggle is set." - 1) + 1) - (DECX address-transfer "decrease X" 55 - "Decrease register X with the literal value of M. + (DECX address-transfer "decrease X" 55 + "Decrease register X with the literal value of M. On overflow the overflow toggle is set." - 1) + 1) - (DEC1 address-transfer "decrease I1" ,(+ 48 1) - "Decrease register I1 with the literal value of M. + (DEC1 address-transfer "decrease I1" 49 + "Decrease register I1 with the literal value of M. The result is undefined when the result does not fit in 2 bytes." - 1) + 1) - (DEC2 address-transfer "decrease I2" ,(+ 48 2) - "Decrease register I2 with the literal value of M. + (DEC2 address-transfer "decrease I2" 50 + "Decrease register I2 with the literal value of M. The result is undefined when the result does not fit in 2 bytes." - 1) + 1) - (DEC3 address-transfer "decrease I3" ,(+ 48 3) - "Decrease register I3 with the literal value of M. + (DEC3 address-transfer "decrease I3" 51 + "Decrease register I3 with the literal value of M. The result is undefined when the result does not fit in 2 bytes." - 1) + 1) - (DEC4 address-transfer "decrease I4" ,(+ 48 4) - "Decrease register I4 with the literal value of M. + (DEC4 address-transfer "decrease I4" 52 + "Decrease register I4 with the literal value of M. The result is undefined when the result does not fit in 2 bytes." - 1) + 1) - (DEC5 address-transfer "decrease I5" ,(+ 48 5) - "Decrease register I5 with the literal value of M. + (DEC5 address-transfer "decrease I5" 53 + "Decrease register I5 with the literal value of M. The result is undefined when the result does not fit in 2 bytes." - 1) + 1) - (DEC6 address-transfer "decrease I6" ,(+ 48 6) - "Decrease register I6 with the literal value of M. + (DEC6 address-transfer "decrease I6" 54 + "Decrease register I6 with the literal value of M. The result is undefined when the result does not fit in 2 bytes." - 1) + 1) - (CMPA comparison "compare A" 56 field - "Compare contents of A with contents of M. + (CMPA comparison "compare A" 56 field + "Compare contents of A with contents of M. The field specifier works on both fields. The comparison indicator is set to LESS, EQUAL or GREATER depending on the outcome." - 2) + 2) - - (CMPX comparison "compare X" 63 field - "Compare contents of rX with contents of M. + (CMPX comparison "compare X" 63 field + "Compare contents of rX with contents of M. The field specifier works on both fields. The comparison indicator is set to LESS, EQUAL or GREATER depending on the outcome." - 2) + 2) - - (CMP1 comparison "compare I1" ,(+ 56 1) field - "Compare contents of rI1 with contents of M. + (CMP1 comparison "compare I1" 57 field + "Compare contents of rI1 with contents of M. The field specifier works on both fields. The comparison indicator is set to LESS, EQUAL or GREATER depending on the outcome. Bit 1,2 and 3 have a value of 0." - 2) + 2) - - (CMP2 comparison "compare I2" ,(+ 56 2) field - "Compare contents of rI2 with contents of M. + (CMP2 comparison "compare I2" 58 field + "Compare contents of rI2 with contents of M. The field specifier works on both fields. The comparison indicator is set to LESS, EQUAL or GREATER depending on the outcome. Bit 1,2 and 3 have a value of 0." - 2) + 2) - - (CMP3 comparison "compare I3" ,(+ 56 3) field - "Compare contents of rI3 with contents of M. + (CMP3 comparison "compare I3" 59 field + "Compare contents of rI3 with contents of M. The field specifier works on both fields. The comparison indicator is set to LESS, EQUAL or GREATER depending on the outcome. Bit 1,2 and 3 have a value of 0." - 2) + 2) - - (CMP4 comparison "compare I4" ,(+ 56 4) field - "Compare contents of rI4 with contents of M. + (CMP4 comparison "compare I4" 60 field + "Compare contents of rI4 with contents of M. The field specifier works on both fields. The comparison indicator is set to LESS, EQUAL or GREATER depending on the outcome. Bit 1,2 and 3 have a value of 0." - 2) + 2) - - (CMP5 comparison "compare I5" ,(+ 56 5) field - "Compare contents of rI5 with contents of M. + (CMP5 comparison "compare I5" 61 field + "Compare contents of rI5 with contents of M. The field specifier works on both fields. The comparison indicator is set to LESS, EQUAL or GREATER depending on the outcome. Bit 1,2 and 3 have a value of 0." - 2) + 2) - - (CMP6 comparison "compare I6" ,(+ 56 6) field - "Compare contents of rI6 with contents of M. + (CMP6 comparison "compare I6" 62 field + "Compare contents of rI6 with contents of M. The field specifier works on both fields. The comparison indicator is set to LESS, EQUAL or GREATER depending on the outcome. Bit 1,2 and 3 have a value of 0." - 2) + 2) - (JMP jump "jump" 39 - "Unconditional jump. + (JMP jump "jump" 39 + "Unconditional jump. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - (JSJ jump "jump, save J" 39 - "Unconditional jump, but rJ is not modified." - 1) + (JSJ jump "jump, save J" 39 + "Unconditional jump, but rJ is not modified." + 1) - (JOV jump "jump on overflow" 39 - "Jump if OV is set (and turn it off). + (JOV jump "jump on overflow" 39 + "Jump if OV is set (and turn it off). Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - (JNOV jump "Jump on no overflow" 39 - "Jump if OV is not set (and turn it off). -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - (JL jump "Jump on less" 39 - "Jump if '[CM] = L'. + (JNOV jump "Jump on no overflow" 39 + "Jump if OV is not set (and turn it off). Register J is set to the value of the next instruction that would have been executed when there was no jump." 1) + (JL jump "Jump on less" 39 + "Jump if '[CM] = L'. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) - (JE jump "Jump on equal" 39 - "Jump if '[CM] = E'. + (JE jump "Jump on equal" 39 + "Jump if '[CM] = E'. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (JG jump "Jump on greater" 39 + "Jump if '[CM] = G'. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (JGE jump "Jump on not less" 39 + "Jump if '[CM]' does not equal 'L'. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (JNE jump "Jump on not equal" 39 + "Jump if '[CM]' does not equal 'E'. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (JLE jump "Jump on not greater" 39 + "Jump if '[CM]' does not equal 'G'. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (JAN jump "jump A negative" 40 + "Jump if the content of rA is negative. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (JAZ jump "jump A zero" 40 + "Jump if the content of rA is zero. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (JAP jump "jump A positive" 40 + "Jump if the content of rA is positive. +Register J is set to the value of the next instruction that would have +been executed when there was no jump." + 1) + + (JANN jump "jump A non-negative" 40 + "Jump if the content of rA is non-negative. Register J is set to the value of the next instruction that would have been executed when there was no jump." 1) - - (JG jump "Jump on greater" 39 - "Jump if '[CM] = G'. + (JANZ jump "jump A non-zero" 40 + "Jump if the content of rA is non-zero. Register J is set to the value of the next instruction that would have been executed when there was no jump." 1) - - (JGE jump "Jump on not less" 39 - "Jump if '[CM]' does not equal 'L'. + (JANP jump "jump A non-positive" 40 + "Jump if the content of rA is non-positive. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - - (JNE jump "Jump on not equal" 39 - "Jump if '[CM]' does not equal 'E'. + (JXN jump "jump X negative" 47 + "Jump if the content of rX is negative. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - - (JLE jump "Jump on not greater" 39 - "Jump if '[CM]' does not equal 'G'. + (JXZ jump "jump X zero" 47 + "Jump if the content of rX is zero. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - (JAN jump "jump A negative" 40 - "Jump if the content of rA is negative. + (JXP jump "jump X positive" 47 + "Jump if the content of rX is positive. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - - (JAZ jump "jump A zero" 40 - "Jump if the content of rA is zero. + (JXNN jump "jump X non-negative" 47 + "Jump if the content of rX is non-negative. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - - (JAP jump "jump A positive" 40 - "Jump if the content of rA is positive. + (JXNZ jump "jump X non-zero" 47 + "Jump if the content of rX is non-zero. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - - (JANN jump "jump A non-negative" 40 - "Jump if the content of rA is non-negative. + (JXNP jump "jump X non-positive" 47 + "Jump if the content of rX is non-positive. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - - (JANZ jump "jump A non-zero" 40 - "Jump if the content of rA is non-zero. + (J1N jump "jump I1 negative" 41 + "Jump if the content of rI1 is negative. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - - (JANP jump "jump A non-positive" 40 - "Jump if the content of rA is non-positive. + (J1Z jump "jump I1 zero" 41 + "Jump if the content of rI1 is zero. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - (JXN jump "jump X negative" 47 - "Jump if the content of rX is negative. + (J1P jump "jump I1 positive" 41 + "Jump if the content of rI1 is positive. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - - (JXZ jump "jump X zero" 47 - "Jump if the content of rX is zero. + (J1NN jump "jump I1 non-negative" 41 + "Jump if the content of rI1 is non-negative. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - - (JXP jump "jump X positive" 47 - "Jump if the content of rX is positive. + (J1NZ jump "jump I1 non-zero" 41 + "Jump if the content of rI1 is non-zero. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - - (JXNN jump "jump X non-negative" 47 - "Jump if the content of rX is non-negative. + (J1NP jump "jump I1 non-positive" 41 + "Jump if the content of rI1 is non-positive. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - - (JXNZ jump "jump X non-zero" 47 - "Jump if the content of rX is non-zero. + (J2N jump "jump I2 negative" 41 + "Jump if the content of rI2 is negative. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - - (JXNP jump "jump X non-positive" 47 - "Jump if the content of rX is non-positive. + (J2Z jump "jump I2 zero" 41 + "Jump if the content of rI2 is zero. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - (J1N jump "jump I1 negative" ,(+ 40 1) - "Jump if the content of rI1 is negative. + (J2P jump "jump I2 positive" 41 + "Jump if the content of rI2 is positive. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - - (J1Z jump "jump I1 zero" ,(+ 40 1) - "Jump if the content of rI1 is zero. + (J2NN jump "jump I2 non-negative" 41 + "Jump if the content of rI2 is non-negative. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - - (J1P jump "jump I1 positive" ,(+ 40 1) - "Jump if the content of rI1 is positive. + (J2NZ jump "jump I2 non-zero" 41 + "Jump if the content of rI2 is non-zero. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - - (J1NN jump "jump I1 non-negative" ,(+ 40 1) - "Jump if the content of rI1 is non-negative. + (J2NP jump "jump I2 non-positive" 41 + "Jump if the content of rI2 is non-positive. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - - (J1NZ jump "jump I1 non-zero" ,(+ 40 1) - "Jump if the content of rI1 is non-zero. + (J3N jump "jump I3 negative" 41 + "Jump if the content of rI3 is negative. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - - (J1NP jump "jump I1 non-positive" ,(+ 40 1) - "Jump if the content of rI1 is non-positive. + (J3Z jump "jump I3 zero" 41 + "Jump if the content of rI3 is zero. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - (J2N jump "jump I2 negative" ,(+ 40 1) - "Jump if the content of rI2 is negative. + (J3P jump "jump I3 positive" 41 + "Jump if the content of rI3 is positive. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - - (J2Z jump "jump I2 zero" ,(+ 40 1) - "Jump if the content of rI2 is zero. + (J3NN jump "jump I3 non-negative" 41 + "Jump if the content of rI3 is non-negative. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - - (J2P jump "jump I2 positive" ,(+ 40 1) - "Jump if the content of rI2 is positive. + (J3NZ jump "jump I3 non-zero" 41 + "Jump if the content of rI3 is non-zero. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - - (J2NN jump "jump I2 non-negative" ,(+ 40 1) - "Jump if the content of rI2 is non-negative. + (J3NP jump "jump I3 non-positive" 41 + "Jump if the content of rI3 is non-positive. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - - (J2NZ jump "jump I2 non-zero" ,(+ 40 1) - "Jump if the content of rI2 is non-zero. + (J4N jump "jump I4 negative" 41 + "Jump if the content of rI4 is negative. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - - (J2NP jump "jump I2 non-positive" ,(+ 40 1) - "Jump if the content of rI2 is non-positive. + (J4Z jump "jump I4 zero" 41 + "Jump if the content of rI4 is zero. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - - (J3N jump "jump I3 negative" ,(+ 40 1) - "Jump if the content of rI3 is negative. + (J4P jump "jump I4 positive" 41 + "Jump if the content of rI4 is positive. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - - (J3Z jump "jump I3 zero" ,(+ 40 1) - "Jump if the content of rI3 is zero. + (J4NN jump "jump I4 non-negative" 41 + "Jump if the content of rI4 is non-negative. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - - (J3P jump "jump I3 positive" ,(+ 40 1) - "Jump if the content of rI3 is positive. + (J4NZ jump "jump I4 non-zero" 41 + "Jump if the content of rI4 is non-zero. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - - (J3NN jump "jump I3 non-negative" ,(+ 40 1) - "Jump if the content of rI3 is non-negative. + (J4NP jump "jump I4 non-positive" 41 + "Jump if the content of rI4 is non-positive. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - - (J3NZ jump "jump I3 non-zero" ,(+ 40 1) - "Jump if the content of rI3 is non-zero. + (J5N jump "jump I5 negative" 41 + "Jump if the content of rI5 is negative. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - - (J3NP jump "jump I3 non-positive" ,(+ 40 1) - "Jump if the content of rI3 is non-positive. + (J5Z jump "jump I5 zero" 41 + "Jump if the content of rI5 is zero. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - - (J4N jump "jump I4 negative" ,(+ 40 1) - "Jump if the content of rI4 is negative. + (J5P jump "jump I5 positive" 41 + "Jump if the content of rI5 is positive. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - - (J4Z jump "jump I4 zero" ,(+ 40 1) - "Jump if the content of rI4 is zero. + (J5NN jump "jump I5 non-negative" 41 + "Jump if the content of rI5 is non-negative. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - - (J4P jump "jump I4 positive" ,(+ 40 1) - "Jump if the content of rI4 is positive. + (J5NZ jump "jump I5 non-zero" 41 + "Jump if the content of rI5 is non-zero. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - - (J4NN jump "jump I4 non-negative" ,(+ 40 1) - "Jump if the content of rI4 is non-negative. + (J5NP jump "jump I5 non-positive" 41 + "Jump if the content of rI5 is non-positive. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - - (J4NZ jump "jump I4 non-zero" ,(+ 40 1) - "Jump if the content of rI4 is non-zero. + (J6N jump "jump I6 negative" 41 + "Jump if the content of rI6 is negative. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - - (J4NP jump "jump I4 non-positive" ,(+ 40 1) - "Jump if the content of rI4 is non-positive. + (J6Z jump "jump I6 zero" 41 + "Jump if the content of rI6 is zero. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - - (J5N jump "jump I5 negative" ,(+ 40 1) - "Jump if the content of rI5 is negative. + (J6P jump "jump I6 positive" 41 + "Jump if the content of rI6 is positive. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - - (J5Z jump "jump I5 zero" ,(+ 40 1) - "Jump if the content of rI5 is zero. + (J6NN jump "jump I6 non-negative" 41 + "Jump if the content of rI6 is non-negative. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - - (J5P jump "jump I5 positive" ,(+ 40 1) - "Jump if the content of rI5 is positive. + (J6NZ jump "jump I6 non-zero" 41 + "Jump if the content of rI6 is non-zero. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - - (J5NN jump "jump I5 non-negative" ,(+ 40 1) - "Jump if the content of rI5 is non-negative. + (J6NP jump "jump I6 non-positive" 41 + "Jump if the content of rI6 is non-positive. Register J is set to the value of the next instruction that would have been executed when there was no jump." - 1) + 1) - - (J5NZ jump "jump I5 non-zero" ,(+ 40 1) - "Jump if the content of rI5 is non-zero. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - - (J5NP jump "jump I5 non-positive" ,(+ 40 1) - "Jump if the content of rI5 is non-positive. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - - (J6N jump "jump I6 negative" ,(+ 40 1) - "Jump if the content of rI6 is negative. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - - (J6Z jump "jump I6 zero" ,(+ 40 1) - "Jump if the content of rI6 is zero. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - - (J6P jump "jump I6 positive" ,(+ 40 1) - "Jump if the content of rI6 is positive. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - - (J6NN jump "jump I6 non-negative" ,(+ 40 1) - "Jump if the content of rI6 is non-negative. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - - (J6NZ jump "jump I6 non-zero" ,(+ 40 1) - "Jump if the content of rI6 is non-zero. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - - (J6NP jump "jump I6 non-positive" ,(+ 40 1) - "Jump if the content of rI6 is non-positive. -Register J is set to the value of the next instruction that would have -been executed when there was no jump." - 1) - - (SLA miscellaneous "shift left A" 6 - "Shift to A, M bytes left. + (SLA miscellaneous "shift left A" 6 + "Shift to A, M bytes left. Hero's will be added to the right." - 2) + 2) - - (SRA miscellaneous "shift right A" 6 - "Shift to A, M bytes right. + (SRA miscellaneous "shift right A" 6 + "Shift to A, M bytes right. Zeros will be added to the left." - 2) + 2) - - (SLAX miscellaneous "shift left AX" 6 - "Shift AX, M bytes left. + (SLAX miscellaneous "shift left AX" 6 + "Shift AX, M bytes left. Zeros will be added to the right." - 2) + 2) - - (SRAX miscellaneous "shift right AX" 6 - "Shift AX, M bytes right. + (SRAX miscellaneous "shift right AX" 6 + "Shift AX, M bytes right. Zeros will be added to the left." - 2) + 2) - - (SLC miscellaneous "shift left AX circularly" 6 - "Shift AX, M bytes left circularly. + (SLC miscellaneous "shift left AX circularly" 6 + "Shift AX, M bytes left circularly. The bytes that fall off to the left will be added to the right." - 2) + 2) - - (SRC miscellaneous "shift right AX circularly" 6 - "Shift AX, M bytes right circularly. + (SRC miscellaneous "shift right AX circularly" 6 + "Shift AX, M bytes right circularly. The bytes that fall off to the right will be added to the left." - 2) + 2) - (MOVE miscellaneous "move" 7 number - "Move MOD words from M to the location stored in rI1." - (+ 1 (* 2 number))) + (MOVE miscellaneous "move" 7 number + "Move MOD words from M to the location stored in rI1." + (+ 1 (* 2 number))) - (NOP miscellaneous "no operation" 0 ignored - "No operation, M and F are not used by the machine." - 1) + (NOP miscellaneous "no operation" 0 ignored + "No operation, M and F are not used by the machine." + 1) - (HLT miscellaneous "halt" 5 - "Halt. + (HLT miscellaneous "halt" 5 + "Halt. Stop instruction fetching." - 1) + 1) - (IN input-output "input" 36 unit - "Transfer a block of words from the specified unit to memory. + (IN input-output "input" 36 unit + "Transfer a block of words from the specified unit to memory. The transfer starts at address M." + 1) + + (OUT input-output "output" 37 unit + "Transfer a block of words from memory. +The transfer starts at address M to the specified unit." + 1) + + (IOC input-output "input-output control" 35 unit + "Perform a control operation. +The control operation is given by M on the specified unit." + 1) + + (JRED input-output "jump ready" 38 unit + "Jump to M if the specified unit is ready." 1) - (OUT input-output "output" 37 unit - "Transfer a block of words from memory. -The transfer starts at address M to the specified unit." - 1) + (JBUS input-output "jump busy" 34 unit + "Jump to M if the specified unit is busy." + 1) - (IOC input-output "input-output control" 35 unit - "Perform a control operation. -The control operation is given by M on the specified unit." - 1) - - (JRED input-output "jump ready" 38 unit - "Jump to M if the specified unit is ready." - 1) - - - (JBUS input-output "jump busy" 34 unit - "Jump to M if the specified unit is busy." - 1) - - (NUM conversion "convert to numeric" 5 - "Convert rAX to its numerical value and store it in rA. + (NUM conversion "convert to numeric" 5 + "Convert rAX to its numerical value and store it in rA. the register rAX is assumed to contain a character representation of a number." - 10) + 10) - (CHAR conversion "convert to characters" 5 - "Convert the number stored in rA to a character representation. + (CHAR conversion "convert to characters" 5 + "Convert the number stored in rA to a character representation. The converted character representation is stored in rAX." - 10))) + 10)) "Alist that contains all the possible operation codes for mix. Each elt has the form From 0ea1a8afa4524e244008a7d88c3f03d2ff16a6ed Mon Sep 17 00:00:00 2001 From: "Kim F. Storm" Date: Thu, 13 Oct 2005 22:39:06 +0000 Subject: [PATCH 152/168] *** empty log message *** --- src/ChangeLog | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/ChangeLog b/src/ChangeLog index a6d056f579d..30db0548172 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,16 @@ +2005-10-14 Kim F. Storm + + * xterm.c (note_mouse_movement): Return 1 if mouse moved; 0 otherwise. + (handle_one_xevent): Only clear help_echo_string; restore it if + note_mouse_movement didn't record any mouse movement. + + * xdisp.c (pos_visible_p): Convert w->hscroll to pixels before use. + (remember_mouse_glyph): Clear RECT if mouse is over an image glyph. + + * keyboard.c (make_lispy_position): Adjust wx for left margin if ON_TEXT. + (Fposn_at_x_y): Fix calculation of x coordinate. + (Fposn_at_point): Return nil if point is hscrolled out of view. + 2005-10-13 Andreas Schwab * sysdep.c (request_sigio, unrequest_sigio): Do nothing in From bb339c57aaed49ad5e9dddcab8f70ac35a94d7ed Mon Sep 17 00:00:00 2001 From: "Kim F. Storm" Date: Thu, 13 Oct 2005 22:41:21 +0000 Subject: [PATCH 153/168] (note_mouse_movement): Return 1 if mouse moved; 0 otherwise. (handle_one_xevent): Only clear help_echo_string; restore it if note_mouse_movement didn't record any mouse movement. --- src/xterm.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/xterm.c b/src/xterm.c index d9a4f9d68f6..0f18a3ae9fc 100644 --- a/src/xterm.c +++ b/src/xterm.c @@ -3582,7 +3582,7 @@ construct_mouse_click (result, event, f) static XMotionEvent last_mouse_motion_event; static Lisp_Object last_mouse_motion_frame; -static void +static int note_mouse_movement (frame, event) FRAME_PTR frame; XMotionEvent *event; @@ -3596,10 +3596,11 @@ note_mouse_movement (frame, event) frame->mouse_moved = 1; last_mouse_scroll_bar = Qnil; note_mouse_highlight (frame, -1, -1); + return 1; } /* Has the mouse moved off the glyph it was on at the last sighting? */ - else if (event->x < last_mouse_glyph.x + if (event->x < last_mouse_glyph.x || event->x >= last_mouse_glyph.x + last_mouse_glyph.width || event->y < last_mouse_glyph.y || event->y >= last_mouse_glyph.y + last_mouse_glyph.height) @@ -3609,7 +3610,10 @@ note_mouse_movement (frame, event) note_mouse_highlight (frame, event->x, event->y); /* Remember which glyph we're now on. */ remember_mouse_glyph (frame, event->x, event->y, &last_mouse_glyph); + return 1; } + + return 0; } @@ -6483,8 +6487,7 @@ handle_one_xevent (dpyinfo, eventp, finish, hold_quit) case MotionNotify: { previous_help_echo_string = help_echo_string; - help_echo_string = help_echo_object = help_echo_window = Qnil; - help_echo_pos = -1; + help_echo_string = Qnil; if (dpyinfo->grabbed && last_mouse_frame && FRAME_LIVE_P (last_mouse_frame)) @@ -6523,7 +6526,8 @@ handle_one_xevent (dpyinfo, eventp, finish, hold_quit) last_window=window; } - note_mouse_movement (f, &event.xmotion); + if (!note_mouse_movement (f, &event.xmotion)) + help_echo_string = previous_help_echo_string; } else { From 8460eb1eb5129fa1b162cc92098f58bd1ad52841 Mon Sep 17 00:00:00 2001 From: "Kim F. Storm" Date: Thu, 13 Oct 2005 22:41:40 +0000 Subject: [PATCH 154/168] (pos_visible_p): Convert w->hscroll to pixels before use. (remember_mouse_glyph): Clear RECT if mouse is over an image glyph. --- src/xdisp.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/xdisp.c b/src/xdisp.c index de24049d830..f7f7898b476 100644 --- a/src/xdisp.c +++ b/src/xdisp.c @@ -1348,7 +1348,7 @@ pos_visible_p (w, charpos, x, y, rtop, rbot, exact_mode_line_heights_p) current_header_line_height = current_mode_line_height = -1; if (visible_p && XFASTINT (w->hscroll) > 0) - *x -= XFASTINT (w->hscroll); + *x -= XFASTINT (w->hscroll) * WINDOW_FRAME_COLUMN_WIDTH (w); return visible_p; } @@ -2112,7 +2112,16 @@ remember_mouse_glyph (f, gx, gy, rect) break; if (g < end) - width = g->pixel_width; + { + if (g->type == IMAGE_GLYPH) + { + /* Don't remember when mouse is over image, as + image may have hot-spots. */ + STORE_NATIVE_RECT (*rect, 0, 0, 0, 0); + return; + } + width = g->pixel_width; + } else { /* Use nominal char spacing at end of line. */ From 6507c4c73dad972eb4f6bc224c8c22de6cbeec97 Mon Sep 17 00:00:00 2001 From: "Kim F. Storm" Date: Thu, 13 Oct 2005 22:42:01 +0000 Subject: [PATCH 155/168] (make_lispy_position): Adjust wx for left margin if ON_TEXT. (Fposn_at_x_y): Fix calculation of x coordinate. (Fposn_at_point): Return nil if point is hscrolled out of view. --- src/keyboard.c | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/src/keyboard.c b/src/keyboard.c index 56419ef5679..96bc115412e 100644 --- a/src/keyboard.c +++ b/src/keyboard.c @@ -5054,7 +5054,11 @@ make_lispy_position (f, x, y, time) XSETINT (*x, wx); XSETINT (*y, wy); - if (part == ON_MODE_LINE || part == ON_HEADER_LINE) + if (part == ON_TEXT) + { + wx += WINDOW_LEFT_MARGIN_WIDTH (w); + } + else if (part == ON_MODE_LINE || part == ON_HEADER_LINE) { /* Mode line or header line. Look for a string under the mouse that may have a `local-map' property. */ @@ -10592,11 +10596,11 @@ The `posn-' functions access elements of such lists. */) CHECK_LIVE_WINDOW (frame_or_window); w = XWINDOW (frame_or_window); - XSETINT (x, (WINDOW_TO_FRAME_PIXEL_X (w, XINT (x)) + XSETINT (x, (XINT (x) + + WINDOW_LEFT_EDGE_X (w) + (NILP (whole) ? window_box_left_offset (w, TEXT_AREA) - : - (WINDOW_LEFT_SCROLL_BAR_COLS (w) - * WINDOW_FRAME_COLUMN_WIDTH (w))))); + : 0))); XSETINT (y, WINDOW_TO_FRAME_PIXEL_Y (w, XINT (y))); frame_or_window = w->frame; } @@ -10622,9 +10626,21 @@ The `posn-' functions access elements of such lists. */) { Lisp_Object tem; + if (NILP (window)) + window = selected_window; + tem = Fpos_visible_in_window_p (pos, window, Qt); if (!NILP (tem)) - tem = Fposn_at_x_y (XCAR (tem), XCAR (XCDR (tem)), window, Qnil); + { + Lisp_Object x = XCAR (tem); + Lisp_Object y = XCAR (XCDR (tem)); + + /* Point invisible due to hscrolling? */ + if (XINT (x) < 0) + return Qnil; + tem = Fposn_at_x_y (x, y, window, Qnil); + } + return tem; } From cac3d6206bd12b1c9c81a0f5411bcaf66eeb49dd Mon Sep 17 00:00:00 2001 From: Kenichi Handa Date: Fri, 14 Oct 2005 07:51:51 +0000 Subject: [PATCH 156/168] (casify_object): Fix for the case that case conversion change the byte length. --- src/casefiddle.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/casefiddle.c b/src/casefiddle.c index 454d184b99b..dee68fcf8c0 100644 --- a/src/casefiddle.c +++ b/src/casefiddle.c @@ -92,7 +92,8 @@ casify_object (flag, obj) else if (!UPPERCASEP (c) && (!inword || flag != CASE_CAPITALIZE_UP)) c = UPCASE1 (c); - if (ASCII_BYTE_P (c) || (! multibyte && SINGLE_BYTE_CHAR_P (c))) + if ((ASCII_BYTE_P (c) && from_len == 1) + || (! multibyte && SINGLE_BYTE_CHAR_P (c))) SSET (obj, i, c); else { @@ -100,7 +101,10 @@ casify_object (flag, obj) if (from_len == to_len) CHAR_STRING (c, SDATA (obj) + i); else - Faset (obj, make_number (n), make_number (c)); + { + Faset (obj, make_number (n), make_number (c)); + len += to_len - from_len; + } } if ((int) flag >= (int) CASE_CAPITALIZE) inword = SYNTAX (c) == Sword; From fed91c3814f41f8adc5a9a1c32e5c5580cea8510 Mon Sep 17 00:00:00 2001 From: Kenichi Handa Date: Fri, 14 Oct 2005 07:55:05 +0000 Subject: [PATCH 157/168] (search_buffer): Give up BM search on case-fold-search if one of a target character has a case-equivalence of different charset even if that target charcter is an ASCII. --- src/ChangeLog | 9 +++++++++ src/search.c | 40 ++++++++++++++++++++++++---------------- 2 files changed, 33 insertions(+), 16 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 30db0548172..6c63a3cd20b 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,12 @@ +2005-10-14 Kenichi Handa + + * search.c (search_buffer): Give up BM search on case-fold-search + if one of a target character has a case-equivalence of different + charset even if that target charcter is an ASCII. + + * casefiddle.c (casify_object): Fix for the case that case + conversion change the byte length. + 2005-10-14 Kim F. Storm * xterm.c (note_mouse_movement): Return 1 if mouse moved; 0 otherwise. diff --git a/src/search.c b/src/search.c index aa7f6fda699..f60e6d0cfe2 100644 --- a/src/search.c +++ b/src/search.c @@ -1175,9 +1175,9 @@ search_buffer (string, pos, pos_byte, lim, lim_byte, n, unsigned char *patbuf; int multibyte = !NILP (current_buffer->enable_multibyte_characters); unsigned char *base_pat = SDATA (string); - /* Set to nozero if we find a non-ASCII char that need - translation. */ - int charset_base = 0; + /* Set to positive if we find a non-ASCII char that need + translation. Otherwise set to zero later. */ + int charset_base = -1; int boyer_moore_ok = 1; /* MULTIBYTE says whether the text to be searched is multibyte. @@ -1275,24 +1275,30 @@ search_buffer (string, pos, pos_byte, lim, lim_byte, n, always handle their translation. */ while (1) { - if (! ASCII_BYTE_P (inverse)) + if (ASCII_BYTE_P (inverse)) { - if (SINGLE_BYTE_CHAR_P (inverse)) - { - /* Boyer-moore search can't handle a - translation of an eight-bit - character. */ - boyer_moore_ok = 0; - break; - } - else if (charset_base == 0) - charset_base = inverse & ~CHAR_FIELD3_MASK; - else if ((inverse & ~CHAR_FIELD3_MASK) - != charset_base) + if (charset_base > 0) { boyer_moore_ok = 0; break; } + charset_base = 0; + } + else if (SINGLE_BYTE_CHAR_P (inverse)) + { + /* Boyer-moore search can't handle a + translation of an eight-bit + character. */ + boyer_moore_ok = 0; + break; + } + else if (charset_base < 0) + charset_base = inverse & ~CHAR_FIELD3_MASK; + else if ((inverse & ~CHAR_FIELD3_MASK) + != charset_base) + { + boyer_moore_ok = 0; + break; } if (c == inverse) break; @@ -1300,6 +1306,8 @@ search_buffer (string, pos, pos_byte, lim, lim_byte, n, } } } + if (charset_base < 0) + charset_base = 0; /* Store this character into the translated pattern. */ bcopy (str, pat, charlen); From af1229d96a42d9b12b588e05da3410a3c2b93ec1 Mon Sep 17 00:00:00 2001 From: YAMAMOTO Mitsuharu Date: Fri, 14 Oct 2005 08:08:37 +0000 Subject: [PATCH 158/168] (note_mouse_movement, XTread_socket): Apply 2005-10-14 changes for xterm.c. --- src/macterm.c | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/macterm.c b/src/macterm.c index e18f3ee48a0..20218b1954a 100644 --- a/src/macterm.c +++ b/src/macterm.c @@ -4149,7 +4149,7 @@ x_get_keysym_name (keysym) static Point last_mouse_motion_position; static Lisp_Object last_mouse_motion_frame; -static void +static int note_mouse_movement (frame, pos) FRAME_PTR frame; Point *pos; @@ -4180,19 +4180,23 @@ note_mouse_movement (frame, pos) rif->define_frame_cursor (frame, frame->output_data.mac->nontext_cursor); } + return 1; } /* Has the mouse moved off the glyph it was on at the last sighting? */ - else if (pos->h < last_mouse_glyph.left - || pos->h >= last_mouse_glyph.right - || pos->v < last_mouse_glyph.top - || pos->v >= last_mouse_glyph.bottom) + if (pos->h < last_mouse_glyph.left + || pos->h >= last_mouse_glyph.right + || pos->v < last_mouse_glyph.top + || pos->v >= last_mouse_glyph.bottom) { frame->mouse_moved = 1; last_mouse_scroll_bar = Qnil; note_mouse_highlight (frame, pos->h, pos->v); /* Remember which glyph we're now on. */ remember_mouse_glyph (frame, pos->h, pos->v, &last_mouse_glyph); + return 1; } + + return 0; } @@ -10031,8 +10035,7 @@ XTread_socket (sd, expected, hold_quit) er.where.h + 1, er.where.v + 1); #endif previous_help_echo_string = help_echo_string; - help_echo_string = help_echo_object = help_echo_window = Qnil; - help_echo_pos = -1; + help_echo_string = Qnil; if (dpyinfo->grabbed && last_mouse_frame && FRAME_LIVE_P (last_mouse_frame)) @@ -10091,7 +10094,8 @@ XTread_socket (sd, expected, hold_quit) last_window=window; } - note_mouse_movement (f, &mouse_pos); + if (!note_mouse_movement (f, &mouse_pos)) + help_echo_string = previous_help_echo_string; } } From fc5c75503bfc9f04b32be4cfe2400ec24f29ca7b Mon Sep 17 00:00:00 2001 From: YAMAMOTO Mitsuharu Date: Fri, 14 Oct 2005 08:10:05 +0000 Subject: [PATCH 159/168] (note_mouse_movement, w32_read_socket): Apply 2005-10-14 changes for xterm.c. --- src/ChangeLog | 7 +++++++ src/w32term.c | 18 ++++++++++++------ 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/src/ChangeLog b/src/ChangeLog index 6c63a3cd20b..3bc5ca526f1 100644 --- a/src/ChangeLog +++ b/src/ChangeLog @@ -1,3 +1,10 @@ +2005-10-14 YAMAMOTO Mitsuharu + + * macterm.c (note_mouse_movement, XTread_socket): Apply 2005-10-14 + changes for xterm.c. + + * w32term.c (note_mouse_movement, w32_read_socket): Likewise. + 2005-10-14 Kenichi Handa * search.c (search_buffer): Give up BM search on case-fold-search diff --git a/src/w32term.c b/src/w32term.c index 96d26344b53..dcb56de911f 100644 --- a/src/w32term.c +++ b/src/w32term.c @@ -3204,7 +3204,7 @@ construct_drag_n_drop (result, msg, f) static MSG last_mouse_motion_event; static Lisp_Object last_mouse_motion_frame; -static void +static int note_mouse_movement (frame, msg) FRAME_PTR frame; MSG *msg; @@ -3221,13 +3221,14 @@ note_mouse_movement (frame, msg) frame->mouse_moved = 1; last_mouse_scroll_bar = Qnil; note_mouse_highlight (frame, -1, -1); + return 1; } /* Has the mouse moved off the glyph it was on at the last sighting? */ - else if (mouse_x < last_mouse_glyph.left - || mouse_x >= last_mouse_glyph.right - || mouse_y < last_mouse_glyph.top - || mouse_y >= last_mouse_glyph.bottom) + if (mouse_x < last_mouse_glyph.left + || mouse_x >= last_mouse_glyph.right + || mouse_y < last_mouse_glyph.top + || mouse_y >= last_mouse_glyph.bottom) { frame->mouse_moved = 1; last_mouse_scroll_bar = Qnil; @@ -3237,7 +3238,10 @@ note_mouse_movement (frame, msg) to keep track of the mouse for help_echo and highlighting at other times. */ remember_mouse_glyph (frame, mouse_x, mouse_y, &last_mouse_glyph); + return 1; } + + return 0; } @@ -4314,6 +4318,7 @@ w32_read_socket (sd, expected, hold_quit) } previous_help_echo_string = help_echo_string; + help_echo_string = Qnil; if (dpyinfo->grabbed && last_mouse_frame && FRAME_LIVE_P (last_mouse_frame)) @@ -4352,7 +4357,8 @@ w32_read_socket (sd, expected, hold_quit) last_window=window; } - note_mouse_movement (f, &msg.msg); + if (!note_mouse_movement (f, &msg.msg)) + help_echo_string = previous_help_echo_string; } else { From b6b5618c15e0d836edc2e91b25718a249ffde7ee Mon Sep 17 00:00:00 2001 From: David Ponce Date: Fri, 14 Oct 2005 09:05:15 +0000 Subject: [PATCH 160/168] (recentf-track-opened-file) (recentf-track-closed-file, recentf-update-menu) (recentf-used-hooks, recentf-enabled-p): Move before dialog stuff. (recentf-dialog-mode-map): Map follow-link to RET, so dialogs obey mouse-1-click-follows-link. --- lisp/ChangeLog | 8 ++++ lisp/recentf.el | 114 ++++++++++++++++++++++++------------------------ 2 files changed, 66 insertions(+), 56 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 00c71e23aeb..914eec4ab64 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,11 @@ +2005-10-14 David Ponce + + * recentf.el (recentf-track-opened-file) + (recentf-track-closed-file, recentf-update-menu) + (recentf-used-hooks, recentf-enabled-p): Move before dialog stuff. + (recentf-dialog-mode-map): Map follow-link to RET, so dialogs obey + mouse-1-click-follows-link. + 2005-10-13 Jan Dj,Ad(Brv * toolbar/diropen.xpm, toolbar/diropen.pbm: New versions made from diff --git a/lisp/recentf.el b/lisp/recentf.el index dee7a8d438d..b14997d604f 100644 --- a/lisp/recentf.el +++ b/lisp/recentf.el @@ -985,59 +985,6 @@ unchanged." t))))) l)) -;;; Common dialog stuff -;; -(defun recentf-cancel-dialog (&rest ignore) - "Cancel the current dialog. -IGNORE arguments." - (interactive) - (kill-buffer (current-buffer)) - (message "Dialog canceled")) - -(defun recentf-dialog-goto-first (widget-type) - "Move the cursor to the first WIDGET-TYPE in current dialog. -Go to the beginning of buffer if not found." - (goto-char (point-min)) - (condition-case nil - (let (done) - (widget-move 1) - (while (not done) - (if (eq widget-type (widget-type (widget-at (point)))) - (setq done t) - (widget-move 1)))) - (goto-char (point-min)))) - -(defvar recentf-dialog-mode-map - (let ((km (copy-keymap recentf--shortcuts-keymap))) - (set-keymap-parent km widget-keymap) - (define-key km "q" 'recentf-cancel-dialog) - (define-key km [down-mouse-1] 'widget-button-click) - km) - "Keymap used in recentf dialogs.") - -(define-derived-mode recentf-dialog-mode nil "recentf-dialog" - "Major mode of recentf dialogs. - -\\{recentf-dialog-mode-map}" - :syntax-table nil - :abbrev-table nil - (setq truncate-lines t)) - -(defmacro recentf-dialog (name &rest forms) - "Show a dialog buffer with NAME, setup with FORMS." - (declare (indent 1) (debug t)) - `(with-current-buffer (get-buffer-create ,name) - ;; Cleanup buffer - (let ((inhibit-read-only t) - (ol (overlay-lists))) - (mapc 'delete-overlay (car ol)) - (mapc 'delete-overlay (cdr ol)) - (erase-buffer)) - (recentf-dialog-mode) - ,@forms - (widget-setup) - (switch-to-buffer (current-buffer)))) - ;;; Hooks ;; (defun recentf-track-opened-file () @@ -1086,6 +1033,59 @@ That is, remove a non kept file from the recent list." ;;; Commands ;; +;;; Common dialog stuff +;; +(defun recentf-cancel-dialog (&rest ignore) + "Cancel the current dialog. +IGNORE arguments." + (interactive) + (kill-buffer (current-buffer)) + (message "Dialog canceled")) + +(defun recentf-dialog-goto-first (widget-type) + "Move the cursor to the first WIDGET-TYPE in current dialog. +Go to the beginning of buffer if not found." + (goto-char (point-min)) + (condition-case nil + (let (done) + (widget-move 1) + (while (not done) + (if (eq widget-type (widget-type (widget-at (point)))) + (setq done t) + (widget-move 1)))) + (goto-char (point-min)))) + +(defvar recentf-dialog-mode-map + (let ((km (copy-keymap recentf--shortcuts-keymap))) + (set-keymap-parent km widget-keymap) + (define-key km "q" 'recentf-cancel-dialog) + (define-key km [follow-link] "\C-m") + km) + "Keymap used in recentf dialogs.") + +(define-derived-mode recentf-dialog-mode nil "recentf-dialog" + "Major mode of recentf dialogs. + +\\{recentf-dialog-mode-map}" + :syntax-table nil + :abbrev-table nil + (setq truncate-lines t)) + +(defmacro recentf-dialog (name &rest forms) + "Show a dialog buffer with NAME, setup with FORMS." + (declare (indent 1) (debug t)) + `(with-current-buffer (get-buffer-create ,name) + ;; Cleanup buffer + (let ((inhibit-read-only t) + (ol (overlay-lists))) + (mapc 'delete-overlay (car ol)) + (mapc 'delete-overlay (cdr ol)) + (erase-buffer)) + (recentf-dialog-mode) + ,@forms + (widget-setup) + (switch-to-buffer (current-buffer)))) + ;;; Edit list dialog ;; (defvar recentf-edit-list nil) @@ -1140,7 +1140,7 @@ Click on Cancel or type `q' to cancel.\n") :notify 'recentf-cancel-dialog "Cancel") (recentf-dialog-goto-first 'checkbox))) - + ;;; Open file dialog ;; (defun recentf-open-files-action (widget &rest ignore) @@ -1252,7 +1252,7 @@ Optional argument N must be a valid digit number. It defaults to 1. (when recentf--files-with-key (kill-buffer (current-buffer))) (funcall recentf-menu-action file))) - + ;;; Save/load/cleanup the recent list ;; (defconst recentf-save-file-header @@ -1316,7 +1316,9 @@ That is, remove duplicates, non-kept, and excluded files." (message "File %s removed from the recentf list" f))) (message "Cleaning up the recentf list...done (%d removed)" n) (setq recentf-list (nreverse newlist)))) - + +;;; The minor mode +;; (defvar recentf-mode-map (make-sparse-keymap) "Keymap to use in recentf mode.") From f28e9cbd37a11d734b4301a332661affee281aa2 Mon Sep 17 00:00:00 2001 From: Chong Yidong Date: Fri, 14 Oct 2005 13:15:05 +0000 Subject: [PATCH 161/168] * mouse.el (mouse-drag-region-1): Handle the case where a double-click event is bound to an arbitrary function. --- lisp/ChangeLog | 5 +++++ lisp/mouse.el | 18 ++++++++++++------ 2 files changed, 17 insertions(+), 6 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 914eec4ab64..7331e7a6213 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,8 @@ +2005-10-14 Chong Yidong + + * mouse.el (mouse-drag-region-1): Handle the case where a + double-click event is bound to an arbitrary function. + 2005-10-14 David Ponce * recentf.el (recentf-track-opened-file) diff --git a/lisp/mouse.el b/lisp/mouse.el index 90f2b3ba879..294396a0029 100644 --- a/lisp/mouse.el +++ b/lisp/mouse.el @@ -958,12 +958,14 @@ at the same position." (mouse-move-drag-overlay mouse-drag-overlay start-point end-point click-count)) (if (consp event) - (let ((fun (key-binding (vector (car event))))) + (let* ((fun (key-binding (vector (car event)))) + (do-multi-click (and (> (event-click-count event) 0) + (functionp fun) + (not (eq fun 'mouse-set-point))))) ;; Run the binding of the terminating up-event, if possible. - ;; In the case of a multiple click, it gives the wrong results, - ;; because it would fail to set up a region. - (if (not (= (overlay-start mouse-drag-overlay) - (overlay-end mouse-drag-overlay))) + (if (and (not (= (overlay-start mouse-drag-overlay) + (overlay-end mouse-drag-overlay))) + (not do-multi-click)) (let* ((stop-point (if (numberp (posn-point (event-end event))) (posn-point (event-end event)) @@ -996,8 +998,12 @@ at the same position." (and (mark t) mark-active (eq buffer (current-buffer)) (mouse-set-region-1)))) - (delete-overlay mouse-drag-overlay) ;; Run the binding of the terminating up-event. + ;; If a multiple click is not bound to mouse-set-point, + ;; cancel the effects of mouse-move-drag-overlay to + ;; avoid producing wrong results. + (if do-multi-click (goto-char start-point)) + (delete-overlay mouse-drag-overlay) (when (and (functionp fun) (= start-hscroll (window-hscroll start-window)) ;; Don't run the up-event handler if the From a10f4ace50d2747876c0bb0cce3acb58822f2769 Mon Sep 17 00:00:00 2001 From: Bill Wohler Date: Fri, 14 Oct 2005 16:05:37 +0000 Subject: [PATCH 162/168] * mh-seq.el (mh-non-seq-mode-line-annotation): Moved make-variable-buffer-local call to top level to avoid warnings in CVS Emacs. * mh-comp.el (mh-insert-letter): Replaced deprecated read-input with read-string. --- lisp/mh-e/ChangeLog | 9 +++++++++ lisp/mh-e/mh-comp.el | 8 ++++---- lisp/mh-e/mh-seq.el | 3 ++- 3 files changed, 15 insertions(+), 5 deletions(-) diff --git a/lisp/mh-e/ChangeLog b/lisp/mh-e/ChangeLog index ac4e9242729..5c2e2b70654 100644 --- a/lisp/mh-e/ChangeLog +++ b/lisp/mh-e/ChangeLog @@ -1,3 +1,12 @@ +2005-10-14 Bill Wohler + + * mh-seq.el (mh-non-seq-mode-line-annotation): Moved + make-variable-buffer-local call to top level to avoid warnings in + CVS Emacs. + + * mh-comp.el (mh-insert-letter): Replaced deprecated read-input + with read-string. + 2005-10-09 Bill Wohler * mh-init.el (mh-image-load-path): New function that adds the path diff --git a/lisp/mh-e/mh-comp.el b/lisp/mh-e/mh-comp.el index a7af192ec40..7289207cfb2 100644 --- a/lisp/mh-e/mh-comp.el +++ b/lisp/mh-e/mh-comp.el @@ -1430,10 +1430,10 @@ not indent and do not delete headers. Leaves the mark before the letter and point after it." (interactive (list (mh-prompt-for-folder "Message from" mh-sent-from-folder nil) - (read-input (concat "Message number" - (if (numberp mh-sent-from-msg) - (format " (default %d): " mh-sent-from-msg) - ": "))) + (read-string (concat "Message number" + (if (numberp mh-sent-from-msg) + (format " (default %d): " mh-sent-from-msg) + ": "))) current-prefix-arg)) (save-restriction (narrow-to-region (point) (point)) diff --git a/lisp/mh-e/mh-seq.el b/lisp/mh-e/mh-seq.el index 51847c2d59d..8459c6fdce6 100644 --- a/lisp/mh-e/mh-seq.el +++ b/lisp/mh-e/mh-seq.el @@ -224,6 +224,8 @@ appears." ;; Avoid compiler warning (defvar tool-bar-map) +(make-variable-buffer-local 'mh-non-seq-mode-line-annotation) + ;;;###mh-autoload (defun mh-narrow-to-seq (sequence) "Restrict display of this folder to just messages in SEQUENCE. @@ -243,7 +245,6 @@ Use \\\\[mh-widen] to undo this command." (mh-notate-deleted-and-refiled) (mh-notate-cur) (when msg-at-cursor (mh-goto-msg msg-at-cursor t t)) - (make-variable-buffer-local 'mh-non-seq-mode-line-annotation) (setq mh-non-seq-mode-line-annotation mh-mode-line-annotation) (setq mh-mode-line-annotation (symbol-name sequence)) (mh-make-folder-mode-line) From deceef674f7f343d52c21095605bf55dc5822835 Mon Sep 17 00:00:00 2001 From: Bill Wohler Date: Fri, 14 Oct 2005 17:15:40 +0000 Subject: [PATCH 163/168] * mh-e.el, mh-funcs.el, mh-init.el, mh-mime.el, mh-pick.el, mh-seq.el: * mh-utils.el: Ran mh-unit. Continued copyright lines need to be indented. --- lisp/mh-e/ChangeLog | 4 ++++ lisp/mh-e/mh-e.el | 2 +- lisp/mh-e/mh-funcs.el | 2 +- lisp/mh-e/mh-init.el | 2 +- lisp/mh-e/mh-mime.el | 2 +- lisp/mh-e/mh-pick.el | 2 +- lisp/mh-e/mh-seq.el | 2 +- lisp/mh-e/mh-utils.el | 2 +- 8 files changed, 11 insertions(+), 7 deletions(-) diff --git a/lisp/mh-e/ChangeLog b/lisp/mh-e/ChangeLog index 5c2e2b70654..bbea09f669a 100644 --- a/lisp/mh-e/ChangeLog +++ b/lisp/mh-e/ChangeLog @@ -1,5 +1,9 @@ 2005-10-14 Bill Wohler + * mh-e.el, mh-funcs.el, mh-init.el, mh-mime.el, mh-pick.el: + * mh-seq.el, mh-utils.el: Ran mh-unit. Continued copyright lines + need to be indented. + * mh-seq.el (mh-non-seq-mode-line-annotation): Moved make-variable-buffer-local call to top level to avoid warnings in CVS Emacs. diff --git a/lisp/mh-e/mh-e.el b/lisp/mh-e/mh-e.el index ad1093101e1..516412c68c2 100644 --- a/lisp/mh-e/mh-e.el +++ b/lisp/mh-e/mh-e.el @@ -778,7 +778,7 @@ bottom of the current message." (if (mh-in-show-buffer (mh-show-buffer) (pos-visible-in-window-p (point-max))) (progn - (message + (message "End of message (Type %s to read %s undeleted message)" (single-key-description last-input-event) (if (equal mh-next-direction 'backward) diff --git a/lisp/mh-e/mh-funcs.el b/lisp/mh-e/mh-funcs.el index 717d0b27aef..6ce1da8fe90 100644 --- a/lisp/mh-e/mh-funcs.el +++ b/lisp/mh-e/mh-funcs.el @@ -1,7 +1,7 @@ ;;; mh-funcs.el --- MH-E functions not everyone will use right away ;; Copyright (C) 1993, 1995, -;; 2001, 2002, 2003, 2004 Free Software Foundation, Inc. +;; 2001, 2002, 2003, 2004 Free Software Foundation, Inc. ;; Author: Bill Wohler ;; Maintainer: Bill Wohler diff --git a/lisp/mh-e/mh-init.el b/lisp/mh-e/mh-init.el index 06ca97f9cd6..7efbfd003d5 100644 --- a/lisp/mh-e/mh-init.el +++ b/lisp/mh-e/mh-init.el @@ -311,7 +311,7 @@ by the variable `mh-variants'." (defun mh-image-load-path () "Ensure that the MH-E images are accessible by `find-image'. Images for MH-E are found in ../../etc/images relative to the files in -lisp/mh-e. If `image-load-path' exists (since Emacs 22), then the images +`lisp/mh-e'. If `image-load-path' exists (since Emacs 22), then the images directory is added to it if isn't already there. Otherwise, the images directory is added to the `load-path' if it isn't already there." (let (mh-load-path mh-image-load-path) diff --git a/lisp/mh-e/mh-mime.el b/lisp/mh-e/mh-mime.el index 4f72fe06487..fb7bace7ead 100644 --- a/lisp/mh-e/mh-mime.el +++ b/lisp/mh-e/mh-mime.el @@ -1,7 +1,7 @@ ;;; mh-mime.el --- MH-E support for composing MIME messages ;; Copyright (C) 1993, 1995, -;; 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. +;; 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. ;; Author: Bill Wohler ;; Maintainer: Bill Wohler diff --git a/lisp/mh-e/mh-pick.el b/lisp/mh-e/mh-pick.el index c0b9360cfae..eb825fe462f 100644 --- a/lisp/mh-e/mh-pick.el +++ b/lisp/mh-e/mh-pick.el @@ -1,7 +1,7 @@ ;;; mh-pick.el --- make a search pattern and search for a message in MH-E ;; Copyright (C) 1993, 1995, -;; 2001, 2003, 2004, 2005 Free Software Foundation, Inc. +;; 2001, 2003, 2004, 2005 Free Software Foundation, Inc. ;; Author: Bill Wohler ;; Maintainer: Bill Wohler diff --git a/lisp/mh-e/mh-seq.el b/lisp/mh-e/mh-seq.el index 8459c6fdce6..efbfe0d221f 100644 --- a/lisp/mh-e/mh-seq.el +++ b/lisp/mh-e/mh-seq.el @@ -1,7 +1,7 @@ ;;; mh-seq.el --- MH-E sequences support ;; Copyright (C) 1993, 1995, -;; 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. +;; 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. ;; Author: Bill Wohler ;; Maintainer: Bill Wohler diff --git a/lisp/mh-e/mh-utils.el b/lisp/mh-e/mh-utils.el index 0e608e52062..b589b63b597 100644 --- a/lisp/mh-e/mh-utils.el +++ b/lisp/mh-e/mh-utils.el @@ -1,7 +1,7 @@ ;;; mh-utils.el --- MH-E code needed for both sending and reading ;; Copyright (C) 1993, 1995, 1997, -;; 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. +;; 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. ;; Author: Bill Wohler ;; Maintainer: Bill Wohler From 930aae96d075460db9ca001a6f9d596074219122 Mon Sep 17 00:00:00 2001 From: Chong Yidong Date: Fri, 14 Oct 2005 19:56:38 +0000 Subject: [PATCH 164/168] * longlines.el (longlinges-search-function) (longlines-search-forward, longlines-search-backward): New functions. (longlines-mode): Set isearch-search-fun-function to longlinges-search-function. --- lisp/ChangeLog | 6 ++++++ lisp/longlines.el | 24 ++++++++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 7331e7a6213..1b7032c63c2 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,5 +1,11 @@ 2005-10-14 Chong Yidong + * longlines.el (longlinges-search-function) + (longlines-search-forward, longlines-search-backward): New + functions. + (longlines-mode): Set isearch-search-fun-function to + longlinges-search-function. + * mouse.el (mouse-drag-region-1): Handle the case where a double-click event is bound to an arbitrary function. diff --git a/lisp/longlines.el b/lisp/longlines.el index 6ce5dfaebc4..9665931e046 100644 --- a/lisp/longlines.el +++ b/lisp/longlines.el @@ -109,6 +109,8 @@ are indicated with a symbol." (add-to-list 'buffer-file-format 'longlines) (add-hook 'change-major-mode-hook 'longlines-mode-off nil t) (make-local-variable 'buffer-substring-filters) + (set (make-local-variable 'isearch-search-fun-function) + 'longlinges-search-function) (add-to-list 'buffer-substring-filters 'longlines-encode-string) (when longlines-wrap-follows-window-size (set (make-local-variable 'fill-column) @@ -148,6 +150,7 @@ are indicated with a symbol." 'longlines-window-change-function t) (when longlines-wrap-follows-window-size (kill-local-variable 'fill-column)) + (kill-local-variable 'isearch-search-fun-function) (kill-local-variable 'require-final-newline) (kill-local-variable 'buffer-substring-filters) (kill-local-variable 'use-hard-newlines))) @@ -381,6 +384,27 @@ This is called by `window-size-change-functions'." (longlines-wrap-region (point-min) (point-max)) (set-buffer-modified-p mod)))) +;; Isearch + +(defun longlinges-search-function () + (cond + (isearch-word + (if isearch-forward 'word-search-forward 'word-search-backward)) + (isearch-regexp + (if isearch-forward 're-search-forward 're-search-backward)) + (t + (if isearch-forward + 'longlines-search-forward + 'longlines-search-backward)))) + +(defun longlines-search-forward (string &optional bound noerror count) + (let ((search-spaces-regexp "[ \n]")) + (re-search-forward (regexp-quote string) bound noerror count))) + +(defun longlines-search-backward (string &optional bound noerror count) + (let ((search-spaces-regexp "[ \n]")) + (re-search-backward (regexp-quote string) bound noerror count))) + ;; Loading and saving (add-to-list From 5b004a34c0ead6fc40c84dd822335805deaba6d3 Mon Sep 17 00:00:00 2001 From: Bill Wohler Date: Fri, 14 Oct 2005 23:48:21 +0000 Subject: [PATCH 165/168] mh-folder-tick-face had been renamed to mh-folder-tick but the code that invoked the face had not been updated. Tick highlighting working again. --- lisp/mh-e/ChangeLog | 10 ++++++++++ lisp/mh-e/mh-e.el | 2 +- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/lisp/mh-e/ChangeLog b/lisp/mh-e/ChangeLog index bbea09f669a..5b76e2ef51a 100644 --- a/lisp/mh-e/ChangeLog +++ b/lisp/mh-e/ChangeLog @@ -1,9 +1,19 @@ +2005-10-14 Bill Wohler + + Released MH-E version 7.85. + + * mh-e.el (Version, mh-version): Updated for release 7.85. + 2005-10-14 Bill Wohler * mh-e.el, mh-funcs.el, mh-init.el, mh-mime.el, mh-pick.el: * mh-seq.el, mh-utils.el: Ran mh-unit. Continued copyright lines need to be indented. + * mh-e.el: mh-folder-tick-face had been renamed to mh-folder-tick + but the code that invoked the face had not been updated. Tick + highlighting working again. + * mh-seq.el (mh-non-seq-mode-line-annotation): Moved make-variable-buffer-local call to top level to avoid warnings in CVS Emacs. diff --git a/lisp/mh-e/mh-e.el b/lisp/mh-e/mh-e.el index 516412c68c2..dc23b9d294e 100644 --- a/lisp/mh-e/mh-e.el +++ b/lisp/mh-e/mh-e.el @@ -408,7 +408,7 @@ is done highlighting.") (list (list ',func (list 1 '',face 'prepend t)))))))) (mh-generate-sequence-font-lock mh-unseen-seq unseen bold) -(mh-generate-sequence-font-lock mh-tick-seq tick mh-folder-tick-face) +(mh-generate-sequence-font-lock mh-tick-seq tick mh-folder-tick) From eb7c732cc7905f49275007a734986e15957a6a6d Mon Sep 17 00:00:00 2001 From: Bill Wohler Date: Fri, 14 Oct 2005 23:51:20 +0000 Subject: [PATCH 166/168] Released MH-E version 7.85. (Version, mh-version): Updated for release 7.85. --- lisp/mh-e/mh-e.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lisp/mh-e/mh-e.el b/lisp/mh-e/mh-e.el index dc23b9d294e..faa3507548f 100644 --- a/lisp/mh-e/mh-e.el +++ b/lisp/mh-e/mh-e.el @@ -6,7 +6,7 @@ ;; Author: Bill Wohler ;; Maintainer: Bill Wohler -;; Version: 7.84+cvs +;; Version: 7.85 ;; Keywords: mail ;; This file is part of GNU Emacs. @@ -98,7 +98,7 @@ (defvar font-lock-auto-fontify) (defvar font-lock-defaults) -(defconst mh-version "7.84+cvs" "Version number of MH-E.") +(defconst mh-version "7.85" "Version number of MH-E.") (defvar mh-partial-folder-mode-line-annotation "select" "Annotation when displaying part of a folder. From 03ab074b43d210ccf8481bac00f3c2697bf3a019 Mon Sep 17 00:00:00 2001 From: Bill Wohler Date: Fri, 14 Oct 2005 23:53:41 +0000 Subject: [PATCH 167/168] Released MH-E version 7.85. * NEWS, MH-E-NEWS: Updated for release 7.85. --- etc/ChangeLog | 6 ++++++ etc/MH-E-NEWS | 45 +++++++++++++++++++++++++++++++++++++++++++++ etc/NEWS | 2 +- 3 files changed, 52 insertions(+), 1 deletion(-) diff --git a/etc/ChangeLog b/etc/ChangeLog index d5bc0f4abb0..eab4656f9d7 100644 --- a/etc/ChangeLog +++ b/etc/ChangeLog @@ -1,3 +1,9 @@ +2005-10-14 Bill Wohler + + Released MH-E version 7.85. + + * NEWS, MH-E-NEWS: Updated for release 7.85. + 2005-10-10 Jan Dj,Ad(Brv * NEWS: -nb => -nbi diff --git a/etc/MH-E-NEWS b/etc/MH-E-NEWS index e5b408c8785..34b4d2ab4d1 100644 --- a/etc/MH-E-NEWS +++ b/etc/MH-E-NEWS @@ -6,6 +6,51 @@ Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright notice and this notice are preserved. +* Changes in MH-E 7.85 + +Version 7.85 heralds a migration of the CVS repository from +SourceForge to Savannah only for those files that were already part of +Emacs. As a result, two incompatibilities were introduced with this +release: the location of MH-E in the load-path has changed, and +mh-e-autoloads.el was renamed to mh-autoloads.el. While this migration +will benefit maintainers, it will also benefit users: CVS Emacs users +will not have to check out MH-E separately and welcome faster MH-E +updates, and CVS MH-E users will welcome faster MH-E updates from +Emacs developers. Read section CVS MH-E INSTALL in the README for +details. + +MH-E now works on a Mac. See section INSTALL in the README for details. + +** Bug Fixes in MH-E 7.85 + +*** Prompts Now Follow Current Conventions + +Instead of "Prompt: [] ", the prompts now look like "Prompt +(default: ): ". + +*** Face Variable Names Now Follow Current Conventions + +The -face suffix has been dropped from all face names. + +*** mh-compose-forward and Default Message Number + +mh-compose-forward will now default to the sent message in the sent +folder and the `cur' message in other folders. It also takes ranges of +messages and can include multiple messages at a time (closes SF +#1205890). + +*** mh-customize Uses Group mh, Not mh-e + +The `mh' customization group alias has been deleted to avoid some +problems that were found (closes SF #1213716). + +*** font-lock Error in mh-letter-mode + +An error in MH-E was introduced as a result of a change in CVS Emacs. +This has been fixed (closes SF #1241017). + + + * Changes in MH-E 7.84 Version 7.84 contains no user-visible changes. This version diff --git a/etc/NEWS b/etc/NEWS index 3debb164866..daf2b286185 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -2850,7 +2850,7 @@ See the file GNUS-NEWS or the node "Oort Gnus" in the Gnus manual for details. --- ** MH-E changes. -Upgraded to MH-E version 7.84. There have been major changes since +Upgraded to MH-E version 7.85. There have been major changes since version 5.0.2; see MH-E-NEWS for details. ** Calendar changes: From d3a597b7b41c2ebdb457e7c8bb037958138028f2 Mon Sep 17 00:00:00 2001 From: Miles Bader Date: Sat, 15 Oct 2005 00:20:58 +0000 Subject: [PATCH 168/168] Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-597 Merge from gnus--rel--5.10 Patches applied: * gnus--rel--5.10 (patch 133-141) - Update from CVS - Merge from emacs--cvs-trunk--0 - Update from CVS: texi/gnus.texi (RSS): Fix key description. - Update from CVS: texi/gnus.texi (Document Server Internals): Addition. 2005-10-04 David Hansen * lisp/gnus/nnrss.el (nnrss-request-article): Add support for the comments tag. (nnrss-check-group): Ditto. 2005-10-14 Katsumi Yamaoka * man/gnus.texi (Document Server Internals): Addition. 2005-10-13 Katsumi Yamaoka * man/gnus.texi (A note on namespaces): Fix RFC reference. 2005-10-12 Katsumi Yamaoka * man/gnus.texi (RSS): Fix key description. 2005-10-11 Katsumi Yamaoka * man/gnus.texi: Emacs/w3 -> Emacs/W3. (Browsing the Web): Fix description. (Web Searches): Ditto. (Customizing W3): Ditto. 2005-10-07 Katsumi Yamaoka * man/gnus.texi (Maildir): Clarify expire-age and expire-group. --- lisp/gnus/ChangeLog | 5 ++ lisp/gnus/nnrss.el | 13 ++++-- man/ChangeLog | 23 ++++++++++ man/gnus.texi | 109 ++++++++++++++++++++++++++++---------------- 4 files changed, 108 insertions(+), 42 deletions(-) diff --git a/lisp/gnus/ChangeLog b/lisp/gnus/ChangeLog index 23e5564770f..abbfb096ab1 100644 --- a/lisp/gnus/ChangeLog +++ b/lisp/gnus/ChangeLog @@ -21,6 +21,11 @@ * pgg-def.el (top-level): Don't require custom, it is autoloaded. (To sync with No Gnus.) +2005-10-04 David Hansen + + * nnrss.el (nnrss-request-article): Add support for the comments tag. + (nnrss-check-group): Ditto. + 2005-10-04 Reiner Steib * mm-url.el (mm-url-predefined-programs): Add switches for curl. diff --git a/lisp/gnus/nnrss.el b/lisp/gnus/nnrss.el index 5018701ee42..adef035c830 100644 --- a/lisp/gnus/nnrss.el +++ b/lisp/gnus/nnrss.el @@ -197,6 +197,7 @@ for decoding when the cdr that the data specify is not available.") " "))) (link (nth 2 e)) (enclosure (nth 7 e)) + (comments (nth 8 e)) ;; Enable encoding of Newsgroups header in XEmacs. (default-enable-multibyte-characters t) (rfc2047-header-encoding-alist @@ -205,7 +206,7 @@ for decoding when the cdr that the data specify is not available.") rfc2047-header-encoding-alist) rfc2047-header-encoding-alist)) rfc2047-encode-encoded-words body) - (when (or text link enclosure) + (when (or text link enclosure comments) (insert "\n") (insert "<#multipart type=alternative>\n" "<#part type=\"text/plain\">\n") @@ -220,6 +221,8 @@ for decoding when the cdr that the data specify is not available.") (insert (car enclosure) " " (nth 2 enclosure) " " (nth 3 enclosure) "\n")) + (when comments + (insert comments "\n")) (setq body (buffer-substring body (point))) (insert "<#/part>\n" "<#part type=\"text/html\">\n" @@ -232,6 +235,8 @@ for decoding when the cdr that the data specify is not available.") (insert "

" (cadr enclosure) " " (nth 2 enclosure) " " (nth 3 enclosure) "

\n")) + (when comments + (insert "

comments

\n")) (insert "\n" "<#/part>\n" "<#/multipart>\n")) @@ -528,7 +533,7 @@ nnrss: %s: Not valid XML %s and w3-parse doesn't work %s" (defun nnrss-check-group (group server) (let (file xml subject url extra changed author date - enclosure rss-ns rdf-ns content-ns dc-ns) + enclosure comments rss-ns rdf-ns content-ns dc-ns) (if (and nnrss-use-local (file-exists-p (setq file (expand-file-name (nnrss-translate-file-chars @@ -576,6 +581,7 @@ nnrss: %s: Not valid XML %s and w3-parse doesn't work %s" (setq date (or (nnrss-node-text dc-ns 'date item) (nnrss-node-text rss-ns 'pubDate item) (message-make-date))) + (setq comments (nnrss-node-text rss-ns 'comments item)) (when (setq enclosure (cadr (assq (intern (concat rss-ns "enclosure")) item))) (let ((url (cdr (assq 'url enclosure))) (len (cdr (assq 'length enclosure))) @@ -606,7 +612,8 @@ nnrss: %s: Not valid XML %s and w3-parse doesn't work %s" (and author (nnrss-mime-encode-string author)) date (and extra (nnrss-decode-entities-string extra)) - enclosure) + enclosure + comments) nnrss-group-data) (gnus-sethash (or url extra) t nnrss-group-hashtb) (setq changed t)) diff --git a/man/ChangeLog b/man/ChangeLog index 8ba536739fc..3b98e7985fb 100644 --- a/man/ChangeLog +++ b/man/ChangeLog @@ -1,3 +1,26 @@ +2005-10-14 Katsumi Yamaoka + + * gnus.texi (Document Server Internals): Addition. + +2005-10-13 Katsumi Yamaoka + + * gnus.texi (A note on namespaces): Fix RFC reference. + +2005-10-12 Katsumi Yamaoka + + * gnus.texi (RSS): Fix key description. + +2005-10-11 Katsumi Yamaoka + + * gnus.texi: Emacs/w3 -> Emacs/W3. + (Browsing the Web): Fix description. + (Web Searches): Ditto. + (Customizing W3): Ditto. + +2005-10-07 Katsumi Yamaoka + + * gnus.texi (Maildir): Clarify expire-age and expire-group. + 2005-10-13 Kenichi Handa * basic.texi (Position Info): Fix previous change. diff --git a/man/gnus.texi b/man/gnus.texi index 7ced947a5ce..1a66bd763e0 100644 --- a/man/gnus.texi +++ b/man/gnus.texi @@ -683,7 +683,7 @@ Browsing the Web * Ultimate:: The Ultimate Bulletin Board systems. * Web Archive:: Reading mailing list archived on web. * RSS:: Reading RDF site summary. -* Customizing w3:: Doing stuff to Emacs/w3 from Gnus. +* Customizing W3:: Doing stuff to Emacs/W3 from Gnus. @acronym{IMAP} @@ -8569,8 +8569,8 @@ Customization, emacs-mime, The Emacs MIME Manual}) to convert the can use include: @table @code -@item w3 -Use Emacs/w3. +@item W3 +Use Emacs/W3. @item w3m Use @uref{http://emacs-w3m.namazu.org/, emacs-w3m}. @@ -15093,8 +15093,9 @@ An integer specifying the minimum age, in seconds, of an article before it will be expired, or the symbol @code{never} to specify that articles should never be expired. If this parameter is not set, @code{nnmaildir} falls back to the usual -@code{nnmail-expiry-wait}(@code{-function}) variables (overrideable by -the @code{expiry-wait}(@code{-function}) group parameters. If you +@code{nnmail-expiry-wait}(@code{-function}) variables (the +@code{expiry-wait} group parameter overrides @code{nnmail-expiry-wait} +and makes @code{nnmail-expiry-wait-function} ineffective). If you wanted a value of 3 days, you could use something like @code{[(* 3 24 60 60)]}; @code{nnmaildir} will evaluate the form and use the result. An article's age is measured starting from the article file's @@ -15117,8 +15118,8 @@ the parameter belongs to, then the article is not expired at all. If you use the vector form, the first element is evaluated once for each article. So that form can refer to @code{nnmaildir-article-file-name}, etc., to decide where to put the -article. @emph{If this parameter is not set, @code{nnmaildir} does -not fall back to the @code{expiry-target} group parameter or the +article. @emph{Even if this parameter is not set, @code{nnmaildir} +does not fall back to the @code{expiry-target} group parameter or the @code{nnmail-expiry-target} variable.} @item read-only @@ -15534,10 +15535,11 @@ interfaces to these sources. * Ultimate:: The Ultimate Bulletin Board systems. * Web Archive:: Reading mailing list archived on web. * RSS:: Reading RDF site summary. -* Customizing w3:: Doing stuff to Emacs/w3 from Gnus. +* Customizing W3:: Doing stuff to Emacs/W3 from Gnus. @end menu -All the web sources require Emacs/w3 and the url library to work. +All the web sources require Emacs/W3 and the url library or those +alternatives to work. The main caveat with all these web sources is that they probably won't work for a very long time. Gleaning information from the @acronym{HTML} data @@ -15624,8 +15626,9 @@ make money off of advertisements, not to provide services to the community. Since @code{nnweb} washes the ads off all the articles, one might think that the providers might be somewhat miffed. We'll see. -You must have the @code{url} and @code{w3} package installed to be able -to use @code{nnweb}. +You must have the @code{url} and @code{W3} package or those alternatives +(try @code{customize-group} on the @samp{mm-url} variable group) +installed to be able to use @code{nnweb}. Virtual server variables: @@ -15845,9 +15848,9 @@ system because @acronym{RSS} uses UTF-8 for encoding non-@acronym{ASCII} text by default. It is also used by default for non-@acronym{ASCII} group names. -@kindex G R (Summary) -Use @kbd{G R} from the summary buffer to subscribe to a feed---you will -be prompted for the location, the title and the description of the feed. +@kindex G R (Group) +Use @kbd{G R} from the group buffer to subscribe to a feed---you will be +prompted for the location, the title and the description of the feed. The title, which allows any characters, will be used for the group name and the name of the group data file. The description can be omitted. @@ -15940,18 +15943,19 @@ summary buffer. (add-to-list 'nnmail-extra-headers nnrss-url-field) @end lisp -@node Customizing w3 -@subsection Customizing w3 -@cindex w3 +@node Customizing W3 +@subsection Customizing W3 +@cindex W3 @cindex html @cindex url @cindex Netscape -Gnus uses the url library to fetch web pages and Emacs/w3 to display web -pages. Emacs/w3 is documented in its own manual, but there are some -things that may be more relevant for Gnus users. +Gnus uses the url library to fetch web pages and Emacs/W3 (or those +alternatives) to display web pages. Emacs/W3 is documented in its own +manual, but there are some things that may be more relevant for Gnus +users. -For instance, a common question is how to make Emacs/w3 follow links +For instance, a common question is how to make Emacs/W3 follow links using the @code{browse-url} functions (which will call some external web browser like Netscape). Here's one way: @@ -15966,7 +15970,7 @@ browser like Netscape). Here's one way: (w3-fetch-orig url target))))) @end lisp -Put that in your @file{.emacs} file, and hitting links in w3-rendered +Put that in your @file{.emacs} file, and hitting links in W3-rendered @acronym{HTML} in the Gnus article buffers will use @code{browse-url} to follow the link. @@ -16559,7 +16563,7 @@ delete them. @cindex namespaces The @acronym{IMAP} protocol has a concept called namespaces, described -by the following text in the RFC: +by the following text in the RFC2060: @display 5.1.2. Mailbox Namespace Naming Convention @@ -16891,34 +16895,48 @@ totally ignored. @item article-begin This setting has to be present in all document type definitions. It -says what the beginning of each article looks like. +says what the beginning of each article looks like. To do more +complicated things that cannot be dealt with a simple regexp, you can +use @code{article-begin-function} instead of this. + +@item article-begin-function +If present, this should be a function that moves point to the beginning +of each article. This setting overrides @code{article-begin}. + +@item head-begin +If present, this should be a regexp that matches the head of the +article. To do more complicated things that cannot be dealt with a +simple regexp, you can use @code{head-begin-function} instead of this. @item head-begin-function If present, this should be a function that moves point to the head of -the article. +the article. This setting overrides @code{head-begin}. -@item nndoc-head-begin -If present, this should be a regexp that matches the head of the -article. - -@item nndoc-head-end +@item head-end This should match the end of the head of the article. It defaults to @samp{^$}---the empty line. -@item body-begin-function -If present, this function should move point to the beginning of the body -of the article. - @item body-begin This should match the beginning of the body of the article. It defaults -to @samp{^\n}. +to @samp{^\n}. To do more complicated things that cannot be dealt with +a simple regexp, you can use @code{body-begin-function} instead of this. + +@item body-begin-function +If present, this function should move point to the beginning of the body +of the article. This setting overrides @code{body-begin}. + +@item body-end +If present, this should match the end of the body of the article. To do +more complicated things that cannot be dealt with a simple regexp, you +can use @code{body-end-function} instead of this. @item body-end-function If present, this function should move point to the end of the body of -the article. +the article. This setting overrides @code{body-end}. -@item body-end -If present, this should match the end of the body of the article. +@item file-begin +If present, this should match the beginning of the file. All text +before this regexp will be totally ignored. @item file-end If present, this should match the end of the file. All text after this @@ -16949,6 +16967,19 @@ understand. It is called with the article number as a parameter, and is expected to generate a nice head for the article in question. It is called when requesting the headers of all articles. +@item generate-article-function +If present, this function is called to generate an entire article that +Gnus can understand. It is called with the article number as a +parameter when requesting all articles. + +@item dissection-function +If present, this function is called to dissect a document by itself, +overriding @code{first-article}, @code{article-begin}, +@code{article-begin-function}, @code{head-begin}, +@code{head-begin-function}, @code{head-end}, @code{body-begin}, +@code{body-begin-function}, @code{body-end}, @code{body-end-function}, +@code{file-begin}, and @code{file-end}. + @end table Let's look at the most complicated example I can come up with---standard @@ -24388,7 +24419,7 @@ XEmacs is distributed as a collection of packages. You should install whatever packages the Gnus XEmacs package requires. The current requirements are @samp{gnus}, @samp{mail-lib}, @samp{xemacs-base}, @samp{eterm}, @samp{sh-script}, @samp{net-utils}, @samp{os-utils}, -@samp{dired}, @samp{mh-e}, @samp{sieve}, @samp{ps-print}, @samp{w3}, +@samp{dired}, @samp{mh-e}, @samp{sieve}, @samp{ps-print}, @samp{W3}, @samp{pgg}, @samp{mailcrypt}, @samp{ecrypto}, and @samp{sasl}.