* bug#10835: 24.0.93; bidi-paragraph-direction slows down Shell mode
@ 2012-02-17 5:41 Chong Yidong
2012-02-17 5:48 ` Chong Yidong
0 siblings, 1 reply; 13+ messages in thread
From: Chong Yidong @ 2012-02-17 5:41 UTC (permalink / raw
To: 10835
See thread discussion here:
http://lists.gnu.org/archive/html/emacs-devel/2012-02/msg00517.html
To recap:
1. emacs -Q
2. M-x shell RET
3. ls /usr/share/doc (Prints about 2000 lines on my computer)
4. Repeat step 6-7 times (e.g. M-p RET)
The insertion of the shell output is significantly slower than in Emacs
23. If you set `bidi-paragraph-direction' to `left-to-right', the
slowdown mostly disappears.
If you scroll the shell buffer, it is also more sluggish when
`bidi-paragraph-direction' is nil.
Another observation: if you save the *shell* buffer to a file and visit
the file in another Emacs instance, there is no sluggishness if the file
is opened in (say) text mode. Maybe something in Shell mode is
interacting badly with the bidi code, but I don't know what.
In GNU Emacs 24.0.93.7 (x86_64-unknown-linux-gnu, GTK+ Version 3.2.0)
of 2012-02-15 on furball
Windowing system distributor `The X.Org Foundation', version 11.0.11004000
Configured using:
`configure '--with-x-toolkit=gtk3' 'CFLAGS=-g''
Important settings:
value of $LC_ALL: nil
value of $LC_COLLATE: en_US.UTF-8
value of $LC_CTYPE: en_US.UTF-8
value of $LC_MESSAGES: en_US.UTF-8
value of $LC_MONETARY: nil
value of $LC_NUMERIC: nil
value of $LC_TIME: nil
value of $LANG: en_US.UTF-8
value of $XMODIFIERS: nil
locale-coding-system: utf-8-unix
default enable-multibyte-characters: t
Major mode: Emacs-Lisp
^ permalink raw reply [flat|nested] 13+ messages in thread
* bug#10835: 24.0.93; bidi-paragraph-direction slows down Shell mode
2012-02-17 5:41 bug#10835: 24.0.93; bidi-paragraph-direction slows down Shell mode Chong Yidong
@ 2012-02-17 5:48 ` Chong Yidong
2012-02-17 8:21 ` Andreas Schwab
2012-02-17 16:08 ` Eli Zaretskii
0 siblings, 2 replies; 13+ messages in thread
From: Chong Yidong @ 2012-02-17 5:48 UTC (permalink / raw
To: 10835
Chong Yidong <cyd@gnu.org> writes:
> http://lists.gnu.org/archive/html/emacs-devel/2012-02/msg00517.html
>
> 1. emacs -Q
> 2. M-x shell RET
> 3. ls /usr/share/doc (Prints about 2000 lines on my computer)
> 4. Repeat step 6-7 times (e.g. M-p RET)
To follow up on some questions from the thread:
> I see nothing like that, the display never freezes. Strange. What
> kind of CPU do you have there? Is it a GUI session or a TTY session?
> Does Emacs run on the local machine or remote one?
It happens on both GUI sessions and TTY, run locally on an Intel i7
processor; Emacs was compiled without optimizations.
^ permalink raw reply [flat|nested] 13+ messages in thread
* bug#10835: 24.0.93; bidi-paragraph-direction slows down Shell mode
2012-02-17 5:48 ` Chong Yidong
@ 2012-02-17 8:21 ` Andreas Schwab
2012-02-17 13:42 ` Chong Yidong
2012-02-17 16:08 ` Eli Zaretskii
1 sibling, 1 reply; 13+ messages in thread
From: Andreas Schwab @ 2012-02-17 8:21 UTC (permalink / raw
To: Chong Yidong; +Cc: 10835
Chong Yidong <cyd@gnu.org> writes:
> Chong Yidong <cyd@gnu.org> writes:
>
>> http://lists.gnu.org/archive/html/emacs-devel/2012-02/msg00517.html
>>
>> 1. emacs -Q
>> 2. M-x shell RET
>> 3. ls /usr/share/doc (Prints about 2000 lines on my computer)
>> 4. Repeat step 6-7 times (e.g. M-p RET)
What is your shell prompt?
Andreas.
--
Andreas Schwab, schwab@linux-m68k.org
GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5
"And now for something completely different."
^ permalink raw reply [flat|nested] 13+ messages in thread
* bug#10835: 24.0.93; bidi-paragraph-direction slows down Shell mode
2012-02-17 8:21 ` Andreas Schwab
@ 2012-02-17 13:42 ` Chong Yidong
0 siblings, 0 replies; 13+ messages in thread
From: Chong Yidong @ 2012-02-17 13:42 UTC (permalink / raw
To: Andreas Schwab; +Cc: 10835
Andreas Schwab <schwab@linux-m68k.org> writes:
> Chong Yidong <cyd@gnu.org> writes:
>
>> Chong Yidong <cyd@gnu.org> writes:
>>
>>> http://lists.gnu.org/archive/html/emacs-devel/2012-02/msg00517.html
>>>
>>> 1. emacs -Q
>>> 2. M-x shell RET
>>> 3. ls /usr/share/doc (Prints about 2000 lines on my computer)
>>> 4. Repeat step 6-7 times (e.g. M-p RET)
>
> What is your shell prompt?
PS1='\w \$ '
^ permalink raw reply [flat|nested] 13+ messages in thread
* bug#10835: 24.0.93; bidi-paragraph-direction slows down Shell mode
2012-02-17 5:48 ` Chong Yidong
2012-02-17 8:21 ` Andreas Schwab
@ 2012-02-17 16:08 ` Eli Zaretskii
2012-02-17 17:39 ` Chong Yidong
1 sibling, 1 reply; 13+ messages in thread
From: Eli Zaretskii @ 2012-02-17 16:08 UTC (permalink / raw
To: Chong Yidong; +Cc: 10835
> From: Chong Yidong <cyd@gnu.org>
> Date: Fri, 17 Feb 2012 13:48:26 +0800
>
> It happens on both GUI sessions and TTY, run locally on an Intel i7
> processor; Emacs was compiled without optimizations.
On an i7, I'd expect no slowdown at all.
How much time does it take `ls' to produce that 2K-line listing on
your machine, outside of Emacs and with a warm cache?
Also, can you put a printf after this line from xdisp.c:
else if (it->bidi_it.charpos == bob
|| (!string_p
&& (FETCH_CHAR (it->bidi_it.bytepos - 1) == '\n'
|| FETCH_CHAR (it->bidi_it.bytepos) == '\n')))
{
/* If we are at the beginning of a line/string, we can produce
the next element right away. */
bidi_paragraph_init (it->paragraph_embedding, &it->bidi_it, 1); <<<<<<
and tell me once in how many characters or lines of input from `ls' is
bidi_paragraph_init called here? E.g., to see the character count,
print it->bidi_it.charpos just before that line. (You could do the
same from breakpoint commands, but I'm afraid that doing so will
change the timing of how frequently the process output is read by
Emacs, and will therefore produce a biased estimation.)
TIA
^ permalink raw reply [flat|nested] 13+ messages in thread
* bug#10835: 24.0.93; bidi-paragraph-direction slows down Shell mode
2012-02-17 16:08 ` Eli Zaretskii
@ 2012-02-17 17:39 ` Chong Yidong
2012-02-17 18:27 ` Eli Zaretskii
0 siblings, 1 reply; 13+ messages in thread
From: Chong Yidong @ 2012-02-17 17:39 UTC (permalink / raw
To: Eli Zaretskii; +Cc: 10835
[-- Attachment #1: Type: text/plain, Size: 1775 bytes --]
Eli Zaretskii <eliz@gnu.org> writes:
> can you put a printf after this line from xdisp.c:
>
> else if (it->bidi_it.charpos == bob
> || (!string_p
> && (FETCH_CHAR (it->bidi_it.bytepos - 1) == '\n'
> || FETCH_CHAR (it->bidi_it.bytepos) == '\n')))
> {
> /* If we are at the beginning of a line/string, we can produce
> the next element right away. */
> bidi_paragraph_init (it->paragraph_embedding, &it->bidi_it, 1); <<<<<<
>
> and tell me once in how many characters or lines of input from `ls' is
> bidi_paragraph_init called here? E.g., to see the character count,
> print it->bidi_it.charpos just before that line.
Here are the line numbers at which the printf is triggered (and how many
times consecutively they get triggered, in parentheses):
1 (x 5)
0 (x 16)
10 (x 2)
1 (x 3)
0 (x 16)
68 (x 4)
37
1606 (x 3)
0 (x 16)
125 (x 4)
94
93 (x 3)
0 (x 16)
183 (x 4)
152
151 (x 3)
0 (x 16)
241 (x 4)
210 (x 4)
0 (x 16)
299 (x 4)
268
267 (x 3)
0 (x 16)
358 (x 4)
327
326 (x 3)
0 (x 16)
417 (x 4)
386
385 (x 3)
0 (x 16)
476 (x 4)
445
444 (x 3)
0 (x 16)
533 (x 4)
502
501 (x 3)
0 (x 16)
590 (x 4)
559
558 (x 3)
0 (x 16)
...
and so on. This is over one single ls call. The 0's are when
it->bidi_it.charpos == 0, the rest are charpos's converted into buffer
line numbers.
The pattern seems to be 3 calls at each window end, then 1 on the second
line of the window, then 4 on the first window line.
After many `ls' calls, when redisplay has become sluggish, the pattern is
the same.
...
6788 (x 4)
6757
6756 (x 3)
0 (x 16)
6846 (x 4)
6815
6814 (x 3)
0 (x 16)
6897 (x 4)
6866
6865 (x 3)
0 (x 16)
The shell output for one ls call is attached, in case it is useful.
[-- Attachment #2: shell.txt --]
[-- Type: text/plain, Size: 40394 bytes --]
~ $ ls /usr/share/doc
accountsservice libnm-util2
acl libnotify4
acpid libnspr4
acpi-support libnspr4-0d
ada-reference-manual-text libnss3
adduser libnss3-1d
adium-theme-ubuntu libnss-mdns
alacarte libnuma1
alsa-base libnux-1.0-0
alsa-utils libnux-1.0-common
anacron liboauth0
apache2 libofa0
apache2.2-bin libogg0
apache2.2-common liboil0.3
apache2-mpm-worker libopenal1
apache2-utils libopencore-amrnb0
apg libopencore-amrwb0
apparmor libopenexr6
app-install-data libopenmpi1.3
app-install-data-partner libopenmpi-dev
apport libopenobex1
apport-hooks-medibuntu liborbit2
apport-symptoms liborc-0.4-0
apt libp11-kit0
aptdaemon libpam0g
aptdaemon-data libpam-ck-connector
apt-transport-https libpam-gnome-keyring
apturl libpam-modules
apturl-common libpam-modules-bin
apt-utils libpam-runtime
aspell libpanel-applet-4-0
aspell-en libpango1.0-0
at libpango1.0-dev
autoconf libpangomm-1.4-1
automake libpango-perl
autotools-dev libpaper1
avahi-autoipd libpaper-utils
avahi-daemon libparted0debian1
avahi-utils libpathplan4
bamfdaemon libpcap0.8
baobab libpci3
base-files libpciaccess0
base-passwd libpcre3
bash libpcrecpp0
bash-completion libpcsclite1
bc libpeas-1.0-0
bind9-host libpeas-common
binfmt-support libperl5.12
binutils libpipeline1
blcr-dkms libpixman-1-0
blcr-util libpixman-1-dev
blt libplist1
bluez libplymouth2
bluez-alsa libpng12-0
bluez-cups libpng12-dev
bluez-gstreamer libpod-plainer-perl
brasero libpolkit-agent-1-0
brasero-cdrkit libpolkit-backend-1-0
brasero-common libpolkit-gobject-1-0
bsdmainutils libpoppler13
bsdutils libpoppler-glib6
build-essential libpopt0
busybox-initramfs libpostproc52
busybox-static libprotobuf7
bzip2 libproxy0
bzr libpth20
bzrtools libpthread-stubs0
c2esp libpthread-stubs0-dev
cabextract libpulse0
ca-certificates libpulse-mainloop-glib0
ca-certificates-java libpurple0
caribou libpurple-bin
clisp libpython2.7
cmap-adobe-japan1 libqhull5
colord libqrupdate1
compiz libqt4-dbus
compizconfig-backend-gconf libqt4-declarative
compizconfig-settings-manager libqt4-designer
compiz-core libqt4-network
compiz-gnome libqt4-opengl
compiz-plugins libqt4-qt3support
compiz-plugins-default libqt4-script
compiz-plugins-main libqt4-scripttools
compiz-plugins-main-default libqt4-sql
consolekit libqt4-sql-mysql
console-setup libqt4-svg
coreutils libqt4-test
cpio libqt4-xml
cpp libqt4-xmlpatterns
cpp-4.4 libqtbamf1
cpp-4.6 libqtcore4
cron libqtdee2
cups libqtgconf1
cups-bsd libqtgui4
cups-client libquadmath0
cups-common libquvi0
cups-driver-gutenprint libraptor2-0
cups-pk-helper librarian0
cups-ppdc librasqal3
curl libraw1394-11
cvs librdf0
dash libreadline5
dbus libreadline6
dbus-x11 libreadline6-dev
dc libreadline-dev
dconf-gsettings-backend libreoffice-base-core
debconf libreoffice-calc
debconf-i18n libreoffice-common
debhelper libreoffice-core
debianutils libreoffice-draw
deborphan libreoffice-emailmerge
defoma libreoffice-gnome
desktop-base libreoffice-gtk
desktop-file-utils libreoffice-impress
dialog libreoffice-math
dictionaries-common libreoffice-style-human
diffutils libreoffice-writer
dkms librest-0.7-0
dmidecode librsvg2-2
dmsetup librsvg2-common
dnsmasq-base librtmp0
dnsutils libruby1.8
doc-base libsamplerate0
docbook-xml libsane
dosfstools libsane-hpaio
dpkg libsasl2-2
dpkg-dev libsasl2-modules
dvd+rw-tools libschroedinger-1.0-0
e2fslibs libsdl1.2debian
e2fsprogs libsdl1.2debian-alsa
ed libsdl-image1.2
eject libselinux1
empathy libsensors4
empathy-common libsgutils2-2
eog libshout3
esound-common libsidplay1
evince libsigc++-2.0-0c2a
evince-common libsigsegv2
evolution-data-server-common libslang2
exiv2 libslp1
exo libslv2-9
exo-utils libsm6
fakeroot libsmbclient
fbreader libsm-dev
fglrx libsndfile1
fglrx-amdcccle libsnmp15
file libsnmp-base
file-roller libsoundtouch0
findutils libsoup2.4-1
firefox libsoup-gnome2.4-1
firefox-globalmenu libspectre1
firefox-gnome-support libspeex1
firefox-locale-en libspeexdsp1
flashplugin-downloader libsqlite3-0
flashplugin-installer libsqlite3-dev
fontconfig libss2
fontconfig-config libssl1.0.0
fonts-horai-umefont libssl-dev
foo2zjs libssl-doc
foomatic-db-compressed-ppds libstartup-notification0
foomatic-db-engine libstdc++6
foomatic-filters libstdc++6-4.6-dev
freepats libsuitesparse-dev
friendly-recovery libsvga1
ftp libswitch-perl
fuse-utils libswscale2
g++ libsysfs2
g++-4.6 libsys-hostname-long-perl
gamin libt1-5
gcc libtag1c2a
gcc-4.4 libtag1-vanilla
gcc-4.4-base libtalloc2
gcc-4.6 libtar0
gcc-4.6-base libtasn1-3
gconf2 libtasn1-3-dev
gconf2-common libtdb1
gconf-defaults-service libtelepathy-farsight0
gconf-editor libtelepathy-glib0
gdb libtelepathy-logger2
gedit libtemplates-parser11.5
gedit-common libtextcat0
genisoimage libtextcat-data
geoclue libtext-charwidth-perl
geoclue-ubuntu-geoip libtext-iconv-perl
geoip-database libtext-wrapi18n-perl
gettext libthai0
gettext-base libthai-data
gfortran libtheora0
gfortran-4.6 libthunarx-2-0
ghostscript libtidy-0.99-0
ghostscript-cups libtiff4
ghostscript-x libtiff4-dev
gimp libtiffxx0c2
gimp-data libtimedate-perl
gir1.2-accountsservice-1.0 libtinfo5
gir1.2-appindicator3-0.1 libtinfo-dev
gir1.2-atk-1.0 libtool
gir1.2-atspi-2.0 libtorque2
gir1.2-caribou-1.0 libtotem0
gir1.2-clutter-1.0 libtotem-plparser17
gir1.2-cogl-1.0 libts-0.0-0
gir1.2-dbusmenu-glib-0.4 libtumbler-1-0
gir1.2-dbusmenu-gtk-0.4 libtwolame0
gir1.2-dee-0.5 libudev0
gir1.2-folks-0.6 libumfpack5.4.0
gir1.2-freedesktop libunique-3.0-0
gir1.2-gconf-2.0 libunistring0
gir1.2-gdkpixbuf-2.0 libunity-2d-private0
gir1.2-gee-1.0 libunity6
gir1.2-gkbd-3.0 libunity-core-4.0-4
gir1.2-glib-2.0 libunity-misc4
gir1.2-gmenu-3.0 libupnp3
gir1.2-gnomebluetooth-1.0 libupower-glib1
gir1.2-gtk-2.0 liburi-perl
gir1.2-gtk-3.0 libusb-0.1-4
gir1.2-gtksource-3.0 libusb-1.0-0
gir1.2-json-1.0 libusbmuxd1
gir1.2-mutter-3.0 libutempter0
gir1.2-networkmanager-1.0 libutouch-evemu1
gir1.2-notify-0.7 libutouch-frame1
gir1.2-panelapplet-4.0 libutouch-geis1
gir1.2-pango-1.0 libutouch-grail1
gir1.2-peas-1.0 libuuid1
gir1.2-polkit-1.0 libuuid-perl
gir1.2-soup-2.4 libv4l-0
gir1.2-telepathyglib-0.12 libv8-3.1.8.22
gir1.2-telepathylogger-0.2 libva1
gir1.2-totem-1.0 libva-x11-1
gir1.2-totem-plparser-1.0 libvcdinfo0
gir1.2-unity-4.0 libvdpau1
gir1.2-upowerglib-1.0 libvisual-0.4-0
gir1.2-vte-2.90 libvisual-0.4-plugins
gir1.2-webkit-3.0 libvlc5
git libvlccore4
git-man libvorbis0a
gjs libvorbisenc2
gksu libvorbisfile3
glib-networking libvpx0
gnat libvte-2.90-9
gnat-4.4 libvte9
gnat-4.4-base libvte-common
gnat-gps libwavpack1
gnat-gps-doc libwbclient0
gnome-accessibility-themes libwebkitgtk-1.0-0
gnome-applets libwebkitgtk-1.0-common
gnome-applets-data libwebkitgtk-3.0-0
gnome-bluetooth libwebkitgtk-3.0-common
gnome-codec-install libwildmidi1
gnome-control-center libwmf0.2-7
gnome-control-center-data libwmf0.2-7-gtk
gnome-desktop3-data libwmf-bin
gnome-desktop-data libwnck22
gnome-disk-utility libwnck-3-0
gnome-exe-thumbnailer libwnck-3-common
gnome-font-viewer libwnck-common
gnome-icon-theme libwpd-0.9-9
gnome-icon-theme-full libwpg-0.2-2
gnome-icon-theme-symbolic libwps-0.2-2
gnome-keyring libwrap0
gnome-media libwww-perl
gnome-menus libwww-robotrules-perl
gnome-nettool libwxbase2.8-0
gnome-online-accounts libwxgtk2.8-0
gnome-panel libx11-6
gnome-panel-data libx11-data
gnome-power-manager libx11-dev
gnome-screensaver libx11-xcb1
gnome-session libx264-116
gnome-session-bin libx86-1
gnome-session-common libxapian22
gnome-session-fallback libxau6
gnome-settings-daemon libxau-dev
gnome-shell libxaw7
gnome-system-log libxaw7-dev
gnome-system-monitor libxcb1
gnome-terminal libxcb1-dev
gnome-terminal-data libxcb-dri2-0
gnome-themes-standard libxcb-keysyms1
gnome-user-guide libxcb-randr0
gnome-user-share libxcb-render0
gnome-utils-common libxcb-render0-dev
gnupg libxcb-shape0
gnuplot libxcb-shm0
gnuplot-nox libxcb-shm0-dev
gnuplot-x11 libxcb-util0
gpgv libxcb-xv0
grep libxcomposite1
groff libxcomposite-dev
groff-base libxcursor1
gromit libxcursor-dev
growisofs libxdamage1
grub2-common libxdamage-dev
grub-common libxdmcp6
grub-gfxpayload-lists libxdmcp-dev
grub-pc libxext6
grub-pc-bin libxext-dev
gs-cjk-resource libxfce4ui-1-0
gsettings-desktop-schemas libxfce4util4
gsfonts libxfce4util-bin
gstreamer0.10-alsa libxfce4util-common
gstreamer0.10-ffmpeg libxfconf-0-2
gstreamer0.10-fluendo-mp3 libxfixes3
gstreamer0.10-gconf libxfixes-dev
gstreamer0.10-nice libxfont1
gstreamer0.10-plugins-bad libxft2
gstreamer0.10-plugins-base libxft-dev
gstreamer0.10-plugins-base-apps libxi6
gstreamer0.10-plugins-good libxi-dev
gstreamer0.10-plugins-ugly libxinerama1
gstreamer0.10-pulseaudio libxinerama-dev
gstreamer0.10-tools libxkbfile1
gstreamer0.10-x libxklavier16
gtk2-engines libxml2
gtk2-engines-murrine libxml2-dev
gtk2-engines-xfce libxml2-utils
gtk3-engines-unico libxmu6
gvfs libxmu-dev
gvfs-backends libxmu-headers
gvfs-bin libxmuu1
gvfs-fuse libxpm4
gzip libxpm-dev
hdparm libxrandr2
hicolor-icon-theme libxrandr-dev
hostname libxrender1
hpijs libxrender-dev
hplip libxres1
hplip-cups libxslt1.1
hplip-data libxslt1-dev
html2text libxss1
humanity-icon-theme libxt6
hunspell-en-ca libxt-dev
hunspell-en-us libxtst6
hwdata libxv1
hyphen-en-us libxvidcore4
ia32-crossover-games-demo libxvmc1
ia32-libs libxxf86dga1
ia32-libs-multiarch libxxf86vm1
icc-profiles-free libyajl1
icedtea-6-jre-cacao libyaml-tiny-perl
icedtea-6-jre-jamvm libyelp0
icedtea6-plugin libzbar0
icedtea-netx libzeitgeist-1.0-1
icedtea-plugin libzephyr4
icoutils libzlcore0.12
ifupdown libzlcore-data
imagemagick libzltext0.12
indicator-application libzltext-data
indicator-datetime libzlui-qt4
indicator-power lightdm
indicator-session light-themes
info linux-firmware
initramfs-tools linux-generic
initramfs-tools-bin linux-headers-3.0.0-14
initscripts linux-headers-3.0.0-14-generic
inkscape linux-headers-3.0.0-15
inputattach linux-headers-3.0.0-15-generic
insserv linux-headers-generic
install-info linux-image-3.0.0-14-generic
intltool-debian linux-image-3.0.0-15-generic
iproute linux-image-generic
iptables linux-libc-dev
iputils-arping linux-sound-base
iputils-ping lmodern
iputils-tracepath locales
irqbalance lockfile-progs
isc-dhcp-client login
isc-dhcp-common logrotate
iso-codes lp-solve
java-common lsb-base
jockey-common lsb-release
jockey-gtk lsdvd
kbd lshw
kerneloops-daemon lsof
keyboard-configuration ltrace
klibc-utils luatex
lacheck m4
language-pack-en make
language-pack-en-base makedev
language-pack-gnome-en man-db
language-pack-gnome-en-base manpages
language-selector-common manpages-dev
laptop-detect mawk
latex-beamer media-player-info
latex-xcolor medibuntu-keyring
launchpad-integration memtest86+
less mencoder
lftp mesa-utils
lib32asound2 metacity
lib32bz2-1.0 metacity-common
lib32ffi6 mime-support
lib32gcc1 min12xxw
lib32ncurses5 mlocate
lib32ncursesw5 module-init-tools
lib32nss-mdns mongodb
lib32stdc++6 mongodb-clients
lib32tinfo5 mongodb-dev
lib32z1 mongodb-server
liba52-0.7.4 mount
libaa1 mountall
libaccess-bridge-java mousetweaks
libaccess-bridge-java-jni mpi-default-bin
libaccountsservice0 mpi-default-dev
libacl1 mplayer
libalgorithm-diff-perl mscompress
libalgorithm-diff-xs-perl mtools
libalgorithm-merge-perl mtr-tiny
libamd2.2.0 multiarch-support
libappindicator1 mutter-common
libappindicator3-1 myspell-en-au
libapr1 myspell-en-gb
libaprutil1 myspell-en-za
libaprutil1-dbd-sqlite3 mysql-common
libaprutil1-ldap mythes-en-us
libapt-inst1.3 nautilus
libapt-pkg4.11 nautilus-data
libarchive1 nautilus-sendto
libarpack2 nautilus-sendto-empathy
libarpack2-dev nautilus-share
libasound2 ncftp
libasound2-plugins ncurses-base
libaspell15 ncurses-bin
libass4 netbase
libasyncns0 netcat-openbsd
libatasmart4 netpbm
libatk1.0-0 net-tools
libatk1.0-data network-manager
libatk1.0-dev network-manager-gnome
libatkmm-1.6-1 network-manager-pptp
libatlas3gf-base network-manager-pptp-gnome
libatspi2.0-0 nodejs
libattr1 notify-osd
libaudio2 notify-osd-icons
libaudiofile0 nspluginviewer
libavahi-client3 nspluginwrapper
libavahi-common3 ntfs-3g
libavahi-common-data ntpdate
libavahi-core7 nux-tools
libavahi-glib1 obex-data-server
libavahi-gobject0 obexd-client
libavahi-ui-gtk3-0 octave3.2
libavc1394-0 octave3.2-common
libavcodec53 octave3.2-headers
libavformat53 openjdk-6-jre
libavutil51 openjdk-6-jre-headless
libbabl-0.0-0 openjdk-6-jre-lib
libbamf3-0 openmpi-bin
libbind9-60 openmpi-checkpoint
libblas3gf openmpi-common
libblas-dev openprinting-ppds
libblkid1 openssh-client
libbluetooth3 openssh-server
libboost1.46-dev openssl
libboost-dev orage
libboost-filesystem1.46.1 os-prober
libboost-program-options1.46.1 p7zip
libboost-python1.46.1 parted
libboost-serialization1.46.1 passwd
libboost-system1.46.1 patch
libboost-thread1.46.1 pciutils
libbrasero-media3-1 perl
libbsd0 perl-base
libbtf1.1.0 perlmagick
libburn4 perl-modules
libbz2-1.0 pgf
libc6 pkg-config
libc6-dbg plymouth
libc6-dev plymouth-label
libc6-i386 plymouth-theme-ubuntu-logo
libcaca0 plymouth-theme-ubuntu-text
libcairo2 pm-utils
libcairo2-dev pnm2ppa
libcairo-gobject2 po-debconf
libcairomm-1.0-1 policykit-1
libcairo-perl policykit-1-gnome
libcairo-script-interpreter2 policykit-desktop-privileges
libcamd2.2.0 poppler-utils
libcamel-1.2-29 popularity-contest
libcanberra0 powermgmt-base
libcanberra-gtk0 ppp
libcanberra-gtk3-0 pppconfig
libcanberra-gtk3-module pppoeconf
libcanberra-gtk-module pptp-linux
libcap2 preview-latex-style
libcap2-bin procps
libcap-ng0 prosper
libc-ares2 ps2eps
libcaribou0 psmisc
libc-bin psutils
libccolamd2.7.1 ptouch-driver
libcdaudio1 pulseaudio-utils
libcddb2 pxljr
libc-dev-bin python
libcdio10 python2.7
libcdio-cdda0 python2.7-minimal
libcdio-paranoia0 python-apport
libcdparanoia0 python-apt
libcdt4 python-apt-common
libcelt0-0 python-aptdaemon
libcholmod1.7.1 python-aptdaemon-gtk
libck-connector0 python-aptdaemon.gtk3widgets
libclass-isa-perl python-aptdaemon.gtkwidgets
libclutter-1.0-0 python-axiom
libclutter-1.0-common python-beautifulsoup
libcogl5 python-bzrlib
libcogl-common python-cairo
libcolamd2.7.1 python-central
libcolord1 python-chardet
libcomerr2 python-clientform
libcompizconfig0 python-coherence
libcr0 python-compizconfig
libcroco3 python-configobj
libcrypt-passwdmd5-perl python-crypto
libcsparse2.2.3 python-cups
libcups2 python-cupshelpers
libcupscgi1 python-dbus
libcupsdriver1 python-debian
libcupsimage2 python-defer
libcupsmime1 python-epsilon
libcupsppdc1 python-farsight
libcurl3 python-feedparser
libcurl3-gnutls python-glade2
libcxsparse2.2.3 python-gmenu
libdaemon0 python-gnomekeyring
libdatrie1 python-gnupginterface
libdb4.8 python-gobject
libdb5.1 python-gobject-2
libdbus-1-3 python-gobject-cairo
libdbus-1-dev python-gst0.10
libdbus-glib-1-2 python-gtk2
libdbusmenu-glib4 python-httplib2
libdbusmenu-gtk3-4 python-imaging
libdbusmenu-gtk4 python-keyring
libdbusmenu-qt2 python-launchpadlib
libdc1394-22 python-lazr.restfulclient
libdca0 python-lazr.uri
libdconf0 python-libproxy
libdconf-dbus-1-0 python-libxml2
libdconf-qt0 python-louie
libdecoration0 python-lxml
libdee-1.0-1 python-mechanize
libdevmapper1.02.1 python-minimal
libdevmapper-event1.02.1 python-nevow
libdirac-encoder0 python-notify
libdirectfb-1.2-9 python-numpy
libdjvulibre21 python-numpy-dbg
libdjvulibre-text python-oauth
libdns69 python-openssl
libdpkg-perl python-pam
libdrm2 python-papyon
libdrm-intel1 python-paramiko
libdrm-nouveau1a python-pexpect
libdrm-radeon1 python-pkg-resources
libdv4 python-problem-report
libdvbpsi7 python-pyasn1
libdvdcss2 python-pyatspi2
libdvdnav4 python-pycurl
libdvdread4 python-pysqlite2
libebml3 python-serial
libebook1.2-12 python-simplejson
libecal1.2-10 python-smbc
libedataserver1.2-15 python-software-properties
libedataserverui-3.0-1 python-support
libedit2 python-tagpy
libelf1 python-telepathy
libenca0 python-tk
libenchant1c2a python-twisted-bin
libencode-locale-perl python-twisted-conch
liberror-perl python-twisted-core
libesd0 python-twisted-web
libev4 python-uno
libevent-2.0-5 python-utidylib
libevince3-3 python-vte
libexempi3 python-wadllib
libexif12 python-xapian
libexiv2-10 python-xdg
libexo-1-0 python-xkit
libexo-common python-zope.interface
libexo-helpers qdbus
libexpat1 radeontool
libexpat1-dev rarian-compat
libfaac0 rcs
libfaad2 readline-common
libffcall1 rfkill
libffi6 rsync
libfftw3-3 rsyslog
libfftw3-dev rtkit
libfile-basedir-perl ruby
libfile-copy-recursive-perl ruby1.8
libfile-desktopentry-perl ruby1.8-dev
libfile-listing-perl samba-common
libfile-mimeinfo-perl samba-common-bin
libflac8 sane-utils
libflite1 seahorse
libfltk1.1 sed
libfolks25 sensible-utils
libfolks-telepathy25 sessioninstaller
libfont-afm-perl sgml-base
libfontconfig1 sgml-data
libfontconfig1-dev shared-mime-info
libfontenc1 simple-scan
libfreetype6 smbclient
libfreetype6-dev software-properties-common
libfribidi0 software-properties-gtk
libfs6 sound-theme-freedesktop
libfuse2 splix
libgail18 ssh-askpass-gnome
libgail-3-0 ssh-import-id
libgamin0 ssl-cert
libgarcon-1-0 strace
libgarcon-common sudo
libgc1c2 svgalib
libgcc1 syslinux
libgck-1-0 syslinux-common
libgconf2-4 system-config-printer-common
libgconf2-dev system-config-printer-gnome
libgcr-3-1 system-config-printer-udev
libgcrypt11 sysvinit-utils
libgcrypt11-dev sysv-rc
libgd2-xpm tango-icon-theme
libgdata13 tar
libgdata-common tcl8.4
libgdbm3 tcl8.5
libgdk-pixbuf2.0-0 tcpd
libgdk-pixbuf2.0-dev tcpdump
libgdu0 telepathy-butterfly
libgdu-gtk0 telepathy-gabble
libgee2 telepathy-haze
libgegl-0.0-0 telepathy-idle
libgeoclue0 telepathy-indicator
libgeoip1 telepathy-logger
libgfortran3 telepathy-mission-control-5
libgif4 telepathy-salut
libgif-dev telnet
libgimp2.0 tex-common
libgirepository-1.0-1 texinfo
libgjs0c texlive
libgksu2-0 texlive-base
libgl1-mesa-dri texlive-bibtex-extra
libgl1-mesa-glx texlive-binaries
libglade2-0 texlive-common
libglapi-mesa texlive-doc
libglew1.5 texlive-doc-base
libglewmx1.5 texlive-extra-utils
libglib2.0-0 texlive-fonts-recommended
libglib2.0-bin texlive-fonts-recommended-doc
libglib2.0-data texlive-font-utils
libglib2.0-dev texlive-generic-recommended
libglibmm-2.4-1c2a texlive-latex-base
libglib-perl texlive-latex-base-doc
libglpk0 texlive-latex-extra
libglu1-mesa texlive-latex-extra-doc
libgme0 texlive-latex-recommended
libgmime-2.4-2 texlive-latex-recommended-doc
libgmp10 texlive-luatex
libgnat-4.4 texlive-pictures
libgnatprj4.4 texlive-pictures-doc
libgnatvsn4.4 texlive-pstricks
libgnome2-common texlive-pstricks-doc
libgnome-bluetooth8 texlive-publishers
libgnome-control-center1 texlive-publishers-doc
libgnome-desktop-3-2 texmf
libgnomekbd7 thunar
libgnomekbd-common thunar-data
libgnome-keyring0 thunar-volman
libgnome-media-profiles-3.0-0 time
libgnome-menu2 tipa
libgnome-menu-3-0 tk8.5
libgnomevfs2-0 toshset
libgnomevfs2-common totem
libgnutls26 totem-common
libgnutls-dev totem-mozilla
libgnutlsxx26 totem-plugins
libgoa-1.0-0 totem-plugins-extra
libgomp1 traceroute
libgpg-error0 transmission-common
libgpg-error-dev transmission-gtk
libgpgme11 tsconf
libgphoto2-2 ttf-dejavu-core
libgphoto2-l10n ttf-dejavu-extra
libgphoto2-port0 ttf-droid
libgpm2 ttf-freefont
libgpod4 ttf-indic-fonts-core
libgpod-common ttf-kacst-one
libgraph4 ttf-liberation
libgraphicsmagick3 ttf-mscorefonts-installer
libgraphicsmagick++3 ttf-opensymbol
libgrip0 ttf-punjabi-fonts
libgs9 ttf-takao-pgothic
libgs9-common ttf-thai-tlwg
libgsl0-dev ttf-ubuntu-font-family
libgsl0ldbl ttf-unfonts-core
libgsm1 ttf-wqy-microhei
libgssapi-krb5-2 tumbler
libgssdp-1.0-2 tumbler-common
libgstfarsight0.10-0 tzdata
libgstreamer0.10-0 tzdata-java
libgstreamer-plugins-base0.10-0 ubuntu-artwork
libgtk2.0-0 ubuntu-docs
libgtk2.0-bin ubuntu-extras-keyring
libgtk2.0-common ubuntu-keyring
libgtk2.0-dev ubuntu-minimal
libgtk2-perl ubuntu-mono
libgtk-3-0 ubuntu-restricted-addons
libgtk-3-bin ubuntu-sounds
libgtk-3-common ubuntu-standard
libgtk-3-dev ubuntu-system-service
libgtkada2.14.2 ubuntu-wallpapers
libgtkmm-2.4-1c2a ucf
libgtkmm-3.0-1 udev
libgtksourceview-3.0-0 udisks
libgtksourceview-3.0-common ufw
libgtkspell0 unattended-upgrades
libgtop2-7 unity
libgtop2-common unity-2d
libgucharmap-2-90-7 unity-2d-launcher
libgudev-1.0-0 unity-2d-panel
libgupnp-1.0-3 unity-2d-places
libgupnp-igd-1.0-3 unity-2d-spread
libgutenprint2 unity-asset-pool
libgvc5 unity-common
libgweather-3-0 unity-greeter
libgweather-common unity-lens-applications
libhdf5-openmpi-1.8.4 unity-lens-files
libhdf5-openmpi-dev unity-lens-music
libhpmud0 unity-scope-musicstores
libhtml-format-perl unity-services
libhtml-form-perl uno-libs3
libhtml-parser-perl unrar
libhtml-tagset-perl unzip
libhtml-tree-perl update-inetd
libhttp-cookies-perl update-manager
libhttp-daemon-perl update-manager-core
libhttp-date-perl upower
libhttp-message-perl upstart
libhttp-negotiate-perl uqm
libhunspell-1.2-0 uqm-content
libhyphen0 uqm-music
libibverbs1 ure
libibverbs-dev ureadahead
libical0 usb-creator-common
libice6 usb-creator-gtk
libice-dev usb-modeswitch
libicu44 usb-modeswitch-data
libid3tag0 usbmuxd
libidl0 usbutils
libidn11 util-linux
libido3-0.1-0 uuid-runtime
libiec61883-0 valgrind
libieee1284-3 vbetool
libijs-0.35 vim-common
libilmbase6 vim-tiny
libimobiledevice2 vino
libindicate5 vlc
libindicate-gtk3 vlc-data
libindicator3-6 vlc-nox
libindicator6 vlc-plugin-notify
libio-socket-ssl-perl vlc-plugin-pulse
libisc62 wamerican
libisccc60 wbritish
libisccfg62 wget
libiso9660-7 whiptail
libisofs6 whois
libiw30 winbind
libjack-jackd2-0 wine1.3
libjasper1 wine1.3-gecko
libjbig2dec0 winetricks
libjpeg62 wireless-crda
libjpeg62-dev wireless-tools
libjpeg8 wodim
libjpeg-progs wpasupplicant
libjs-jquery x11-apps
libjson0 x11-common
libjson-glib-1.0-0 x11proto-composite-dev
libjte1 x11proto-core-dev
libk5crypto3 x11proto-damage-dev
libkate1 x11proto-fixes-dev
libkeybinder0 x11proto-input-dev
libkeyutils1 x11proto-kb-dev
libklibc x11proto-randr-dev
libklu1.1.0 x11proto-render-dev
libkpathsea5 x11proto-xext-dev
libkrb5-3 x11proto-xinerama-dev
libkrb5support0 x11-session-utils
liblapack3gf x11-utils
liblapack-dev x11-xfs-utils
liblaunchpad-integration1 x11-xkb-utils
liblaunchpad-integration-3.0-1 x11-xserver-utils
liblaunchpad-integration-common xauth
liblcms1 xbitmaps
liblcms2-2 xcursor-themes
libldap-2.4-2 xdg-user-dirs
libldl2.0.1 xdg-user-dirs-gtk
liblightdm-gobject-1-0 xdg-utils
liblinebreak2 xfce4
liblircclient0 xfce4-appfinder
libllvm2.9 xfce4-mixer
liblocale-gettext-perl xfce4-panel
liblockfile1 xfce4-power-manager
liblqr-1-0 xfce4-power-manager-data
libltdl7 xfce4-session
libltdl-dev xfce4-settings
liblua5.1-0 xfce4-utils
liblvm2app2.2 xfce4-volumed
liblwp-mediatypes-perl xfce-keyboard-shortcuts
liblwp-protocol-https-perl xfconf
liblwres60 xfdesktop4
liblzma2 xfdesktop4-data
liblzo2-2 xfonts-base
libmad0 xfonts-encodings
libmagic1 xfonts-mathml
libmagick++3 xfonts-scalable
libmagickcore3 xfonts-utils
libmagickcore3-extra xfwm4
libmagickwand3 xfwm4-themes
libmail-sendmail-perl xinit
libmailtools-perl xinput
libmatroska4 xkb-data
libmeanwhile1 xml-core
libmetacity-private0 xorg
libmhash2 xorg-docs-core
libmikmod2 xorg-sgml-doctools
libmimic0 xscreensaver
libminiupnpc5 xscreensaver-data
libmission-control-plugins0 xserver-common
libmms0 xserver-xorg
libmng1 xserver-xorg-core
libmodplug1 xserver-xorg-input-all
libmount1 xserver-xorg-input-evdev
libmozjs185-1.0 xserver-xorg-input-mouse
libmp3lame0 xserver-xorg-input-synaptics
libmpc2 xserver-xorg-input-vmmouse
libmpcdec6 xserver-xorg-input-wacom
libmpeg2-4 xserver-xorg-video-ati
libmpfr4 xserver-xorg-video-fbdev
libmtdev1 xserver-xorg-video-intel
libmtp9 xserver-xorg-video-mach64
libmtp-common xserver-xorg-video-neomagic
libmtp-runtime xserver-xorg-video-nouveau
libmusicbrainz4c2a xserver-xorg-video-r128
libmutter0 xserver-xorg-video-radeon
libmysqlclient16 xserver-xorg-video-sisusb
libmythes-1.2-0 xserver-xorg-video-vesa
libnatpmp1 xserver-xorg-video-vmware
libnautilus-extension1 xterm
libncurses5 xtrans-dev
libncurses5-dev x-ttcidfont-conf
libncursesw5 xul-ext-ubufox
libneon27-gnutls xz-utils
libnet-http-perl yelp
libnetpbm10 yelp-xsl
libnet-ssleay-perl zeitgeist
libnewt0.52 zeitgeist-core
libnfnetlink0 zeitgeist-datahub
libnice10 zeitgeist-extension-fts
libnih1 zenity
libnih-dbus1 zenity-common
libnl3 zile
libnm-glib4 zip
libnm-glib-vpn1 zlib1g
libnm-gtk0 zlib1g-dev
libnm-gtk-common
~ $
^ permalink raw reply [flat|nested] 13+ messages in thread
* bug#10835: 24.0.93; bidi-paragraph-direction slows down Shell mode
2012-02-17 17:39 ` Chong Yidong
@ 2012-02-17 18:27 ` Eli Zaretskii
2012-02-18 2:28 ` Chong Yidong
0 siblings, 1 reply; 13+ messages in thread
From: Eli Zaretskii @ 2012-02-17 18:27 UTC (permalink / raw
To: Chong Yidong; +Cc: 10835
> From: Chong Yidong <cyd@gnu.org>
> Cc: 10835@debbugs.gnu.org
> Date: Sat, 18 Feb 2012 01:39:23 +0800
>
> Here are the line numbers at which the printf is triggered (and how many
> times consecutively they get triggered, in parentheses):
Thanks. This means redisplay is invoked every 90 lines,
approximately, which is even less than in my case (I see a cycle of
redisplay every 40-50 lines of inserted input). The plot thickens...
What does "time ls /usr/share/doc" say, when you run it from the shell
buffer? What are the times it reports, and are they approximately the
same in each of the 4 invocations?
^ permalink raw reply [flat|nested] 13+ messages in thread
* bug#10835: 24.0.93; bidi-paragraph-direction slows down Shell mode
2012-02-17 18:27 ` Eli Zaretskii
@ 2012-02-18 2:28 ` Chong Yidong
2012-02-18 3:37 ` Chong Yidong
2012-02-18 8:27 ` Eli Zaretskii
0 siblings, 2 replies; 13+ messages in thread
From: Chong Yidong @ 2012-02-18 2:28 UTC (permalink / raw
To: Eli Zaretskii; +Cc: 10835
I just noticed that when I do `ls --color=no' rather than just `ls',
insertion and scrolling are very fast. The sluggishness only appears
when ls color highlighting is enabled. So the inefficiency of
ansi-color.el, and its use of overlays, seems to play a role.
Eli Zaretskii <eliz@gnu.org> writes:
> What does "time ls /usr/share/doc" say, when you run it from the shell
> buffer? What are the times it reports, and are they approximately the
> same in each of the 4 invocations?
Times are below. Another observation: with `time ls /usr/share/doc'
(which does use color highlighting), scrolling through the Shell buffer
is no longer sluggish. I think the output of `time' helps by providing
a paragraph break.
If I do plain `ls' (no `time'), then go back and edit the Shell buffer
manually by adding a C-q C-j line break after each prompt, that also
makes the scrolling sluggishness go away.
In xterm (speed is the same after repeated invocations):
real 0m0.148s
user 0m0.008s
sys 0m0.020s
In xterm, with --color=no:
real 0m0.039s
user 0m0.004s
sys 0m0.008s
In the Emacs 23 shell buffer, on the first invocation:
real 0m0.378s
user 0m0.008s
sys 0m0.008s
In the Emacs 24 shell buffer, on the first invocation:
real 0m0.866s
user 0m0.008s
sys 0m0.004s
In the Emacs 24 shell buffer, after 10 invocations:
real 0m1.969s
user 0m0.008s
sys 0m0.004s
In the Emacs 24 shell buffer, with --color=no:
real 0m0.296s
user 0m0.000s
sys 0m0.008s
In the Emacs 24 shell buffer, with --color=no, after 10 invocations:
real 0m0.280s
user 0m0.004s
sys 0m0.012s
^ permalink raw reply [flat|nested] 13+ messages in thread
* bug#10835: 24.0.93; bidi-paragraph-direction slows down Shell mode
2012-02-18 2:28 ` Chong Yidong
@ 2012-02-18 3:37 ` Chong Yidong
2012-02-18 8:49 ` Eli Zaretskii
2012-02-18 8:27 ` Eli Zaretskii
1 sibling, 1 reply; 13+ messages in thread
From: Chong Yidong @ 2012-02-18 3:37 UTC (permalink / raw
To: Eli Zaretskii; +Cc: 10835
Chong Yidong <cyd@gnu.org> writes:
> I just noticed that when I do `ls --color=no' rather than just `ls',
> insertion and scrolling are very fast. The sluggishness only appears
> when ls color highlighting is enabled. So the inefficiency of
> ansi-color.el, and its use of overlays, seems to play a role.
I just confirmed that the sluggishness goes away if I change
ansi-color.el to make it use text properties. Wish I'd remembered to do
that before the pretest began.
Roughly what is happening, I think, is that when overlays are heavily
used and there are no paragraph breaks (e.g. from the `time' output),
the bidi code does enough the additional overlay lookups to produce a
noticeable slowdown.
I'm not sure what's the best fix right now, though.
^ permalink raw reply [flat|nested] 13+ messages in thread
* bug#10835: 24.0.93; bidi-paragraph-direction slows down Shell mode
2012-02-18 2:28 ` Chong Yidong
2012-02-18 3:37 ` Chong Yidong
@ 2012-02-18 8:27 ` Eli Zaretskii
1 sibling, 0 replies; 13+ messages in thread
From: Eli Zaretskii @ 2012-02-18 8:27 UTC (permalink / raw
To: Chong Yidong; +Cc: 10835
> From: Chong Yidong <cyd@gnu.org>
> Cc: 10835@debbugs.gnu.org
> Date: Sat, 18 Feb 2012 10:28:12 +0800
>
> Times are below. Another observation: with `time ls /usr/share/doc'
> (which does use color highlighting), scrolling through the Shell buffer
> is no longer sluggish. I think the output of `time' helps by providing
> a paragraph break.
Of course. That makes each 2000-line output a separate paragraph, as
far as bidi is concerned. So you never get to the 7500-line limit of
searching for paragraph beginning.
When I tried to reproduce the problem on Windows, I manually edited
away these empty lines (which are inserted in my case because the
shell prompt on Windows always starts with a newline).
> If I do plain `ls' (no `time'), then go back and edit the Shell buffer
> manually by adding a C-q C-j line break after each prompt, that also
> makes the scrolling sluggishness go away.
Of course, for the same reasons.
> In the Emacs 24 shell buffer, after 10 invocations:
>
> real 0m1.969s
> user 0m0.008s
> sys 0m0.004s
Is this with the empty lines between invocations, or without?
If the former, do the 2 seconds match your impression of sluggishness,
i.e., do you indeed see Emacs take about 2 sec to insert the 10th
listing into the shell buffer? Or does the insertion take much
longer? (Timing with second-resolution can be done by just looking at
your wallclock time.)
^ permalink raw reply [flat|nested] 13+ messages in thread
* bug#10835: 24.0.93; bidi-paragraph-direction slows down Shell mode
2012-02-18 3:37 ` Chong Yidong
@ 2012-02-18 8:49 ` Eli Zaretskii
2012-02-18 14:14 ` Eli Zaretskii
2012-02-19 14:07 ` Chong Yidong
0 siblings, 2 replies; 13+ messages in thread
From: Eli Zaretskii @ 2012-02-18 8:49 UTC (permalink / raw
To: Chong Yidong; +Cc: 10835
> From: Chong Yidong <cyd@gnu.org>
> Cc: 10835@debbugs.gnu.org
> Date: Sat, 18 Feb 2012 11:37:33 +0800
>
> Chong Yidong <cyd@gnu.org> writes:
>
> > I just noticed that when I do `ls --color=no' rather than just `ls',
> > insertion and scrolling are very fast. The sluggishness only appears
> > when ls color highlighting is enabled. So the inefficiency of
> > ansi-color.el, and its use of overlays, seems to play a role.
>
> I just confirmed that the sluggishness goes away if I change
> ansi-color.el to make it use text properties.
That figures. bidi.c needs to look up display properties and overlays
with display strings, in order to DTRT with their display (they are
treated as a single neutral character). So having lots of overlays
slows down redisplay a bit more.
> Wish I'd remembered to do that before the pretest began.
If this is a grave problem, we can still do it now, I think. Or we
could use a band-aid, see below.
> Roughly what is happening, I think, is that when overlays are heavily
> used and there are no paragraph breaks (e.g. from the `time' output),
> the bidi code does enough the additional overlay lookups to produce a
> noticeable slowdown.
Yes, the overlays together with the long search for paragraph
beginning probably push the user experience from slightly below the
annoyance threshold to just above it.
> I'm not sure what's the best fix right now, though.
How about setting bidi-paragraph-direction in comint buffers to
left-to-right when the locale indicates that use of bidirectional
scripts is unlikely? We could use locale-language-names and an
additional small database of languages that need bidi, to make that
decision. WDYT?
^ permalink raw reply [flat|nested] 13+ messages in thread
* bug#10835: 24.0.93; bidi-paragraph-direction slows down Shell mode
2012-02-18 8:49 ` Eli Zaretskii
@ 2012-02-18 14:14 ` Eli Zaretskii
2012-02-19 14:07 ` Chong Yidong
1 sibling, 0 replies; 13+ messages in thread
From: Eli Zaretskii @ 2012-02-18 14:14 UTC (permalink / raw
To: cyd; +Cc: 10835
> Date: Sat, 18 Feb 2012 10:49:19 +0200
> From: Eli Zaretskii <eliz@gnu.org>
> Cc: 10835@debbugs.gnu.org
>
> How about setting bidi-paragraph-direction in comint buffers to
> left-to-right when the locale indicates that use of bidirectional
> scripts is unlikely? We could use locale-language-names and an
> additional small database of languages that need bidi, to make that
> decision. WDYT?
Actually, it's probably better to go directly from the locale, since
locale-language-names doesn't really give the names of languages, it
gives the names of language environments, which can be totally
different.
I see only several locales that will need to dynamically determine
paragraph direction in comint buffers. Those are locales matching the
following regular expressions:
\`ar_.*
\`fa_.*
\`he_.*
\`iw_.*
\`ur_.*
^ permalink raw reply [flat|nested] 13+ messages in thread
* bug#10835: 24.0.93; bidi-paragraph-direction slows down Shell mode
2012-02-18 8:49 ` Eli Zaretskii
2012-02-18 14:14 ` Eli Zaretskii
@ 2012-02-19 14:07 ` Chong Yidong
1 sibling, 0 replies; 13+ messages in thread
From: Chong Yidong @ 2012-02-19 14:07 UTC (permalink / raw
To: Eli Zaretskii; +Cc: 10835
Eli Zaretskii <eliz@gnu.org> writes:
> Yes, the overlays together with the long search for paragraph
> beginning probably push the user experience from slightly below the
> annoyance threshold to just above it.
> ...
> How about setting bidi-paragraph-direction in comint buffers to
> left-to-right when the locale indicates that use of bidirectional
> scripts is unlikely? We could use locale-language-names and an
> additional small database of languages that need bidi, to make that
> decision. WDYT?
I'm not keen on bolting on this additional complexity.
I don't see any better way out, so we might as well take the risk and
switch to using text properties for color escape highlighting. I just
committed a patch to do that, limiting the change to Shell mode and
leaving the other users of ansi-color.el unaffected (and still using
overlays).
Thanks for helping with this bug. Hopefully the fix won't turn up any
problems...
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2012-02-19 14:07 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-02-17 5:41 bug#10835: 24.0.93; bidi-paragraph-direction slows down Shell mode Chong Yidong
2012-02-17 5:48 ` Chong Yidong
2012-02-17 8:21 ` Andreas Schwab
2012-02-17 13:42 ` Chong Yidong
2012-02-17 16:08 ` Eli Zaretskii
2012-02-17 17:39 ` Chong Yidong
2012-02-17 18:27 ` Eli Zaretskii
2012-02-18 2:28 ` Chong Yidong
2012-02-18 3:37 ` Chong Yidong
2012-02-18 8:49 ` Eli Zaretskii
2012-02-18 14:14 ` Eli Zaretskii
2012-02-19 14:07 ` Chong Yidong
2012-02-18 8:27 ` Eli Zaretskii
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).