changeset 73486:db25befb2938

2006-10-23 Michael Kifer <kifer@cs.stonybrook.edu> * viper-cmd.el (viper-prefix-arg-com): define gg as G0 * viper-ex.el (ex-read): quote file argument. * ediff-diff.el (ediff-same-file-contents): expand file names. * ediff-mult.el (ediff-append-custom-diff): quote shell file arguments.
author Michael Kifer <kifer@cs.stonybrook.edu>
date Mon, 23 Oct 2006 19:20:15 +0000
parents 1b4c217a4d9d
children d34b38862f88
files ChangeLog lisp/ediff-diff.el lisp/ediff-mult.el lisp/ediff.el lisp/emulation/viper-cmd.el lisp/emulation/viper-ex.el lisp/emulation/viper.el man/viper.texi
diffstat 8 files changed, 93 insertions(+), 71 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Mon Oct 23 16:46:47 2006 +0000
+++ b/ChangeLog	Mon Oct 23 19:20:15 2006 +0000
@@ -1,3 +1,13 @@
+2006-10-23  Michael Kifer  <kifer@cs.stonybrook.edu>
+	
+	* viper-cmd.el (viper-prefix-arg-com): define gg as G0
+	
+	* viper-ex.el (ex-read): quote file argument.
+	
+	* ediff-diff.el (ediff-same-file-contents): expand file names.
+	
+	* ediff-mult.el (ediff-append-custom-diff): quote shell file arguments.
+	
 2006-10-23  Andreas Schwab  <schwab@suse.de>
 
 	* configure.in: Make sure x_default_search_path is always set even
--- a/lisp/ediff-diff.el	Mon Oct 23 16:46:47 2006 +0000
+++ b/lisp/ediff-diff.el	Mon Oct 23 19:20:15 2006 +0000
@@ -1450,7 +1450,9 @@
       (condition-case nil
 	  (let ((res
 		 (apply 'call-process ediff-cmp-program nil nil nil
-			(append ediff-cmp-options (list f1 f2)))))
+			(append ediff-cmp-options (list (expand-file-name f1)
+							(expand-file-name f2))))
+		 ))
 	    (and (numberp res) (eq res 0)))
 	(error (format "Cannot execute program %S." ediff-cmp-program)))
     ))
--- a/lisp/ediff-mult.el	Mon Oct 23 16:46:47 2006 +0000
+++ b/lisp/ediff-mult.el	Mon Oct 23 19:20:15 2006 +0000
@@ -1637,11 +1637,15 @@
 	     (set-buffer (setq tmp-buf (get-buffer-create ediff-tmp-buffer)))
 	     (erase-buffer)
 	     (shell-command
-	      (format "%s %s %s %s"
-		      ediff-custom-diff-program ediff-custom-diff-options
-		      (ediff-get-session-objA-name session)
-		      (ediff-get-session-objB-name session))
-	      t))
+	      (format
+	       "%s %s %s %s"
+	       (shell-quote-argument ediff-custom-diff-program)
+	       ediff-custom-diff-options
+	       (shell-quote-argument (ediff-get-session-objA-name session))
+	       (shell-quote-argument (ediff-get-session-objB-name session))
+	       )
+	      t)
+	     )
 	   (save-excursion
 	     (set-buffer meta-diff-buff)
 	     (goto-char (point-max))
--- a/lisp/ediff.el	Mon Oct 23 16:46:47 2006 +0000
+++ b/lisp/ediff.el	Mon Oct 23 19:20:15 2006 +0000
@@ -8,7 +8,7 @@
 ;; Keywords: comparing, merging, patching, tools, unix
 
 (defconst ediff-version "2.81.1" "The current version of Ediff")
-(defconst ediff-date "September 18, 2006" "Date of last update")
+(defconst ediff-date "October 23, 2006" "Date of last update")
 
 
 ;; This file is part of GNU Emacs.
--- a/lisp/emulation/viper-cmd.el	Mon Oct 23 16:46:47 2006 +0000
+++ b/lisp/emulation/viper-cmd.el	Mon Oct 23 19:20:15 2006 +0000
@@ -408,7 +408,6 @@
   )
 
 
-
 (defun viper-adjust-keys-for (state)
   "Make necessary adjustments to keymaps before entering STATE."
   (cond ((memq state '(insert-state replace-state))
@@ -1263,65 +1262,69 @@
 	       (setq com char)
 	       (setq char (read-char))))))
 
