diff lisp/efs/efs-l19.11.el @ 22:8fc7fe29b841 r19-15b94

Import from CVS: tag r19-15b94
author cvs
date Mon, 13 Aug 2007 08:50:29 +0200
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lisp/efs/efs-l19.11.el	Mon Aug 13 08:50:29 2007 +0200
@@ -0,0 +1,175 @@
+;; -*-Emacs-Lisp-*-
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;
+;; File:         efs-l19.11.el
+;; Release:      $efs release: 1.15 $
+;; Version:      $Revision: 1.1 $
+;; RCS:          
+;; Description:  efs support for XEemacs, versions 19.11, and later.
+;; Author:       Sandy Rutherford <sandy@ibm550.sissa.it>
+;; Created:      Tue Aug  2 17:40:32 1994 by sandy on ibm550
+;; Modified:     Sun Nov 27 18:34:33 1994 by sandy on gandalf
+;;
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(provide 'efs-l19\.11)
+(require 'efs-cu)
+(require 'default-dir)
+(require 'efs-ovwrt)
+
+(defconst efs-l19\.11-version
+  (concat (substring "$efs release: 1.15 $" 14 -2)
+	  "/"
+	  (substring "$Revision: 1.1 $" 11 -2)))
+
+;;; Functions requiring special defs. for these lemacs versions.
+
+(defun efs-abbreviate-file-name (filename &optional hack-homedir)
+  ;; lucid emacs version of abbreviate-file-name for remote files.
+  (let (file-name-handler-alist)
+    (if (and hack-homedir (efs-ftp-path filename))
+	;; Do replacements from directory-abbrev-alist
+	(apply 'efs-unexpand-parsed-filename
+	       (efs-ftp-path (abbreviate-file-name filename nil)))
+      (abbreviate-file-name filename hack-homedir))))
+
+(defun efs-relativize-filename (file &optional dir new)
+  "Abbreviate the given filename relative to DIR .
+If DIR is nil, use the value of `default-directory'. If the
+optional parameter NEW is given and the non-directory parts match, only return
+the directory part of the file."
+  (let* ((dir (or dir default-directory))
+	 (dlen (length dir))
+	 (result file))
+    (and (> (length file) dlen)
+	 (string-equal (substring file 0 dlen) dir)
+	 (setq result (substring file dlen)))
+    (and new
+	 (string-equal (file-name-nondirectory result)
+		       (file-name-nondirectory new))
+	 (or (setq result (file-name-directory result))
+	     (setq result "./")))
+    (abbreviate-file-name result t)))
+
+(defun efs-set-buffer-file-name (filename)
+  ;; Sets the buffer local variables for filename appropriately.
+  ;; A special function because Lucid and FSF do this differently.
+  (setq buffer-file-name filename)
+  (if (and efs-compute-remote-buffer-file-truename
+	   (memq (efs-host-type (car (efs-ftp-path filename)))
+		 efs-unix-host-types))
+      (compute-buffer-file-truename)
+    (setq buffer-file-truename filename)))
+
+;; Do we need to do anything about compute-buffer-file-truename, or
+;; will the handler for file-truename handle this automatically?  I suppose
+;; that efs-compute-remote-buffer-file-truename should really apply to
+;; compute-buffer-file-truename, and not file-truename, but then we would
+;; have to do deal with the fact that this function doesn't exist in GNU Emacs.
+
+;; Only Lucid Emacs has this function.  Why do we need both this and
+;; set-visited-file-modtime?
+
+(defun efs-set-buffer-modtime (buffer &optional time)
+  ;; For buffers visiting remote files, set the buffer modtime.
+  (or time
+      (progn
+	(setq time
+	      (let* ((file (save-excursion
+			     (set-buffer buffer) buffer-file-name))
+		     (parsed (efs-ftp-path file)))
+		(efs-get-file-mdtm (car parsed) (nth 1 parsed)
+				   (nth 2 parsed) file)))
+	(if time
+	    (setq time (cons (car time) (nth 1 time)))
+	  (setq time '(0 . 0)))))
+  (let (file-name-handler-alist)
+    (set-buffer-modtime buffer time)))
+
+;;; Need to add access to the file-name-handler-alist to these functions.
+
+(defun efs-l19\.11-set-buffer-modtime (buffer &optional time)
+  "Documented as original"
+  (let ((handler (save-excursion
+		   (set-buffer buffer)
+		   (and buffer-file-name
+			(find-file-name-handler buffer-file-name
+						'set-buffer-modtime)))))
+    (if handler
+	(funcall handler 'set-buffer-modtime buffer time)
+      (let (file-name-handler-alist)
+	(efs-real-set-buffer-modtime buffer time)))))
+
+(efs-overwrite-fn "efs" 'set-buffer-modtime 'efs-l19\.11-set-buffer-modtime)
+
+(defun efs-l19\.11-backup-buffer ()
+  "Documented as original"
+  (if buffer-file-name
+      (let ((handler (find-file-name-handler buffer-file-name 'backup-buffer)))
+	(if handler
+	    (funcall handler 'backup-buffer)
+	  (let (file-name-handler-alist)
+	    (efs-real-backup-buffer))))))
+
+(efs-overwrite-fn "efs" 'backup-buffer 'efs-l19\.11-backup-buffer)
+
+(defun efs-l19\.11-create-file-buffer (file)
+  "Documented as original"
+  (let ((handler (find-file-name-handler file 'create-file-buffer)))
+    (if handler
+	(funcall handler 'create-file-buffer file)
+      (let (file-name-handler-alist)
+	(efs-real-create-file-buffer file)))))
+
+(efs-overwrite-fn "efs" 'create-file-buffer 'efs-l19\.11-create-file-buffer)
+
+(defun efs-l19\.11-abbreviate-file-name (filename &optional hack-homedir)
+  "Documented as original"
+  (let ((handler (find-file-name-handler filename 'abbreviate-file-name)))
+    (if handler
+	(funcall handler 'abbreviate-file-name filename hack-homedir)
+      (let (file-name-handler-alist)
+	(efs-real-abbreviate-file-name filename hack-homedir)))))
+
+(efs-overwrite-fn "efs" 'abbreviate-file-name
+		  'efs-l19\.11-abbreviate-file-name)
+
+(defun efs-l19\.11-recover-file (file)
+  "Documented as original"
+  (interactive
+   (let ((prompt-file buffer-file-name)
+	 (file-name nil)
+	 (file-dir nil))
+     (and prompt-file
+	  (setq file-name (file-name-nondirectory prompt-file)
+		file-dir (file-name-directory prompt-file)))
+     (list (read-file-name "Recover file: "
+			   file-dir nil nil file-name))))
+  (let* ((file (expand-file-name file))
+	 (handler (or (find-file-name-handler file 'recover-file)
+		      (find-file-name-handler 
+		       (let ((buffer-file-name file))
+			 (make-auto-save-file-name))
+		       'recover-file))))
+    (if handler
+	(funcall handler 'recover-file file)
+      (efs-real-recover-file file))))
+
+(efs-overwrite-fn "efs" 'recover-file 'efs-l19\.11-recover-file)
+
+(defun efs-l19\.11-substitute-in-file-name (filename)
+  "Documented as original."
+  (let ((handler (find-file-name-handler filename 'substitute-in-file-name)))
+    (if handler
+	(funcall handler 'substitute-in-file-name filename)
+      (let (file-name-handler-alist)
+	(efs-real-substitute-in-file-name filename)))))
+
+(efs-overwrite-fn "efs" 'substitute-in-file-name
+		  'efs-l19\.11-substitute-in-file-name)
+
+;;; For the file-name-handler-alist
+
+(put 'set-buffer-modtime 'efs 'efs-set-buffer-modtime)
+
+;;; end of efs-l19.11.el