instead of replace-regexp-in-string.
(crm, multi-prompt): Use mh-require instead of require.
(mh-goto-address-find-address-at-point): Use
mh-line-beginning-position and mh-line-end-position instead of
line-beginning-position and line-end-position. Use
mh-match-string-no-properties instead of match-string-no-properties.
* mh-comp.el (mh-modify-header-field): Use mh-line-beginning-position
and mh-line-end-position instead of line-beginning-position and
line-end-position.
* mh-compat.el (mailabbrev): Use mh-require instead of require.
(mh-assoc-string, mh-display-completion-list, mh-face-foreground)
(mh-face-background): Make docstring consistent.
(mh-require, mh-cancel-timer, mh-display-color-cells)
(mh-line-beginning-position, mh-line-end-position)
(mh-match-string-no-properties, mh-replace-regexp-in-string)
(mh-view-mode-enter): Move definition here from mh-xemacs.el and add
mh- prefix since compatibility functions should have our package
prefix (mh-) by Emacs convention and to avoid messing up checks for
the same functions in other packages.
* mh-e.el (mh-compiling-flag): Move mh-xemacs-compiling-flag here from
mh-xemacs.el and rename.
(mh-xargs): Use mh-line-beginning-position and mh-line-end-position
instead of line-beginning-position and line-end-position.
(mh-
defface-compat): Use mh-display-color-cells instead of
display-color-cells.
* mh-folder.el (which-func): Use mh-require instead of require.
* mh-funcs.el (mh-list-folders): Use mh-view-mode-enter instead of
view-mode-enter.
* mh-gnus.el (gnus-util, mm-bodies, mm-decode, mm-view, mml): Use
mh-require instead of require.
* mh-letter.el (mh-letter-header-end, mh-letter-mode)
(mh-letter-next-header-field): Use mh-line-beginning-position and
mh-line-end-position instead of line-beginning-position and
line-end-position.
* mh-limit.el (mh-subject-to-sequence-unthreaded): Use
mh-match-string-no-properties instead of match-string-no-properties.
(mh-narrow-to-header-field): Use mh-line-beginning-position and
mh-line-end-position instead of line-beginning-position and
line-end-position.
* mh-mime.el (mh-mime-inline-part, mh-mm-display-part)
(mh-mh-quote-unescaped-sharp, mh-mh-directive-present-p): Use
mh-line-beginning-position and mh-line-end-position instead of
line-beginning-position and line-end-position.
* mh-search.el (which-func): Use mh-require instead of require.
(mh-make-pick-template, mh-index-visit-folder)
(mh-pick-parse-search-buffer, mh-swish-next-result)
(mh-mairix-next-result, mh-namazu-next-result)
(mh-pick-next-result, mh-grep-next-result)
(mh-index-create-imenu-index, mh-index-match-checksum)
(mh-md5sum-parser, mh-openssl-parser, mh-index-update-maps): Use
mh-line-beginning-position and mh-line-end-position instead of
line-beginning-position and line-end-position.
* mh-seq.el (mh-list-sequences): Use mh-view-mode-enter instead of
view-mode-enter.
(mh-folder-size-flist, mh-parse-flist-output-line)
(mh-add-sequence-notation): Use mh-line-beginning-position and
mh-line-end-position instead of line-beginning-position and
line-end-position.
* mh-show.el (mh-show-addr): Use mh-require instead of require.
* mh-speed.el (mh-folder-speedbar-menu-items, mh-speed-toggle)
(mh-speed-view, mh-folder-speedbar-buttons)
(mh-speed-highlight, mh-speed-goto-folder)
(mh-speed-add-buttons, mh-speed-parse-flists-output)
(mh-speed-invalidate-map, mh-speedbar-change-expand-button-char)
(mh-speed-add-folder): Use mh-line-beginning-position and
mh-line-end-position instead of line-beginning-position and
line-end-position.
(mh-speed-flists): Use mh-cancel-timer instead of cancel-timer.
* mh-thread.el (mh-thread-find-children)
(mh-thread-parse-scan-line, mh-thread-generate): Use
mh-line-beginning-position and mh-line-end-position instead of
line-beginning-position and line-end-position.
* mh-utils.el (mh-colors-available-p): Use mh-display-color-cells
instead of display-color-cells.
(mh-folder-list): Use mh-replace-regexp-in-string instead of
replace-regexp-in-string.
(mh-sub-folders-actual, mh-letter-toggle-header-field-display): Use
mh-line-beginning-position and mh-line-end-position instead of
line-beginning-position and line-end-position.
* mh-comp.el (mh-send-sub): Don't find components file in current
directory--this seems to have been a side-effect of commenting out the
use of an old mh-etc variable. Improve error message.
+2006-02-01 Bill Wohler <wohler@newt.com>
+
+ * mh-alias.el (mh-alias-gecos-name): Use
+ mh-replace-regexp-in-string instead of replace-regexp-in-string.
+ (crm, multi-prompt): Use mh-require instead of require.
+ (mh-goto-address-find-address-at-point): Use
+ mh-line-beginning-position and mh-line-end-position instead of
+ line-beginning-position and line-end-position. Use
+ mh-match-string-no-properties instead of
+ match-string-no-properties.
+
+ * mh-comp.el (mh-modify-header-field): Use
+ mh-line-beginning-position and mh-line-end-position instead of
+ line-beginning-position and line-end-position.
+
+ * mh-compat.el (mailabbrev): Use mh-require instead of require.
+ (mh-assoc-string, mh-display-completion-list, mh-face-foreground)
+ (mh-face-background): Make docstring consistent.
+ (mh-require, mh-cancel-timer, mh-display-color-cells)
+ (mh-line-beginning-position, mh-line-end-position)
+ (mh-match-string-no-properties, mh-replace-regexp-in-string)
+ (mh-view-mode-enter): Move definition here from mh-xemacs.el and
+ add mh- prefix since compatibility functions should have our
+ package prefix (mh-) by Emacs convention and to avoid messing up
+ checks for the same functions in other packages.
+
+ * mh-e.el (mh-compiling-flag): Move mh-xemacs-compiling-flag here
+ from mh-xemacs.el and rename.
+ (mh-xargs): Use mh-line-beginning-position and
+ mh-line-end-position instead of line-beginning-position and
+ line-end-position.
+ (mh-defface-compat): Use mh-display-color-cells instead of
+ display-color-cells.
+
+ * mh-folder.el (which-func): Use mh-require instead of require.
+
+ * mh-funcs.el (mh-list-folders): Use mh-view-mode-enter instead of
+ view-mode-enter.
+
+ * mh-gnus.el (gnus-util, mm-bodies, mm-decode, mm-view, mml): Use
+ mh-require instead of require.
+
+ * mh-letter.el (mh-letter-header-end, mh-letter-mode)
+ (mh-letter-next-header-field): Use mh-line-beginning-position and
+ mh-line-end-position instead of line-beginning-position and
+ line-end-position.
+
+ * mh-limit.el (mh-subject-to-sequence-unthreaded): Use
+ mh-match-string-no-properties instead of
+ match-string-no-properties.
+ (mh-narrow-to-header-field): Use mh-line-beginning-position and
+ mh-line-end-position instead of line-beginning-position and
+ line-end-position.
+
+ * mh-mime.el (mh-mime-inline-part, mh-mm-display-part)
+ (mh-mh-quote-unescaped-sharp, mh-mh-directive-present-p): Use
+ mh-line-beginning-position and mh-line-end-position instead of
+ line-beginning-position and line-end-position.
+
+ * mh-search.el (which-func): Use mh-require instead of require.
+ (mh-make-pick-template, mh-index-visit-folder)
+ (mh-pick-parse-search-buffer, mh-swish-next-result)
+ (mh-mairix-next-result, mh-namazu-next-result)
+ (mh-pick-next-result, mh-grep-next-result)
+ (mh-index-create-imenu-index, mh-index-match-checksum)
+ (mh-md5sum-parser, mh-openssl-parser, mh-index-update-maps): Use
+ mh-line-beginning-position and mh-line-end-position instead of
+ line-beginning-position and line-end-position.
+
+ * mh-seq.el (mh-list-sequences): Use mh-view-mode-enter instead of
+ view-mode-enter.
+ (mh-folder-size-flist, mh-parse-flist-output-line)
+ (mh-add-sequence-notation): Use mh-line-beginning-position and
+ mh-line-end-position instead of line-beginning-position and
+ line-end-position.
+
+ * mh-show.el (mh-show-addr): Use mh-require instead of require.
+
+ * mh-speed.el (mh-folder-speedbar-menu-items, mh-speed-toggle)
+ (mh-speed-view, mh-folder-speedbar-buttons)
+ (mh-speed-highlight, mh-speed-goto-folder)
+ (mh-speed-add-buttons, mh-speed-parse-flists-output)
+ (mh-speed-invalidate-map, mh-speedbar-change-expand-button-char)
+ (mh-speed-add-folder): Use mh-line-beginning-position and
+ mh-line-end-position instead of line-beginning-position and
+ line-end-position.
+ (mh-speed-flists): Use mh-cancel-timer instead of cancel-timer.
+
+ * mh-thread.el (mh-thread-find-children)
+ (mh-thread-parse-scan-line, mh-thread-generate): Use
+ mh-line-beginning-position and mh-line-end-position instead of
+ line-beginning-position and line-end-position.
+
+ * mh-utils.el (mh-colors-available-p): Use mh-display-color-cells
+ instead of display-color-cells.
+ (mh-folder-list): Use mh-replace-regexp-in-string instead of
+ replace-regexp-in-string.
+ (mh-sub-folders-actual, mh-letter-toggle-header-field-display):
+ Use mh-line-beginning-position and mh-line-end-position instead of
+ line-beginning-position and line-end-position.
+
+ * mh-comp.el (mh-send-sub): Don't find components file in current
+ directory--this seems to have been a side-effect of commenting out
+ the use of an old mh-etc variable. Improve error message.
+
2006-01-31 Bill Wohler <wohler@newt.com>
* mh-acros.el (mh-defun-compat, mh-defmacro-compat): Add name
argument since compatibility functions should have our package
prefix (mh-) by Emacs convention and to avoid messing up checks
for the same functions in other packages. Use explicit argument
- instead of forming name by adding mh-e prefix so that one can grep
+ instead of forming name by adding mh- prefix so that one can grep
and find the definition.
* mh-alias.el (mh-alias-local-users, mh-alias-reload)
(setq res (match-string 1 res)))
;; Replace "&" with capitalized username
(if (string-match "&" res)
- (setq res (replace-regexp-in-string "&" (capitalize username) res)))
+ (setq res (mh-replace-regexp-in-string "&" (capitalize username) res)))
;; Remove " character
(if (string-match "\"" res)
- (setq res (replace-regexp-in-string "\"" "" res)))
+ (setq res (mh-replace-regexp-in-string "\"" "" res)))
;; If empty string, use username instead
(if (string-equal "" res)
(setq res username))
(t
(mh-alias-ali alias))))
-(require 'crm nil t) ; completing-read-multiple
-(require 'multi-prompt nil t)
+(mh-require 'crm nil t) ; completing-read-multiple
+(mh-require 'multi-prompt nil t)
;;;###mh-autoload
(defun mh-read-address (prompt)
Then search backwards to beginning of line for the start of an
e-mail address. If no e-mail address found, return nil."
- (re-search-backward "[^-_A-z0-9.@]" (line-beginning-position) 'lim)
+ (re-search-backward "[^-_A-z0-9.@]" (mh-line-beginning-position) 'lim)
(if (or (looking-at mh-address-mail-regexp) ; already at start
(and (re-search-forward mh-address-mail-regexp
- (line-end-position) 'lim)
+ (mh-line-end-position) 'lim)
(goto-char (match-beginning 0))))
- (match-string-no-properties 0)))
+ (mh-match-string-no-properties 0)))
(defun mh-alias-apropos (regexp)
"Show all aliases or addresses that match a regular expression REGEXP."
(cond ((and overwrite-flag
(mh-goto-header-field (concat field ":")))
(insert " " value)
- (delete-region (point) (line-end-position)))
+ (delete-region (point) (mh-line-end-position)))
((and (not overwrite-flag)
(mh-regexp-in-field-p (concat "\\b" value "\\b") field))
;; Already there, do nothing.
;; macros we can retire.
;; Please use mh-gnus.el when providing compatibility with different
-;; versions of Gnus and mh-xemacs.el for compatibility with XEmacs.
+;; versions of Gnus.
-;; Items are listed alphabetically.
+;; Items are listed alphabetically (except for mh-require which is
+;; needed by a lesser character).
+
+(require 'mh-acros)
+
+(mh-do-in-gnu-emacs
+ (defalias 'mh-require 'require))
+
+(mh-do-in-xemacs
+ (defun mh-require (feature &optional filename noerror)
+ "If feature FEATURE is not loaded, load it from FILENAME.
+If FEATURE is not a member of the list `features', then the feature
+is not loaded; so load the file FILENAME.
+If FILENAME is omitted, the printname of FEATURE is used as the file name.
+If the optional third argument NOERROR is non-nil,
+then return nil if the file is not found instead of signaling an error.
+
+Simulate NOERROR argument in XEmacs which lacks it."
+ (if (not (featurep feature))
+ (if filename
+ (load filename noerror t)
+ (load (format "%s" feature) noerror t)))))
(mh-defun-compat mh-assoc-string assoc-string (key list case-fold)
"Like `assoc' but specifically for strings.
Case is ignored if CASE-FOLD is non-nil.
-This function added by MH-E for Emacs versions that lack
-`assoc-string', introduced in Emacs 22."
+This function is used by Emacs versions that lack `assoc-string',
+introduced in Emacs 22."
(if case-fold
(assoc-ignore-case key list)
(assoc key list)))
-(require 'mailabbrev nil t)
-(mh-defun-compat mh-mail-abbrev-make-syntax-table
- mail-abbrev-make-syntax-table ()
- "Emacs 21 and XEmacs don't have this function."
- nil)
+;; For XEmacs.
+(defalias 'mh-cancel-timer
+ (if (fboundp 'cancel-timer)
+ 'cancel-timer
+ 'delete-itimer))
+
+(mh-defun-compat mh-display-color-cells display-color-cells (&optional display)
+ "Return the number of color cells supported by DISPLAY.
+This function is used by XEmacs to always return 0 when compiling
+to avoid compiling errors. Otherwise uses `device-color-cells'."
+ (if mh-compiling-flag
+ 0
+ (device-color-cells display)))
(defmacro mh-display-completion-list (completions &optional common-substring)
"Display the list of COMPLETIONS.
See documentation for `display-completion-list' for a description of the
arguments COMPLETIONS and perhaps COMMON-SUBSTRING.
-This macro added by MH-E for Emacs versions that lack a
-COMMON-SUBSTRING argument, introduced in Emacs 22."
+This macro is used by Emacs versions that lack a COMMON-SUBSTRING
+argument, introduced in Emacs 22."
(if (< emacs-major-version 22)
`(display-completion-list ,completions)
`(display-completion-list ,completions ,common-substring)))
"Return the foreground color name of FACE, or nil if unspecified.
See documentation for `face-foreground' for a description of the
arguments FACE, FRAME, and perhaps INHERIT.
-This macro added by MH-E for Emacs versions that lack an INHERIT
-argument, introduced in Emacs 22."
+This macro is used by Emacs versions that lack an INHERIT argument,
+introduced in Emacs 22."
(if (< emacs-major-version 22)
`(face-foreground ,face ,frame)
`(face-foreground ,face ,frame ,inherit)))
"Return the background color name of face, or nil if unspecified.
See documentation for `back-foreground' for a description of the
arguments FACE, FRAME, and INHERIT.
-This macro added by MH-E for Emacs versions that lack an INHERIT
-argument, introduced in Emacs 22."
+This macro is used by Emacs versions that lack an INHERIT argument,
+introduced in Emacs 22."
(if (< emacs-major-version 22)
`(face-background ,face ,frame)
`(face-background ,face ,frame ,inherit)))
+;; For XEmacs.
+(defalias 'mh-line-beginning-position
+ (if (fboundp 'line-beginning-position)
+ 'line-beginning-position
+ 'point-at-bol))
+
+;; For XEmacs.
+(defalias 'mh-line-end-position
+ (if (fboundp 'line-end-position)
+ 'line-end-position
+ 'point-at-eol))
+
+(mh-require 'mailabbrev nil t)
+(mh-defun-compat mh-mail-abbrev-make-syntax-table
+ mail-abbrev-make-syntax-table ()
+ "Emacs 21 and XEmacs don't have `mail-abbrev-make-syntax-table'.
+This function does nothing on those systems."
+ nil)
+
+(mh-defun-compat mh-match-string-no-properties
+ match-string-no-properties (num &optional string)
+ "Return string of text matched by last search, without text properties.
+This function is used by XEmacs that lacks `match-string-no-properties'.
+The function `buffer-substring-no-properties' is used instead.
+The argument STRING is ignored."
+ (buffer-substring-no-properties
+ (match-beginning num) (match-end num)))
+
+(mh-defun-compat mh-replace-regexp-in-string replace-regexp-in-string
+ (rep string &optional fixedcase literal subexp start)
+ "Replace REGEXP with REP everywhere in STRING and return result.
+This function is used by XEmacs that lacks `replace-regexp-in-string'.
+The function `replace-in-string' is used instead.
+The arguments FIXEDCASE, LITERAL, SUBEXP, and START are ignored."
+ (replace-in-string string regexp rep))
+
;; Copy of constant from url-util.el in Emacs 22; needed by Emacs 21.
(if (not (boundp 'url-unreserved-chars))
(defconst mh-url-unresrved-chars
(char-to-string char)))
str ""))
+(mh-defun-compat mh-view-mode-enter
+ view-mode-enter (&optional return-to exit-action)
+ "Enter View mode.
+This function is used by XEmacs that lacks `view-mode-enter'.
+The function `view-mode' is used instead.
+The arguments RETURN-TO and EXIT-ACTION are ignored."
+ ;; Shush compiler.
+ (if return-to nil)
+ (if exit-action nil)
+ (view-mode 1))
+
(defmacro mh-write-file-functions ()
"Return `write-file-functions' if it exists.
Otherwise return `local-write-file-hooks'.
(eval-and-compile
(defvar mh-xemacs-flag (featurep 'xemacs)
- "Non-nil means the current Emacs is XEmacs."))
+ "Non-nil means the current Emacs is XEmacs.")
+ (defvar mh-compiling-flag nil
+ "Non-nil means we're compiling."))
+
+(eval-when (compile)
+ (setq mh-compiling-flag t))
+
(mh-do-in-xemacs
(require 'mh-xemacs))
(let ((arg-list (reverse args))
(count 0))
(while (and (not (eobp)) (< count mh-index-max-cmdline-args))
- (push (buffer-substring-no-properties (point) (line-end-position))
+ (push (buffer-substring-no-properties (point)
+ (mh-line-end-position))
arg-list)
(incf count)
(forward-line))
colors."
(if mh-min-colors-defined-flag
spec
- (let ((cells (display-color-cells))
+ (let ((cells (mh-display-color-cells))
new-spec)
;; Remove entries with min-colors, or delete them if we have fewer colors
;; than they specify.
(cons (current-buffer) nil)))))
;; Register mh-folder-mode as supporting which-function-mode...
-(require 'which-func nil t)
+(mh-require 'which-func nil t)
(when (boundp 'which-func-modes)
(add-to-list 'which-func-modes 'mh-folder-mode))
"-recurse"
"-norecurse"))
(goto-char (point-min))
- (view-mode-enter)
+ (mh-view-mode-enter)
(setq view-exit-action 'kill-buffer)
(message "Listing folders...done")))))
(require 'mh-e)
-(require 'gnus-util nil t)
-(require 'mm-bodies nil t)
-(require 'mm-decode nil t)
-(require 'mm-view nil t)
-(require 'mml nil t)
+(mh-require 'gnus-util nil t)
+(mh-require 'mm-bodies nil t)
+(mh-require 'mm-decode nil t)
+(mh-require 'mm-view nil t)
+(mh-require 'mml nil t)
;; Copy of function from gnus-util.el.
(mh-defun-compat mh-gnus-local-map-property gnus-local-map-property (map)
(goto-char (point-min))
(cond ((equal mh-mail-header-separator "") (point-min))
((search-forward (format "\n%s\n" mh-mail-header-separator) nil t)
- (line-beginning-position 0))
+ (mh-line-beginning-position 0))
(t (point-min)))))
\f
(set (make-local-variable 'mh-mail-header-separator)
(save-excursion
(goto-char (mh-mail-header-end))
- (buffer-substring-no-properties (point) (line-end-position))))
+ (buffer-substring-no-properties (point) (mh-line-end-position))))
(make-local-variable 'mail-header-separator)
(setq mail-header-separator mh-mail-header-separator) ;override sendmail.el
(mh-set-help mh-letter-mode-help-messages)
((< (point) (progn
(beginning-of-line)
(re-search-forward mh-letter-header-field-regexp
- (line-end-position) t)
+ (mh-line-end-position) t)
(point)))
(beginning-of-line))
(t (end-of-line)))
(string-equal "" (match-string 3)))
(progn (message "No subject line")
nil)
- (let ((subject (match-string-no-properties 3))
+ (let ((subject (mh-match-string-no-properties 3))
(list))
(if (> (length subject) mh-limit-max-subject-size)
(setq subject (substring subject 0 mh-limit-max-subject-size)))
(if all
(goto-char (point-min)))
(while (re-search-forward mh-scan-subject-regexp nil t)
- (let ((this-subject (match-string-no-properties 3)))
+ (let ((this-subject (mh-match-string-no-properties 3)))
(if (> (length this-subject) mh-limit-max-subject-size)
(setq this-subject (substring this-subject
0 mh-limit-max-subject-size)))
(while (not (eobp))
(let ((num (ignore-errors
(string-to-number
- (buffer-substring (point) (line-end-position))))))
+ (buffer-substring (point) (mh-line-end-position))))))
(when num (push num msg-list))
(forward-line))))
(if (null msg-list)
start end)
(cond ((and data (not inserted-flag) (not displayed-flag))
(let ((contents (mm-get-part data)))
- (add-text-properties (line-beginning-position) (line-end-position)
- '(mh-mime-inserted t))
+ (add-text-properties (mh-line-beginning-position)
+ (mh-line-end-position) '(mh-mime-inserted t))
(setq start (point-marker))
(forward-line 1)
(mm-insert-inline data contents)
(setq end (point-marker))
(add-text-properties
- start (progn (goto-char start) (line-end-position))
+ start (progn (goto-char start) (mh-line-end-position))
`(mh-region (,start . ,end)))))
((and data (or inserted-flag displayed-flag))
(mh-press-button)
(mh-insert-mime-button handle id (mm-handle-displayed-p handle))
(goto-char point)
(when region
- (add-text-properties (line-beginning-position) (line-end-position)
+ (add-text-properties (mh-line-beginning-position)
+ (mh-line-end-position)
`(mh-region ,region)))))))
(defun mh-mime-part-index (handle)
(goto-char (point-min))
(while (re-search-forward "^#" nil t)
(beginning-of-line)
- (unless (mh-mh-directive-present-p (point) (line-end-position))
+ (unless (mh-mh-directive-present-p (point) (mh-line-end-position))
(insert "#"))
- (goto-char (line-end-position)))))
+ (goto-char (mh-line-end-position)))))
;;;###mh-autoload
(defun mh-mh-to-mime-undo (noconfirm)
(block 'search-for-mh-directive
(goto-char begin)
(while (re-search-forward "^#" end t)
- (let ((s (buffer-substring-no-properties (point) (line-end-position))))
+ (let ((s (buffer-substring-no-properties
+ (point) (mh-line-end-position))))
(cond ((equal s ""))
((string-match "^forw[ \t\n]+" s)
(return-from 'search-for-mh-directive t))
(require 'gnus-util)
(require 'imenu)
-(require 'which-func nil t)
+(mh-require 'which-func nil t)
(defvar mh-searcher nil
"Cached value of chosen search program.")
(goto-char (point-min))
(dotimes (i 5)
(add-text-properties (point) (1+ (point)) '(front-sticky t))
- (add-text-properties (- (line-end-position) 2) (1- (line-end-position))
+ (add-text-properties (- (mh-line-end-position) 2)
+ (1- (mh-line-end-position))
'(rear-nonsticky t))
- (add-text-properties (point) (1- (line-end-position)) '(read-only t))
+ (add-text-properties (point) (1- (mh-line-end-position)) '(read-only t))
(forward-line))
(add-text-properties (point) (1+ (point)) '(front-sticky t))
- (add-text-properties (point) (1- (line-end-position)) '(read-only t))
+ (add-text-properties (point) (1- (mh-line-end-position)) '(read-only t))
(goto-char (point-max)))
;; Sequence Searches
(cond ((and (bolp) (eolp))
(ignore-errors (forward-line -1))
(setq msg (mh-get-msg-num t)))
- ((equal (char-after (line-beginning-position)) ?+)
+ ((equal (char-after (mh-line-beginning-position)) ?+)
(setq folder (buffer-substring-no-properties
- (line-beginning-position) (line-end-position))))
+ (mh-line-beginning-position)
+ (mh-line-end-position))))
(t (setq msg (mh-get-msg-num t)))))
(when (not folder)
(setq folder (car (gethash (gethash msg mh-index-msg-checksum-map)
start begin)
(goto-char (point-min))
(while (not (eobp))
- (if (search-forward "--------" (line-end-position) t)
+ (if (search-forward "--------" (mh-line-end-position) t)
(setq in-body-flag t)
(beginning-of-line)
(setq begin (point))
(setq start (if in-body-flag
(point)
- (search-forward ":" (line-end-position) t)
+ (search-forward ":" (mh-line-end-position) t)
(point)))
(push (cons (and (not in-body-flag)
(intern (downcase
begin (1- start)))))
(mh-index-parse-search-regexp
(buffer-substring-no-properties
- start (line-end-position))))
+ start (mh-line-end-position))))
pattern-list))
(forward-line))
pattern-list)))
(return nil))
(when (equal (char-after (point)) ?#)
(return 'error))
- (let* ((start (search-forward " " (line-end-position) t))
- (end (search-forward " " (line-end-position) t)))
+ (let* ((start (search-forward " " (mh-line-end-position) t))
+ (end (search-forward " " (mh-line-end-position) t)))
(unless (and start end)
(return 'error))
(setq end (1- end))
(return 'error))
(let ((start (point))
end msg-start)
- (setq end (line-end-position))
+ (setq end (mh-line-end-position))
(unless (search-forward mh-mairix-folder end t)
(return 'error))
(goto-char (match-beginning 0))
(block nil
(when (eobp) (return nil))
(let ((file-name (buffer-substring-no-properties
- (point) (line-end-position))))
+ (point) (mh-line-end-position))))
(unless (equal (string-match mh-namazu-folder file-name) 0)
(return 'error))
(unless (file-exists-p file-name)
(prog1
(block nil
(when (eobp) (return nil))
- (when (search-forward-regexp "^\+" (line-end-position) t)
+ (when (search-forward-regexp "^\+" (mh-line-end-position) t)
(setq mh-index-pick-folder
- (buffer-substring-no-properties (line-beginning-position)
- (line-end-position)))
+ (buffer-substring-no-properties (mh-line-beginning-position)
+ (mh-line-end-position)))
(return 'error))
- (unless (search-forward-regexp "^[1-9][0-9]*$" (line-end-position) t)
+ (unless (search-forward-regexp "^[1-9][0-9]*$" (mh-line-end-position) t)
(return 'error))
(list mh-index-pick-folder
(string-to-number
- (buffer-substring-no-properties (line-beginning-position)
- (line-end-position)))
+ (buffer-substring-no-properties (mh-line-beginning-position)
+ (mh-line-end-position)))
nil))
(forward-line)))
(block nil
(when (eobp)
(return nil))
- (let ((eol-pos (line-end-position))
- (bol-pos (line-beginning-position))
+ (let ((eol-pos (mh-line-end-position))
+ (bol-pos (mh-line-beginning-position))
folder-start msg-end)
(goto-char bol-pos)
(unless (search-forward mh-user-path eol-pos t)
(save-excursion
(beginning-of-line)
(push (cons (buffer-substring-no-properties
- (point) (line-end-position))
+ (point) (mh-line-end-position))
(set-marker (make-marker) (point)))
alist)))
(setq imenu--index-alist (nreverse alist)))))
(mh-exec-cmd-output mh-scan-prog nil "-width" "80"
"-format" "%{x-mhe-checksum}\n" folder msg)
(goto-char (point-min))
- (string-equal (buffer-substring-no-properties (point) (line-end-position))
+ (string-equal (buffer-substring-no-properties
+ (point) (mh-line-end-position))
checksum)))
\f
(defun mh-md5sum-parser ()
"Parse md5sum output."
- (let ((begin (line-beginning-position))
- (end (line-end-position))
+ (let ((begin (mh-line-beginning-position))
+ (end (mh-line-end-position))
first-space last-slash)
(setq first-space (search-forward " " end t))
(goto-char end)
(defun mh-openssl-parser ()
"Parse openssl output."
- (let ((begin (line-beginning-position))
- (end (line-end-position))
+ (let ((begin (mh-line-beginning-position))
+ (end (mh-line-end-position))
last-space last-slash)
(goto-char end)
(setq last-space (search-backward " " begin t))
(let (msg checksum)
(while (not (eobp))
(setq msg (buffer-substring-no-properties
- (point) (line-end-position)))
+ (point) (mh-line-end-position)))
(forward-line)
(save-excursion
(cond ((not (string-match "^[0-9]*$" msg)))
(t
;; update maps
(setq checksum (buffer-substring-no-properties
- (point) (line-end-position)))
+ (point) (mh-line-end-position)))
(let ((msg (string-to-number msg)))
(set-buffer folder)
(mh-index-update-single-msg msg checksum origin-map)))))
(insert "\n"))
(setq seq-list (cdr seq-list)))
(goto-char (point-min))
- (view-mode-enter)
+ (mh-view-mode-enter)
(setq view-exit-action 'kill-buffer)
(message "Listing sequences...done")))))
(goto-char (point-min))
(multiple-value-bind (folder unseen total)
(mh-parse-flist-output-line
- (buffer-substring (point) (line-end-position)))
+ (buffer-substring (point) (mh-line-end-position)))
(values total unseen folder))))
(defun mh-folder-size-folder (folder)
(when (search-backward " out of " (point-min) t)
(setq total (string-to-number
(buffer-substring-no-properties
- (match-end 0) (line-end-position))))
+ (match-end 0) (mh-line-end-position))))
(when (search-backward " in sequence " (point-min) t)
(setq p (point))
(when (search-backward " has " (point-min) t)
;; the case of user sequences.
(mh-notate nil nil mh-cmd-note)
(when font-lock-mode
- (font-lock-fontify-region (point) (line-end-position))))
+ (font-lock-fontify-region (point) (mh-line-end-position))))
(forward-char (+ mh-cmd-note mh-scan-field-destination-offset))
(let ((stack (gethash msg mh-sequence-notation-history)))
(setf (gethash msg mh-sequence-notation-history)
(defun mh-show-addr ()
"Use `goto-address'."
(when mh-show-use-goto-addr-flag
- (require 'goto-addr nil t)
+ (mh-require 'goto-addr nil t)
(if (fboundp 'goto-address)
(goto-address))))
["Visit Folder" mh-speed-view
(save-excursion
(set-buffer speedbar-buffer)
- (get-text-property (line-beginning-position) 'mh-folder))]
+ (get-text-property (mh-line-beginning-position) 'mh-folder))]
["Expand Nested Folders" mh-speed-expand-folder
- (and (get-text-property (line-beginning-position) 'mh-children-p)
- (not (get-text-property (line-beginning-position) 'mh-expanded)))]
+ (and (get-text-property (mh-line-beginning-position) 'mh-children-p)
+ (not (get-text-property (mh-line-beginning-position) 'mh-expanded)))]
["Contract Nested Folders" mh-speed-contract-folder
- (and (get-text-property (line-beginning-position) 'mh-children-p)
- (get-text-property (line-beginning-position) 'mh-expanded))]
+ (and (get-text-property (mh-line-beginning-position) 'mh-children-p)
+ (get-text-property (mh-line-beginning-position) 'mh-expanded))]
["Refresh Speedbar" mh-speed-refresh t])
"Extra menu items for speedbar.")
(forward-line -1)
(speedbar-change-expand-button-char ?+)
(add-text-properties
- (line-beginning-position) (1+ (line-beginning-position))
+ (mh-line-beginning-position) (1+ (line-beginning-position))
'(mh-expanded nil)))
(t
(forward-line)
(goto-char point)
(speedbar-change-expand-button-char ?-)
(add-text-properties
- (line-beginning-position) (1+ (line-beginning-position))
+ (mh-line-beginning-position) (1+ (line-beginning-position))
`(mh-expanded t)))))))
(defun mh-speed-view (&rest args)
The optional ARGS from speedbar are ignored."
(interactive)
(declare (ignore args))
- (let* ((folder (get-text-property (line-beginning-position) 'mh-folder))
+ (let* ((folder (get-text-property (mh-line-beginning-position) 'mh-folder))
(range (and (stringp folder)
(mh-read-range "Scan" folder t nil nil
mh-interpret-number-as-range-flag))))
(forward-line -1)
(setf (gethash nil mh-speed-folder-map)
(set-marker (or (gethash nil mh-speed-folder-map) (make-marker))
- (1+ (line-beginning-position))))
+ (1+ (mh-line-beginning-position))))
(add-text-properties
- (line-beginning-position) (1+ (line-beginning-position))
+ (mh-line-beginning-position) (1+ (line-beginning-position))
`(mh-folder nil mh-expanded nil mh-children-p t mh-level 0))
(mh-speed-stealth-update t)
(when (> mh-speed-update-interval 0)
(speedbar-with-writable
(goto-char (gethash folder mh-speed-folder-map (point)))
(beginning-of-line)
- (if (re-search-forward "([1-9][0-9]*/[0-9]+)" (line-end-position) t)
+ (if (re-search-forward "([1-9][0-9]*/[0-9]+)" (mh-line-end-position) t)
(setq face (mh-speed-bold-face face))
(setq face (mh-speed-normal-face face)))
(beginning-of-line)
- (when (re-search-forward "\\[.\\] " (line-end-position) t)
- (put-text-property (point) (line-end-position) 'face face)))))
+ (when (re-search-forward "\\[.\\] " (mh-line-end-position) t)
+ (put-text-property (point) (mh-line-end-position) 'face face)))))
(defun mh-speed-normal-face (face)
"Return normal face for given FACE."
(while suffix-list
;; We always need atleast one toggle. We need two if the directory list
;; is stale since a folder was added.
- (when (equal prefix (get-text-property (line-beginning-position)
+ (when (equal prefix (get-text-property (mh-line-beginning-position)
'mh-folder))
(mh-speed-toggle)
(unless (get-text-property (point) 'mh-expanded)
(setf (gethash folder-name mh-speed-folder-map)
(set-marker (or (gethash folder-name mh-speed-folder-map)
(make-marker))
- (1+ (line-beginning-position))))
+ (1+ (mh-line-beginning-position))))
(add-text-properties
- (line-beginning-position) (1+ (line-beginning-position))
+ (mh-line-beginning-position) (1+ (mh-line-beginning-position))
`(mh-folder ,folder-name
mh-expanded nil
mh-children-p ,(not (not (cdr f)))
(interactive (list t))
(when force
(when mh-speed-flists-timer
- (cancel-timer mh-speed-flists-timer)
+ (mh-cancel-timer mh-speed-flists-timer)
(setq mh-speed-flists-timer nil))
(when (and (processp mh-speed-flists-process)
(not (eq (process-status mh-speed-flists-process) 'exit)))
face)
(when pos
(goto-char pos)
- (goto-char (line-beginning-position))
+ (goto-char (mh-line-beginning-position))
(cond
((null (get-text-property (point) 'mh-count))
- (goto-char (line-end-position))
+ (goto-char (mh-line-end-position))
(setq face (get-text-property (1- (point)) 'face))
(insert (format " (%s/%s)" unseen total))
(mh-speed-highlight 'unknown face)
- (goto-char (line-beginning-position))
+ (goto-char (mh-line-beginning-position))
(add-text-properties (point) (1+ (point))
`(mh-count (,unseen . ,total))))
((not (equal (get-text-property (point) 'mh-count)
(cons unseen total)))
- (goto-char (line-end-position))
+ (goto-char (mh-line-end-position))
(setq face (get-text-property (1- (point)) 'face))
- (re-search-backward " " (line-beginning-position) t)
- (delete-region (point) (line-end-position))
+ (re-search-backward " " (mh-line-beginning-position) t)
+ (delete-region (point) (mh-line-end-position))
(insert (format " (%s/%s)" unseen total))
(mh-speed-highlight 'unknown face)
- (goto-char (line-beginning-position))
+ (goto-char (mh-line-beginning-position))
(add-text-properties
(point) (1+ (point))
`(mh-count (,unseen . ,total))))))))))))
(caar parent-kids)))
(setq parent-change ? ))))
(goto-char parent-position)
- (when (equal (get-text-property (line-beginning-position) 'mh-folder)
+ (when (equal (get-text-property (mh-line-beginning-position) 'mh-folder)
parent)
- (when (get-text-property (line-beginning-position) 'mh-expanded)
+ (when (get-text-property (mh-line-beginning-position) 'mh-expanded)
(mh-speed-toggle))
(when parent-change
(speedbar-with-writable
(mh-speedbar-change-expand-button-char parent-change)
(add-text-properties
- (line-beginning-position) (1+ (line-beginning-position))
+ (mh-line-beginning-position) (1+ (mh-line-beginning-position))
`(mh-children-p ,(equal parent-change ?+)))))
(mh-speed-highlight mh-speed-last-selected-folder 'mh-speedbar-folder)
(setq mh-speed-last-selected-folder nil)
"Change the expansion button character to CHAR for the current line."
(save-excursion
(beginning-of-line)
- (if (re-search-forward "\\[.\\]" (line-end-position) t)
+ (if (re-search-forward "\\[.\\]" (mh-line-end-position) t)
(speedbar-with-writable
(backward-char 2)
(delete-char 1)
(speedbar-with-writable
(mh-speedbar-change-expand-button-char ?+)
(add-text-properties
- (line-beginning-position) (1+ (line-beginning-position))
+ (mh-line-beginning-position) (1+ (mh-line-beginning-position))
`(mh-children-p t)))
- (when (get-text-property (line-beginning-position) 'mh-expanded)
+ (when (get-text-property (mh-line-beginning-position) 'mh-expanded)
(mh-speed-toggle))
(setq mh-speed-refresh-flag t))))
(while (not (eobp))
(forward-char address-start-offset)
(unless (equal (string-match spaces (buffer-substring-no-properties
- (point) (line-end-position)))
+ (point) (mh-line-end-position)))
0)
(beginning-of-line)
(backward-char)
If optional argument STRING is given then that is assumed to be
the scan line. Otherwise uses the line at point as the scan line
to parse."
- (let* ((string (or string
- (buffer-substring-no-properties (line-beginning-position)
- (line-end-position))))
+ (let* ((string (or string (buffer-substring-no-properties
+ (mh-line-beginning-position)
+ (mh-line-end-position))))
(address-start (+ mh-cmd-note mh-scan-field-from-start-offset))
(body-start (+ mh-cmd-note mh-scan-field-from-end-offset))
(first-string (substring string 0 address-start)))
(while (not (eobp))
(block process-message
(let* ((index-line
- (prog1 (buffer-substring (point) (line-end-position))
+ (prog1 (buffer-substring (point) (mh-line-end-position))
(forward-line)))
(index (string-to-number index-line))
- (id (prog1 (buffer-substring (point) (line-end-position))
+ (id (prog1 (buffer-substring (point) (mh-line-end-position))
(forward-line)))
- (refs (prog1 (buffer-substring (point) (line-end-position))
+ (refs (prog1
+ (buffer-substring (point) (mh-line-end-position))
(forward-line)))
(in-reply-to (prog1 (buffer-substring (point)
- (line-end-position))
+ (mh-line-end-position))
(forward-line)))
(subject (prog1
- (buffer-substring (point) (line-end-position))
+ (buffer-substring
+ (point) (mh-line-end-position))
(forward-line)))
(subject-re-p nil))
(unless (gethash index mh-thread-scan-line-map)
(defun mh-colors-available-p ()
"Check if colors are available in the Emacs being used."
(or mh-xemacs-flag
- (let ((color-cells (display-color-cells)))
+ (let ((color-cells (mh-display-color-cells)))
(and (numberp color-cells) (>= color-cells 8)))))
;;;###mh-autoload
;; top-level folders; otherwise mh-sub-folders returns all the
;; files in / if given an empty string or +.
(when folder
- (setq folder (replace-regexp-in-string "^\+" "" folder))
- (setq folder (replace-regexp-in-string "/*$" "/" folder))
+ (setq folder (mh-replace-regexp-in-string "^\+" "" folder))
+ (setq folder (mh-replace-regexp-in-string "/*$" "/" folder))
(if (equal folder "")
(setq folder nil)))
(loop for f in (mh-sub-folders folder) do
(apply #'call-process arg-list)
(goto-char (point-min))
(while (not (and (eolp) (bolp)))
- (goto-char (line-end-position))
- (let ((start-pos (line-beginning-position))
- (has-pos (search-backward " has " (line-beginning-position) t)))
+ (goto-char (mh-line-end-position))
+ (let ((start-pos (mh-line-beginning-position))
+ (has-pos (search-backward " has "
+ (mh-line-beginning-position) t)))
(when (integerp has-pos)
(while (equal (char-after has-pos) ? )
(decf has-pos))
(setq name (substring name 0 (1- (length name)))))
(push
(cons name
- (search-forward "(others)" (line-end-position) t))
+ (search-forward "(others)" (mh-line-end-position) t))
results))))
(forward-line 1))))
(setq results (nreverse results))
(unwind-protect
(cond ((or (and (not arg)
(text-property-any begin end 'invisible 'vanish))
- (and (numberp arg) (>= arg 0))
- (and (eq arg 'long) (> (line-beginning-position 5) end)))
+ (and (numberp arg)
+ (>= arg 0))
+ (and (eq arg 'long)
+ (> (mh-line-beginning-position 5) end)))
(remove-text-properties begin end '(invisible nil))
- (search-forward ":" (line-end-position) t)
+ (search-forward ":" (mh-line-end-position) t)
(mh-letter-skip-leading-whitespace-in-header-field))
;; XXX Redesign to make usable by user. Perhaps use a positive
;; numeric prefix to make that many lines visible.