Mercurial > hg > xemacs-beta
diff lisp/files.el @ 365:30d2cfa1092a r21-1-12
Import from CVS: tag r21-1-12
author | cvs |
---|---|
date | Mon, 13 Aug 2007 11:00:12 +0200 |
parents | 972bbb6d6ca2 |
children | 1d62742628b6 |
line wrap: on
line diff
--- a/lisp/files.el Mon Aug 13 10:59:30 2007 +0200 +++ b/lisp/files.el Mon Aug 13 11:00:12 2007 +0200 @@ -878,24 +878,31 @@ (defun insert-file-contents-literally (filename &optional visit beg end replace) "Like `insert-file-contents', q.v., but only reads in the file. A buffer may be modified in several ways after reading into the buffer due -to advanced Emacs features, such as file-name-handlers, format decoding, -find-file-hooks, etc. +to advanced Emacs features, such as format decoding, character code +conversion,find-file-hooks, automatic uncompression, etc. + This function ensures that none of these modifications will take place." - (let ((file-name-handler-alist nil) - (format-alist nil) - (after-insert-file-functions nil) - (coding-system-for-read 'binary) - (find-buffer-file-type-function - (if (fboundp 'find-buffer-file-type) - (symbol-function 'find-buffer-file-type) - nil))) - (unwind-protect - (progn - (fset 'find-buffer-file-type (lambda (filename) t)) - (insert-file-contents filename visit beg end replace)) - (if find-buffer-file-type-function - (fset 'find-buffer-file-type find-buffer-file-type-function) - (fmakunbound 'find-buffer-file-type))))) + (let ((wrap-func (find-file-name-handler filename + 'insert-file-contents-literally))) + (if wrap-func + (funcall wrap-func 'insert-file-contents-literally filename + visit beg end replace) + (let ((file-name-handler-alist nil) + (format-alist nil) + (after-insert-file-functions nil) + (coding-system-for-read 'binary) + (coding-system-for-write 'binary) + (find-buffer-file-type-function + (if (fboundp 'find-buffer-file-type) + (symbol-function 'find-buffer-file-type) + nil))) + (unwind-protect + (progn + (fset 'find-buffer-file-type (lambda (filename) t)) + (insert-file-contents filename visit beg end replace)) + (if find-buffer-file-type-function + (fset 'find-buffer-file-type find-buffer-file-type-function) + (fmakunbound 'find-buffer-file-type))))))) (defun find-file-noselect (filename &optional nowarn rawfile) "Read file FILENAME into a buffer and return the buffer.