2006-10-23 Michael Kifer <kifer@cs.stonybrook.edu>
authorMichael Kifer <kifer@cs.stonybrook.edu>
Mon, 23 Oct 2006 19:20:15 +0000 (19:20 +0000)
committerMichael Kifer <kifer@cs.stonybrook.edu>
Mon, 23 Oct 2006 19:20:15 +0000 (19:20 +0000)
* 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.

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

index f6253dc..41296ef 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -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
index e367506..d2dff29 100644 (file)
@@ -1450,7 +1450,9 @@ arguments to `skip-chars-forward'."
       (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)))
     ))
index b33ad7c..2ee573a 100644 (file)
@@ -1637,11 +1637,15 @@ Useful commands:
             (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))
index 6b37d4c..14e1461 100644 (file)
@@ -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.
index 61d99e6..ac3ef55 100644 (file)
   )
 
 
-
 (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 @@ as a Meta key and any number of multiple escapes is allowed."
               (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 @@ invokes the command before that, etc."
                        (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 @@ Null string will repeat previous search."
 (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)
index f9f0803..9f69c68 100644 (file)
@@ -1624,8 +1624,9 @@ reversed."
        (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))
index ea70ad6..82c070d 100644 (file)
@@ -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.
index aadb8f9..eb77bb7 100644 (file)
@@ -178,7 +178,7 @@ in some cases, especially in the Vi Insert state. John Hawkins
 <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.