Mercurial > hg > xemacs-beta
comparison lisp/efs/efs-l19.11.el @ 98:0d2f883870bc r20-1b1
Import from CVS: tag r20-1b1
author | cvs |
---|---|
date | Mon, 13 Aug 2007 09:13:56 +0200 |
parents | 8fc7fe29b841 |
children |
comparison
equal
deleted
inserted
replaced
97:498bf5da1c90 | 98:0d2f883870bc |
---|---|
1 ;; -*-Emacs-Lisp-*- | |
2 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
3 ;; | |
4 ;; File: efs-l19.11.el | |
5 ;; Release: $efs release: 1.15 $ | |
6 ;; Version: $Revision: 1.1 $ | |
7 ;; RCS: | |
8 ;; Description: efs support for XEemacs, versions 19.11, and later. | |
9 ;; Author: Sandy Rutherford <sandy@ibm550.sissa.it> | |
10 ;; Created: Tue Aug 2 17:40:32 1994 by sandy on ibm550 | |
11 ;; Modified: Sun Nov 27 18:34:33 1994 by sandy on gandalf | |
12 ;; | |
13 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | |
14 | |
15 (provide 'efs-l19\.11) | |
16 (require 'efs-cu) | |
17 (require 'default-dir) | |
18 (require 'efs-ovwrt) | |
19 | |
20 (defconst efs-l19\.11-version | |
21 (concat (substring "$efs release: 1.15 $" 14 -2) | |
22 "/" | |
23 (substring "$Revision: 1.1 $" 11 -2))) | |
24 | |
25 ;;; Functions requiring special defs. for these lemacs versions. | |
26 | |
27 (defun efs-abbreviate-file-name (filename &optional hack-homedir) | |
28 ;; lucid emacs version of abbreviate-file-name for remote files. | |
29 (let (file-name-handler-alist) | |
30 (if (and hack-homedir (efs-ftp-path filename)) | |
31 ;; Do replacements from directory-abbrev-alist | |
32 (apply 'efs-unexpand-parsed-filename | |
33 (efs-ftp-path (abbreviate-file-name filename nil))) | |
34 (abbreviate-file-name filename hack-homedir)))) | |
35 | |
36 (defun efs-relativize-filename (file &optional dir new) | |
37 "Abbreviate the given filename relative to DIR . | |
38 If DIR is nil, use the value of `default-directory'. If the | |
39 optional parameter NEW is given and the non-directory parts match, only return | |
40 the directory part of the file." | |
41 (let* ((dir (or dir default-directory)) | |
42 (dlen (length dir)) | |
43 (result file)) | |
44 (and (> (length file) dlen) | |
45 (string-equal (substring file 0 dlen) dir) | |
46 (setq result (substring file dlen))) | |
47 (and new | |
48 (string-equal (file-name-nondirectory result) | |
49 (file-name-nondirectory new)) | |
50 (or (setq result (file-name-directory result)) | |
51 (setq result "./"))) | |
52 (abbreviate-file-name result t))) | |
53 | |
54 (defun efs-set-buffer-file-name (filename) | |
55 ;; Sets the buffer local variables for filename appropriately. | |
56 ;; A special function because Lucid and FSF do this differently. | |
57 (setq buffer-file-name filename) | |
58 (if (and efs-compute-remote-buffer-file-truename | |
59 (memq (efs-host-type (car (efs-ftp-path filename))) | |
60 efs-unix-host-types)) | |
61 (compute-buffer-file-truename) | |
62 (setq buffer-file-truename filename))) | |
63 | |
64 ;; Do we need to do anything about compute-buffer-file-truename, or | |
65 ;; will the handler for file-truename handle this automatically? I suppose | |
66 ;; that efs-compute-remote-buffer-file-truename should really apply to | |
67 ;; compute-buffer-file-truename, and not file-truename, but then we would | |
68 ;; have to do deal with the fact that this function doesn't exist in GNU Emacs. | |
69 | |
70 ;; Only Lucid Emacs has this function. Why do we need both this and | |
71 ;; set-visited-file-modtime? | |
72 | |
73 (defun efs-set-buffer-modtime (buffer &optional time) | |
74 ;; For buffers visiting remote files, set the buffer modtime. | |
75 (or time | |
76 (progn | |
77 (setq time | |
78 (let* ((file (save-excursion | |
79 (set-buffer buffer) buffer-file-name)) | |
80 (parsed (efs-ftp-path file))) | |
81 (efs-get-file-mdtm (car parsed) (nth 1 parsed) | |
82 (nth 2 parsed) file))) | |
83 (if time | |
84 (setq time (cons (car time) (nth 1 time))) | |
85 (setq time '(0 . 0))))) | |
86 (let (file-name-handler-alist) | |
87 (set-buffer-modtime buffer time))) | |
88 | |
89 ;;; Need to add access to the file-name-handler-alist to these functions. | |
90 | |
91 (defun efs-l19\.11-set-buffer-modtime (buffer &optional time) | |
92 "Documented as original" | |
93 (let ((handler (save-excursion | |
94 (set-buffer buffer) | |
95 (and buffer-file-name | |
96 (find-file-name-handler buffer-file-name | |
97 'set-buffer-modtime))))) | |
98 (if handler | |
99 (funcall handler 'set-buffer-modtime buffer time) | |
100 (let (file-name-handler-alist) | |
101 (efs-real-set-buffer-modtime buffer time))))) | |
102 | |
103 (efs-overwrite-fn "efs" 'set-buffer-modtime 'efs-l19\.11-set-buffer-modtime) | |
104 | |
105 (defun efs-l19\.11-backup-buffer () | |
106 "Documented as original" | |
107 (if buffer-file-name | |
108 (let ((handler (find-file-name-handler buffer-file-name 'backup-buffer))) | |
109 (if handler | |
110 (funcall handler 'backup-buffer) | |
111 (let (file-name-handler-alist) | |
112 (efs-real-backup-buffer)))))) | |
113 | |
114 (efs-overwrite-fn "efs" 'backup-buffer 'efs-l19\.11-backup-buffer) | |
115 | |
116 (defun efs-l19\.11-create-file-buffer (file) | |
117 "Documented as original" | |
118 (let ((handler (find-file-name-handler file 'create-file-buffer))) | |
119 (if handler | |
120 (funcall handler 'create-file-buffer file) | |
121 (let (file-name-handler-alist) | |
122 (efs-real-create-file-buffer file))))) | |
123 | |
124 (efs-overwrite-fn "efs" 'create-file-buffer 'efs-l19\.11-create-file-buffer) | |
125 | |
126 (defun efs-l19\.11-abbreviate-file-name (filename &optional hack-homedir) | |
127 "Documented as original" | |
128 (let ((handler (find-file-name-handler filename 'abbreviate-file-name))) | |
129 (if handler | |
130 (funcall handler 'abbreviate-file-name filename hack-homedir) | |
131 (let (file-name-handler-alist) | |
132 (efs-real-abbreviate-file-name filename hack-homedir))))) | |
133 | |
134 (efs-overwrite-fn "efs" 'abbreviate-file-name | |
135 'efs-l19\.11-abbreviate-file-name) | |
136 | |
137 (defun efs-l19\.11-recover-file (file) | |
138 "Documented as original" | |
139 (interactive | |
140 (let ((prompt-file buffer-file-name) | |
141 (file-name nil) | |
142 (file-dir nil)) | |
143 (and prompt-file | |
144 (setq file-name (file-name-nondirectory prompt-file) | |
145 file-dir (file-name-directory prompt-file))) | |
146 (list (read-file-name "Recover file: " | |
147 file-dir nil nil file-name)))) | |
148 (let* ((file (expand-file-name file)) | |
149 (handler (or (find-file-name-handler file 'recover-file) | |
150 (find-file-name-handler | |
151 (let ((buffer-file-name file)) | |
152 (make-auto-save-file-name)) | |
153 'recover-file)))) | |
154 (if handler | |
155 (funcall handler 'recover-file file) | |
156 (efs-real-recover-file file)))) | |
157 | |
158 (efs-overwrite-fn "efs" 'recover-file 'efs-l19\.11-recover-file) | |
159 | |
160 (defun efs-l19\.11-substitute-in-file-name (filename) | |
161 "Documented as original." | |
162 (let ((handler (find-file-name-handler filename 'substitute-in-file-name))) | |
163 (if handler | |
164 (funcall handler 'substitute-in-file-name filename) | |
165 (let (file-name-handler-alist) | |
166 (efs-real-substitute-in-file-name filename))))) | |
167 | |
168 (efs-overwrite-fn "efs" 'substitute-in-file-name | |
169 'efs-l19\.11-substitute-in-file-name) | |
170 | |
171 ;;; For the file-name-handler-alist | |
172 | |
173 (put 'set-buffer-modtime 'efs 'efs-set-buffer-modtime) | |
174 | |
175 ;;; end of efs-l19.11.el |