comparison lisp/files.el @ 90789:c0409ee15cee

Merge from emacs--devo--0 Patches applied: * emacs--devo--0 (patch 670-674) - Update from CVS - Merge from gnus--rel--5.10 * gnus--rel--5.10 (patch 209-210) - Merge from emacs--devo--0 - Update from CVS Revision: emacs@sv.gnu.org/emacs--unicode--0--patch-185
author Miles Bader <miles@gnu.org>
date Wed, 21 Mar 2007 13:33:07 +0000
parents 91bf6e05918b 88155f310fdf
children 4ef881a120fe
comparison
equal deleted inserted replaced
90788:a12805fdabe8 90789:c0409ee15cee
1698 1698
1699 (defun insert-file-1 (filename insert-func) 1699 (defun insert-file-1 (filename insert-func)
1700 (if (file-directory-p filename) 1700 (if (file-directory-p filename)
1701 (signal 'file-error (list "Opening input file" "file is a directory" 1701 (signal 'file-error (list "Opening input file" "file is a directory"
1702 filename))) 1702 filename)))
1703 ;; Check whether the file is uncommonly large (see find-file-noselect):
1704 (let (size)
1705 (when (and large-file-warning-threshold
1706 (setq size (nth 7 (file-attributes filename)))
1707 (> size large-file-warning-threshold)
1708 (not (y-or-n-p
1709 (format "File %s is large (%dMB), really insert? "
1710 (file-name-nondirectory filename)
1711 (/ size 1048576)))))
1712 (error "Aborted")))
1713 (let* ((buffer (find-buffer-visiting (abbreviate-file-name (file-truename filename)) 1703 (let* ((buffer (find-buffer-visiting (abbreviate-file-name (file-truename filename))
1714 #'buffer-modified-p)) 1704 #'buffer-modified-p))
1715 (tem (funcall insert-func filename))) 1705 (tem (funcall insert-func filename)))
1716 (push-mark (+ (point) (car (cdr tem)))) 1706 (push-mark (+ (point) (car (cdr tem))))
1717 (when buffer 1707 (when buffer
2145 ("<\\?xml " . xml-mode) 2135 ("<\\?xml " . xml-mode)
2146 (,(let* ((incomment-re "\\(?:[^-]\\|-[^-]\\)") 2136 (,(let* ((incomment-re "\\(?:[^-]\\|-[^-]\\)")
2147 (comment-re (concat "\\(?:!--" incomment-re "*-->[ \t\n]*<\\)"))) 2137 (comment-re (concat "\\(?:!--" incomment-re "*-->[ \t\n]*<\\)")))
2148 (concat "[ \t\n]*<" comment-re "*!DOCTYPE ")) 2138 (concat "[ \t\n]*<" comment-re "*!DOCTYPE "))
2149 . sgml-mode) 2139 . sgml-mode)
2150 ("%![^V]" . ps-mode) 2140 ("%!PS" . ps-mode)
2151 ("# xmcd " . conf-unix-mode)) 2141 ("# xmcd " . conf-unix-mode))
2152 "Alist of buffer beginnings vs. corresponding major mode functions. 2142 "Alist of buffer beginnings vs. corresponding major mode functions.
2153 Each element looks like (REGEXP . FUNCTION) or (MATCH-FUNCTION . FUNCTION). 2143 Each element looks like (REGEXP . FUNCTION) or (MATCH-FUNCTION . FUNCTION).
2154 After visiting a file, if REGEXP matches the text at the beginning of the 2144 After visiting a file, if REGEXP matches the text at the beginning of the
2155 buffer, or calling MATCH-FUNCTION returns non-nil, `normal-mode' will 2145 buffer, or calling MATCH-FUNCTION returns non-nil, `normal-mode' will
2443 ;; For variables defined in the C source code the declaration should go here: 2433 ;; For variables defined in the C source code the declaration should go here:
2444 2434
2445 (mapc (lambda (pair) 2435 (mapc (lambda (pair)
2446 (put (car pair) 'safe-local-variable (cdr pair))) 2436 (put (car pair) 'safe-local-variable (cdr pair)))
2447 '((buffer-read-only . booleanp) ;; C source code 2437 '((buffer-read-only . booleanp) ;; C source code
2438 (default-directory . stringp) ;; C source code
2448 (fill-column . integerp) ;; C source code 2439 (fill-column . integerp) ;; C source code
2449 (indent-tabs-mode . booleanp) ;; C source code 2440 (indent-tabs-mode . booleanp) ;; C source code
2450 (left-margin . integerp) ;; C source code 2441 (left-margin . integerp) ;; C source code
2451 (no-update-autoloads . booleanp) 2442 (no-update-autoloads . booleanp)
2452 (tab-width . integerp) ;; C source code 2443 (tab-width . integerp) ;; C source code
3602 ;; If buffer has no file name, ask user for one. 3593 ;; If buffer has no file name, ask user for one.
3603 (or buffer-file-name 3594 (or buffer-file-name
3604 (let ((filename 3595 (let ((filename
3605 (expand-file-name 3596 (expand-file-name
3606 (read-file-name "File to save in: ") nil))) 3597 (read-file-name "File to save in: ") nil)))
3607 (and (file-exists-p filename) 3598 (if (file-exists-p filename)
3608 (or (y-or-n-p (format "File `%s' exists; overwrite? " 3599 (if (file-directory-p filename)
3609 filename)) 3600 ;; Signal an error if the user specified the name of an
3610 (error "Canceled"))) 3601 ;; existing directory.
3602 (error "%s is a directory" filename)
3603 (unless (y-or-n-p (format "File `%s' exists; overwrite? "
3604 filename))
3605 (error "Canceled")))
3606 ;; Signal an error if the specified name refers to a
3607 ;; non-existing directory.
3608 (let ((dir (file-name-directory filename)))
3609 (unless (file-directory-p dir)
3610 (if (file-exists-p dir)
3611 (error "%s is not a directory" dir)
3612 (error "%s: no such directory" dir)))))
3611 (set-visited-file-name filename))) 3613 (set-visited-file-name filename)))
3612 (or (verify-visited-file-modtime (current-buffer)) 3614 (or (verify-visited-file-modtime (current-buffer))
3613 (not (file-exists-p buffer-file-name)) 3615 (not (file-exists-p buffer-file-name))
3614 (yes-or-no-p 3616 (yes-or-no-p
3615 (format "%s has changed since visited or saved. Save anyway? " 3617 (format "%s has changed since visited or saved. Save anyway? "
3679 (if (not (file-writable-p buffer-file-name)) 3681 (if (not (file-writable-p buffer-file-name))
3680 (let ((dir (file-name-directory buffer-file-name))) 3682 (let ((dir (file-name-directory buffer-file-name)))
3681 (if (not (file-directory-p dir)) 3683 (if (not (file-directory-p dir))
3682 (if (file-exists-p dir) 3684 (if (file-exists-p dir)
3683 (error "%s is not a directory" dir) 3685 (error "%s is not a directory" dir)
3684 (error "%s: no such directory" buffer-file-name)) 3686 (error "%s: no such directory" dir))
3685 (if (not (file-exists-p buffer-file-name)) 3687 (if (not (file-exists-p buffer-file-name))
3686 (error "Directory %s write-protected" dir) 3688 (error "Directory %s write-protected" dir)
3687 (if (yes-or-no-p 3689 (if (yes-or-no-p
3688 (format "File %s is write-protected; try to save anyway? " 3690 (format "File %s is write-protected; try to save anyway? "
3689 (file-name-nondirectory 3691 (file-name-nondirectory