unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#59265: 27.1; emacs apparently redraws the entire X window for every update
@ 2022-11-14 16:39 Francesco Potortì
  2022-11-15  0:46 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2022-11-15 13:30 ` Eli Zaretskii
  0 siblings, 2 replies; 6+ messages in thread
From: Francesco Potortì @ 2022-11-14 16:39 UTC (permalink / raw)
  To: 59265

This bug report is vague, because I don't know the details yet, but I should be able to produce them later.

When using a remote window using Xpra (which is more or less equivalent to Screen for X, see xpra.org) the amount of information sent by Emacs is huge, apparently redrawing the entire window at every keystroke.

I discovered this while reporting an Xpra bug and Xpra's author commented on this, see https://github.com/Xpra-org/xpra/issues/3660

While I work with him to solving the bug, I will try to get more info on the matter, assuming this is not a known issue.  If the problem is real, that makes Emacs resource hungry when run on remote X servers.



In GNU Emacs 27.1 (build 1, x86_64-pc-linux-gnu, X toolkit, Xaw3d scroll bars)
 of 2021-11-27, modified by Debian built on x86-csail-01
Windowing system distributor 'The X.Org Foundation', version 11.0.12101004
System Description: Debian GNU/Linux bookworm/sid

Recent messages:
Contacting host: www.overleaf.com:443
Added to /home/pot/Mail/lavoro/pubblicazioni/evaal21-22
git clone https://git.overleaf.com/6345492996536c2efb63ba9c: finished.
RelSymLink: 1 of 1
RelSymLink: 1 file done
Auto-saving...done
Auto-saving...done
Saving file /home/pot/.url/cookies...
Wrote /home/pot/.url/cookies
Auto-saving...done

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 --enable-libsystemd --with-pop=yes
 --enable-locallisppath=/etc/emacs:/usr/local/share/emacs/27.1/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/27.1/site-lisp:/usr/share/emacs/site-lisp
 --with-sound=alsa --without-gconf --with-mailutils --build x86_64-linux-gnu --prefix=/usr
 --sharedstatedir=/var/lib --libexecdir=/usr/lib --localstatedir=/var/lib
 --infodir=/usr/share/info --mandir=/usr/share/man --enable-libsystemd --with-pop=yes
 --enable-locallisppath=/etc/emacs:/usr/local/share/emacs/27.1/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/27.1/site-lisp:/usr/share/emacs/site-lisp
 --with-sound=alsa --without-gconf --with-mailutils --with-x=yes --with-x-toolkit=lucid
 --with-toolkit-scroll-bars --without-gsettings 'CFLAGS=-g -O2
 -ffile-prefix-map=/build/emacs-fQHadv/emacs-27.1+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 SOUND GPM DBUS GLIB NOTIFY INOTIFY ACL LIBSELINUX GNUTLS
LIBXML2 FREETYPE HARFBUZZ M17N_FLT LIBOTF XFT ZLIB TOOLKIT_SCROLL_BARS LUCID X11 XDBE XIM
MODULES THREADS LIBSYSTEMD JSON PDUMPER LCMS2 GMP

Important settings:
  value of $LC_COLLATE: it_IT.UTF-8
  value of $LC_CTYPE: it_IT.UTF-8
  value of $LC_MONETARY: it_IT.UTF-8
  value of $LC_NUMERIC: C
  value of $LANG: C.UTF-8
  locale-coding-system: utf-8-unix

Major mode: LaTeX

Minor modes in effect:
  filladapt-mode: t
  desktop-save-mode: t
  epa-global-mail-mode: t
  shell-dirtrack-mode: t
  visual-fill-column-mode: t
  openwith-mode: t
  xterm-mouse-mode: t
  display-time-mode: t
  tooltip-mode: t
  electric-indent-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
  column-number-mode: t
  line-number-mode: t
  visual-line-mode: t

Load-path shadows:
~/elisp/bhl hides /usr/share/emacs/site-lisp/bhl
/usr/share/emacs/site-lisp/elpa/debian-el-37/debian-autoloads hides /usr/share/emacs/site-lisp/elpa/gnuplot-mode-20141231/debian-autoloads
/usr/share/emacs/site-lisp/elpa/cmake-mode-3.24.3/cmake-mode hides /usr/share/emacs/site-lisp/elpa-src/cmake-mode-3.24.3/cmake-mode
/usr/share/emacs/site-lisp/elpa/cmake-mode-3.24.3/cmake-mode-pkg hides /usr/share/emacs/site-lisp/elpa-src/cmake-mode-3.24.3/cmake-mode-pkg
/usr/share/emacs/site-lisp/elpa/cmake-mode-3.24.3/cmake-mode-autoloads hides /usr/share/emacs/site-lisp/elpa-src/cmake-mode-3.24.3/cmake-mode-autoloads
/usr/share/emacs/site-lisp/elpa/csv-mode-1.21/csv-mode-pkg hides /usr/share/emacs/site-lisp/elpa-src/csv-mode-1.21/csv-mode-pkg
/usr/share/emacs/site-lisp/elpa/csv-mode-1.21/csv-mode hides /usr/share/emacs/site-lisp/elpa-src/csv-mode-1.21/csv-mode
/usr/share/emacs/site-lisp/elpa/csv-mode-1.21/csv-mode-tests hides /usr/share/emacs/site-lisp/elpa-src/csv-mode-1.21/csv-mode-tests
/usr/share/emacs/site-lisp/elpa/csv-mode-1.21/csv-mode-autoloads hides /usr/share/emacs/site-lisp/elpa-src/csv-mode-1.21/csv-mode-autoloads
/usr/share/emacs/site-lisp/elpa/debian-el-37/debian-el hides /usr/share/emacs/site-lisp/elpa-src/debian-el-37/debian-el
/usr/share/emacs/site-lisp/elpa/debian-el-37/gnus-BTS hides /usr/share/emacs/site-lisp/elpa-src/debian-el-37/gnus-BTS
/usr/share/emacs/site-lisp/elpa/debian-el-37/preseed hides /usr/share/emacs/site-lisp/elpa-src/debian-el-37/preseed
/usr/share/emacs/site-lisp/elpa/debian-el-37/deb-view hides /usr/share/emacs/site-lisp/elpa-src/debian-el-37/deb-view
/usr/share/emacs/site-lisp/elpa/debian-el-37/debian-el-autoloads hides /usr/share/emacs/site-lisp/elpa-src/debian-el-37/debian-el-autoloads
/usr/share/emacs/site-lisp/elpa/debian-el-37/apt-utils hides /usr/share/emacs/site-lisp/elpa-src/debian-el-37/apt-utils
/usr/share/emacs/site-lisp/elpa/debian-el-37/debian-bug hides /usr/share/emacs/site-lisp/elpa-src/debian-el-37/debian-bug
/usr/share/emacs/site-lisp/elpa/debian-el-37/debian-el-pkg hides /usr/share/emacs/site-lisp/elpa-src/debian-el-37/debian-el-pkg
/usr/share/emacs/site-lisp/elpa/debian-el-37/apt-sources hides /usr/share/emacs/site-lisp/elpa-src/debian-el-37/apt-sources
/usr/share/emacs/site-lisp/elpa/debian-el-37/debian-autoloads hides /usr/share/emacs/site-lisp/elpa-src/debian-el-37/debian-autoloads
/usr/share/emacs/site-lisp/elpa/dictionary-1.10/dictionary hides /usr/share/emacs/site-lisp/elpa-src/dictionary-1.10/dictionary
/usr/share/emacs/site-lisp/elpa/dictionary-1.10/link hides /usr/share/emacs/site-lisp/elpa-src/dictionary-1.10/link
/usr/share/emacs/site-lisp/elpa/dictionary-1.10/dictionary-pkg hides /usr/share/emacs/site-lisp/elpa-src/dictionary-1.10/dictionary-pkg
/usr/share/emacs/site-lisp/elpa/dictionary-1.10/dictionary-autoloads hides /usr/share/emacs/site-lisp/elpa-src/dictionary-1.10/dictionary-autoloads
/usr/share/emacs/site-lisp/elpa/dictionary-1.10/connection hides /usr/share/emacs/site-lisp/elpa-src/dictionary-1.10/connection
/usr/share/emacs/site-lisp/elpa/gnuplot-mode-20141231/gnuplot hides /usr/share/emacs/site-lisp/elpa-src/gnuplot-mode-20141231/gnuplot
/usr/share/emacs/site-lisp/elpa/gnuplot-mode-20141231/gnuplot-mode-pkg hides /usr/share/emacs/site-lisp/elpa-src/gnuplot-mode-20141231/gnuplot-mode-pkg
/usr/share/emacs/site-lisp/elpa/debian-el-37/debian-autoloads hides /usr/share/emacs/site-lisp/elpa-src/gnuplot-mode-20141231/debian-autoloads
/usr/share/emacs/site-lisp/elpa/gnuplot-mode-20141231/gnuplot-context hides /usr/share/emacs/site-lisp/elpa-src/gnuplot-mode-20141231/gnuplot-context
/usr/share/emacs/site-lisp/elpa/gnuplot-mode-20141231/gnuplot-gui hides /usr/share/emacs/site-lisp/elpa-src/gnuplot-mode-20141231/gnuplot-gui
/usr/share/emacs/site-lisp/elpa/gnuplot-mode-20141231/gnuplot-mode-autoloads hides /usr/share/emacs/site-lisp/elpa-src/gnuplot-mode-20141231/gnuplot-mode-autoloads
/usr/share/emacs/site-lisp/elpa/markdown-mode-2.5/markdown-mode-autoloads hides /usr/share/emacs/site-lisp/elpa-src/markdown-mode-2.5/markdown-mode-autoloads
/usr/share/emacs/site-lisp/elpa/markdown-mode-2.5/markdown-mode hides /usr/share/emacs/site-lisp/elpa-src/markdown-mode-2.5/markdown-mode
/usr/share/emacs/site-lisp/elpa/markdown-mode-2.5/markdown-mode-pkg hides /usr/share/emacs/site-lisp/elpa-src/markdown-mode-2.5/markdown-mode-pkg
/usr/share/emacs/site-lisp/elpa/php-mode-1.24.1/php-mode-autoloads hides /usr/share/emacs/site-lisp/elpa-src/php-mode-1.24.1/php-mode-autoloads
/usr/share/emacs/site-lisp/elpa/php-mode-1.24.1/php-mode-pkg hides /usr/share/emacs/site-lisp/elpa-src/php-mode-1.24.1/php-mode-pkg
/usr/share/emacs/site-lisp/elpa/php-mode-1.24.1/php-local-manual hides /usr/share/emacs/site-lisp/elpa-src/php-mode-1.24.1/php-local-manual
/usr/share/emacs/site-lisp/elpa/php-mode-1.24.1/php hides /usr/share/emacs/site-lisp/elpa-src/php-mode-1.24.1/php
/usr/share/emacs/site-lisp/elpa/php-mode-1.24.1/php-mode-debug hides /usr/share/emacs/site-lisp/elpa-src/php-mode-1.24.1/php-mode-debug
/usr/share/emacs/site-lisp/elpa/php-mode-1.24.1/php-align hides /usr/share/emacs/site-lisp/elpa-src/php-mode-1.24.1/php-align
/usr/share/emacs/site-lisp/elpa/php-mode-1.24.1/php-face hides /usr/share/emacs/site-lisp/elpa-src/php-mode-1.24.1/php-face
/usr/share/emacs/site-lisp/elpa/php-mode-1.24.1/php-project hides /usr/share/emacs/site-lisp/elpa-src/php-mode-1.24.1/php-project
/usr/share/emacs/site-lisp/elpa/php-mode-1.24.1/php-mode hides /usr/share/emacs/site-lisp/elpa-src/php-mode-1.24.1/php-mode
~/elisp/bibtex hides /usr/share/emacs/27.1/lisp/textmodes/bibtex
~/elisp/octave hides /usr/share/emacs/27.1/lisp/progmodes/octave
/usr/share/emacs/site-lisp/flim/sasl hides /usr/share/emacs/27.1/lisp/net/sasl

Features:
(shadow emacsbug latexenc rmailsort sort cal-move cal-x face-remap mail-extr reporter debian-bug
eieio-opt speedbar sb-image ezimage dframe find-func help-fns radix-tree rect ispell iso-transl
dabbrev rfc2368 smtpmail pp timezone rmailkwd doc-view image-mode exif reveal tramp-cmds rfc2104
tramp-cache shr-color wdired rmailout macros kmacro rmailedit mailalias warnings gnutls
network-stream url-http url-gw nsm url-cache url-auth time-stamp tabify misearch multi-isearch
cl-extra server qp rmailmm message rmc rfc822 mml mml-sec mm-decode mm-bodies mm-encode
mailabbrev gmm-utils mailheader mail-parse rfc2231 vc-dir ewoc vc vc-git diff-mode sh-script
executable conf-mode mhtml-mode css-mode eww mm-url gnus nnheader gnus-util wid-edit url-queue
url url-proxy url-privacy url-expand url-methods url-history mailcap shr text-property-search
url-cookie url-domsuf url-util puny svg xml js imenu cc-mode cc-fonts cc-guess cc-menus cc-cmds
cc-styles cc-align cc-engine cc-vars cc-defs sgml-mode dom bibtex make-mode vc-svn tex-mode
compile vc-dispatcher python tramp-sh generic markdown-mode rx color noutline outline
vc-filewise vc-rcs octave skeleton texinfo smie cal-julian solar cal-dst desktop frameset pot
rmailsum rmail rmail-loaddefs ffap thingatpt ange-ftp pcase sendmail rfc2047 rfc2045 ietf-drums
mm-util mail-prsvr epa-mail mail-utils epa derived epg epg-config view mule-util holidays
hol-loaddefs appt diary-lib diary-loaddefs cal-menu calendar cal-loaddefs tramp tramp-loaddefs
trampver tramp-integration files-x tramp-compat shell pcomplete comint ring parse-time iso8601
time-date ls-lisp format-spec bhl visual-fill-column dired-aux openwith easy-mmode
switch-to-shell hi-lock anything-config anything advice woman man cl locate xt-mouse
scroll-in-place filladapt ansi-color time jka-compr quail help-mode dired-x dired dired-loaddefs
generic-x shell-apt disp-table finder-inf w3m-load info debian-el package easymenu browse-url
url-handlers url-parse auth-source cl-seq eieio eieio-core cl-macs eieio-loaddefs password-cache
json subr-x map url-vars seq byte-opt gv bytecomp byte-compile cconv cl-loaddefs cl-lib tooltip
eldoc electric uniquify ediff-hook vc-hooks lisp-float-type mwheel term/x-win x-win
term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe tabulated-list replace
newcomment text-mode elisp-mode lisp-mode prog-mode register page tab-bar menu-bar rfn-eshadow
isearch timer select scroll-bar mouse jit-lock font-lock syntax facemenu font-core
term/tty-colors frame minibuffer 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 composite charscript charprop case-table epa-hook
jka-cmpr-hook help simple abbrev obarray 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 threads dbusbind inotify lcms2 dynamic-setting
font-render-setting x-toolkit x multi-tty make-network-process emacs)

Memory information:
((conses 16 1330094 282818)
 (symbols 48 50380 21)
 (strings 32 254958 16106)
 (string-bytes 1 19808063)
 (vectors 16 59721)
 (vector-slots 8 2079309 228712)
 (floats 8 1042 3807)
 (intervals 56 282893 975)
 (buffers 1000 193))





^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#59265: 27.1; emacs apparently redraws the entire X window for every update
  2022-11-14 16:39 bug#59265: 27.1; emacs apparently redraws the entire X window for every update Francesco Potortì
@ 2022-11-15  0:46 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2022-11-15 13:30 ` Eli Zaretskii
  1 sibling, 0 replies; 6+ messages in thread
