1 : |
monnier |
541 |
;;; sml-compat.el --- Compatibility functions for Emacs variants for sml-mode
|
2 : |
monnier |
319 |
|
3 : |
monnier |
541 |
;; Copyright (C) 1999-2000 Stefan Monnier <monnier@cs.yale.edu>
|
4 : |
monnier |
319 |
;;
|
5 : |
|
|
;; This program is free software; you can redistribute it and/or modify
|
6 : |
|
|
;; it under the terms of the GNU General Public License as published by
|
7 : |
|
|
;; the Free Software Foundation; either version 2 of the License, or
|
8 : |
|
|
;; (at your option) any later version.
|
9 : |
|
|
;;
|
10 : |
|
|
;; This program is distributed in the hope that it will be useful,
|
11 : |
|
|
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12 : |
|
|
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13 : |
|
|
;; GNU General Public License for more details.
|
14 : |
|
|
;;
|
15 : |
|
|
;; You should have received a copy of the GNU General Public License
|
16 : |
|
|
;; along with this program; if not, write to the Free Software
|
17 : |
|
|
;; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
18 : |
|
|
|
19 : |
monnier |
541 |
;;; Commentary:
|
20 : |
monnier |
319 |
|
21 : |
monnier |
541 |
;;; Code:
|
22 : |
|
|
|
23 : |
monnier |
319 |
(unless (fboundp 'set-keymap-parents)
|
24 : |
|
|
(defun set-keymap-parents (m parents)
|
25 : |
monnier |
535 |
(if (keymapp parents) (setq parents (list parents)))
|
26 : |
monnier |
319 |
(set-keymap-parent
|
27 : |
monnier |
332 |
m
|
28 : |
|
|
(if (cdr parents)
|
29 : |
|
|
(reduce (lambda (m1 m2)
|
30 : |
|
|
(let ((m (copy-keymap m1)))
|
31 : |
|
|
(set-keymap-parent m m2) m))
|
32 : |
|
|
parents
|
33 : |
|
|
:from-end t)
|
34 : |
|
|
(car parents)))))
|
35 : |
monnier |
319 |
|
36 : |
monnier |
535 |
;; for XEmacs
|
37 : |
|
|
(when (and (not (boundp 'temporary-file-directory)) (fboundp 'temp-directory))
|
38 : |
|
|
(defvar temporary-file-directory (temp-directory)))
|
39 : |
|
|
|
40 : |
|
|
(unless (fboundp 'make-temp-file)
|
41 : |
|
|
;; Copied from Emacs-21's subr.el
|
42 : |
|
|
(defun make-temp-file (prefix &optional dir-flag)
|
43 : |
|
|
"Create a temporary file.
|
44 : |
|
|
The returned file name (created by appending some random characters at the end
|
45 : |
|
|
of PREFIX, and expanding against `temporary-file-directory' if necessary,
|
46 : |
|
|
is guaranteed to point to a newly created empty file.
|
47 : |
|
|
You can then use `write-region' to write new data into the file.
|
48 : |
|
|
|
49 : |
|
|
If DIR-FLAG is non-nil, create a new empty directory instead of a file."
|
50 : |
|
|
(let (file)
|
51 : |
|
|
(while (condition-case ()
|
52 : |
|
|
(progn
|
53 : |
|
|
(setq file
|
54 : |
|
|
(make-temp-name
|
55 : |
|
|
(expand-file-name prefix temporary-file-directory)))
|
56 : |
|
|
(if dir-flag
|
57 : |
|
|
(make-directory file)
|
58 : |
|
|
(write-region "" nil file nil 'silent nil 'excl))
|
59 : |
|
|
nil)
|
60 : |
|
|
(file-already-exists t))
|
61 : |
|
|
;; the file was somehow created by someone else between
|
62 : |
|
|
;; `make-temp-name' and `write-region', let's try again.
|
63 : |
|
|
nil)
|
64 : |
monnier |
536 |
file)))
|
65 : |
monnier |
535 |
|
66 : |
|
|
|
67 : |
monnier |
319 |
(provide 'sml-compat)
|
68 : |
monnier |
541 |
|
69 : |
|
|
;;; sml-compat.el ends here
|