GNU bug report logs - #78220
bug fix: viper-put-back and viper-Put-back do not set viper-d-com correctly

Previous Next

Package: emacs;

Reported by: "Scott, Michael" <scott <at> cs.rochester.edu>

Date: Fri, 2 May 2025 20:34:02 UTC

Severity: normal

Done: Eli Zaretskii <eliz <at> gnu.org>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 78220 in the body.
You can then email your comments to 78220 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#78220; Package emacs. (Fri, 02 May 2025 20:34:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to "Scott, Michael" <scott <at> cs.rochester.edu>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Fri, 02 May 2025 20:34:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: "Scott, Michael" <scott <at> cs.rochester.edu>
To: "kifer <at> cs.stonybrook.edu" <kifer <at> cs.stonybrook.edu>,
 "bug-gnu-emacs <at> gnu.org" <bug-gnu-emacs <at> gnu.org>
Subject: bug fix: viper-put-back and viper-Put-back do not set viper-d-com
 correctly
Date: Fri, 2 May 2025 20:28:17 +0000
[Message part 1 (text/plain, inline)]
To: kifer <at> cs.stonybrook.edu, bug-gnu-emacs <at> gnu.org
Subject: Viper version is 3.14.2 of July 4, 2013; viper-put-back and viper-Put-back do
not correctly set viper-d-com
From: mls <scott <at> scott.cs.rochester.edu>


Congratulations! You may have unearthed a bug in Viper!
Please mail a concise, accurate summary of the problem to the address above.

In the code for viper-put-back and viper-Put-back, both in viper-cmd.el,
viper-use-register is reset to nil before calling viper-set-destructive-command.
It needs to happen after:

sigma> diff -c viper-cmd.el viper-cmd_fix.el
*** viper-cmd.el Fri May  2 16:19:41 2025
--- viper-cmd_fix.el Fri May  2 16:20:37 2025
***************
*** 3865,3871 ****
       (setq viper-use-register nil)
       (error viper-EmptyRegister reg))
   (user-error viper-ViperBell)))