-  (if (atom com)
-      ;; `com' is a single char, so we construct the command argument
-      ;; and if `char' is `?', we describe the arg; otherwise
-      ;; we prepare the command that will be executed at the end.
-      (progn
-	(setq cmd-info (cons value com))
-	(while (viper= char ?U)
-	  (viper-describe-arg cmd-info)
-	  (setq char (read-char)))
-	;; `char' is a movement cmd, a digit arg cmd, or a register cmd---so we
-	;; execute it at the very end
-	(or (viper-movement-command-p char)
-	    (viper-digit-command-p char)
-	    (viper-regsuffix-command-p char)
-	    (viper= char ?!) ; bang command
-	    (error ""))
-	(setq cmd-to-exec-at-end
-	      (viper-exec-form-in-vi
-	       `(key-binding (char-to-string ,char)))))
-
-    ;; as com is non-nil, this means that we have a command to execute
-    (if (viper-memq-char (car com) '(?r ?R))
-	;; execute apropriate region command.
-	(let ((char (car com)) (com (cdr com)))
-	  (setq prefix-arg (cons value com))
-	  (if (viper= char ?r)
-	      (viper-region prefix-arg)
-	    (viper-Region prefix-arg))
-	  ;; reset prefix-arg
-	  (setq prefix-arg nil))
-      ;; otherwise, reset prefix arg and call appropriate command
-      (setq value (if (null value) 1 value))
-      (setq prefix-arg nil)
-      (cond
-       ;; If we change ?C to ?c here, then cc will enter replacement mode
-       ;; rather than deleting lines.  However, it will affect 1 less line than
-       ;; normal.  We decided to not use replacement mode here and follow Vi,
-       ;; since replacement mode on n full lines can be achieved with nC.
-       ((equal com '(?c . ?c)) (viper-line (cons value ?C)))
-       ((equal com '(?d . ?d)) (viper-line (cons value ?D)))
-       ((equal com '(?d . ?y)) (viper-yank-defun))
-       ((equal com '(?y . ?y)) (viper-line (cons value ?Y)))
-       ((equal com '(?< . ?<)) (viper-line (cons value ?<)))
-       ((equal com '(?> . ?>)) (viper-line (cons value ?>)))
-       ((equal com '(?! . ?!)) (viper-line (cons value ?!)))
-       ((equal com '(?= . ?=)) (viper-line (cons value ?=)))
-       (t (error "")))))
-
-  (if cmd-to-exec-at-end
-      (progn
-	(setq last-command-char char)
-	(setq last-command-event
-	      (viper-copy-event
-	       (if viper-xemacs-p (character-to-event char) char)))
-	(condition-case nil
-	    (funcall cmd-to-exec-at-end cmd-info)
-	  (error
-	   (error "")))))
-  ))
+    (if (atom com)
+	;; `com' is a single char, so we construct the command argument
+	;; and if `char' is `?', we describe the arg; otherwise
+	;; we prepare the command that will be executed at the end.
+	(progn
+	  (setq cmd-info (cons value com))
+	  (while (viper= char ?U)
+	    (viper-describe-arg cmd-info)
+	    (setq char (read-char)))
+	  ;; `char' is a movement cmd, a digit arg cmd, or a register cmd---so
+	  ;; we execute it at the very end
+	  (or (viper-movement-command-p char)
+	      (viper-digit-command-p char)
+	      (viper-regsuffix-command-p char)
+	      (viper= char ?!) ; bang command
+	      (viper= char ?g) ; the gg command (like G0)
+	      (error ""))
+	  (setq cmd-to-exec-at-end
+		(viper-exec-form-in-vi
+		 `(key-binding (char-to-string ,char)))))
+
+      ;; as com is non-nil, this means that we have a command to execute
+      (if (viper-memq-char (car com) '(?r ?R))
+	  ;; execute apropriate region command.
+	  (let ((char (car com)) (com (cdr com)))
+	    (setq prefix-arg (cons value com))
+	    (if (viper= char ?r)
+		(viper-region prefix-arg)
+	      (viper-Region prefix-arg))
+	    ;; reset prefix-arg
+	    (setq prefix-arg nil))
+	;; otherwise, reset prefix arg and call appropriate command
+	(setq value (if (null value) 1 value))
+	(setq prefix-arg nil)
+	(cond
+	 ;; If we change ?C to ?c here, then cc will enter replacement mode
+	 ;; rather than deleting lines.  However, it will affect 1 less line
+	 ;; than normal.  We decided to not use replacement mode here and
+	 ;; follow Vi, since replacement mode on n full lines can be achieved
+	 ;; with nC.
+	 ((equal com '(?c . ?c)) (viper-line (cons value ?C)))
+	 ((equal com '(?d . ?d)) (viper-line (cons value ?D)))
+	 ((equal com '(?d . ?y)) (viper-yank-defun))
+	 ((equal com '(?y . ?y)) (viper-line (cons value ?Y)))
+	 ((equal com '(?< . ?<)) (viper-line (cons value ?<)))
+	 ((equal com '(?> . ?>)) (viper-line (cons value ?>)))
+	 ((equal com '(?! . ?!)) (viper-line (cons value ?!)))
+	 ((equal com '(?= . ?=)) (viper-line (cons value ?=)))
+	 ;; gg  acts as G0
+	 ((equal (car com) ?g)   (viper-goto-line 0))
+	 (t (error "")))))
+    
+    (if cmd-to-exec-at-end
+	(progn
+	  (setq last-command-char char)
+	  (setq last-command-event
+		(viper-copy-event
+		 (if viper-xemacs-p (character-to-event char) char)))
+	  (condition-case nil
+	      (funcall cmd-to-exec-at-end cmd-info)
+	    (error
+	     (error "")))))
+    ))
 
 (defun viper-describe-arg (arg)
   (let (val com)
@@ -1733,6 +1736,7 @@
 			(max viper-com-point (point))))
 	((viper= char ?g)
 	 (push-mark viper-com-point t)
+	 ;; execute the last emacs kbd macro on each line of the region
 	 (viper-global-execute))
 	((viper= char ?q)
 	 (push-mark viper-com-point t)
@@ -3996,6 +4000,7 @@
 (defun viper-buffer-search-enable (&optional c)
   (cond (c (setq viper-buffer-search-char c))
 	((null viper-buffer-search-char)
+	 ;; ?g acts as a default value for viper-buffer-search-char
 	 (setq viper-buffer-search-char ?g)))
   (define-key viper-vi-basic-map
     (cond ((viper-characterp viper-buffer-search-char)
--- a/lisp/emulation/viper-ex.el	Mon Oct 23 16:46:47 2006 +0000
+++ b/lisp/emulation/viper-ex.el	Mon Oct 23 19:20:15 2006 +0000
@@ -1624,8 +1624,9 @@
 	(progn
 	  (setq command
 		;; replace # and % with the previous/current file
-		(ex-expand-filsyms (concat ex-file ex-cmdfile-args)
-				   (current-buffer)))
+		(ex-expand-filsyms
+		 (concat (shell-quote-argument ex-file) ex-cmdfile-args)
+		 (current-buffer)))
 	  (shell-command command t))
       (insert-file-contents ex-file)))
   (ex-fixup-history viper-last-ex-prompt ex-file ex-cmdfile-args))
--- a/lisp/emulation/viper.el	Mon Oct 23 16:46:47 2006 +0000
+++ b/lisp/emulation/viper.el	Mon Oct 23 19:20:15 2006 +0000
@@ -9,7 +9,7 @@
 ;; Author: Michael Kifer <kifer@cs.stonybrook.edu>
 ;; Keywords: emulations
 
-(defconst viper-version "3.13 of September 18, 2006"
+(defconst viper-version "3.13.1 of October 23, 2006"
   "The current version of Viper")
 
 ;; This file is part of GNU Emacs.
--- a/man/viper.texi	Mon Oct 23 16:46:47 2006 +0000
+++ b/man/viper.texi	Mon Oct 23 19:20:15 2006 +0000
@@ -178,7 +178,7 @@
 <jshawkin@@eecs.umich.edu> has provided a set of customizations, which
 enables additional Emacs bindings under Viper.  These customizations can be
 included in your @file{~/.viper} file and are found at the following URL:
-@file{http://www.eecs.umich.edu/~jshawkin/viper-sample}.
+@file{http://traeki.freeshell.org/files/viper-sample}.
 
 @menu
 * Emacs Preliminaries::         Basic concepts in Emacs.