changeset 13210:8453192a1032

(ex-write): uses better defaults.
author Michael Kifer <kifer@cs.stonybrook.edu>
date Sat, 14 Oct 1995 02:21:19 +0000
parents c2f172263810
children 76308c9753ab
files lisp/emulation/viper-ex.el
diffstat 1 files changed, 17 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/emulation/viper-ex.el	Sat Oct 14 00:39:58 1995 +0000
+++ b/lisp/emulation/viper-ex.el	Sat Oct 14 02:21:19 1995 +0000
@@ -752,7 +752,10 @@
 	(set-buffer vip-ex-work-buf)
 	(skip-chars-forward " \t")
 	(if (looking-at "!")
-	    (if (not (vip-looking-back "[ \t]"))
+	    (if (and (not (vip-looking-back "[ \t]"))
+		     ;; read doesn't have a corresponding :r! form, so ! is
+		     ;; immediately interpreted as a shell command.
+		     (not (string= ex-token "read")))
 		(progn
 		  (setq ex-variant t)
 		  (forward-char 1)
@@ -1075,7 +1078,7 @@
     (if buffer-file-name
 	(cond ((buffer-modified-p)
 	       (setq msg
-		     (format "Buffer %s is modified. Edit buffer? "
+		     (format "Buffer %s is modified. Discard changes? "
 			     (buffer-name))
 		     do-edit t))
 	      ((not (verify-visited-file-modtime (current-buffer)))
@@ -1785,9 +1788,17 @@
       (setq writing-whole-file (and (= (point-min) beg) (= (point-max) end))
 	    ex-file (if (string= ex-file "")
 			(buffer-file-name)
-		      (expand-file-name ex-file))
-	    file-exists (file-exists-p ex-file)
+		      (expand-file-name ex-file)))
+      ;; if ex-file is a directory use the file portion of the buffer file name
+      (if (and (file-directory-p ex-file)
+	       buffer-file-name
+	       (not (file-directory-p buffer-file-name)))
+	  (setq ex-file
+		(concat ex-file (file-name-nondirectory buffer-file-name))))
+
+      (setq file-exists (file-exists-p ex-file)
 	    writing-same-file (string= ex-file (buffer-file-name)))
+
       (if (and writing-whole-file writing-same-file)
 	  (if (not (buffer-modified-p))
 	      (message "(No changes need to be saved)")
@@ -1819,8 +1830,8 @@
 	      (set-buffer temp-buf)
 	      (set-buffer-modified-p nil)
 	      (kill-buffer temp-buf)
-	      )
-	  ))
+	      ))
+	)
       ;; this prevents the loss of data if writing part of the buffer
       (if (and (buffer-file-name) writing-same-file)
 	  (set-visited-file-modtime))