aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBill Wohler2005-10-29 05:09:05 +0000
committerBill Wohler2005-10-29 05:09:05 +0000
commit50df64d63f60e46807653255c0096a56fc9c536a (patch)
tree41f2468f176233906adc8839276634391e42f9fc
parentec397a34fba10f143ea3b299cdd238fdce19e67f (diff)
downloademacs-50df64d63f60e46807653255c0096a56fc9c536a.tar.gz
emacs-50df64d63f60e46807653255c0096a56fc9c536a.zip
* mh-comp.el (mh-annotate-msg): Use new variable
mh-scan-field-destination-offset rather than hard-coding 1. * mh-customize.el (mh-interpret-number-as-range-flag): Add * to docstring. (mh-adaptive-cmd-note-flag-check, mh-scan-format-file-check): New functions to check input for mh-adaptive-cmd-note-flag and mh-scan-format-file respectively. (mh-adaptive-cmd-note-flag, mh-scan-format-file): Docstring fixes, add :set. * mh-e.el: (mh-scan-field-destination-offset): New variable. The destination is the -, t, b, c, or n character for Replied, To, cc, Bcc, or Newsgroups respectively. (mh-make-folder, mh-regenerate-headers, mh-generate-new-cmd-note) Call new function mh-msg-num-width-to-column to make leap between width and column more explicit. (mh-msg-num-width-to-column): New function that steals logic from old mh-set-cmd-note. Also, throw error if mh-scan-format-file isn't t since we can't adapt the scan lines in this case. (mh-set-cmd-note): Now just simply sets mh-cmd-note which will make the documentation more clear. (mh-generate-new-cmd-note): Docstring fix--mh-cmd-note is a column, not a width. (mh-add-sequence-notation, mh-remove-sequence-notation): Use new variable mh-scan-field-destination-offset rather than hard-coding 1. * mh-utils.el (mh-cmd-note) Synced docstring with manual. (mh-notate): Use new variable mh-scan-field-destination-offset rather than hard-coding 1. (mh-message-number-width): Rename to mh-msg-num-width to be consistent with mh-get-msg-num and mh-msg-num-width-to-column.
-rw-r--r--lisp/mh-e/ChangeLog34
-rw-r--r--lisp/mh-e/mh-comp.el3
-rw-r--r--lisp/mh-e/mh-customize.el51
-rw-r--r--lisp/mh-e/mh-e.el56
-rw-r--r--lisp/mh-e/mh-utils.el15
5 files changed, 116 insertions, 43 deletions
diff --git a/lisp/mh-e/ChangeLog b/lisp/mh-e/ChangeLog
index c0c953b5d09..54732241f0e 100644
--- a/lisp/mh-e/ChangeLog
+++ b/lisp/mh-e/ChangeLog
@@ -1,5 +1,39 @@
12005-10-28 Bill Wohler <wohler@newt.com> 12005-10-28 Bill Wohler <wohler@newt.com>
2 2
3 * mh-comp.el (mh-annotate-msg): Use new variable
4 mh-scan-field-destination-offset rather than hard-coding 1.
5
6 * mh-customize.el (mh-interpret-number-as-range-flag): Add * to
7 docstring.
8 (mh-adaptive-cmd-note-flag-check, mh-scan-format-file-check): New
9 functions to check input for mh-adaptive-cmd-note-flag and
10 mh-scan-format-file respectively.
11 (mh-adaptive-cmd-note-flag, mh-scan-format-file): Docstring fixes,
12 add :set.
13
14 * mh-e.el: (mh-scan-field-destination-offset): New variable. The
15 destination is the -, t, b, c, or n character for Replied, To, cc,
16 Bcc, or Newsgroups respectively.
17 (mh-make-folder, mh-regenerate-headers, mh-generate-new-cmd-note)
18 Call new function mh-msg-num-width-to-column to make leap between
19 width and column more explicit.
20 (mh-msg-num-width-to-column): New function that steals logic from
21 old mh-set-cmd-note. Also, throw error if mh-scan-format-file
22 isn't t since we can't adapt the scan lines in this case.
23 (mh-set-cmd-note): Now just simply sets mh-cmd-note which will
24 make the documentation more clear.
25 (mh-generate-new-cmd-note): Docstring fix--mh-cmd-note is a
26 column, not a width.
27 (mh-add-sequence-notation, mh-remove-sequence-notation): Use new
28 variable mh-scan-field-destination-offset rather than hard-coding
29 1.
30
31 * mh-utils.el (mh-cmd-note) Synced docstring with manual.
32 (mh-notate): Use new variable mh-scan-field-destination-offset
33 rather than hard-coding 1.
34 (mh-message-number-width): Rename to mh-msg-num-width to be
35 consistent with mh-get-msg-num and mh-msg-num-width-to-column.
36
3 * mh-customize.el (mh-x-face-file, mh-show-use-xface-flag) 37 * mh-customize.el (mh-x-face-file, mh-show-use-xface-flag)
4 (mail-citation-hook): Quote URLs in docstrings and precede with 38 (mail-citation-hook): Quote URLs in docstrings and precede with
5 `URL'. The former will suppress checkdoc warnings, the latter will 39 `URL'. The former will suppress checkdoc warnings, the latter will
diff --git a/lisp/mh-e/mh-comp.el b/lisp/mh-e/mh-comp.el
index 4b670bdd825..232c0399c03 100644
--- a/lisp/mh-e/mh-comp.el
+++ b/lisp/mh-e/mh-comp.el
@@ -698,7 +698,8 @@ MSG can be a message number, a list of message numbers, or a sequence."
698 (cond ((get-buffer buffer) ; Buffer may be deleted 698 (cond ((get-buffer buffer) ; Buffer may be deleted
699 (set-buffer buffer) 699 (set-buffer buffer)
700 (mh-iterate-on-range nil msg 700 (mh-iterate-on-range nil msg
701 (mh-notate nil note (1+ mh-cmd-note))))))) 701 (mh-notate nil note
702 (+ mh-cmd-note mh-scan-field-destination-offset)))))))
702 703
703(defun mh-insert-fields (&rest name-values) 704(defun mh-insert-fields (&rest name-values)
704 "Insert the NAME-VALUES pairs in the current buffer. 705 "Insert the NAME-VALUES pairs in the current buffer.
diff --git a/lisp/mh-e/mh-customize.el b/lisp/mh-e/mh-customize.el
index 7c28ede3c81..a79c10cb4e5 100644
--- a/lisp/mh-e/mh-customize.el
+++ b/lisp/mh-e/mh-customize.el
@@ -948,7 +948,7 @@ is added to the yanked region."
948;;; Ranges (:group 'mh-ranges) 948;;; Ranges (:group 'mh-ranges)
949 949
950(defcustom mh-interpret-number-as-range-flag t 950(defcustom mh-interpret-number-as-range-flag t
951 "On means interpret a number as a range. 951 "*On means interpret a number as a range.
952Since one of the most frequent ranges used is \"last:N\", MH-E will interpret 952Since one of the most frequent ranges used is \"last:N\", MH-E will interpret
953input such as \"200\" as \"last:200\" if this option is on (which is the 953input such as \"200\" as \"last:200\" if this option is on (which is the
954default). If you need to scan just the message 200, then use the range 954default). If you need to scan just the message 200, then use the range
@@ -960,18 +960,44 @@ default). If you need to scan just the message 200, then use the range
960 960
961;;; Scan Line Formats (:group 'mh-scan-line-formats) 961;;; Scan Line Formats (:group 'mh-scan-line-formats)
962 962
963;;; Forward definition to avoid compiler and runtime error.
964(defvar mh-scan-format-file t)
965
966(defun mh-adaptive-cmd-note-flag-check (symbol value)
967 "Check if desired setting is legal.
968Throw an error if user tries to turn on `mh-adaptive-cmd-note-flag' when
969`mh-scan-format-file' isn't t. Otherwise, set SYMBOL to VALUE."
970 (if (and value
971 (not (eq mh-scan-format-file t)))
972 (error "%s %s" "Can't turn on unless mh-scan-format-file"
973 "is set to \"Use MH-E scan Format\"")
974 (set-default symbol value)))
975
976(defun mh-scan-format-file-check (symbol value)
977 "Check if desired setting is legal.
978Throw an error if user tries to set `mh-scan-format-file' to anything but t
979when `mh-adaptive-cmd-note-flag' is on. Otherwise, set SYMBOL to VALUE."
980 (if (and (not (eq value t))
981 (eq mh-adaptive-cmd-note-flag t))
982 (error "%s %s" "You must turn off mh-adaptive-cmd-note-flag"
983 "unless you use \"Use MH-E scan Format\"")
984 (set-default symbol value)))
985
963(defcustom mh-adaptive-cmd-note-flag t 986(defcustom mh-adaptive-cmd-note-flag t
964 "*On means that the message number width is determined dynamically. 987 "*On means that the message number width is determined dynamically.
965If you've created your own format to handle long message numbers, you'll be 988If you've created your own format to handle long message numbers, you'll be
966pleased to know you no longer need it since MH-E adapts its internal format 989pleased to know you no longer need it since MH-E adapts its internal format
967based upon the largest message number if this option is on (the default). 990based upon the largest message number if this option is on (the default).
991This option may only be turned on when `mh-scan-format-file' is set to \"Use
992MH-E scan Format\".
968 993
969If you prefer fixed-width message numbers, turn off this option and call 994If you prefer fixed-width message numbers, turn off this option and call
970`mh-set-cmd-note' with the width specified by your format file (see 995`mh-set-cmd-note' with the width specified by your format file
971`mh-scan-format-file'). For example, the default width is 4, so you would use 996\(see `mh-scan-format-file'). For example, the default width is 4, so you would
972\"(mh-set-cmd-note 4)\"." 997use \"(mh-set-cmd-note 4)\"."
973 :type 'boolean 998 :type 'boolean
974 :group 'mh-scan-line-formats) 999 :group 'mh-scan-line-formats
1000 :set 'mh-adaptive-cmd-note-flag-check)
975 1001
976(defcustom mh-scan-format-file t 1002(defcustom mh-scan-format-file t
977 "Specifies the format file to pass to the scan program. 1003 "Specifies the format file to pass to the scan program.
@@ -979,7 +1005,10 @@ If you prefer fixed-width message numbers, turn off this option and call
979The default setting for this option is \"Use MH-E scan Format\". This means 1005The default setting for this option is \"Use MH-E scan Format\". This means
980that the format string will be taken from the either `mh-scan-format-mh' or 1006that the format string will be taken from the either `mh-scan-format-mh' or
981`mh-scan-format-nmh' depending on whether MH or nmh (or GNU mailutils) is in 1007`mh-scan-format-nmh' depending on whether MH or nmh (or GNU mailutils) is in
982use. You can also set this option to \"Use Default scan Format\" to get the 1008use. This setting also enables you to turn on the `mh-adaptive-cmd-note-flag'
1009option.
1010
1011You can also set this option to \"Use Default scan Format\" to get the
983same output as you would get if you ran \"scan\" from the shell. If you have a 1012same output as you would get if you ran \"scan\" from the shell. If you have a
984format file that you want MH-E to use but not MH, you can set this option to 1013format file that you want MH-E to use but not MH, you can set this option to
985\"Specify a scan Format File\" and enter the name of your format file. 1014\"Specify a scan Format File\" and enter the name of your format file.
@@ -987,15 +1016,13 @@ format file that you want MH-E to use but not MH, you can set this option to
987If you change the format of the scan lines you'll need to tell MH-E how to 1016If you change the format of the scan lines you'll need to tell MH-E how to
988parse the new format. As you will see, quite a lot of variables are involved 1017parse the new format. As you will see, quite a lot of variables are involved
989to do that. Use \"\\[apropos] RET mh-scan.*regexp\" to obtain a list of these 1018to do that. Use \"\\[apropos] RET mh-scan.*regexp\" to obtain a list of these
990variables. You may also have to call `mh-set-cmd-note' to modify `mh-cmd-note' 1019variables. You will also have to call `mh-set-cmd-note' if your notations are
991with the column for your notations if you turn off 1020not in column 4 (columns in Emacs start with 0)."
992`mh-adaptive-cmd-note-flag'. However, you will need to set the `mh-cmd-note'
993variable manually with `setq' if `mh-scan-format-file' is set to anything
994other than \"Use MH-E scan Format\"."
995 :type '(choice (const :tag "Use MH-E scan Format" t) 1021 :type '(choice (const :tag "Use MH-E scan Format" t)
996 (const :tag "Use Default scan Format" nil) 1022 (const :tag "Use Default scan Format" nil)
997 (file :tag "Specify a scan Format File")) 1023 (file :tag "Specify a scan Format File"))
998 :group 'mh-scan-line-formats) 1024 :group 'mh-scan-line-formats
1025 :set 'mh-scan-format-file-check)
999 1026
1000(defcustom mh-scan-prog "scan" 1027(defcustom mh-scan-prog "scan"
1001 "*Program used to scan messages. 1028 "*Program used to scan messages.
diff --git a/lisp/mh-e/mh-e.el b/lisp/mh-e/mh-e.el
index c442947b789..dc67cce51c5 100644
--- a/lisp/mh-e/mh-e.el
+++ b/lisp/mh-e/mh-e.el
@@ -114,7 +114,7 @@ The string is displayed after the folder's name. nil for no annotation.")
114;; The following scan formats are passed to the scan program if the setting of 114;; The following scan formats are passed to the scan program if the setting of
115;; `mh-scan-format-file' is t. They are identical except the later one makes 115;; `mh-scan-format-file' is t. They are identical except the later one makes
116;; use of the nmh `decode' function to decode RFC 2047 encodings. If you just 116;; use of the nmh `decode' function to decode RFC 2047 encodings. If you just
117;; want to change the width of the msg number, use the `mh-set-cmd-note' 117;; want to change the column of the notations, use the `mh-set-cmd-note'
118;; function. 118;; function.
119 119
120(defvar mh-scan-format-mh 120(defvar mh-scan-format-mh
@@ -338,6 +338,10 @@ originator, or a \"To: address\" for outgoing e-mail messages.")
338 "Number of columns consumed by whitespace after from-mbox in `mh-scan-format'. 338 "Number of columns consumed by whitespace after from-mbox in `mh-scan-format'.
339This column will only ever have spaces in it.") 339This column will only ever have spaces in it.")
340 340
341(defvar mh-scan-field-destination-offset
342 (+ mh-scan-cmd-note-width)
343 "The offset from the `mh-cmd-note' for the destination column.")
344
341(defvar mh-scan-field-from-start-offset 345(defvar mh-scan-field-from-start-offset
342 (+ mh-scan-cmd-note-width 346 (+ mh-scan-cmd-note-width
343 mh-scan-destination-width 347 mh-scan-destination-width
@@ -1402,7 +1406,7 @@ Make it the current folder."
1402 (setq buffer-read-only nil) 1406 (setq buffer-read-only nil)
1403 (erase-buffer) 1407 (erase-buffer)
1404 (if mh-adaptive-cmd-note-flag 1408 (if mh-adaptive-cmd-note-flag
1405 (mh-set-cmd-note (mh-message-number-width name))) 1409 (mh-set-cmd-note (mh-msg-num-width-to-column (mh-msg-num-width name))))
1406 (setq buffer-read-only t) 1410 (setq buffer-read-only t)
1407 (mh-folder-mode) 1411 (mh-folder-mode)
1408 (mh-set-folder-modified-p nil) 1412 (mh-set-folder-modified-p nil)
@@ -1719,20 +1723,24 @@ Return in the folder's buffer."
1719 (when (mh-outstanding-commands-p) 1723 (when (mh-outstanding-commands-p)
1720 (mh-notate-deleted-and-refiled))) 1724 (mh-notate-deleted-and-refiled)))
1721 1725
1722(defun mh-set-cmd-note (width) 1726(defun mh-msg-num-width-to-column (width)
1723 "Set `mh-cmd-note' to WIDTH (minimum of 2). 1727 "Return the column for notations given message number WIDTH.
1724 1728Note that columns in Emacs start with 0.
1725If `mh-scan-format-file' is set to \"Use Default scan Format\" or \"Specify a 1729
1726scan Format File\", then this function will NOT update `mh-cmd-note'. In these 1730If `mh-scan-format-file' is set to \"Use MH-E scan Format\" this means that
1727cases, the user should change `mh-cmd-note' with `setq' if necessary. 1731either `mh-scan-format-mh' or `mh-scan-format-nmh' are in use. This function
1728 1732therefore assumes that the first column is empty (to provide room for the
1733cursor), the following WIDTH columns contain the message number, and the
1734column for notations comes after that."
1735 (if (eq mh-scan-format-file t)
1736 (max (1+ width) 2)
1737 (error "%s %s" "Can't call mh-msg-num-width-to-column"
1738 "when mh-scan-format-file is not t")))
1739
1740(defun mh-set-cmd-note (column)
1741 "Set `mh-cmd-note' to COLUMN.
1729Note that columns in Emacs start with 0." 1742Note that columns in Emacs start with 0."
1730 ;; Add one to the width to always have whitespace in column zero. 1743 (setq mh-cmd-note column))
1731 (setq width (max (1+ width) 2))
1732 (if (and (equal mh-scan-format-file t)
1733 (not (eq mh-cmd-note width)))
1734 (setq mh-cmd-note width))
1735 mh-cmd-note)
1736 1744
1737(defun mh-regenerate-headers (range &optional update) 1745(defun mh-regenerate-headers (range &optional update)
1738 "Scan folder over range RANGE. 1746 "Scan folder over range RANGE.
@@ -1747,7 +1755,8 @@ If UPDATE, append the scan lines, otherwise replace."
1747 (goto-char (point-max)) 1755 (goto-char (point-max))
1748 (delete-region (point-min) (point-max)) 1756 (delete-region (point-min) (point-max))
1749 (if mh-adaptive-cmd-note-flag 1757 (if mh-adaptive-cmd-note-flag
1750 (mh-set-cmd-note (mh-message-number-width folder)))) 1758 (mh-set-cmd-note (mh-msg-num-width-to-column (mh-msg-num-width
1759 folder)))))
1751 (setq scan-start (point)) 1760 (setq scan-start (point))
1752 (apply #'mh-exec-cmd-output 1761 (apply #'mh-exec-cmd-output
1753 mh-scan-prog nil 1762 mh-scan-prog nil
@@ -1781,9 +1790,9 @@ If UPDATE, append the scan lines, otherwise replace."
1781After doing an `mh-get-new-mail' operation in this FOLDER, at least 1790After doing an `mh-get-new-mail' operation in this FOLDER, at least
1782one line that looks like a truncated message number was found. 1791one line that looks like a truncated message number was found.
1783 1792
1784Remove the text added by the last `mh-inc' command. It should be the 1793Remove the text added by the last `mh-inc' command. It should be the messages
1785messages cur-last. Call `mh-set-cmd-note' with the widest message number 1794cur-last. Call `mh-set-cmd-note', adjusting the notation column with the width
1786in FOLDER. 1795of the largest message number in FOLDER.
1787 1796
1788Reformat the message number width on each line in the buffer and trim 1797Reformat the message number width on each line in the buffer and trim
1789the line length to fit in the window. 1798the line length to fit in the window.
@@ -1800,7 +1809,7 @@ line now with no message truncation."
1800 (delete-char (- (point-max) (point))) 1809 (delete-char (- (point-max) (point)))
1801 ;; Update the current buffer to reflect the new mh-cmd-note 1810 ;; Update the current buffer to reflect the new mh-cmd-note
1802 ;; value needed to display messages. 1811 ;; value needed to display messages.
1803 (mh-set-cmd-note (mh-message-number-width folder)) 1812 (mh-set-cmd-note (mh-msg-num-width-to-column (mh-msg-num-width folder)))
1804 (setq mh-cmd-note-fmt (concat "%" (format "%d" mh-cmd-note) "d")) 1813 (setq mh-cmd-note-fmt (concat "%" (format "%d" mh-cmd-note) "d"))
1805 ;; Cleanup the messages that are in the buffer right now 1814 ;; Cleanup the messages that are in the buffer right now
1806 (goto-char (point-min)) 1815 (goto-char (point-min))
@@ -1958,11 +1967,12 @@ turned on."
1958 (mh-notate nil nil mh-cmd-note) 1967 (mh-notate nil nil mh-cmd-note)
1959 (when font-lock-mode 1968 (when font-lock-mode
1960 (font-lock-fontify-region (point) (line-end-position)))) 1969 (font-lock-fontify-region (point) (line-end-position))))
1961 (forward-char (1+ mh-cmd-note)) 1970 (forward-char (+ mh-cmd-note mh-scan-field-destination-offset))
1962 (let ((stack (gethash msg mh-sequence-notation-history))) 1971 (let ((stack (gethash msg mh-sequence-notation-history)))
1963 (setf (gethash msg mh-sequence-notation-history) 1972 (setf (gethash msg mh-sequence-notation-history)
1964 (cons (char-after) stack))) 1973 (cons (char-after) stack)))
1965 (mh-notate nil mh-note-seq (1+ mh-cmd-note)))))) 1974 (mh-notate nil mh-note-seq
1975 (+ mh-cmd-note mh-scan-field-destination-offset))))))
1966 1976
1967(defun mh-remove-sequence-notation (msg internal-seq-flag &optional all) 1977(defun mh-remove-sequence-notation (msg internal-seq-flag &optional all)
1968 "Remove sequence notation from the MSG on the current line. 1978 "Remove sequence notation from the MSG on the current line.
@@ -1981,7 +1991,7 @@ If ALL is non-nil, then all sequence marks on the scan line are removed."
1981 (when stack 1991 (when stack
1982 (save-excursion 1992 (save-excursion
1983 (beginning-of-line) 1993 (beginning-of-line)
1984 (forward-char (1+ mh-cmd-note)) 1994 (forward-char (+ mh-cmd-note mh-scan-field-destination-offset))
1985 (delete-char 1) 1995 (delete-char 1)
1986 (insert (car stack)))) 1996 (insert (car stack))))
1987 (setf (gethash msg mh-sequence-notation-history) (cdr stack)))))) 1997 (setf (gethash msg mh-sequence-notation-history) (cdr stack))))))
diff --git a/lisp/mh-e/mh-utils.el b/lisp/mh-e/mh-utils.el
index 87f521d605a..169ccf2a0d5 100644
--- a/lisp/mh-e/mh-utils.el
+++ b/lisp/mh-e/mh-utils.el
@@ -111,10 +111,9 @@ It is a format string; use `%d' to represent the location of the message
111number within the expression as in the default of \"^[^0-9]*%d[^0-9]\".") 111number within the expression as in the default of \"^[^0-9]*%d[^0-9]\".")
112 112
113(defvar mh-cmd-note 4 113(defvar mh-cmd-note 4
114 "Column where notations begin. 114 "Column for notations.
115This variable should be set with the function `mh-set-cmd-note'. This variable 115This variable should be set with the function `mh-set-cmd-note'. This variable
116may be updated dynamically if `mh-adaptive-cmd-note-flag' is on and 116may be updated dynamically if `mh-adaptive-cmd-note-flag' is on.
117`mh-scan-format-file' is set to \"Use MH-E scan Format\".
118 117
119Note that columns in Emacs start with 0.") 118Note that columns in Emacs start with 0.")
120(make-variable-buffer-local 'mh-cmd-note) 119(make-variable-buffer-local 'mh-cmd-note)
@@ -1827,8 +1826,10 @@ If NOTATION is nil then no change in the buffer occurs."
1827 (with-mh-folder-updating (t) 1826 (with-mh-folder-updating (t)
1828 (beginning-of-line) 1827 (beginning-of-line)
1829 (forward-char offset) 1828 (forward-char offset)
1830 (let* ((change-stack-flag (and (equal offset (1+ mh-cmd-note)) 1829 (let* ((change-stack-flag
1831 (not (eq notation mh-note-seq)))) 1830 (and (equal offset
1831 (+ mh-cmd-note mh-scan-field-destination-offset))
1832 (not (eq notation mh-note-seq))))
1832 (msg (and change-stack-flag (or msg (mh-get-msg-num nil)))) 1833 (msg (and change-stack-flag (or msg (mh-get-msg-num nil))))
1833 (stack (and msg (gethash msg mh-sequence-notation-history))) 1834 (stack (and msg (gethash msg mh-sequence-notation-history)))
1834 (notation (or notation (char-after)))) 1835 (notation (or notation (char-after))))
@@ -1992,8 +1993,8 @@ The message number width portion of the format is discovered using
1992 (substring fmt end)))) 1993 (substring fmt end))))
1993 fmt)) 1994 fmt))
1994 1995
1995(defun mh-message-number-width (folder) 1996(defun mh-msg-num-width (folder)
1996 "Return the widest message number in this FOLDER." 1997 "Return the width of the largest message number in this FOLDER."
1997 (or mh-progs (mh-find-path)) 1998 (or mh-progs (mh-find-path))
1998 (let ((tmp-buffer (get-buffer-create mh-temp-buffer)) 1999 (let ((tmp-buffer (get-buffer-create mh-temp-buffer))
1999 (width 0)) 2000 (width 0))