From: Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-11-15  0:46 UTC (permalink / raw)
  To: Francesco Potortì; +Cc: 59265

Francesco Potortì <pot@gnu.org> writes:

> This bug report is vague, because I don't know the details yet, but I
> should be able to produce them later.
>
> When using a remote window using Xpra (which is more or less
> equivalent to Screen for X, see xpra.org) the amount of information
> sent by Emacs is huge, apparently redrawing the entire window at every
> keystroke.
>
> I discovered this while reporting an Xpra bug and Xpra's author
> commented on this, see https://github.com/Xpra-org/xpra/issues/3660
>
> While I work with him to solving the bug, I will try to get more info
> on the matter, assuming this is not a known issue.  If the problem is
> real, that makes Emacs resource hungry when run on remote X servers.

Emacs generally does not redraw the entire X window upon an update.

Judging by the debug info provided in the Xpra bug report, it is relying
on the Damage extension to report window damage.  The Damage extension
always reports damage to the entire window upon a DBE buffer swap, which
is almost inconsequential when connected to an actual remote X server (I
do that every day), but not when a program like Xpra tries to ferry
pixmap contents over the wire.

Relying on Composite and Damage to send application contents over the
wire is fundamentally the wrong approach.  I suspect Xpra has to be
written as an X server driver (as its name applies), and that after
doing so, its DBE implementation has to be fixed to only call the
CopyArea GC op on areas of the back buffer that really changed.