-     (setq viper-use-register nil)
      (if (viper-end-with-a-newline-p text)
  (progn
   (end-of-line)
--- 3865,3870 ----
***************
*** 3877,3882 ****
--- 3876,3882 ----
      (set-marker (mark-marker) (point) (current-buffer))
      (viper-set-destructive-command
       (list 'viper-put-back val nil viper-use-register nil nil))
+     (setq viper-use-register nil)
      (setq sv-point (point))
      (viper-loop val (viper-yank text))
      (setq chars-inserted (abs (- (point) sv-point))
***************
*** 3915,3924 ****
       (setq viper-use-register nil)
       (error viper-EmptyRegister reg))
   (user-error viper-ViperBell)))
-     (setq viper-use-register nil)
      (if (viper-end-with-a-newline-p text) (beginning-of-line))
      (viper-set-destructive-command
       (list 'viper-Put-back val nil viper-use-register nil nil))
      (set-marker (mark-marker) (point) (current-buffer))
      (setq sv-point (point))
      (viper-loop val (viper-yank text))
--- 3915,3924 ----
       (setq viper-use-register nil)
       (error viper-EmptyRegister reg))
   (user-error viper-ViperBell)))
      (if (viper-end-with-a-newline-p text) (beginning-of-line))
      (viper-set-destructive-command
       (list 'viper-Put-back val nil viper-use-register nil nil))
+     (setq viper-use-register nil)
      (set-marker (mark-marker) (point) (current-buffer))
      (setq sv-point (point))
      (viper-loop val (viper-yank text))
sigma>

With this fix, a command like “xp or “xP will repeat correctly with the dot command.

-------------------------------------------------------------------

Emacs  : GNU Emacs 29.4 (build 1, aarch64-apple-darwin21.6.0, NS appkit-2113.60 Version 12.6.6 (Build 21G646))
 of 2024-08-02
Package: Viper version is 3.14.2 of July 4, 2013

current state:
==============
(setq
 viper-vi-minibuffer-minor-mode nil
 viper-insert-minibuffer-minor-mode nil
 viper-vi-intercept-minor-mode t
 viper-vi-local-user-minor-mode t
 viper-vi-kbd-minor-mode t
 viper-vi-global-user-minor-mode t
 viper-vi-state-modifier-minor-mode t
 viper-vi-diehard-minor-mode nil
 viper-vi-basic-minor-mode t
 viper-replace-minor-mode nil
 viper-insert-intercept-minor-mode nil
 viper-insert-local-user-minor-mode nil
 viper-insert-kbd-minor-mode nil
 viper-insert-global-user-minor-mode nil
 viper-insert-state-modifier-minor-mode nil
 viper-insert-diehard-minor-mode nil
 viper-insert-basic-minor-mode nil
 viper-emacs-intercept-minor-mode nil
 viper-emacs-local-user-minor-mode nil
 viper-emacs-kbd-minor-mode nil
 viper-emacs-global-user-minor-mode nil
 viper-emacs-state-modifier-minor-mode nil
 viper-automatic-iso-accents nil
 viper-special-input-method nil
 viper-want-emacs-keys-in-insert t
 viper-want-emacs-keys-in-vi t
 viper-keep-point-on-undo nil
 viper-no-multiple-ESC t
 viper-electric-mode nil
 viper-ESC-key "`"
 viper-want-ctl-h-help nil
 viper-ex-style-editing nil
 viper-delete-backwards-in-replace nil
 viper-vi-style-in-minibuffer t
 viper-vi-state-hook 'viper-restore-cursor-type
 viper-insert-state-hook '(turn-on-auto-fill viper-set-insert-cursor-type)
 viper-replace-state-hook 'viper-restore-cursor-type
 viper-emacs-state-hook 'viper-restore-cursor-type
 ex-cycle-other-window t
 ex-cycle-through-non-files nil
 viper-expert-level 5
 major-mode 'fundamental-mode
 window-system 'ns
 x-display-color-p t
 viper-frame-parameters '((tool-bar-position . top) (parent-id)
                          (explicit-name) (display . "scott.cs.rochester.edu")
                          (visibility . t) (icon-name) (window-id . "1")
                          (top . 25) (left . 1526)
                          (buried-buffer-list #<buffer *Completions*> #<buffer
                           *viper-ask-level*>)
                          (buffer-list #<buffer .viper> #<buffer
                           viper-cmd.el.gz> #<buffer viper-init.el.gz>
                           #<buffer *Backtrace*> #<buffer *Help*> #<buffer
                           *Buffer List*> #<buffer chap.tex> #<buffer
                           CDex.tex<04_semantics>> #<buffer
                           2025-05-01_Yuan_Yao> #<buffer attr_grammars.tex>
                           #<buffer main.tex> #<buffer *scratch*> #<buffer
                           2025-04-10_hbeadle> #<buffer response.txt> #<buffer
                           notes> #<buffer 2025-04-29_rdong3+sree> #<buffer
                           CDex.tex<03_names>> #<buffer notes.txt>)
                          (unsplittable) (modeline . t) (width . 80)
                          (height . 86) (name . "Emacs-arm64-11 <at> sigma")
                          (last-focus-update . t)
                          (viper-vi-state-cursor-color . "firebrick")
                          (viper-saved-cursor-color-in-replace-mode .
                           "firebrick")
                          (environment) (font-parameter)
                          (cursor-color . "firebrick")
                          (background-mode . light) (display-type . color)
                          (scroll-bar-background) (scroll-bar-foreground)
                          (window-system . ns) (fullscreen) (alpha-background)
                          (alpha) (scroll-bar-height . 15)
                          (scroll-bar-width . 15) (cursor-type . box)
                          (auto-lower) (auto-raise) (icon-type) (title)
                          (buffer-predicate) (tool-bar-lines . 0)
                          (tab-bar-lines . 0) (menu-bar-lines . 0)
                          (no-accept-focus) (no-focus-on-map) (z-group)
                          (parent-frame) (ns-transparent-titlebar)
                          (ns-appearance) (undecorated) (no-special-glyphs)
                          (right-fringe . 8) (left-fringe . 8) (line-spacing)
                          (background-color . "alice blue")
                          (foreground-color . "Black")
                          (horizontal-scroll-bars)
                          (vertical-scroll-bars . right)
                          (bottom-divider-width . 0) (right-divider-width . 0)
                          (child-frame-border-width)
                          (internal-border-width . 2) (border-width . 0)
                          (font .
                           "-*-Monaco-regular-normal-normal-*-12-*-*-*-m-0-iso10646-1")
                          (fontsize . 0) (font-backend mac-ct)
                          (minibuffer . t))
 viper-minibuffer-vi-face [face unspecified unspecified unspecified unspecified unspecified unspecified unspecified unspecified unspecified unspecified unspecified unspecified unspecified unspecified unspecified unspecified unspecified unspecified unspecified]
 viper-minibuffer-insert-face [face unspecified unspecified unspecified unspecified unspecified unspecified unspecified unspecified unspecified unspecified unspecified unspecified unspecified unspecified unspecified unspecified unspecified unspecified unspecified]
 viper-minibuffer-emacs-face [face unspecified unspecified unspecified unspecified unspecified unspecified unspecified unspecified unspecified unspecified unspecified unspecified unspecified unspecified unspecified unspecified unspecified unspecified unspecified]
 )
--text follows this line--

--
Michael L. Scott (he/him)
Arthur Gould Yates Professor of Engineering
Computer Science Department, University of Rochester
scott <at> cs.rochester.edu<mailto:scott <at> cs.rochester.edu>; 585-275-5671, 5478
http://www.cs.rochester.edu/u/scott/

[Message part 2 (text/html, inline)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#78220; Package emacs. (Sat, 17 May 2025 08:07:01 GMT) Full text and rfc822 format available.

Message #8 received at 78220 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: kifer <at> cs.stonybrook.edu, "Scott, Michael" <scott <at> cs.rochester.edu>
Cc: 78220 <at> debbugs.gnu.org
Subject: Re: bug#78220: bug fix: viper-put-back and viper-Put-back do not set
 viper-d-com correctly
Date: Sat, 17 May 2025 11:06:43 +0300
Ping!  Michael, could you please look into this?

> Date: Fri, 2 May 2025 20:28:17 +0000
> From:  "Scott, Michael" via "Bug reports for GNU Emacs,
>  the Swiss army knife of text editors" <bug-gnu-emacs <at> gnu.org>
> 
> To: kifer <at> cs.stonybrook.edu, bug-gnu-emacs <at> gnu.org
> Subject: Viper version is 3.14.2 of July 4, 2013; viper-put-back and viper-Put-back do
> not correctly set viper-d-com
> From: mls <scott <at> scott.cs.rochester.edu>
> 
> Congratulations! You may have unearthed a bug in Viper!
> Please mail a concise, accurate summary of the problem to the address above.
> 
> In the code for viper-put-back and viper-Put-back, both in viper-cmd.el,
> viper-use-register is reset to nil before calling viper-set-destructive-command.
> It needs to happen after:
> 
>  sigma> diff -c viper-cmd.el viper-cmd_fix.el
>  *** viper-cmd.el Fri May  2 16:19:41 2025
>  --- viper-cmd_fix.el Fri May  2 16:20:37 2025
>  ***************
>  *** 3865,3871 ****
>         (setq viper-use-register nil)
>         (error viper-EmptyRegister reg))
>     (user-error viper-ViperBell)))
>  -     (setq viper-use-register nil)
>        (if (viper-end-with-a-newline-p text)
>    (progn
>     (end-of-line)
>  --- 3865,3870 ----
>  ***************
>  *** 3877,3882 ****
>  --- 3876,3882 ----
>        (set-marker (mark-marker) (point) (current-buffer))
>        (viper-set-destructive-command
>         (list 'viper-put-back val nil viper-use-register nil nil))
>  +     (setq viper-use-register nil)
>        (setq sv-point (point))
>        (viper-loop val (viper-yank text))
>        (setq chars-inserted (abs (- (point) sv-point))
>  ***************
>  *** 3915,3924 ****
>         (setq viper-use-register nil)
>         (error viper-EmptyRegister reg))
>     (user-error viper-ViperBell)))
>  -     (setq viper-use-register nil)
>        (if (viper-end-with-a-newline-p text) (beginning-of-line))
>        (viper-set-destructive-command
>         (list 'viper-Put-back val nil viper-use-register nil nil))
>        (set-marker (mark-marker) (point) (current-buffer))
>        (setq sv-point (point))
>        (viper-loop val (viper-yank text))
>  --- 3915,3924 ----
>         (setq viper-use-register nil)
>         (error viper-EmptyRegister reg))
>     (user-error viper-ViperBell)))
>        (if (viper-end-with-a-newline-p text) (beginning-of-line))
>        (viper-set-destructive-command
>         (list 'viper-Put-back val nil viper-use-register nil nil))
>  +     (setq viper-use-register nil)
>        (set-marker (mark-marker) (point) (current-buffer))
>        (setq sv-point (point))
>        (viper-loop val (viper-yank text))
>  sigma> 
> 
> With this fix, a command like “xp or “xP will repeat correctly with the dot command.
> 
> -------------------------------------------------------------------
> 
> Emacs  : GNU Emacs 29.4 (build 1, aarch64-apple-darwin21.6.0, NS appkit-2113.60 Version 12.6.6 (Build
> 21G646))
>  of 2024-08-02
> Package: Viper version is 3.14.2 of July 4, 2013
> 
> current state:
> ==============
> (setq
>  viper-vi-minibuffer-minor-mode nil
>  viper-insert-minibuffer-minor-mode nil
>  viper-vi-intercept-minor-mode t
>  viper-vi-local-user-minor-mode t
>  viper-vi-kbd-minor-mode t
>  viper-vi-global-user-minor-mode t
>  viper-vi-state-modifier-minor-mode t
>  viper-vi-diehard-minor-mode nil
>  viper-vi-basic-minor-mode t
>  viper-replace-minor-mode nil
>  viper-insert-intercept-minor-mode nil
>  viper-insert-local-user-minor-mode nil
>  viper-insert-kbd-minor-mode nil
>  viper-insert-global-user-minor-mode nil
>  viper-insert-state-modifier-minor-mode nil
>  viper-insert-diehard-minor-mode nil
>  viper-insert-basic-minor-mode nil
>  viper-emacs-intercept-minor-mode nil
>  viper-emacs-local-user-minor-mode nil
>  viper-emacs-kbd-minor-mode nil
>  viper-emacs-global-user-minor-mode nil
>  viper-emacs-state-modifier-minor-mode nil
>  viper-automatic-iso-accents nil
>  viper-special-input-method nil
>  viper-want-emacs-keys-in-insert t
>  viper-want-emacs-keys-in-vi t
>  viper-keep-point-on-undo nil
>  viper-no-multiple-ESC t
>  viper-electric-mode nil
>  viper-ESC-key "`"
>  viper-want-ctl-h-help nil
>  viper-ex-style-editing nil
>  viper-delete-backwards-in-replace nil
>  viper-vi-style-in-minibuffer t
>  viper-vi-state-hook 'viper-restore-cursor-type
>  viper-insert-state-hook '(turn-on-auto-fill viper-set-insert-cursor-type)
>  viper-replace-state-hook 'viper-restore-cursor-type
>  viper-emacs-state-hook 'viper-restore-cursor-type
>  ex-cycle-other-window t
>  ex-cycle-through-non-files nil
>  viper-expert-level 5
>  major-mode 'fundamental-mode
>  window-system 'ns
>  x-display-color-p t
>  viper-frame-parameters '((tool-bar-position . top) (parent-id)
>                           (explicit-name) (display . "scott.cs.rochester.edu")
>                           (visibility . t) (icon-name) (window-id . "1")
>                           (top . 25) (left . 1526)
>                           (buried-buffer-list #<buffer *Completions*> #<buffer
>                            *viper-ask-level*>)
>                           (buffer-list #<buffer .viper> #<buffer
>                            viper-cmd.el.gz> #<buffer viper-init.el.gz>
>                            #<buffer *Backtrace*> #<buffer *Help*> #<buffer
>                            *Buffer List*> #<buffer chap.tex> #<buffer
>                            CDex.tex<04_semantics>> #<buffer
>                            2025-05-01_Yuan_Yao> #<buffer attr_grammars.tex>
>                            #<buffer main.tex> #<buffer *scratch*> #<buffer
>                            2025-04-10_hbeadle> #<buffer response.txt> #<buffer
>                            notes> #<buffer 2025-04-29_rdong3+sree> #<buffer
>                            CDex.tex<03_names>> #<buffer notes.txt>)
>                           (unsplittable) (modeline . t) (width . 80)
>                           (height . 86) (name . "Emacs-arm64-11 <at> sigma")
>                           (last-focus-update . t)
>                           (viper-vi-state-cursor-color . "firebrick")
>                           (viper-saved-cursor-color-in-replace-mode .
>                            "firebrick")
>                           (environment) (font-parameter)
>                           (cursor-color . "firebrick")
>                           (background-mode . light) (display-type . color)
>                           (scroll-bar-background) (scroll-bar-foreground)
>                           (window-system . ns) (fullscreen) (alpha-background)
>                           (alpha) (scroll-bar-height . 15)
>                           (scroll-bar-width . 15) (cursor-type . box)
>                           (auto-lower) (auto-raise) (icon-type) (title)
>                           (buffer-predicate) (tool-bar-lines . 0)
>                           (tab-bar-lines . 0) (menu-bar-lines . 0)
>                           (no-accept-focus) (no-focus-on-map) (z-group)
>                           (parent-frame) (ns-transparent-titlebar)
>                           (ns-appearance) (undecorated) (no-special-glyphs)
>                           (right-fringe . 8) (left-fringe . 8) (line-spacing)
>                           (background-color . "alice blue")
>                           (foreground-color . "Black")
>                           (horizontal-scroll-bars)
>                           (vertical-scroll-bars . right)
>                           (bottom-divider-width . 0) (right-divider-width . 0)
>                           (child-frame-border-width)
>                           (internal-border-width . 2) (border-width . 0)
>                           (font .
>                            "-*-Monaco-regular-normal-normal-*-12-*-*-*-m-0-iso10646-1")
>                           (fontsize . 0) (font-backend mac-ct)
>                           (minibuffer . t))
>  viper-minibuffer-vi-face [face unspecified unspecified unspecified unspecified unspecified unspecified
> unspecified unspecified unspecified unspecified unspecified unspecified unspecified unspecified unspecified
> unspecified unspecified unspecified unspecified]
>  viper-minibuffer-insert-face [face unspecified unspecified unspecified unspecified unspecified unspecified
> unspecified unspecified unspecified unspecified unspecified unspecified unspecified unspecified unspecified
> unspecified unspecified unspecified unspecified]
>  viper-minibuffer-emacs-face [face unspecified unspecified unspecified unspecified unspecified unspecified
> unspecified unspecified unspecified unspecified unspecified unspecified unspecified unspecified unspecified
> unspecified unspecified unspecified unspecified]
>  )
> --text follows this line--
> 
> -- 
> Michael L. Scott (he/him)
> Arthur Gould Yates Professor of Engineering
> Computer Science Department, University of Rochester
> scott <at> cs.rochester.edu; 585-275-5671, 5478
> http://www.cs.rochester.edu/u/scott/ 




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#78220; Package emacs. (Sat, 31 May 2025 02:04:09 GMT) Full text and rfc822 format available.

Message #11 received at 78220 <at> debbugs.gnu.org (full text, mbox):

From: Michael Kifer <kifer <at> cs.stonybrook.edu>
To: Eli Zaretskii <eliz <at> gnu.org>, "Scott, Michael" <scott <at> cs.rochester.edu>
Cc: 78220 <at> debbugs.gnu.org
Subject: Re: bug#78220: bug fix: viper-put-back and viper-Put-back do not set
 viper-d-com correctly
Date: Fri, 30 May 2025 22:02:46 -0400
I haven't  committed anything to emacs  repo for probably 15 years now  
and I  lost my access to the repository.

I would have loved it if I were  able to continue maintaining Viper and  
Ediff  but it's not  going to happen, realistically speaking.

michael


On 5/17/25 04:06, Eli Zaretskii wrote:
> Ping!  Michael, could you please look into this?
>
>> Date: Fri, 2 May 2025 20:28:17 +0000
>> From:  "Scott, Michael" via "Bug reports for GNU Emacs,
>>   the Swiss army knife of text editors" <bug-gnu-emacs <at> gnu.org>
>>
>> To: kifer <at> cs.stonybrook.edu, bug-gnu-emacs <at> gnu.org
>> Subject: Viper version is 3.14.2 of July 4, 2013; viper-put-back and viper-Put-back do
>> not correctly set viper-d-com
>> From: mls <scott <at> scott.cs.rochester.edu>
>>
>> Congratulations! You may have unearthed a bug in Viper!
>> Please mail a concise, accurate summary of the problem to the address above.
>>
>> In the code for viper-put-back and viper-Put-back, both in viper-cmd.el,
>> viper-use-register is reset to nil before calling viper-set-destructive-command.
>> It needs to happen after:
>>
>>   sigma> diff -c viper-cmd.el viper-cmd_fix.el
>>   *** viper-cmd.el Fri May  2 16:19:41 2025
>>   --- viper-cmd_fix.el Fri May  2 16:20:37 2025
>>   ***************
>>   *** 3865,3871 ****
>>          (setq viper-use-register nil)
>>          (error viper-EmptyRegister reg))
>>      (user-error viper-ViperBell)))
>>   -     (setq viper-use-register nil)
>>         (if (viper-end-with-a-newline-p text)
>>     (progn
>>      (end-of-line)
>>   --- 3865,3870 ----
>>   ***************
>>   *** 3877,3882 ****
>>   --- 3876,3882 ----
>>         (set-marker (mark-marker) (point) (current-buffer))
>>         (viper-set-destructive-command
>>          (list 'viper-put-back val nil viper-use-register nil nil))
>>   +     (setq viper-use-register nil)
>>         (setq sv-point (point))
>>         (viper-loop val (viper-yank text))
>>         (setq chars-inserted (abs (- (point) sv-point))
>>   ***************
>>   *** 3915,3924 ****
>>          (setq viper-use-register nil)
>>          (error viper-EmptyRegister reg))
>>      (user-error viper-ViperBell)))
>>   -     (setq viper-use-register nil)
>>         (if (viper-end-with-a-newline-p text) (beginning-of-line))
>>         (viper-set-destructive-command
>>          (list 'viper-Put-back val nil viper-use-register nil nil))
>>         (set-marker (mark-marker) (point) (current-buffer))
>>         (setq sv-point (point))
>>         (viper-loop val (viper-yank text))
>>   --- 3915,3924 ----
>>          (setq viper-use-register nil)
>>          (error viper-EmptyRegister reg))
>>      (user-error viper-ViperBell)))
>>         (if (viper-end-with-a-newline-p text) (beginning-of-line))
>>         (viper-set-destructive-command
>>          (list 'viper-Put-back val nil viper-use-register nil nil))
>>   +     (setq viper-use-register nil)
>>         (set-marker (mark-marker) (point) (current-buffer))
>>         (setq sv-point (point))
>>         (viper-loop val (viper-yank text))
>>   sigma>
>>
>> With this fix, a command like “xp or “xP will repeat correctly with the dot command.
>>
>> -------------------------------------------------------------------
>>
>> Emacs  : GNU Emacs 29.4 (build 1, aarch64-apple-darwin21.6.0, NS appkit-2113.60 Version 12.6.6 (Build
>> 21G646))
>>   of 2024-08-02
>> Package: Viper version is 3.14.2 of July 4, 2013
>>
>> current state:
>> ==============
>> (setq
>>   viper-vi-minibuffer-minor-mode nil
>>   viper-insert-minibuffer-minor-mode nil
>>   viper-vi-intercept-minor-mode t
>>   viper-vi-local-user-minor-mode t
>>   viper-vi-kbd-minor-mode t
>>   viper-vi-global-user-minor-mode t
>>   viper-vi-state-modifier-minor-mode t
>>   viper-vi-diehard-minor-mode nil
>>   viper-vi-basic-minor-mode t
>>   viper-replace-minor-mode nil
>>   viper-insert-intercept-minor-mode nil
>>   viper-insert-local-user-minor-mode nil
>>   viper-insert-kbd-minor-mode nil
>>   viper-insert-global-user-minor-mode nil
>>   viper-insert-state-modifier-minor-mode nil
>>   viper-insert-diehard-minor-mode nil
>>   viper-insert-basic-minor-mode nil
>>   viper-emacs-intercept-minor-mode nil
>>   viper-emacs-local-user-minor-mode nil
>>   viper-emacs-kbd-minor-mode nil
>>   viper-emacs-global-user-minor-mode nil
>>   viper-emacs-state-modifier-minor-mode nil
>>   viper-automatic-iso-accents nil
>>   viper-special-input-method nil
>>   viper-want-emacs-keys-in-insert t
>>   viper-want-emacs-keys-in-vi t
>>   viper-keep-point-on-undo nil
>>   viper-no-multiple-ESC t
>>   viper-electric-mode nil
>>   viper-ESC-key "`"
>>   viper-want-ctl-h-help nil
>>   viper-ex-style-editing nil
>>   viper-delete-backwards-in-replace nil
>>   viper-vi-style-in-minibuffer t
>>   viper-vi-state-hook 'viper-restore-cursor-type
>>   viper-insert-state-hook '(turn-on-auto-fill viper-set-insert-cursor-type)
>>   viper-replace-state-hook 'viper-restore-cursor-type
>>   viper-emacs-state-hook 'viper-restore-cursor-type
>>   ex-cycle-other-window t
>>   ex-cycle-through-non-files nil
>>   viper-expert-level 5
>>   major-mode 'fundamental-mode
>>   window-system 'ns
>>   x-display-color-p t
>>   viper-frame-parameters '((tool-bar-position . top) (parent-id)
>>                            (explicit-name) (display . "scott.cs.rochester.edu")
>>                            (visibility . t) (icon-name) (window-id . "1")
>>                            (top . 25) (left . 1526)
>>                            (buried-buffer-list #<buffer *Completions*> #<buffer
>>                             *viper-ask-level*>)
>>                            (buffer-list #<buffer .viper> #<buffer
>>                             viper-cmd.el.gz> #<buffer viper-init.el.gz>
>>                             #<buffer *Backtrace*> #<buffer *Help*> #<buffer
>>                             *Buffer List*> #<buffer chap.tex> #<buffer
>>                             CDex.tex<04_semantics>> #<buffer
>>                             2025-05-01_Yuan_Yao> #<buffer attr_grammars.tex>
>>                             #<buffer main.tex> #<buffer *scratch*> #<buffer
>>                             2025-04-10_hbeadle> #<buffer response.txt> #<buffer
>>                             notes> #<buffer 2025-04-29_rdong3+sree> #<buffer
>>                             CDex.tex<03_names>> #<buffer notes.txt>)
>>                            (unsplittable) (modeline . t) (width . 80)
>>                            (height . 86) (name . "Emacs-arm64-11 <at> sigma")
>>                            (last-focus-update . t)
>>                            (viper-vi-state-cursor-color . "firebrick")
>>                            (viper-saved-cursor-color-in-replace-mode .
>>                             "firebrick")
>>                            (environment) (font-parameter)
>>                            (cursor-color . "firebrick")
>>                            (background-mode . light) (display-type . color)
>>                            (scroll-bar-background) (scroll-bar-foreground)
>>                            (window-system . ns) (fullscreen) (alpha-background)
>>                            (alpha) (scroll-bar-height . 15)
>>                            (scroll-bar-width . 15) (cursor-type . box)
>>                            (auto-lower) (auto-raise) (icon-type) (title)
>>                            (buffer-predicate) (tool-bar-lines . 0)
>>                            (tab-bar-lines . 0) (menu-bar-lines . 0)
>>                            (no-accept-focus) (no-focus-on-map) (z-group)
>>                            (parent-frame) (ns-transparent-titlebar)
>>                            (ns-appearance) (undecorated) (no-special-glyphs)
>>                            (right-fringe . 8) (left-fringe . 8) (line-spacing)
>>                            (background-color . "alice blue")
>>                            (foreground-color . "Black")
>>                            (horizontal-scroll-bars)
>>                            (vertical-scroll-bars . right)
>>                            (bottom-divider-width . 0) (right-divider-width . 0)
>>                            (child-frame-border-width)
>>                            (internal-border-width . 2) (border-width . 0)
>>                            (font .
>>                             "-*-Monaco-regular-normal-normal-*-12-*-*-*-m-0-iso10646-1")
>>                            (fontsize . 0) (font-backend mac-ct)
>>                            (minibuffer . t))
>>   viper-minibuffer-vi-face [face unspecified unspecified unspecified unspecified unspecified unspecified
>> unspecified unspecified unspecified unspecified unspecified unspecified unspecified unspecified unspecified
>> unspecified unspecified unspecified unspecified]
>>   viper-minibuffer-insert-face [face unspecified unspecified unspecified unspecified unspecified unspecified
>> unspecified unspecified unspecified unspecified unspecified unspecified unspecified unspecified unspecified
>> unspecified unspecified unspecified unspecified]
>>   viper-minibuffer-emacs-face [face unspecified unspecified unspecified unspecified unspecified unspecified
>> unspecified unspecified unspecified unspecified unspecified unspecified unspecified unspecified unspecified
>> unspecified unspecified unspecified unspecified]
>>   )
>> --text follows this line--
>>
>> -- 
>> Michael L. Scott (he/him)
>> Arthur Gould Yates Professor of Engineering
>> Computer Science Department, University of Rochester
>> scott <at> cs.rochester.edu; 585-275-5671, 5478
>> http://www.cs.rochester.edu/u/scott/




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#78220; Package emacs. (Sat, 31 May 2025 06:48:06 GMT) Full text and rfc822 format available.

Message #14 received at 78220 <at> debbugs.gnu.org (full text, mbox):

From: "Michael L. Scott" <mlscott <at> acm.org>
To: Michael Kifer <kifer <at> cs.stonybrook.edu>
Cc: 78220 <at> debbugs.gnu.org, Eli Zaretskii <eliz <at> gnu.org>,
 Michael Scott <scott <at> cs.rochester.edu>
Subject: Re: [EXT] Re: bug#78220: bug fix: viper-put-back and viper-Put-back
 do not set viper-d-com correctly
Date: Fri, 30 May 2025 22:36:49 -0400
Too bad.  It's a beautiful package.  I've used it pretty much every day for more than 30 years.  I've patched my local copy; would love to be able to make a small contribution to the main repository.

- Michael

> On May 30, 2025, at 10:03 PM, Michael Kifer <kifer <at> cs.stonybrook.edu> wrote:
> 
> 
> I haven't  committed anything to emacs  repo for probably 15 years now  and I  lost my access to the repository.
> 
> I would have loved it if I were  able to continue maintaining Viper and  Ediff  but it's not  going to happen, realistically speaking.
> 
> michael
> 
> 
>> On 5/17/25 04:06, Eli Zaretskii wrote:
>> Ping!  Michael, could you please look into this?
>> 
>>> Date: Fri, 2 May 2025 20:28:17 +0000
>>> From:  "Scott, Michael" via "Bug reports for GNU Emacs,
>>>  the Swiss army knife of text editors" <bug-gnu-emacs <at> gnu.org>
>>> 
>>> To: kifer <at> cs.stonybrook.edu, bug-gnu-emacs <at> gnu.org
>>> Subject: Viper version is 3.14.2 of July 4, 2013; viper-put-back and viper-Put-back do
>>> not correctly set viper-d-com
>>> From: mls <scott <at> scott.cs.rochester.edu>
>>> 
>>> Congratulations! You may have unearthed a bug in Viper!
>>> Please mail a concise, accurate summary of the problem to the address above.
>>> 
>>> In the code for viper-put-back and viper-Put-back, both in viper-cmd.el,
>>> viper-use-register is reset to nil before calling viper-set-destructive-command.
>>> It needs to happen after:
>>> 
>>>  sigma> diff -c viper-cmd.el viper-cmd_fix.el
>>>  *** viper-cmd.el Fri May  2 16:19:41 2025
>>>  --- viper-cmd_fix.el Fri May  2 16:20:37 2025
>>>  ***************
>>>  *** 3865,3871 ****
>>>         (setq viper-use-register nil)
>>>         (error viper-EmptyRegister reg))
>>>     (user-error viper-ViperBell)))
>>>  -     (setq viper-use-register nil)
>>>        (if (viper-end-with-a-newline-p text)
>>>    (progn
>>>     (end-of-line)
>>>  --- 3865,3870 ----
>>>  ***************
>>>  *** 3877,3882 ****
>>>  --- 3876,3882 ----
>>>        (set-marker (mark-marker) (point) (current-buffer))
>>>        (viper-set-destructive-command
>>>         (list 'viper-put-back val nil viper-use-register nil nil))
>>>  +     (setq viper-use-register nil)
>>>        (setq sv-point (point))
>>>        (viper-loop val (viper-yank text))
>>>        (setq chars-inserted (abs (- (point) sv-point))
>>>  ***************
>>>  *** 3915,3924 ****
>>>         (setq viper-use-register nil)
>>>         (error viper-EmptyRegister reg))
>>>     (user-error viper-ViperBell)))
>>>  -     (setq viper-use-register nil)
>>>        (if (viper-end-with-a-newline-p text) (beginning-of-line))
>>>        (viper-set-destructive-command
>>>         (list 'viper-Put-back val nil viper-use-register nil nil))
>>>        (set-marker (mark-marker) (point) (current-buffer))
>>>        (setq sv-point (point))
>>>        (viper-loop val (viper-yank text))
>>>  --- 3915,3924 ----
>>>         (setq viper-use-register nil)
>>>         (error viper-EmptyRegister reg))
>>>     (user-error viper-ViperBell)))
>>>        (if (viper-end-with-a-newline-p text) (beginning-of-line))
>>>        (viper-set-destructive-command
>>>         (list 'viper-Put-back val nil viper-use-register nil nil))
>>>  +     (setq viper-use-register nil)
>>>        (set-marker (mark-marker) (point) (current-buffer))
>>>        (setq sv-point (point))
>>>        (viper-loop val (viper-yank text))
>>>  sigma>
>>> 
>>> With this fix, a command like “xp or “xP will repeat correctly with the dot command.
>>> 
>>> -------------------------------------------------------------------
>>> 
>>> Emacs  : GNU Emacs 29.4 (build 1, aarch64-apple-darwin21.6.0, NS appkit-2113.60 Version 12.6.6 (Build
>>> 21G646))
>>>  of 2024-08-02
>>> Package: Viper version is 3.14.2 of July 4, 2013
>>> 
>>> current state:
>>> ==============
>>> (setq
>>>  viper-vi-minibuffer-minor-mode nil
>>>  viper-insert-minibuffer-minor-mode nil
>>>  viper-vi-intercept-minor-mode t
>>>  viper-vi-local-user-minor-mode t
>>>  viper-vi-kbd-minor-mode t
>>>  viper-vi-global-user-minor-mode t
>>>  viper-vi-state-modifier-minor-mode t
>>>  viper-vi-diehard-minor-mode nil
>>>  viper-vi-basic-minor-mode t
>>>  viper-replace-minor-mode nil
>>>  viper-insert-intercept-minor-mode nil
>>>  viper-insert-local-user-minor-mode nil
>>>  viper-insert-kbd-minor-mode nil
>>>  viper-insert-global-user-minor-mode nil
>>>  viper-insert-state-modifier-minor-mode nil
>>>  viper-insert-diehard-minor-mode nil
>>>  viper-insert-basic-minor-mode nil
>>>  viper-emacs-intercept-minor-mode nil
>>>  viper-emacs-local-user-minor-mode nil
>>>  viper-emacs-kbd-minor-mode nil
>>>  viper-emacs-global-user-minor-mode nil
>>>  viper-emacs-state-modifier-minor-mode nil
>>>  viper-automatic-iso-accents nil
>>>  viper-special-input-method nil
>>>  viper-want-emacs-keys-in-insert t
>>>  viper-want-emacs-keys-in-vi t
>>>  viper-keep-point-on-undo nil
>>>  viper-no-multiple-ESC t
>>>  viper-electric-mode nil
>>>  viper-ESC-key "`"
>>>  viper-want-ctl-h-help nil
>>>  viper-ex-style-editing nil
>>>  viper-delete-backwards-in-replace nil
>>>  viper-vi-style-in-minibuffer t
>>>  viper-vi-state-hook 'viper-restore-cursor-type
>>>  viper-insert-state-hook '(turn-on-auto-fill viper-set-insert-cursor-type)
>>>  viper-replace-state-hook 'viper-restore-cursor-type
>>>  viper-emacs-state-hook 'viper-restore-cursor-type
>>>  ex-cycle-other-window t
>>>  ex-cycle-through-non-files nil
>>>  viper-expert-level 5
>>>  major-mode 'fundamental-mode
>>>  window-system 'ns
>>>  x-display-color-p t
>>>  viper-frame-parameters '((tool-bar-position . top) (parent-id)
>>>                           (explicit-name) (display . "scott.cs.rochester.edu")
>>>                           (visibility . t) (icon-name) (window-id . "1")
>>>                           (top . 25) (left . 1526)
>>>                           (buried-buffer-list #<buffer *Completions*> #<buffer
>>>                            *viper-ask-level*>)
>>>                           (buffer-list #<buffer .viper> #<buffer
>>>                            viper-cmd.el.gz> #<buffer viper-init.el.gz>
>>>                            #<buffer *Backtrace*> #<buffer *Help*> #<buffer
>>>                            *Buffer List*> #<buffer chap.tex> #<buffer
>>>                            CDex.tex<04_semantics>> #<buffer
>>>                            2025-05-01_Yuan_Yao> #<buffer attr_grammars.tex>
>>>                            #<buffer main.tex> #<buffer *scratch*> #<buffer
>>>                            2025-04-10_hbeadle> #<buffer response.txt> #<buffer
>>>                            notes> #<buffer 2025-04-29_rdong3+sree> #<buffer
>>>                            CDex.tex<03_names>> #<buffer notes.txt>)
>>>                           (unsplittable) (modeline . t) (width . 80)
>>>                           (height . 86) (name . "Emacs-arm64-11 <at> sigma")
>>>                           (last-focus-update . t)
>>>                           (viper-vi-state-cursor-color . "firebrick")
>>>                           (viper-saved-cursor-color-in-replace-mode .
>>>                            "firebrick")
>>>                           (environment) (font-parameter)
>>>                           (cursor-color . "firebrick")
>>>                           (background-mode . light) (display-type . color)
>>>                           (scroll-bar-background) (scroll-bar-foreground)
>>>                           (window-system . ns) (fullscreen) (alpha-background)
>>>                           (alpha) (scroll-bar-height . 15)
>>>                           (scroll-bar-width . 15) (cursor-type . box)
>>>                           (auto-lower) (auto-raise) (icon-type) (title)
>>>                           (buffer-predicate) (tool-bar-lines . 0)
>>>                           (tab-bar-lines . 0) (menu-bar-lines . 0)
>>>                           (no-accept-focus) (no-focus-on-map) (z-group)
>>>                           (parent-frame) (ns-transparent-titlebar)
>>>                           (ns-appearance) (undecorated) (no-special-glyphs)
>>>                           (right-fringe . 8) (left-fringe . 8) (line-spacing)
>>>                           (background-color . "alice blue")
>>>                           (foreground-color . "Black")
>>>                           (horizontal-scroll-bars)
>>>                           (vertical-scroll-bars . right)
>>>                           (bottom-divider-width . 0) (right-divider-width . 0)
>>>                           (child-frame-border-width)
>>>                           (internal-border-width . 2) (border-width . 0)
>>>                           (font .
>>>                            "-*-Monaco-regular-normal-normal-*-12-*-*-*-m-0-iso10646-1")
>>>                           (fontsize . 0) (font-backend mac-ct)
>>>                           (minibuffer . t))
>>>  viper-minibuffer-vi-face [face unspecified unspecified unspecified unspecified unspecified unspecified
>>> unspecified unspecified unspecified unspecified unspecified unspecified unspecified unspecified unspecified
>>> unspecified unspecified unspecified unspecified]
>>>  viper-minibuffer-insert-face [face unspecified unspecified unspecified unspecified unspecified unspecified
>>> unspecified unspecified unspecified unspecified unspecified unspecified unspecified unspecified unspecified
>>> unspecified unspecified unspecified unspecified]
>>>  viper-minibuffer-emacs-face [face unspecified unspecified unspecified unspecified unspecified unspecified
>>> unspecified unspecified unspecified unspecified unspecified unspecified unspecified unspecified unspecified
>>> unspecified unspecified unspecified unspecified]
>>>  )
>>> --text follows this line--
>>> 
>>> --
>>> Michael L. Scott (he/him)
>>> Arthur Gould Yates Professor of Engineering
>>> Computer Science Department, University of Rochester
>>> scott <at> cs.rochester.edu; 585-275-5671, 5478
>>> http://www.cs.rochester.edu/u/scott/




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#78220; Package emacs. (Sat, 31 May 2025 07:13:02 GMT) Full text and rfc822 format available.

Message #17 received at 78220 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Michael Kifer <kifer <at> cs.stonybrook.edu>
Cc: 78220 <at> debbugs.gnu.org, scott <at> cs.rochester.edu
Subject: Re: bug#78220: bug fix: viper-put-back and viper-Put-back do not set
 viper-d-com correctly
Date: Sat, 31 May 2025 10:12:31 +0300
> Date: Fri, 30 May 2025 22:02:46 -0400
> Cc: 78220 <at> debbugs.gnu.org
> From: Michael Kifer <kifer <at> cs.stonybrook.edu>
> 
> 
> I haven't  committed anything to emacs  repo for probably 15 years now  
> and I  lost my access to the repository.
> 
> I would have loved it if I were  able to continue maintaining Viper and  
> Ediff  but it's not  going to happen, realistically speaking.

OK, understood.

Does the patch sound reasonable to you?




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#78220; Package emacs. (Sat, 31 May 2025 13:27:06 GMT) Full text and rfc822 format available.

Message #20 received at 78220 <at> debbugs.gnu.org (full text, mbox):

From: "Scott, Michael" <scott <at> cs.rochester.edu>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: "78220 <at> debbugs.gnu.org" <78220 <at> debbugs.gnu.org>,
 Michael Kifer <kifer <at> cs.stonybrook.edu>
Subject: Re: [EXT] bug#78220: bug fix: viper-put-back and viper-Put-back do
 not set viper-d-com correctly
Date: Sat, 31 May 2025 13:25:52 +0000
It’s purpose, in case that wasn’t clear, is to allow put (‘p’) commands to be correctly repeated.

- Michael

> On May 31, 2025, at 3:12 AM, Eli Zaretskii <eliz <at> gnu.org> wrote:
> 
>> Date: Fri, 30 May 2025 22:02:46 -0400
>> Cc: 78220 <at> debbugs.gnu.org
>> From: Michael Kifer <kifer <at> cs.stonybrook.edu>
>> 
>> 
>> I haven't  committed anything to emacs  repo for probably 15 years now  
>> and I  lost my access to the repository.
>> 
>> I would have loved it if I were  able to continue maintaining Viper and  
>> Ediff  but it's not  going to happen, realistically speaking.
> 
> OK, understood.
> 
> Does the patch sound reasonable to you?


Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#78220; Package emacs. (Sat, 28 Jun 2025 08:47:03 GMT) Full text and rfc822 format available.

Message #23 received at 78220 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: kifer <at> cs.stonybrook.edu, scott <at> cs.rochester.edu
Cc: 78220 <at> debbugs.gnu.org
Subject: Re: bug#78220: bug fix: viper-put-back and viper-Put-back do not set
 viper-d-com correctly
Date: Sat, 28 Jun 2025 11:46:42 +0300
> Cc: 78220 <at> debbugs.gnu.org, scott <at> cs.rochester.edu
> Date: Sat, 31 May 2025 10:12:31 +0300
> From: Eli Zaretskii <eliz <at> gnu.org>
> 
> > Date: Fri, 30 May 2025 22:02:46 -0400
> > Cc: 78220 <at> debbugs.gnu.org
> > From: Michael Kifer <kifer <at> cs.stonybrook.edu>
> > 
> > 
> > I haven't  committed anything to emacs  repo for probably 15 years now  
> > and I  lost my access to the repository.
> > 
> > I would have loved it if I were  able to continue maintaining Viper and  
> > Ediff  but it's not  going to happen, realistically speaking.
> 
> OK, understood.
> 
> Does the patch sound reasonable to you?

No further comments, so I have now installed the proposed patch on the
master branch, and I'm therefore closing this bug.




Reply sent to Eli Zaretskii <eliz <at> gnu.org>:
You have taken responsibility. (Sat, 28 Jun 2025 08:48:02 GMT) Full text and rfc822 format available.

Notification sent to "Scott, Michael" <scott <at> cs.rochester.edu>:
bug acknowledged by developer. (Sat, 28 Jun 2025 08:48:02 GMT) Full text and rfc822 format available.

Message #28 received at 78220-done <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: 78220-done <at> debbugs.gnu.org
Subject: Re: bug#78220: bug fix: viper-put-back and viper-Put-back do not set
 viper-d-com correctly
Date: Sat, 28 Jun 2025 11:47:03 +0300
Closing.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#78220; Package emacs. (Sun, 29 Jun 2025 02:24:03 GMT) Full text and rfc822 format available.

Message #31 received at 78220 <at> debbugs.gnu.org (full text, mbox):

From: Michael Kifer <kifer <at> cs.stonybrook.edu>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: 78220 <at> debbugs.gnu.org, scott <at> cs.rochester.edu
Subject: Re: bug#78220: bug fix: viper-put-back and viper-Put-back do not
 set viper-d-com correctly
Date: Sat, 28 Jun 2025 22:23:04 -0400 (EDT)
[Message part 1 (text/plain, inline)]
Thank you, Eli

Jun 28, 2025 04:46:46 Eli Zaretskii <eliz <at> gnu.org>:

>> Cc: 78220 <at> debbugs.gnu.org, scott <at> cs.rochester.edu
>> Date: Sat, 31 May 2025 10:12:31 +0300
>> From: Eli Zaretskii <eliz <at> gnu.org>
>> 
>>> Date: Fri, 30 May 2025 22:02:46 -0400
>>> Cc: 78220 <at> debbugs.gnu.org
>>> From: Michael Kifer <kifer <at> cs.stonybrook.edu>
>>> 
>>> 
>>> I haven't  committed anything to emacs  repo for probably 15 years now 
>>> and I  lost my access to the repository.
>>> 
>>> I would have loved it if I were  able to continue maintaining Viper and 
>>> Ediff  but it's not  going to happen, realistically speaking.
>> 
>> OK, understood.
>> 
>> Does the patch sound reasonable to you?
> 
> No further comments, so I have now installed the proposed patch on the
> master branch, and I'm therefore closing this bug.
[Message part 2 (text/html, inline)]

bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Sun, 27 Jul 2025 11:24:06 GMT) Full text and rfc822 format available.

This bug report was last modified 13 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.