Subject: bug#27974: 25.2; string-rectangle on-the-fly preview bad

From: Bob Proulx <[email-masked]>
Date: Sat, 05 Aug 2017 13:56:21 -0600

The command C-x r t string-rectangle in version 24 and previously
would "Replace rectangle contents with STRING on each line
(‘string-rectangle’)."  The same happens in version 25 but
differently.  In version 25 the change is displayed incrementally
character by character as you type as a dynamic preview.  With a large
displayed rectangle this can cause a lot of dynamic "flicker" as every
character on the display is moved.  This is driving me crazy.

I raised this issue on help-gnu-emacs.  I and at least one other person
thinks this preview feature should be optional even if it is the
default.  I think it is a pretty radical change however and would wish
it were not the default.  But at the least it needs to be possible to
disable the dynamic preview.  I really hate this feature.

Thanks,
Bob

P.S. The NEWS file says:

*** 'string-rectangle' provides on-the-fly preview of the result.

In GNU Emacs 25.2.1 (x86_64-pc-linux-gnu, X toolkit, Xaw3d scroll bars)
 of 2017-07-31, modified by Debian built on trouble
System Description:	Debian GNU/Linux unstable (sid)

Configured using:
 'configure --build x86_64-linux-gnu --prefix=/usr
 --sharedstatedir=/var/lib --libexecdir=/usr/lib
 --localstatedir=/var/lib --infodir=/usr/share/info
 --mandir=/usr/share/man --with-pop=yes
 --enable-locallisppath=/etc/emacs25:/etc/emacs:/usr/local/share/emacs/25.2/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/25.2/site-lisp:/usr/share/emacs/site-lisp
 --with-sound=alsa --without-gconf --build x86_64-linux-gnu
 --prefix=/usr --sharedstatedir=/var/lib --libexecdir=/usr/lib
 --localstatedir=/var/lib --infodir=/usr/share/info
 --mandir=/usr/share/man --with-pop=yes
 --enable-locallisppath=/etc/emacs25:/etc/emacs:/usr/local/share/emacs/25.2/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/25.2/site-lisp:/usr/share/emacs/site-lisp
 --with-sound=alsa --without-gconf --with-x=yes --with-x-toolkit=lucid
 --with-toolkit-scroll-bars --without-gsettings 'CFLAGS=-g -O2
 -fdebug-prefix-map=/build/emacs25-Ei2Old/emacs25-25.2+1=. -fstack-protector-strong
 -Wformat -Werror=format-security -Wall' 'CPPFLAGS=-Wdate-time
 -D_FORTIFY_SOURCE=2' LDFLAGS=-Wl,-z,relro'

Configured features:
XAW3D XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND GPM DBUS NOTIFY ACL
LIBSELINUX GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB
TOOLKIT_SCROLL_BARS LUCID X11

Important settings:
  value of $LC_COLLATE: C
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Fundamental

Minor modes in effect:
  shell-dirtrack-mode: t
  diff-auto-refine-mode: t
  csv-field-index-mode: t
  display-time-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t

Recent messages:
Quit
Saving file /home/bob/scratch...
Wrote /home/bob/scratch
Mark set [3 times]
Saving file /home/bob/private/slog...
Wrote /home/bob/private/slog
Use C-c C-c to remember the data.
kill-line: End of buffer
Saving file /home/bob/.notes...
Wrote /home/bob/.notes