So this isn't really a bug in Emacs, sorry.  You can work around the
problem by turning off double buffering, but that means you will also
need to put up with flicker.





^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#59265: 27.1; emacs apparently redraws the entire X window for every update
  2022-11-14 16:39 bug#59265: 27.1; emacs apparently redraws the entire X window for every update Francesco Potortì
  2022-11-15  0:46 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2022-11-15 13:30 ` Eli Zaretskii
  2022-11-15 13:57   ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
  1 sibling, 1 reply; 6+ messages in thread
From: Eli Zaretskii @ 2022-11-15 13:30 UTC (permalink / raw)
  To: Francesco Potortì; +Cc: 59265

> From: Francesco Potortì <pot@gnu.org>
> Date: Mon, 14 Nov 2022 17:39:20 +0100
> 
> This bug report is vague, because I don't know the details yet, but I should be able to produce them later.
> 
> When using a remote window using Xpra (which is more or less equivalent to Screen for X, see xpra.org) the amount of information sent by Emacs is huge, apparently redrawing the entire window at every keystroke.

Emacs redraws only the minimum that is required to update its windows
on the glass.  It actually compares the current window contents with
the desired contents, and redraws only where they differ.  This should
result in very small updates, and the only situation for which I can
imagine Emacs updating the entire frame is when the whole frame is
different, or it was obscured by another window, or something similar.

If all you do is type one character, basically only that character's
line will be redrawn, in some case even less.  As an extreme example,
if the line's contents was

   xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

and you type "y" in the middle, you should see one "x" redrawn as "y",
and one "x" drawn at the end of the line, and that's all.

Of course, there could also be updates of other parts of the Emacs
display, such as the mode line.  For example, if you have
column-number-mode enabled, typing a character will also update the
mode line.  But again, it should only redraw a small part of the mode
line near the column number.  Likewise, if what you type affects the
tyool bar or the menu bar, these will be redrawn.

One thing I can suggest to try is disable double-buffering.  I have no
idea what it can do with Xpra (since I don't really know how does Xpra
do its job, whatever that is).





^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#59265: 27.1; emacs apparently redraws the entire X window for every update
  2022-11-15 13:30 ` Eli Zaretskii
