comparison lisp/files.el @ 24832:b772f629b45b

(write-file): When buffer is not already visiting a file, don't put buffer name in the minibuffer, just make it the default. Also handle just directory as arg usefully in that case.
author Karl Heuer <kwzh@gnu.org>
date Sat, 12 Jun 1999 03:57:37 +0000
parents ece1961bd955
children ccece04c47a1
comparison
equal deleted inserted replaced
24831:e16164c4f6a9 24832:b772f629b45b
1912 (set-auto-mode t)) 1912 (set-auto-mode t))
1913 (error nil))) 1913 (error nil)))
1914 1914
1915 (defun write-file (filename &optional confirm) 1915 (defun write-file (filename &optional confirm)
1916 "Write current buffer into file FILENAME. 1916 "Write current buffer into file FILENAME.
1917 Makes buffer visit that file, and marks it not modified. 1917 This makes the buffer visit that file, and marks it as not modified.
1918 If the buffer is already visiting a file, you can specify 1918
1919 a directory name as FILENAME, to write a file of the same 1919 If you specify just a directory name as FILENAME, that means to use
1920 old name in that directory. 1920 the default file name but in that directory. You can also yank
1921 1921 the default file name into the minibuffer to edit it, using M-n.
1922 If optional second arg CONFIRM is non-nil, 1922
1923 ask for confirmation for overwriting an existing file. 1923 If the buffer is not already visiting a file, the default file name
1924 for the output file is the buffer name.
1925
1926 If optional second arg CONFIRM is non-nil, this function
1927 asks for confirmation before overwriting an existing file.
1924 Interactively, confirmation is required unless you supply a prefix argument." 1928 Interactively, confirmation is required unless you supply a prefix argument."
1925 ;; (interactive "FWrite file: ") 1929 ;; (interactive "FWrite file: ")
1926 (interactive 1930 (interactive
1927 (list (if buffer-file-name 1931 (list (if buffer-file-name
1928 (read-file-name "Write file: " 1932 (read-file-name "Write file: "
1929 nil nil nil nil) 1933 nil nil nil nil)
1930 (read-file-name "Write file: " 1934 (read-file-name "Write file: " default-directory
1931 (cdr (assq 'default-directory 1935 (expand-file-name
1932 (buffer-local-variables))) 1936 (file-name-nondirectory (buffer-name))
1933 nil nil (file-name-nondirectory (buffer-name)))) 1937 default-directory)
1938 nil nil))
1934 (not current-prefix-arg))) 1939 (not current-prefix-arg)))
1935 (or (null filename) (string-equal filename "") 1940 (or (null filename) (string-equal filename "")
1936 (progn 1941 (progn
1937 ;; If arg is just a directory, 1942 ;; If arg is just a directory,
1938 ;; use same file name, but in that directory. 1943 ;; use the default file name, but in that directory.
1939 (if (and (file-directory-p filename) buffer-file-name) 1944 (if (file-directory-p filename)
1940 (setq filename (concat (file-name-as-directory filename) 1945 (setq filename (concat (file-name-as-directory filename)
1941 (file-name-nondirectory buffer-file-name)))) 1946 (file-name-nondirectory
1947 (or buffer-file-name (buffer-name))))))
1942 (and confirm 1948 (and confirm
1943 (file-exists-p filename) 1949 (file-exists-p filename)
1944 (or (y-or-n-p (format "File `%s' exists; overwrite? " filename)) 1950 (or (y-or-n-p (format "File `%s' exists; overwrite? " filename))
1945 (error "Canceled"))) 1951 (error "Canceled")))
1946 (set-visited-file-name filename (not confirm)))) 1952 (set-visited-file-name filename (not confirm))))