Load-path shadows:
/usr/share/emacs/25.2/site-lisp/elpa/jabber-0.8.92/fsm hides /usr/share/emacs/25.2/site-lisp/elpa/fsm-0.2.1/fsm
/usr/share/emacs25/site-lisp/css-mode/css-mode hides /usr/share/emacs/site-lisp/css-mode/css-mode
/usr/share/emacs/25.2/site-lisp/elpa/magit-2.10.3/magit-popup hides /usr/share/emacs/25.2/site-lisp/elpa/magit-popup-2.10.3/magit-popup
/usr/share/emacs25/site-lisp/cmake-data/cmake-mode hides /usr/share/emacs/site-lisp/cmake-mode
/usr/share/emacs/25.2/site-lisp/debian-startup hides /usr/share/emacs/site-lisp/debian-startup
/usr/share/emacs25/site-lisp/flim/hex-util hides /usr/share/emacs/25.2/lisp/hex-util
/usr/share/emacs25/site-lisp/flim/md4 hides /usr/share/emacs/25.2/lisp/md4
/usr/share/emacs25/site-lisp/css-mode/css-mode hides /usr/share/emacs/25.2/lisp/textmodes/css-mode
/usr/share/emacs/site-lisp/remember-el/remember hides /usr/share/emacs/25.2/lisp/textmodes/remember
/usr/share/emacs/site-lisp/rst hides /usr/share/emacs/25.2/lisp/textmodes/rst
/usr/share/emacs25/site-lisp/flim/sasl-cram hides /usr/share/emacs/25.2/lisp/net/sasl-cram
/usr/share/emacs25/site-lisp/flim/ntlm hides /usr/share/emacs/25.2/lisp/net/ntlm
/usr/share/emacs25/site-lisp/flim/sasl-ntlm hides /usr/share/emacs/25.2/lisp/net/sasl-ntlm
/usr/share/emacs25/site-lisp/flim/sasl hides /usr/share/emacs/25.2/lisp/net/sasl
/usr/share/emacs25/site-lisp/flim/hmac-md5 hides /usr/share/emacs/25.2/lisp/net/hmac-md5
/usr/share/emacs25/site-lisp/flim/sasl-digest hides /usr/share/emacs/25.2/lisp/net/sasl-digest
/usr/share/emacs25/site-lisp/flim/hmac-def hides /usr/share/emacs/25.2/lisp/net/hmac-def
/usr/share/emacs25/site-lisp/erc/erc-ring hides /usr/share/emacs/25.2/lisp/erc/erc-ring
/usr/share/emacs25/site-lisp/erc/erc-truncate hides /usr/share/emacs/25.2/lisp/erc/erc-truncate
/usr/share/emacs25/site-lisp/erc/erc-match hides /usr/share/emacs/25.2/lisp/erc/erc-match
/usr/share/emacs25/site-lisp/erc/erc-autoaway hides /usr/share/emacs/25.2/lisp/erc/erc-autoaway
/usr/share/emacs25/site-lisp/erc/erc-button hides /usr/share/emacs/25.2/lisp/erc/erc-button
/usr/share/emacs25/site-lisp/erc/erc-goodies hides /usr/share/emacs/25.2/lisp/erc/erc-goodies
/usr/share/emacs25/site-lisp/erc/erc-notify hides /usr/share/emacs/25.2/lisp/erc/erc-notify
/usr/share/emacs25/site-lisp/erc/erc-backend hides /usr/share/emacs/25.2/lisp/erc/erc-backend
/usr/share/emacs25/site-lisp/erc/erc-xdcc hides /usr/share/emacs/25.2/lisp/erc/erc-xdcc
/usr/share/emacs25/site-lisp/erc/erc-join hides /usr/share/emacs/25.2/lisp/erc/erc-join
/usr/share/emacs25/site-lisp/erc/erc-pcomplete hides /usr/share/emacs/25.2/lisp/erc/erc-pcomplete
/usr/share/emacs25/site-lisp/erc/erc-identd hides /usr/share/emacs/25.2/lisp/erc/erc-identd
/usr/share/emacs25/site-lisp/erc/erc-stamp hides /usr/share/emacs/25.2/lisp/erc/erc-stamp
/usr/share/emacs25/site-lisp/erc/erc-page hides /usr/share/emacs/25.2/lisp/erc/erc-page
/usr/share/emacs25/site-lisp/erc/erc hides /usr/share/emacs/25.2/lisp/erc/erc
/usr/share/emacs25/site-lisp/erc/erc-sound hides /usr/share/emacs/25.2/lisp/erc/erc-sound
/usr/share/emacs25/site-lisp/erc/erc-replace hides /usr/share/emacs/25.2/lisp/erc/erc-replace
/usr/share/emacs25/site-lisp/erc/erc-log hides /usr/share/emacs/25.2/lisp/erc/erc-log
/usr/share/emacs25/site-lisp/erc/erc-track hides /usr/share/emacs/25.2/lisp/erc/erc-track
/usr/share/emacs25/site-lisp/erc/erc-imenu hides /usr/share/emacs/25.2/lisp/erc/erc-imenu
/usr/share/emacs25/site-lisp/erc/erc-capab hides /usr/share/emacs/25.2/lisp/erc/erc-capab
/usr/share/emacs25/site-lisp/erc/erc-lang hides /usr/share/emacs/25.2/lisp/erc/erc-lang
/usr/share/emacs25/site-lisp/erc/erc-services hides /usr/share/emacs/25.2/lisp/erc/erc-services
/usr/share/emacs25/site-lisp/erc/erc-ezbounce hides /usr/share/emacs/25.2/lisp/erc/erc-ezbounce
/usr/share/emacs25/site-lisp/erc/erc-speedbar hides /usr/share/emacs/25.2/lisp/erc/erc-speedbar
/usr/share/emacs25/site-lisp/erc/erc-spelling hides /usr/share/emacs/25.2/lisp/erc/erc-spelling
/usr/share/emacs25/site-lisp/erc/erc-list hides /usr/share/emacs/25.2/lisp/erc/erc-list
/usr/share/emacs25/site-lisp/erc/erc-dcc hides /usr/share/emacs/25.2/lisp/erc/erc-dcc
/usr/share/emacs25/site-lisp/erc/erc-menu hides /usr/share/emacs/25.2/lisp/erc/erc-menu
/usr/share/emacs25/site-lisp/erc/erc-netsplit hides /usr/share/emacs/25.2/lisp/erc/erc-netsplit
/usr/share/emacs25/site-lisp/erc/erc-networks hides /usr/share/emacs/25.2/lisp/erc/erc-networks
/usr/share/emacs25/site-lisp/erc/erc-compat hides /usr/share/emacs/25.2/lisp/erc/erc-compat
/usr/share/emacs25/site-lisp/erc/erc-fill hides /usr/share/emacs/25.2/lisp/erc/erc-fill
/usr/share/emacs25/site-lisp/erc/erc-ibuffer hides /usr/share/emacs/25.2/lisp/erc/erc-ibuffer
/usr/share/emacs25/site-lisp/erc/erc-hecomplete hides /usr/share/emacs/25.2/lisp/obsolete/erc-hecomplete

