help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: viper-mode: "r <Return>" does not work as expected


From: Olaf Dietrich
Subject: Re: viper-mode: "r <Return>" does not work as expected
Date: 6 May 2005 07:27:15 GMT
User-agent: tin/1.7.9-20050415 ("Hellisay") (UNIX) (Linux/2.6.8.olaf10 (i686))

Olaf Dietrich <address@hidden>:
> 
> Inserting a new line break in an existing line by "r <Return>"
> (more exactly: replacing the current character by a newline)
> does not work; instead, '^M' appears as replacement text.

By comparing the current CVS version of viper (viper-version "3.11.4
of February 19, 2005") to the one distributed with Emacs 21.4.1
(viper-version "3.11.1 of September 9, 2001"), I found the following
patch for viper-cmd.el the makes "r <Return>" work (only the fourth
insertion seems to be necessary to remove the described problem,
but all four seem to deal with similar ^M stuff).

Thanks to Kevin Rodgers and to Michael Kifer for their help,
Olaf


(crossposted to gnu.emacs.help and comp.emacs;
followups to: gnu.emacs.help;
and apologies in advance if a former version of this post (stupidly
cross-posted to a moderated group) should pop up here)


--- emacs-21.4/lisp/emulation/viper-cmd.el      2002-06-10 15:05:03.000000000 
+0200
+++ viper-cmd.el        2005-05-03 10:22:57.860007000 +0200
@@ -789,6 +789,13 @@
                 ;; The next 2 cmds are intended to prevent the input method
                 ;; from swallowing ^M, ^Q and other special characters
                 (setq ch (read-char))
+;; start copy from viper 3.11.4 (2005-02-19)
+                ;; replace ^M with the newline
+                (if (eq ch ?\C-m) (setq ch ?\n))
+                ;; Make sure ^V and ^Q work as quotation chars
+                (if (memq ch '(?\C-v ?\C-q))
+                    (setq ch (read-char)))
+;; end copy from viper 3.11.4 (2005-02-19)
                 (viper-set-unread-command-events ch)
                 (quail-input-method nil)
 
@@ -806,6 +813,13 @@
               ;; quail-input-method
               (let (unread-command-events)
                 (setq ch (read-char))
+;; start copy from viper 3.11.4 (2005-02-19)
+                ;; replace ^M with the newline
+                (if (eq ch ?\C-m) (setq ch ?\n))
+                ;; Make sure ^V and ^Q work as quotation chars
+                (if (memq ch '(?\C-v ?\C-q))
+                    (setq ch (read-char)))
+;; end copy from viper 3.11.4 (2005-02-19)
                 (viper-set-unread-command-events ch)
                 (quail-start-translation nil)
 
@@ -818,9 +832,24 @@
                 ))
              ((and (boundp 'iso-accents-mode) iso-accents-mode)
               (setq ch (aref (read-key-sequence nil) 0))
+;; start copy from viper 3.11.4 (2005-02-19)
+              ;; replace ^M with the newline
+              (if (eq ch ?\C-m) (setq ch ?\n))
+              ;; Make sure ^V and ^Q work as quotation chars
+              (if (memq ch '(?\C-v ?\C-q))
+                  (setq ch (aref (read-key-sequence nil) 0)))
+;; end copy from viper 3.11.4 (2005-02-19)
               (insert ch))
              (t
               (setq ch (read-char))
+;; the following 7 lines make "r <Ret>" work as expected
+;; start copy from viper 3.11.4 (2005-02-19)
+              ;; replace ^M with the newline
+              (if (eq ch ?\C-m) (setq ch ?\n))
+              ;; Make sure ^V and ^Q work as quotation chars
+              (if (memq ch '(?\C-v ?\C-q))
+                  (setq ch (read-char)))
+;; end copy from viper 3.11.4 (2005-02-19)
               (insert ch))
              )
        (setq last-command-event
@@ -2554,7 +2583,9 @@
     (or (eq viper-intermediate-command 'viper-repeat)
        (viper-special-read-and-insert-char))
 
-      (if (eq char ?\C-m) (setq char ?\n))
+;; start copy from viper 3.11.4 (2005-02-19)
+;;      (if (eq char ?\C-m) (setq char ?\n))
+;; end copy from viper 3.11.4 (2005-02-19)
 
       (delete-char 1 t)
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]