@ 2022-11-15 13:57   ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2022-11-15 14:04     ` Francesco Potortì
  2022-11-24 18:37     ` Stefan Kangas
  0 siblings, 2 replies; 6+ messages in thread
From: Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-11-15 13:57 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 59265, Francesco Potortì

Eli Zaretskii <eliz@gnu.org> writes:

> One thing I can suggest to try is disable double-buffering.  I have no
> idea what it can do with Xpra (since I don't really know how does Xpra
> do its job, whatever that is).

Yes, I explained what the problem is (and it isn't in Emacs) earlier:

Judging by the debug info provided in the Xpra bug report, it is relying
on the Damage extension to report window damage.  The Damage extension
always reports damage to the entire window upon a DBE buffer swap, which
is almost inconsequential when connected to an actual remote X server (I
do that every day), but not when a program like Xpra tries to ferry
pixmap contents over the wire.

Relying on Composite and Damage to send application contents over the
wire is fundamentally the wrong approach.  I suspect Xpra has to be
written as an X server driver (as its name applies), and that after
doing so, its DBE implementation has to be fixed to only call the
CopyArea GC op on areas of the back buffer that really changed.

So this isn't really a bug in Emacs, sorry.  You can work around the
problem by turning off double buffering, but that means you will also
need to put up with flicker.





^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#59265: 27.1; emacs apparently redraws the entire X window for every update
  2022-11-15 13:57   ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2022-11-15 14:04     ` Francesco Potortì
  2022-11-24 18:37     ` Stefan Kangas
  1 sibling, 0 replies; 6+ messages in thread
From: Francesco Potortì @ 2022-11-15 14:04 UTC (permalink / raw)
  To: Po Lu; +Cc: 59265, Eli Zaretskii

Po, Eli,

thanks you for the explanation.  Hope I will manage to channel these to Xpra's developers.





^ permalink raw reply	[flat|nested] 6+ messages in thread

* bug#59265: 27.1; emacs apparently redraws the entire X window for every update
  2022-11-15 13:57   ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2022-11-15 14:04     ` Francesco Potortì
@ 2022-11-24 18:37     ` Stefan Kangas
  1 sibling, 0 replies; 6+ messages in thread
From: Stefan Kangas @ 2022-11-24 18:37 UTC (permalink / raw)
  To: Po Lu; +Cc: 59265, Eli Zaretskii, Francesco Potortì

tags 59265 + notabug
close 59265
thanks

Po Lu <luangruo@yahoo.com> writes:

> So this isn't really a bug in Emacs, sorry.  You can work around the
> problem by turning off double buffering, but that means you will also
> need to put up with flicker.

I'm therefore closing this bug report.





^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2022-11-24 18:37 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-11-14 16:39 bug#59265: 27.1; emacs apparently redraws the entire X window for every update Francesco Potortì
2022-11-15  0:46 ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-11-15 13:30 ` Eli Zaretskii
2022-11-15 13:57   ` Po Lu via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-11-15 14:04     ` Francesco Potortì
2022-11-24 18:37     ` Stefan Kangas

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).