See also `insert-file-contents-access-hook',
`insert-file-contents-pre-hook', `insert-file-contents-error-hook',
and `insert-file-contents-post-hook'."
- (let (return-val coding-system cs used-codesys)
+ (let (return-val coding-system cs used-codesys p)
;; OK, first load the file.
(condition-case err
(progn
"Invalid coding-system (%s), using 'undecided"
coding-system)
(setq coding-system 'undecided)))
- (save-restriction
- (narrow-to-region (point)(point))
- (setq return-val
- (insert-file-contents-internal filename visit beg end
- replace coding-system
- ;; store here!
- 'used-codesys))
- (or coding-system-for-read
- (null (setq cs (find-coding-system-magic-cookie)))
- (eq cs coding-system)
- (progn
- (delete-region (point-min)(point-max))
- (setq return-val
- (insert-file-contents-internal
- filename visit beg end
- replace cs
- ;; store here!
- 'used-codesys)))))
+ (setq p (point))
+ (setq return-val
+ (insert-file-contents-internal filename visit beg end
+ (and coding-system-for-read
+ replace)
+ coding-system
+ ;; store here!
+ 'used-codesys))
+ (unless coding-system-for-read
+ (if (or (null (setq cs (find-coding-system-magic-cookie)))
+ (eq cs used-codesys)
+ (eq cs (coding-system-name
+ (coding-system-base used-codesys))))
+ (if replace
+ (let* ((len (nth 1 return-val))
+ (end (+ p len)))
+ (delete-region end (+ end len))))
+ (delete-region p (+ p (nth 1 return-val)))
+ (setq return-val
+ (insert-file-contents-internal
+ filename visit beg end
+ replace cs
+ ;; store here!
+ 'used-codesys))))
))
(file-error
(run-hook-with-args 'insert-file-contents-error-hook