[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 <odt@dtrx.de>:
>
> 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)