Features:
(shadow mail-extr emacsbug message format-spec rfc822 mml mml-sec
password-cache epg gnus-util mm-decode mm-bodies mm-encode mail-parse
rfc2231 mailabbrev gmm-utils mailheader sendmail rfc2047 rfc2045
ietf-drums mm-util help-fns mail-prsvr mail-utils remember cal-move
cal-menu calendar cal-loaddefs noutline outline sh-script executable
dired-aux shell pcomplete comint ring vc-git diff-mode ruby-mode smie
ebuff-menu csv-mode sort muttrc-mode man ansi-color misearch
multi-isearch advice minibuffer-complete-cycle dired term/xterm xterm
time-date time t-mouse finder-inf muse-autoloads package epg-config seq
byte-opt gv bytecomp byte-compile cl-extra help-mode easymenu cconv
cl-loaddefs pcase cl-lib remember-autoloads planner-autoloads debian-el
debian-el-loaddefs w3m-load erc-auto emacs-goodies-el
emacs-goodies-custom emacs-goodies-loaddefs easy-mmode dpkg-dev-el
dpkg-dev-el-loaddefs bbdb-autoloads mule-util tooltip eldoc electric
uniquify ediff-hook vc-hooks lisp-float-type mwheel x-win
term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe
tabulated-list newcomment elisp-mode lisp-mode prog-mode register page
menu-bar rfn-eshadow timer select scroll-bar mouse jit-lock font-lock
syntax facemenu font-core frame cl-generic cham georgian utf-8-lang
misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms
cp51932 hebrew greek romanian slovak czech european ethiopic indian
cyrillic chinese charscript case-table epa-hook jka-cmpr-hook help
simple abbrev minibuffer cl-preloaded nadvice loaddefs button faces
cus-face macroexp files text-properties overlay sha1 md5 base64 format
env code-pages mule custom widget hashtable-print-readable backquote
dbusbind inotify dynamic-setting font-render-setting x-toolkit x
multi-tty make-network-process emacs)

Memory information:
((conses 16 177712 15387)
 (symbols 48 25237 0)
 (miscs 40 237 538)
 (strings 32 33554 11024)
 (string-bytes 1 1076059)
 (vectors 16 22757)
 (vector-slots 8 1330894 213593)
 (floats 8 212 685)
 (intervals 56 10105 98)
 (buffers 976 40))