Mercurial > emacs
annotate lisp/mh-e/mh-compat.el @ 79322:bef6cef0e8f4
2007-11-02 Drake Wilson <drake@begriffli.ch> (tiny change)
* files.el (hack-local-variables): Fix membership tests to avoid
treating all variables as safe if `enable-local-variables' is
set to :safe.
author | Romain Francoise <romain@orebokech.com> |
---|---|
date | Fri, 02 Nov 2007 11:02:13 +0000 |
parents | 800dd75c042b |
children | 3c2488d0ebd9 b98604865ea0 |
rev | line source |
---|---|
68465 | 1 ;;; mh-compat.el --- make MH-E compatibile with various versions of Emacs |
2 | |
75347 | 3 ;; Copyright (C) 2006, 2007 Free Software Foundation, Inc. |
68465 | 4 |
5 ;; Author: Bill Wohler <wohler@newt.com> | |
6 ;; Maintainer: Bill Wohler <wohler@newt.com> | |
7 ;; Keywords: mail | |
8 ;; See: mh-e.el | |
9 | |
10 ;; This file is part of GNU Emacs. | |
11 | |
12 ;; GNU Emacs is free software; you can redistribute it and/or modify | |
13 ;; it under the terms of the GNU General Public License as published by | |
78231
800dd75c042b
Switch license to GPLv3 or later.
Glenn Morris <rgm@gnu.org>
parents:
75347
diff
changeset
|
14 ;; the Free Software Foundation; either version 3, or (at your option) |
68465 | 15 ;; any later version. |
16 | |
17 ;; GNU Emacs is distributed in the hope that it will be useful, | |
18 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
20 ;; GNU General Public License for more details. | |
21 | |
22 ;; You should have received a copy of the GNU General Public License | |
23 ;; along with GNU Emacs; see the file COPYING. If not, write to the | |
24 ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | |
25 ;; Boston, MA 02110-1301, USA. | |
26 | |
27 ;;; Commentary: | |
28 | |
29 ;;; Change Log: | |
30 | |
31 ;;; Code: | |
32 | |
33 ;; This is a good place to gather code that is used for compatibility | |
34 ;; between different versions of Emacs. Please document which versions | |
35 ;; of Emacs that the defsubst, defalias, or defmacro applies. That | |
36 ;; way, it's easy to occasionally go through this file and see which | |
37 ;; macros we can retire. | |
38 | |
68520
6a7173abcf59
* mh-acros.el (mh-defun-compat, mh-defmacro-compat): Add name argument
Bill Wohler <wohler@newt.com>
parents:
68470
diff
changeset
|
39 ;; Please use mh-gnus.el when providing compatibility with different |
68529
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
40 ;; versions of Gnus. |
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
41 |
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
42 ;; Items are listed alphabetically (except for mh-require which is |
70026
a0de53f6c617
* mh-compat.el (mh-font-lock-add-keywords): New alias for
Bill Wohler <wohler@newt.com>
parents:
69570
diff
changeset
|
43 ;; needed sooner it would normally appear). |
68529
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
44 |
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
45 (require 'mh-acros) |
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
46 |
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
47 (mh-do-in-gnu-emacs |
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
48 (defalias 'mh-require 'require)) |
68465 | 49 |
68529
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
50 (mh-do-in-xemacs |
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
51 (defun mh-require (feature &optional filename noerror) |
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
52 "If feature FEATURE is not loaded, load it from FILENAME. |
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
53 If FEATURE is not a member of the list `features', then the feature |
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
54 is not loaded; so load the file FILENAME. |
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
55 If FILENAME is omitted, the printname of FEATURE is used as the file name. |
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
56 If the optional third argument NOERROR is non-nil, |
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
57 then return nil if the file is not found instead of signaling an error. |
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
58 |
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
59 Simulate NOERROR argument in XEmacs which lacks it." |
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
60 (if (not (featurep feature)) |
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
61 (if filename |
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
62 (load filename noerror t) |
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
63 (load (format "%s" feature) noerror t))))) |
68465 | 64 |
70061
b3ab71ac7f4e
* mh-acros.el (mh-defun-compat): Rename to defun-mh in order that
Bill Wohler <wohler@newt.com>
parents:
70033
diff
changeset
|
65 (defun-mh mh-assoc-string assoc-string (key list case-fold) |
68520
6a7173abcf59
* mh-acros.el (mh-defun-compat, mh-defmacro-compat): Add name argument
Bill Wohler <wohler@newt.com>
parents:
68470
diff
changeset
|
66 "Like `assoc' but specifically for strings. |
68465 | 67 Case is ignored if CASE-FOLD is non-nil. |
68529
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
68 This function is used by Emacs versions that lack `assoc-string', |
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
69 introduced in Emacs 22." |
68520
6a7173abcf59
* mh-acros.el (mh-defun-compat, mh-defmacro-compat): Add name argument
Bill Wohler <wohler@newt.com>
parents:
68470
diff
changeset
|
70 (if case-fold |
6a7173abcf59
* mh-acros.el (mh-defun-compat, mh-defmacro-compat): Add name argument
Bill Wohler <wohler@newt.com>
parents:
68470
diff
changeset
|
71 (assoc-ignore-case key list) |
6a7173abcf59
* mh-acros.el (mh-defun-compat, mh-defmacro-compat): Add name argument
Bill Wohler <wohler@newt.com>
parents:
68470
diff
changeset
|
72 (assoc key list))) |
6a7173abcf59
* mh-acros.el (mh-defun-compat, mh-defmacro-compat): Add name argument
Bill Wohler <wohler@newt.com>
parents:
68470
diff
changeset
|
73 |
68529
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
74 ;; For XEmacs. |
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
75 (defalias 'mh-cancel-timer |
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
76 (if (fboundp 'cancel-timer) |
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
77 'cancel-timer |
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
78 'delete-itimer)) |
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
79 |
70061
b3ab71ac7f4e
* mh-acros.el (mh-defun-compat): Rename to defun-mh in order that
Bill Wohler <wohler@newt.com>
parents:
70033
diff
changeset
|
80 (defun-mh mh-display-color-cells display-color-cells (&optional display) |
68529
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
81 "Return the number of color cells supported by DISPLAY. |
69186
4eb7009c53f4
* mh-compat.el (mh-display-color-cells): Return 2 if
Bill Wohler <wohler@newt.com>
parents:
68929
diff
changeset
|
82 This function is used by XEmacs to return 2 when |
4eb7009c53f4
* mh-compat.el (mh-display-color-cells): Return 2 if
Bill Wohler <wohler@newt.com>
parents:
68929
diff
changeset
|
83 `device-color-cells' returns nil. This happens when compiling or |
4eb7009c53f4
* mh-compat.el (mh-display-color-cells): Return 2 if
Bill Wohler <wohler@newt.com>
parents:
68929
diff
changeset
|
84 running on a tty and causes errors since `display-color-cells' is |
4eb7009c53f4
* mh-compat.el (mh-display-color-cells): Return 2 if
Bill Wohler <wohler@newt.com>
parents:
68929
diff
changeset
|
85 expected to return an integer." |
4eb7009c53f4
* mh-compat.el (mh-display-color-cells): Return 2 if
Bill Wohler <wohler@newt.com>
parents:
68929
diff
changeset
|
86 (or (device-color-cells display) 2)) |
68465 | 87 |
88 (defmacro mh-display-completion-list (completions &optional common-substring) | |
89 "Display the list of COMPLETIONS. | |
68520
6a7173abcf59
* mh-acros.el (mh-defun-compat, mh-defmacro-compat): Add name argument
Bill Wohler <wohler@newt.com>
parents:
68470
diff
changeset
|
90 See documentation for `display-completion-list' for a description of the |
6a7173abcf59
* mh-acros.el (mh-defun-compat, mh-defmacro-compat): Add name argument
Bill Wohler <wohler@newt.com>
parents:
68470
diff
changeset
|
91 arguments COMPLETIONS and perhaps COMMON-SUBSTRING. |
68529
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
92 This macro is used by Emacs versions that lack a COMMON-SUBSTRING |
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
93 argument, introduced in Emacs 22." |
68465 | 94 (if (< emacs-major-version 22) |
95 `(display-completion-list ,completions) | |
96 `(display-completion-list ,completions ,common-substring))) | |
97 | |
68520
6a7173abcf59
* mh-acros.el (mh-defun-compat, mh-defmacro-compat): Add name argument
Bill Wohler <wohler@newt.com>
parents:
68470
diff
changeset
|
98 (defmacro mh-face-foreground (face &optional frame inherit) |
6a7173abcf59
* mh-acros.el (mh-defun-compat, mh-defmacro-compat): Add name argument
Bill Wohler <wohler@newt.com>
parents:
68470
diff
changeset
|
99 "Return the foreground color name of FACE, or nil if unspecified. |
6a7173abcf59
* mh-acros.el (mh-defun-compat, mh-defmacro-compat): Add name argument
Bill Wohler <wohler@newt.com>
parents:
68470
diff
changeset
|
100 See documentation for `face-foreground' for a description of the |
6a7173abcf59
* mh-acros.el (mh-defun-compat, mh-defmacro-compat): Add name argument
Bill Wohler <wohler@newt.com>
parents:
68470
diff
changeset
|
101 arguments FACE, FRAME, and perhaps INHERIT. |
68529
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
102 This macro is used by Emacs versions that lack an INHERIT argument, |
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
103 introduced in Emacs 22." |
68520
6a7173abcf59
* mh-acros.el (mh-defun-compat, mh-defmacro-compat): Add name argument
Bill Wohler <wohler@newt.com>
parents:
68470
diff
changeset
|
104 (if (< emacs-major-version 22) |
6a7173abcf59
* mh-acros.el (mh-defun-compat, mh-defmacro-compat): Add name argument
Bill Wohler <wohler@newt.com>
parents:
68470
diff
changeset
|
105 `(face-foreground ,face ,frame) |
6a7173abcf59
* mh-acros.el (mh-defun-compat, mh-defmacro-compat): Add name argument
Bill Wohler <wohler@newt.com>
parents:
68470
diff
changeset
|
106 `(face-foreground ,face ,frame ,inherit))) |
6a7173abcf59
* mh-acros.el (mh-defun-compat, mh-defmacro-compat): Add name argument
Bill Wohler <wohler@newt.com>
parents:
68470
diff
changeset
|
107 |
6a7173abcf59
* mh-acros.el (mh-defun-compat, mh-defmacro-compat): Add name argument
Bill Wohler <wohler@newt.com>
parents:
68470
diff
changeset
|
108 (defmacro mh-face-background (face &optional frame inherit) |
6a7173abcf59
* mh-acros.el (mh-defun-compat, mh-defmacro-compat): Add name argument
Bill Wohler <wohler@newt.com>
parents:
68470
diff
changeset
|
109 "Return the background color name of face, or nil if unspecified. |
6a7173abcf59
* mh-acros.el (mh-defun-compat, mh-defmacro-compat): Add name argument
Bill Wohler <wohler@newt.com>
parents:
68470
diff
changeset
|
110 See documentation for `back-foreground' for a description of the |
6a7173abcf59
* mh-acros.el (mh-defun-compat, mh-defmacro-compat): Add name argument
Bill Wohler <wohler@newt.com>
parents:
68470
diff
changeset
|
111 arguments FACE, FRAME, and INHERIT. |
68529
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
112 This macro is used by Emacs versions that lack an INHERIT argument, |
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
113 introduced in Emacs 22." |
68520
6a7173abcf59
* mh-acros.el (mh-defun-compat, mh-defmacro-compat): Add name argument
Bill Wohler <wohler@newt.com>
parents:
68470
diff
changeset
|
114 (if (< emacs-major-version 22) |
6a7173abcf59
* mh-acros.el (mh-defun-compat, mh-defmacro-compat): Add name argument
Bill Wohler <wohler@newt.com>
parents:
68470
diff
changeset
|
115 `(face-background ,face ,frame) |
6a7173abcf59
* mh-acros.el (mh-defun-compat, mh-defmacro-compat): Add name argument
Bill Wohler <wohler@newt.com>
parents:
68470
diff
changeset
|
116 `(face-background ,face ,frame ,inherit))) |
6a7173abcf59
* mh-acros.el (mh-defun-compat, mh-defmacro-compat): Add name argument
Bill Wohler <wohler@newt.com>
parents:
68470
diff
changeset
|
117 |
70061
b3ab71ac7f4e
* mh-acros.el (mh-defun-compat): Rename to defun-mh in order that
Bill Wohler <wohler@newt.com>
parents:
70033
diff
changeset
|
118 (defun-mh mh-font-lock-add-keywords font-lock-add-keywords |
70026
a0de53f6c617
* mh-compat.el (mh-font-lock-add-keywords): New alias for
Bill Wohler <wohler@newt.com>
parents:
69570
diff
changeset
|
119 (mode keywords &optional how) |
70033
257bb51424b3
(mh-font-lock-add-keywords): Fix typo in docstring.
Bill Wohler <wohler@newt.com>
parents:
70026
diff
changeset
|
120 "XEmacs does not have `font-lock-add-keywords'. |
70026
a0de53f6c617
* mh-compat.el (mh-font-lock-add-keywords): New alias for
Bill Wohler <wohler@newt.com>
parents:
69570
diff
changeset
|
121 This function returns nil on that system.") |
a0de53f6c617
* mh-compat.el (mh-font-lock-add-keywords): New alias for
Bill Wohler <wohler@newt.com>
parents:
69570
diff
changeset
|
122 |
70061
b3ab71ac7f4e
* mh-acros.el (mh-defun-compat): Rename to defun-mh in order that
Bill Wohler <wohler@newt.com>
parents:
70033
diff
changeset
|
123 (defun-mh mh-image-load-path-for-library |
69364
4117123b24f3
(mh-image-load-path-for-library): Merged changes from Reiner. Add
Bill Wohler <wohler@newt.com>
parents:
69363
diff
changeset
|
124 image-load-path-for-library (library image &optional path no-error) |
69570
822a6a9bb8c9
(mh-image-load-path-for-library): Shorten first line in docstring.
Bill Wohler <wohler@newt.com>
parents:
69536
diff
changeset
|
125 "Return a suitable search path for images used by LIBRARY. |
69278
ade4a047af1b
* mh-compat.el (mh-image-load-path-for-library): Move here from
Bill Wohler <wohler@newt.com>
parents:
69186
diff
changeset
|
126 |
69536
052139add0ff
(mh-image-load-path-for-library): Minor docstring fix.
Bill Wohler <wohler@newt.com>
parents:
69518
diff
changeset
|
127 It searches for IMAGE in `image-load-path' (excluding |
69518
2f7238ff01ad
(mh-image-load-path-for-library): Prefer user's images.
Bill Wohler <wohler@newt.com>
parents:
69492
diff
changeset
|
128 \"`data-directory'/images\") and `load-path', followed by a path |
2f7238ff01ad
(mh-image-load-path-for-library): Prefer user's images.
Bill Wohler <wohler@newt.com>
parents:
69492
diff
changeset
|
129 suitable for LIBRARY, which includes \"../../etc/images\" and |
2f7238ff01ad
(mh-image-load-path-for-library): Prefer user's images.
Bill Wohler <wohler@newt.com>
parents:
69492
diff
changeset
|
130 \"../etc/images\" relative to the library file itself, and then |
2f7238ff01ad
(mh-image-load-path-for-library): Prefer user's images.
Bill Wohler <wohler@newt.com>
parents:
69492
diff
changeset
|
131 in \"`data-directory'/images\". |
69278
ade4a047af1b
* mh-compat.el (mh-image-load-path-for-library): Move here from
Bill Wohler <wohler@newt.com>
parents:
69186
diff
changeset
|
132 |
69472
5259cc742763
* mh-compat.el (mh-image-load-path-for-library): Incorporate changes
Bill Wohler <wohler@newt.com>
parents:
69364
diff
changeset
|
133 Then this function returns a list of directories which contains |
5259cc742763
* mh-compat.el (mh-image-load-path-for-library): Incorporate changes
Bill Wohler <wohler@newt.com>
parents:
69364
diff
changeset
|
134 first the directory in which IMAGE was found, followed by the |
5259cc742763
* mh-compat.el (mh-image-load-path-for-library): Incorporate changes
Bill Wohler <wohler@newt.com>
parents:
69364
diff
changeset
|
135 value of `load-path'. If PATH is given, it is used instead of |
5259cc742763
* mh-compat.el (mh-image-load-path-for-library): Incorporate changes
Bill Wohler <wohler@newt.com>
parents:
69364
diff
changeset
|
136 `load-path'. |
69364
4117123b24f3
(mh-image-load-path-for-library): Merged changes from Reiner. Add
Bill Wohler <wohler@newt.com>
parents:
69363
diff
changeset
|
137 |
69472
5259cc742763
* mh-compat.el (mh-image-load-path-for-library): Incorporate changes
Bill Wohler <wohler@newt.com>
parents:
69364
diff
changeset
|
138 If NO-ERROR is non-nil and a suitable path can't be found, don't |
5259cc742763
* mh-compat.el (mh-image-load-path-for-library): Incorporate changes
Bill Wohler <wohler@newt.com>
parents:
69364
diff
changeset
|
139 signal an error. Instead, return a list of directories as before, |
5259cc742763
* mh-compat.el (mh-image-load-path-for-library): Incorporate changes
Bill Wohler <wohler@newt.com>
parents:
69364
diff
changeset
|
140 except that nil appears in place of the image directory. |
69278
ade4a047af1b
* mh-compat.el (mh-image-load-path-for-library): Move here from
Bill Wohler <wohler@newt.com>
parents:
69186
diff
changeset
|
141 |
ade4a047af1b
* mh-compat.el (mh-image-load-path-for-library): Move here from
Bill Wohler <wohler@newt.com>
parents:
69186
diff
changeset
|
142 Here is an example that uses a common idiom to provide |
ade4a047af1b
* mh-compat.el (mh-image-load-path-for-library): Move here from
Bill Wohler <wohler@newt.com>
parents:
69186
diff
changeset
|
143 compatibility with versions of Emacs that lack the variable |
ade4a047af1b
* mh-compat.el (mh-image-load-path-for-library): Move here from
Bill Wohler <wohler@newt.com>
parents:
69186
diff
changeset
|
144 `image-load-path': |
ade4a047af1b
* mh-compat.el (mh-image-load-path-for-library): Move here from
Bill Wohler <wohler@newt.com>
parents:
69186
diff
changeset
|
145 |
69492
6afc0d1f682b
* mh-compat.el (mh-image-load-path-for-library): Fix example by not
Bill Wohler <wohler@newt.com>
parents:
69472
diff
changeset
|
146 ;; Shush compiler. |
6afc0d1f682b
* mh-compat.el (mh-image-load-path-for-library): Fix example by not
Bill Wohler <wohler@newt.com>
parents:
69472
diff
changeset
|
147 (defvar image-load-path) |
69278
ade4a047af1b
* mh-compat.el (mh-image-load-path-for-library): Move here from
Bill Wohler <wohler@newt.com>
parents:
69186
diff
changeset
|
148 |
69472
5259cc742763
* mh-compat.el (mh-image-load-path-for-library): Incorporate changes
Bill Wohler <wohler@newt.com>
parents:
69364
diff
changeset
|
149 (let* ((load-path (image-load-path-for-library \"mh-e\" \"mh-logo.xpm\")) |
69492
6afc0d1f682b
* mh-compat.el (mh-image-load-path-for-library): Fix example by not
Bill Wohler <wohler@newt.com>
parents:
69472
diff
changeset
|
150 (image-load-path (cons (car load-path) |
6afc0d1f682b
* mh-compat.el (mh-image-load-path-for-library): Fix example by not
Bill Wohler <wohler@newt.com>
parents:
69472
diff
changeset
|
151 (when (boundp 'image-load-path) |
6afc0d1f682b
* mh-compat.el (mh-image-load-path-for-library): Fix example by not
Bill Wohler <wohler@newt.com>
parents:
69472
diff
changeset
|
152 image-load-path)))) |
69472
5259cc742763
* mh-compat.el (mh-image-load-path-for-library): Incorporate changes
Bill Wohler <wohler@newt.com>
parents:
69364
diff
changeset
|
153 (mh-tool-bar-folder-buttons-init))" |
69278
ade4a047af1b
* mh-compat.el (mh-image-load-path-for-library): Move here from
Bill Wohler <wohler@newt.com>
parents:
69186
diff
changeset
|
154 (unless library (error "No library specified")) |
ade4a047af1b
* mh-compat.el (mh-image-load-path-for-library): Move here from
Bill Wohler <wohler@newt.com>
parents:
69186
diff
changeset
|
155 (unless image (error "No image specified")) |
69518
2f7238ff01ad
(mh-image-load-path-for-library): Prefer user's images.
Bill Wohler <wohler@newt.com>
parents:
69492
diff
changeset
|
156 (let (image-directory image-directory-load-path) |
2f7238ff01ad
(mh-image-load-path-for-library): Prefer user's images.
Bill Wohler <wohler@newt.com>
parents:
69492
diff
changeset
|
157 ;; Check for images in image-load-path or load-path. |
2f7238ff01ad
(mh-image-load-path-for-library): Prefer user's images.
Bill Wohler <wohler@newt.com>
parents:
69492
diff
changeset
|
158 (let ((img image) |
2f7238ff01ad
(mh-image-load-path-for-library): Prefer user's images.
Bill Wohler <wohler@newt.com>
parents:
69492
diff
changeset
|
159 (dir (or |
2f7238ff01ad
(mh-image-load-path-for-library): Prefer user's images.
Bill Wohler <wohler@newt.com>
parents:
69492
diff
changeset
|
160 ;; Images in image-load-path. |
2f7238ff01ad
(mh-image-load-path-for-library): Prefer user's images.
Bill Wohler <wohler@newt.com>
parents:
69492
diff
changeset
|
161 (mh-image-search-load-path image) |
2f7238ff01ad
(mh-image-load-path-for-library): Prefer user's images.
Bill Wohler <wohler@newt.com>
parents:
69492
diff
changeset
|
162 ;; Images in load-path. |
2f7238ff01ad
(mh-image-load-path-for-library): Prefer user's images.
Bill Wohler <wohler@newt.com>
parents:
69492
diff
changeset
|
163 (locate-library image))) |
2f7238ff01ad
(mh-image-load-path-for-library): Prefer user's images.
Bill Wohler <wohler@newt.com>
parents:
69492
diff
changeset
|
164 parent) |
2f7238ff01ad
(mh-image-load-path-for-library): Prefer user's images.
Bill Wohler <wohler@newt.com>
parents:
69492
diff
changeset
|
165 ;; Since the image might be in a nested directory (for |
2f7238ff01ad
(mh-image-load-path-for-library): Prefer user's images.
Bill Wohler <wohler@newt.com>
parents:
69492
diff
changeset
|
166 ;; example, mail/attach.pbm), adjust `image-directory' |
2f7238ff01ad
(mh-image-load-path-for-library): Prefer user's images.
Bill Wohler <wohler@newt.com>
parents:
69492
diff
changeset
|
167 ;; accordingly. |
2f7238ff01ad
(mh-image-load-path-for-library): Prefer user's images.
Bill Wohler <wohler@newt.com>
parents:
69492
diff
changeset
|
168 (when dir |
2f7238ff01ad
(mh-image-load-path-for-library): Prefer user's images.
Bill Wohler <wohler@newt.com>
parents:
69492
diff
changeset
|
169 (setq dir (file-name-directory dir)) |
2f7238ff01ad
(mh-image-load-path-for-library): Prefer user's images.
Bill Wohler <wohler@newt.com>
parents:
69492
diff
changeset
|
170 (while (setq parent (file-name-directory img)) |
2f7238ff01ad
(mh-image-load-path-for-library): Prefer user's images.
Bill Wohler <wohler@newt.com>
parents:
69492
diff
changeset
|
171 (setq img (directory-file-name parent) |
2f7238ff01ad
(mh-image-load-path-for-library): Prefer user's images.
Bill Wohler <wohler@newt.com>
parents:
69492
diff
changeset
|
172 dir (expand-file-name "../" dir)))) |
2f7238ff01ad
(mh-image-load-path-for-library): Prefer user's images.
Bill Wohler <wohler@newt.com>
parents:
69492
diff
changeset
|
173 (setq image-directory-load-path dir)) |
2f7238ff01ad
(mh-image-load-path-for-library): Prefer user's images.
Bill Wohler <wohler@newt.com>
parents:
69492
diff
changeset
|
174 |
2f7238ff01ad
(mh-image-load-path-for-library): Prefer user's images.
Bill Wohler <wohler@newt.com>
parents:
69492
diff
changeset
|
175 ;; If `image-directory-load-path' isn't Emacs' image directory, |
2f7238ff01ad
(mh-image-load-path-for-library): Prefer user's images.
Bill Wohler <wohler@newt.com>
parents:
69492
diff
changeset
|
176 ;; it's probably a user preference, so use it. Then use a |
2f7238ff01ad
(mh-image-load-path-for-library): Prefer user's images.
Bill Wohler <wohler@newt.com>
parents:
69492
diff
changeset
|
177 ;; relative setting if possible; otherwise, use |
2f7238ff01ad
(mh-image-load-path-for-library): Prefer user's images.
Bill Wohler <wohler@newt.com>
parents:
69492
diff
changeset
|
178 ;; `image-directory-load-path'. |
69278
ade4a047af1b
* mh-compat.el (mh-image-load-path-for-library): Move here from
Bill Wohler <wohler@newt.com>
parents:
69186
diff
changeset
|
179 (cond |
69518
2f7238ff01ad
(mh-image-load-path-for-library): Prefer user's images.
Bill Wohler <wohler@newt.com>
parents:
69492
diff
changeset
|
180 ;; User-modified image-load-path? |
2f7238ff01ad
(mh-image-load-path-for-library): Prefer user's images.
Bill Wohler <wohler@newt.com>
parents:
69492
diff
changeset
|
181 ((and image-directory-load-path |
2f7238ff01ad
(mh-image-load-path-for-library): Prefer user's images.
Bill Wohler <wohler@newt.com>
parents:
69492
diff
changeset
|
182 (not (equal image-directory-load-path |
2f7238ff01ad
(mh-image-load-path-for-library): Prefer user's images.
Bill Wohler <wohler@newt.com>
parents:
69492
diff
changeset
|
183 (file-name-as-directory |
2f7238ff01ad
(mh-image-load-path-for-library): Prefer user's images.
Bill Wohler <wohler@newt.com>
parents:
69492
diff
changeset
|
184 (expand-file-name "images" data-directory))))) |
2f7238ff01ad
(mh-image-load-path-for-library): Prefer user's images.
Bill Wohler <wohler@newt.com>
parents:
69492
diff
changeset
|
185 (setq image-directory image-directory-load-path)) |
69278
ade4a047af1b
* mh-compat.el (mh-image-load-path-for-library): Move here from
Bill Wohler <wohler@newt.com>
parents:
69186
diff
changeset
|
186 ;; Try relative setting. |
ade4a047af1b
* mh-compat.el (mh-image-load-path-for-library): Move here from
Bill Wohler <wohler@newt.com>
parents:
69186
diff
changeset
|
187 ((let (library-name d1ei d2ei) |
ade4a047af1b
* mh-compat.el (mh-image-load-path-for-library): Move here from
Bill Wohler <wohler@newt.com>
parents:
69186
diff
changeset
|
188 ;; First, find library in the load-path. |
ade4a047af1b
* mh-compat.el (mh-image-load-path-for-library): Move here from
Bill Wohler <wohler@newt.com>
parents:
69186
diff
changeset
|
189 (setq library-name (locate-library library)) |
ade4a047af1b
* mh-compat.el (mh-image-load-path-for-library): Move here from
Bill Wohler <wohler@newt.com>
parents:
69186
diff
changeset
|
190 (if (not library-name) |
ade4a047af1b
* mh-compat.el (mh-image-load-path-for-library): Move here from
Bill Wohler <wohler@newt.com>
parents:
69186
diff
changeset
|
191 (error "Cannot find library %s in load-path" library)) |
ade4a047af1b
* mh-compat.el (mh-image-load-path-for-library): Move here from
Bill Wohler <wohler@newt.com>
parents:
69186
diff
changeset
|
192 ;; And then set image-directory relative to that. |
ade4a047af1b
* mh-compat.el (mh-image-load-path-for-library): Move here from
Bill Wohler <wohler@newt.com>
parents:
69186
diff
changeset
|
193 (setq |
ade4a047af1b
* mh-compat.el (mh-image-load-path-for-library): Move here from
Bill Wohler <wohler@newt.com>
parents:
69186
diff
changeset
|
194 ;; Go down 2 levels. |
69518
2f7238ff01ad
(mh-image-load-path-for-library): Prefer user's images.
Bill Wohler <wohler@newt.com>
parents:
69492
diff
changeset
|
195 d2ei (file-name-as-directory |
2f7238ff01ad
(mh-image-load-path-for-library): Prefer user's images.
Bill Wohler <wohler@newt.com>
parents:
69492
diff
changeset
|
196 (expand-file-name |
2f7238ff01ad
(mh-image-load-path-for-library): Prefer user's images.
Bill Wohler <wohler@newt.com>
parents:
69492
diff
changeset
|
197 (concat (file-name-directory library-name) "../../etc/images"))) |
69278
ade4a047af1b
* mh-compat.el (mh-image-load-path-for-library): Move here from
Bill Wohler <wohler@newt.com>
parents:
69186
diff
changeset
|
198 ;; Go down 1 level. |
69518
2f7238ff01ad
(mh-image-load-path-for-library): Prefer user's images.
Bill Wohler <wohler@newt.com>
parents:
69492
diff
changeset
|
199 d1ei (file-name-as-directory |
2f7238ff01ad
(mh-image-load-path-for-library): Prefer user's images.
Bill Wohler <wohler@newt.com>
parents:
69492
diff
changeset
|
200 (expand-file-name |
2f7238ff01ad
(mh-image-load-path-for-library): Prefer user's images.
Bill Wohler <wohler@newt.com>
parents:
69492
diff
changeset
|
201 (concat (file-name-directory library-name) "../etc/images")))) |
69278
ade4a047af1b
* mh-compat.el (mh-image-load-path-for-library): Move here from
Bill Wohler <wohler@newt.com>
parents:
69186
diff
changeset
|
202 (setq image-directory |
ade4a047af1b
* mh-compat.el (mh-image-load-path-for-library): Move here from
Bill Wohler <wohler@newt.com>
parents:
69186
diff
changeset
|
203 ;; Set it to nil if image is not found. |
ade4a047af1b
* mh-compat.el (mh-image-load-path-for-library): Move here from
Bill Wohler <wohler@newt.com>
parents:
69186
diff
changeset
|
204 (cond ((file-exists-p (expand-file-name image d2ei)) d2ei) |
ade4a047af1b
* mh-compat.el (mh-image-load-path-for-library): Move here from
Bill Wohler <wohler@newt.com>
parents:
69186
diff
changeset
|
205 ((file-exists-p (expand-file-name image d1ei)) d1ei))))) |
69518
2f7238ff01ad
(mh-image-load-path-for-library): Prefer user's images.
Bill Wohler <wohler@newt.com>
parents:
69492
diff
changeset
|
206 ;; Use Emacs' image directory. |
2f7238ff01ad
(mh-image-load-path-for-library): Prefer user's images.
Bill Wohler <wohler@newt.com>
parents:
69492
diff
changeset
|
207 (image-directory-load-path |
2f7238ff01ad
(mh-image-load-path-for-library): Prefer user's images.
Bill Wohler <wohler@newt.com>
parents:
69492
diff
changeset
|
208 (setq image-directory image-directory-load-path)) |
69364
4117123b24f3
(mh-image-load-path-for-library): Merged changes from Reiner. Add
Bill Wohler <wohler@newt.com>
parents:
69363
diff
changeset
|
209 (no-error |
4117123b24f3
(mh-image-load-path-for-library): Merged changes from Reiner. Add
Bill Wohler <wohler@newt.com>
parents:
69363
diff
changeset
|
210 (message "Could not find image %s for library %s" image library)) |
69278
ade4a047af1b
* mh-compat.el (mh-image-load-path-for-library): Move here from
Bill Wohler <wohler@newt.com>
parents:
69186
diff
changeset
|
211 (t |
ade4a047af1b
* mh-compat.el (mh-image-load-path-for-library): Move here from
Bill Wohler <wohler@newt.com>
parents:
69186
diff
changeset
|
212 (error "Could not find image %s for library %s" image library))) |
ade4a047af1b
* mh-compat.el (mh-image-load-path-for-library): Move here from
Bill Wohler <wohler@newt.com>
parents:
69186
diff
changeset
|
213 |
69472
5259cc742763
* mh-compat.el (mh-image-load-path-for-library): Incorporate changes
Bill Wohler <wohler@newt.com>
parents:
69364
diff
changeset
|
214 ;; Return an augmented `path' or `load-path'. |
5259cc742763
* mh-compat.el (mh-image-load-path-for-library): Incorporate changes
Bill Wohler <wohler@newt.com>
parents:
69364
diff
changeset
|
215 (nconc (list image-directory) |
5259cc742763
* mh-compat.el (mh-image-load-path-for-library): Incorporate changes
Bill Wohler <wohler@newt.com>
parents:
69364
diff
changeset
|
216 (delete image-directory (copy-sequence (or path load-path)))))) |
69278
ade4a047af1b
* mh-compat.el (mh-image-load-path-for-library): Move here from
Bill Wohler <wohler@newt.com>
parents:
69186
diff
changeset
|
217 |
70061
b3ab71ac7f4e
* mh-acros.el (mh-defun-compat): Rename to defun-mh in order that
Bill Wohler <wohler@newt.com>
parents:
70033
diff
changeset
|
218 (defun-mh mh-image-search-load-path |
68929
3f537f106072
mh-compat.el (mh-image-search-load-path): Compatibility code. Emacs 21 and
Peter Galbraith <galbraith@mixing.qc.dfo.ca>
parents:
68746
diff
changeset
|
219 image-search-load-path (file &optional path) |
3f537f106072
mh-compat.el (mh-image-search-load-path): Compatibility code. Emacs 21 and
Peter Galbraith <galbraith@mixing.qc.dfo.ca>
parents:
68746
diff
changeset
|
220 "Emacs 21 and XEmacs don't have `image-search-load-path'. |
3f537f106072
mh-compat.el (mh-image-search-load-path): Compatibility code. Emacs 21 and
Peter Galbraith <galbraith@mixing.qc.dfo.ca>
parents:
68746
diff
changeset
|
221 This function returns nil on those systems." |
3f537f106072
mh-compat.el (mh-image-search-load-path): Compatibility code. Emacs 21 and
Peter Galbraith <galbraith@mixing.qc.dfo.ca>
parents:
68746
diff
changeset
|
222 nil) |
3f537f106072
mh-compat.el (mh-image-search-load-path): Compatibility code. Emacs 21 and
Peter Galbraith <galbraith@mixing.qc.dfo.ca>
parents:
68746
diff
changeset
|
223 |
68529
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
224 ;; For XEmacs. |
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
225 (defalias 'mh-line-beginning-position |
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
226 (if (fboundp 'line-beginning-position) |
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
227 'line-beginning-position |
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
228 'point-at-bol)) |
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
229 |
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
230 ;; For XEmacs. |
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
231 (defalias 'mh-line-end-position |
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
232 (if (fboundp 'line-end-position) |
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
233 'line-end-position |
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
234 'point-at-eol)) |
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
235 |
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
236 (mh-require 'mailabbrev nil t) |
70061
b3ab71ac7f4e
* mh-acros.el (mh-defun-compat): Rename to defun-mh in order that
Bill Wohler <wohler@newt.com>
parents:
70033
diff
changeset
|
237 (defun-mh mh-mail-abbrev-make-syntax-table |
68529
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
238 mail-abbrev-make-syntax-table () |
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
239 "Emacs 21 and XEmacs don't have `mail-abbrev-make-syntax-table'. |
68929
3f537f106072
mh-compat.el (mh-image-search-load-path): Compatibility code. Emacs 21 and
Peter Galbraith <galbraith@mixing.qc.dfo.ca>
parents:
68746
diff
changeset
|
240 This function returns nil on those systems." |
68529
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
241 nil) |
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
242 |
70061
b3ab71ac7f4e
* mh-acros.el (mh-defun-compat): Rename to defun-mh in order that
Bill Wohler <wohler@newt.com>
parents:
70033
diff
changeset
|
243 (defun-mh mh-match-string-no-properties |
68529
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
244 match-string-no-properties (num &optional string) |
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
245 "Return string of text matched by last search, without text properties. |
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
246 This function is used by XEmacs that lacks `match-string-no-properties'. |
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
247 The function `buffer-substring-no-properties' is used instead. |
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
248 The argument STRING is ignored." |
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
249 (buffer-substring-no-properties |
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
250 (match-beginning num) (match-end num))) |
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
251 |
70061
b3ab71ac7f4e
* mh-acros.el (mh-defun-compat): Rename to defun-mh in order that
Bill Wohler <wohler@newt.com>
parents:
70033
diff
changeset
|
252 (defun-mh mh-replace-regexp-in-string replace-regexp-in-string |
68746
3741bfb4402f
(mh-replace-regexp-in-string): Add missing regexp argument.
Bill Wohler <wohler@newt.com>
parents:
68595
diff
changeset
|
253 (regexp rep string &optional fixedcase literal subexp start) |
68529
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
254 "Replace REGEXP with REP everywhere in STRING and return result. |
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
255 This function is used by XEmacs that lacks `replace-regexp-in-string'. |
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
256 The function `replace-in-string' is used instead. |
69363
7b2d244e58fe
(mh-replace-regexp-in-string): Pass the literal flag to
Bill Wohler <wohler@newt.com>
parents:
69278
diff
changeset
|
257 The arguments FIXEDCASE, SUBEXP, and START, used by |
7b2d244e58fe
(mh-replace-regexp-in-string): Pass the literal flag to
Bill Wohler <wohler@newt.com>
parents:
69278
diff
changeset
|
258 `replace-in-string' are ignored." |
7b2d244e58fe
(mh-replace-regexp-in-string): Pass the literal flag to
Bill Wohler <wohler@newt.com>
parents:
69278
diff
changeset
|
259 (replace-in-string string regexp rep literal)) |
68529
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
260 |
68520
6a7173abcf59
* mh-acros.el (mh-defun-compat, mh-defmacro-compat): Add name argument
Bill Wohler <wohler@newt.com>
parents:
68470
diff
changeset
|
261 ;; Copy of constant from url-util.el in Emacs 22; needed by Emacs 21. |
6a7173abcf59
* mh-acros.el (mh-defun-compat, mh-defmacro-compat): Add name argument
Bill Wohler <wohler@newt.com>
parents:
68470
diff
changeset
|
262 (if (not (boundp 'url-unreserved-chars)) |
68595
37aca5dcac0c
(mh-url-unreserved-chars): Fix typo from `mh-url-unresrved-chars'.
Peter Galbraith <galbraith@mixing.qc.dfo.ca>
parents:
68529
diff
changeset
|
263 (defconst mh-url-unreserved-chars |
68520
6a7173abcf59
* mh-acros.el (mh-defun-compat, mh-defmacro-compat): Add name argument
Bill Wohler <wohler@newt.com>
parents:
68470
diff
changeset
|
264 '( |
6a7173abcf59
* mh-acros.el (mh-defun-compat, mh-defmacro-compat): Add name argument
Bill Wohler <wohler@newt.com>
parents:
68470
diff
changeset
|
265 ?a ?b ?c ?d ?e ?f ?g ?h ?i ?j ?k ?l ?m ?n ?o ?p ?q ?r ?s ?t ?u ?v ?w ?x ?y ?z |
6a7173abcf59
* mh-acros.el (mh-defun-compat, mh-defmacro-compat): Add name argument
Bill Wohler <wohler@newt.com>
parents:
68470
diff
changeset
|
266 ?A ?B ?C ?D ?E ?F ?G ?H ?I ?J ?K ?L ?M ?N ?O ?P ?Q ?R ?S ?T ?U ?V ?W ?X ?Y ?Z |
6a7173abcf59
* mh-acros.el (mh-defun-compat, mh-defmacro-compat): Add name argument
Bill Wohler <wohler@newt.com>
parents:
68470
diff
changeset
|
267 ?0 ?1 ?2 ?3 ?4 ?5 ?6 ?7 ?8 ?9 |
6a7173abcf59
* mh-acros.el (mh-defun-compat, mh-defmacro-compat): Add name argument
Bill Wohler <wohler@newt.com>
parents:
68470
diff
changeset
|
268 ?- ?_ ?. ?! ?~ ?* ?' ?\( ?\)) |
6a7173abcf59
* mh-acros.el (mh-defun-compat, mh-defmacro-compat): Add name argument
Bill Wohler <wohler@newt.com>
parents:
68470
diff
changeset
|
269 "A list of characters that are _NOT_ reserved in the URL spec. |
6a7173abcf59
* mh-acros.el (mh-defun-compat, mh-defmacro-compat): Add name argument
Bill Wohler <wohler@newt.com>
parents:
68470
diff
changeset
|
270 This is taken from RFC 2396.")) |
6a7173abcf59
* mh-acros.el (mh-defun-compat, mh-defmacro-compat): Add name argument
Bill Wohler <wohler@newt.com>
parents:
68470
diff
changeset
|
271 |
70061
b3ab71ac7f4e
* mh-acros.el (mh-defun-compat): Rename to defun-mh in order that
Bill Wohler <wohler@newt.com>
parents:
70033
diff
changeset
|
272 (defun-mh mh-url-hexify-string url-hexify-string (str) |
68520
6a7173abcf59
* mh-acros.el (mh-defun-compat, mh-defmacro-compat): Add name argument
Bill Wohler <wohler@newt.com>
parents:
68470
diff
changeset
|
273 "Escape characters in a string. |
6a7173abcf59
* mh-acros.el (mh-defun-compat, mh-defmacro-compat): Add name argument
Bill Wohler <wohler@newt.com>
parents:
68470
diff
changeset
|
274 This is a copy of `url-hexify-string' from url-util.el in Emacs |
6a7173abcf59
* mh-acros.el (mh-defun-compat, mh-defmacro-compat): Add name argument
Bill Wohler <wohler@newt.com>
parents:
68470
diff
changeset
|
275 22; needed by Emacs 21." |
6a7173abcf59
* mh-acros.el (mh-defun-compat, mh-defmacro-compat): Add name argument
Bill Wohler <wohler@newt.com>
parents:
68470
diff
changeset
|
276 (mapconcat |
6a7173abcf59
* mh-acros.el (mh-defun-compat, mh-defmacro-compat): Add name argument
Bill Wohler <wohler@newt.com>
parents:
68470
diff
changeset
|
277 (lambda (char) |
6a7173abcf59
* mh-acros.el (mh-defun-compat, mh-defmacro-compat): Add name argument
Bill Wohler <wohler@newt.com>
parents:
68470
diff
changeset
|
278 ;; Fixme: use a char table instead. |
6a7173abcf59
* mh-acros.el (mh-defun-compat, mh-defmacro-compat): Add name argument
Bill Wohler <wohler@newt.com>
parents:
68470
diff
changeset
|
279 (if (not (memq char mh-url-unreserved-chars)) |
6a7173abcf59
* mh-acros.el (mh-defun-compat, mh-defmacro-compat): Add name argument
Bill Wohler <wohler@newt.com>
parents:
68470
diff
changeset
|
280 (if (> char 255) |
6a7173abcf59
* mh-acros.el (mh-defun-compat, mh-defmacro-compat): Add name argument
Bill Wohler <wohler@newt.com>
parents:
68470
diff
changeset
|
281 (error "Hexifying multibyte character %s" str) |
6a7173abcf59
* mh-acros.el (mh-defun-compat, mh-defmacro-compat): Add name argument
Bill Wohler <wohler@newt.com>
parents:
68470
diff
changeset
|
282 (format "%%%02X" char)) |
6a7173abcf59
* mh-acros.el (mh-defun-compat, mh-defmacro-compat): Add name argument
Bill Wohler <wohler@newt.com>
parents:
68470
diff
changeset
|
283 (char-to-string char))) |
6a7173abcf59
* mh-acros.el (mh-defun-compat, mh-defmacro-compat): Add name argument
Bill Wohler <wohler@newt.com>
parents:
68470
diff
changeset
|
284 str "")) |
6a7173abcf59
* mh-acros.el (mh-defun-compat, mh-defmacro-compat): Add name argument
Bill Wohler <wohler@newt.com>
parents:
68470
diff
changeset
|
285 |
70061
b3ab71ac7f4e
* mh-acros.el (mh-defun-compat): Rename to defun-mh in order that
Bill Wohler <wohler@newt.com>
parents:
70033
diff
changeset
|
286 (defun-mh mh-view-mode-enter |
68529
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
287 view-mode-enter (&optional return-to exit-action) |
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
288 "Enter View mode. |
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
289 This function is used by XEmacs that lacks `view-mode-enter'. |
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
290 The function `view-mode' is used instead. |
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
291 The arguments RETURN-TO and EXIT-ACTION are ignored." |
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
292 ;; Shush compiler. |
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
293 (if return-to nil) |
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
294 (if exit-action nil) |
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
295 (view-mode 1)) |
7daec5f4a289
* mh-alias.el (mh-alias-gecos-name): Use mh-replace-regexp-in-string
Bill Wohler <wohler@newt.com>
parents:
68520
diff
changeset
|
296 |
68520
6a7173abcf59
* mh-acros.el (mh-defun-compat, mh-defmacro-compat): Add name argument
Bill Wohler <wohler@newt.com>
parents:
68470
diff
changeset
|
297 (defmacro mh-write-file-functions () |
6a7173abcf59
* mh-acros.el (mh-defun-compat, mh-defmacro-compat): Add name argument
Bill Wohler <wohler@newt.com>
parents:
68470
diff
changeset
|
298 "Return `write-file-functions' if it exists. |
6a7173abcf59
* mh-acros.el (mh-defun-compat, mh-defmacro-compat): Add name argument
Bill Wohler <wohler@newt.com>
parents:
68470
diff
changeset
|
299 Otherwise return `local-write-file-hooks'. |
6a7173abcf59
* mh-acros.el (mh-defun-compat, mh-defmacro-compat): Add name argument
Bill Wohler <wohler@newt.com>
parents:
68470
diff
changeset
|
300 This macro exists purely for compatibility. The former symbol is used |
6a7173abcf59
* mh-acros.el (mh-defun-compat, mh-defmacro-compat): Add name argument
Bill Wohler <wohler@newt.com>
parents:
68470
diff
changeset
|
301 in Emacs 22 onward while the latter is used in previous versions and |
6a7173abcf59
* mh-acros.el (mh-defun-compat, mh-defmacro-compat): Add name argument
Bill Wohler <wohler@newt.com>
parents:
68470
diff
changeset
|
302 XEmacs." |
6a7173abcf59
* mh-acros.el (mh-defun-compat, mh-defmacro-compat): Add name argument
Bill Wohler <wohler@newt.com>
parents:
68470
diff
changeset
|
303 (if (boundp 'write-file-functions) |
6a7173abcf59
* mh-acros.el (mh-defun-compat, mh-defmacro-compat): Add name argument
Bill Wohler <wohler@newt.com>
parents:
68470
diff
changeset
|
304 ''write-file-functions ;Emacs 22 on |
6a7173abcf59
* mh-acros.el (mh-defun-compat, mh-defmacro-compat): Add name argument
Bill Wohler <wohler@newt.com>
parents:
68470
diff
changeset
|
305 ''local-write-file-hooks)) ;XEmacs |
6a7173abcf59
* mh-acros.el (mh-defun-compat, mh-defmacro-compat): Add name argument
Bill Wohler <wohler@newt.com>
parents:
68470
diff
changeset
|
306 |
68465 | 307 (provide 'mh-compat) |
308 | |
309 ;; Local Variables: | |
310 ;; no-byte-compile: t | |
311 ;; indent-tabs-mode: nil | |
312 ;; sentence-end-double-space: nil | |
313 ;; End: | |
314 | |
68470 | 315 ;; arch-tag: 577b0eab-a5cd-45e1-8d9f-c1a426f4d73c |
68465 | 316 ;;; mh-compat.el ends here |