GNU bug report logs - #50337
28.0.50; (while-no-input (redisplay) forms...) block behaves differently when window-system is pgtk

Previous Next

Package: emacs;

Reported by: Daniel Semyonov <daniel <at> dsemy.com>

Date: Thu, 2 Sep 2021 14:59:02 UTC

Severity: normal

Found in version 28.0.50

Done: Daniel Semyonov <daniel <at> dsemy.com>

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 50337 in the body.
You can then email your comments to 50337 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#50337; Package emacs. (Thu, 02 Sep 2021 14:59:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Daniel Semyonov <daniel <at> dsemy.com>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Thu, 02 Sep 2021 14:59:02 GMT) Full text and rfc822 format available.

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

From: Daniel Semyonov <daniel <at> dsemy.com>
To: bug-gnu-emacs <at> gnu.org
Subject: 28.0.50; (while-no-input (redisplay) forms...) block behaves
 differently when window-system is pgtk
Date: Thu, 02 Sep 2021 16:34:19 +0300
This was tested on both a build configured with "--without-x
--with-pgtk" and a build configured with "--with-x --with-x-toolkit=no"
(my previous configuration before switching to the pgtk branch). Both
were built from the pgtk branch.

In the following steps I load a package I'm developing called
Vcomplete[1] which uses the following function to update the
'*Completions*' buffer when providing input to the minibuffer (the
'*Completions*' buffer also opens automatically when starting minibuffer
completion):

(defun vcomplete--update-in-minibuffer (&rest _args)
  "Update the completion list when completing in a minibuffer."
  (while-no-input
    (redisplay)
    (unless (memq this-command vcomplete-no-update-commands)
      (minibuffer-completion-help))))

For more details look at the package, specifically the section called
'Visual completion mode' (it's not very complex and I don't want to make
this report too long, I can provide more details if necessary).
Also, the effect is much more apparent when 'completions-detailed' is
set to t (presumably because it takes longer to display the completions).

The following steps are performed on both builds:

1. emacs -Q
2. M-x load-file RET ~/src/vcomplete/vcomplete.el RET
3. M-x vcomplete-mode RET
4. C-h f bac (combination of letters which correspond to completions)

On the X build, as soon as I start typing letters in step 4 the
'*Completions*' buffer immediately updates; on the pgtk build there is a
noticable (maybe half a second) delay during which I also can't see the
letters I'm typing into the minibuffer, in addition to the first few
letters being entered into the minibuffer twice (the amount of letters
duplicated changes).

The behavior on the X build lines up with the documentation strings of
'redisplay' and 'while-no-input', so I'm assuming this is a bug in pgtk
redisplay code (although my only knowledge of redisplay comes from
reading documentation, so I might be off).

Hope I did everything right, this is the first bug report I'm
submitting, thanks!

Daniel

[1] https://git.sr.ht/~dsemy/vcomplete


In GNU Emacs 28.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.29, cairo version 1.16.0)
 of 2021-08-31 built on coldharbour
Repository revision: aa437f6a59337d980795370d55edebb029ecf10b
Repository branch: master
Windowing system distributor 'System Description: void

Configured using:
 'configure --without-dbus --without-gsettings --without-x --with-pgtk
 --prefix=/opt/Emacs'

Configured features:
CAIRO FREETYPE GIF GLIB GMP GNUTLS HARFBUZZ JPEG JSON LCMS2 LIBSYSTEMD
LIBXML2 MODULES NOTIFY INOTIFY PDUMPER PGTK PNG RSVG SECCOMP SOUND
THREADS TIFF TOOLKIT_SCROLL_BARS XIM GTK3 ZLIB

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

Major mode: Help

Minor modes in effect:
  global-git-commit-mode: t
  magit-auto-revert-mode: t
  shell-dirtrack-mode: t
  emms-mode-line-mode: t
  emms-playing-time-display-mode: t
  emms-playing-time-mode: t
  pdf-occur-global-minor-mode: t
  show-paren-mode: t
  electric-pair-mode: t
  repeat-mode: t
  swsw-mode: t
  global-auto-revert-mode: t
  delete-selection-mode: t
  vcomplete-mode: t
  display-time-mode: t
  minibuffer-line-mode: t
  minibuffer-electric-default-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  buffer-read-only: t
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t

Load-path shadows:
/home/daniel/etc/emacs/elpa/transient-0.3.6/transient hides /opt/Emacs/share/emacs/28.0.50/lisp/transient

Features:
(shadow emacsbug two-column project dired-aux term ehelp shortdoc view
misearch multi-isearch mule-util vc-mtn vc-hg vc-bzr vc-src vc-sccs
vc-svn vc-cvs vc-rcs vc bug-reference face-remap magit-bookmark
magit-submodule magit-obsolete magit-blame magit-stash magit-reflog
magit-bisect magit-push magit-pull magit-fetch magit-clone magit-remote
magit-commit magit-sequence magit-notes magit-worktree magit-tag
magit-merge magit-branch magit-reset magit-files magit-refs magit-status
magit magit-repos magit-apply magit-wip magit-log which-func magit-diff
git-commit rx log-edit pcvs-util add-log magit-core magit-autorevert
magit-margin magit-transient magit-process with-editor shell pcomplete
magit-mode transient magit-git magit-section magit-utils crm dash
deuglify gnus-cus gnus-demon gnus-diary nndiary gnus-draft gnus-dup
gnus-fun gnus-html url-queue gnus-kill gnus-logic gnus-mh mh-comp
mh-scan mh-gnus mh-e mh-compat mh-buffers mh-loaddefs gnus-registry
registry eieio-base gnus-salt gnus-uu yenc gnus-vm sendmail nnselect
gnus-search eieio-opt speedbar ezimage dframe help-fns radix-tree
cl-print debug backtrace noutline outline vc-git vc-dispatcher
emms-playlist-mode emms-source-playlist emms-source-file locate url-http
url-gw url-cache url-auth nnrss mm-url qp smerge-mode diff diff-mode
easy-mmode mm-archive sort smiley gnus-cite mail-extr gnus-async
gnus-bcklg gnus-ml disp-table gnus-topic nndraft nnmh nnfolder utf-7
epa-file cl-extra gnutls network-stream nsm gnus-agent gnus-srvr
gnus-score score-mode nnvirtual gnus-msg gnus-art mm-uu mml2015 mm-view
mml-smime smime dig nntp gnus-cache gnus-sum shr kinsoku svg dom
gnus-group gnus-undo init-gnus gnus-start gnus-dbus gnus-cloud nnimap
nnmail mail-source utf7 netrc nnoo parse-time iso8601 gnus-spec gnus-int
gnus-range message rmc puny rfc822 mml mml-sec epa derived epg rfc6068
epg-config mm-decode mm-bodies mm-encode mailabbrev gmm-utils mailheader
gnus-win gnus nnheader gnus-util rmail rmail-loaddefs mail-utils
cus-start webjump time-date checkdoc lisp-mnt mail-parse rfc2231 rfc2047
rfc2045 mm-util ietf-drums mail-prsvr help-mode flymake-proc flymake
warnings thingatpt cal-julian solar cal-dst cal-menu calendar
cal-loaddefs flyspell ispell edmacro kmacro init-interfaces grep
init-emms emms-mode-line emms-playing-time emms-player-mpv
emms-player-simple emms-info-opusinfo emms-info emms-later-do emms
emms-compat init-web elpher-eww-emulation init-volume init-pass
auth-source-pass pinentry init-programs pdf-occur ibuf-ext ibuffer
ibuffer-loaddefs tablist tablist-filter semantic/wisent/comp
semantic/wisent semantic/wisent/wisent semantic/util-modes semantic/util
semantic semantic/tag semantic/lex semantic/fw mode-local find-func
cedet pdf-isearch let-alist pdf-misc imenu pdf-tools compile comint
ansi-color ring pdf-view bookmark text-property-search jka-compr
pdf-cache pdf-info tq pdf-util advice format-spec image-mode exif dired
dired-loaddefs init-term init-eshell init-programming paren elec-pair
init-ui repeat swsw autorevert filenotify delsel vcomplete battery dbus
xml time minibuffer-line minibuf-eldef pcase init-base server finder-inf
package browse-url url url-proxy url-privacy url-expand url-methods
url-history url-cookie url-domsuf url-util mailcap 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 info cus-edit pp cus-load wid-edit cl-loaddefs cl-lib
iso-transl tooltip eldoc electric uniquify ediff-hook vc-hooks
lisp-float-type mwheel term/pgtk-win pgtk-win term/common-win 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 easymenu timer select scroll-bar mouse jit-lock
font-lock syntax 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 button loaddefs faces cus-face macroexp files
window text-properties overlay sha1 md5 base64 format env code-pages
mule custom widget hashtable-print-readable backquote threads inotify
dynamic-setting font-render-setting cairo move-toolbar gtk x-toolkit
pgtk lcms2 multi-tty make-network-process emacs)

Memory information:
((conses 16 634923 559779)
 (symbols 48 37441 3)
 (strings 32 180878 95332)
 (string-bytes 1 7865170)
 (vectors 16 76290)
 (vector-slots 8 1556469 156147)
 (floats 8 732 742)
 (intervals 56 8164 3393)
 (buffers 992 35))




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#50337; Package emacs. (Fri, 01 Oct 2021 15:03:02 GMT) Full text and rfc822 format available.

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

From: Fejfighter <fejfighter <at> gmail.com>
To: 50337 <at> debbugs.gnu.org
Date: Sat, 2 Oct 2021 00:37:03 +1000
[Message part 1 (text/plain, inline)]
Having looked at this, the variable is respected, it's largely the same
code as the x version.
if the cursor colour and the foreground face are different it will show up

The actual error is that the colour selected to draw was the foreground
face rather than the background used. this patch should correct it
[Message part 2 (text/html, inline)]
[0001-Set-correct-face-color-for-stretched-glyphs.patch (text/x-patch, attachment)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#50337; Package emacs. (Fri, 01 Oct 2021 15:03:03 GMT) Full text and rfc822 format available.

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

From: Fejfighter <fejfighter <at> gmail.com>
To: 50337 <at> debbugs.gnu.org
Date: Sat, 2 Oct 2021 00:54:34 +1000
[Message part 1 (text/plain, inline)]
This appears to be left over from earlier days of the port, no longer
needed.

made described change, bootstrapped and loaded new pgtk emacs, no concerns

patch attached
[Message part 2 (text/html, inline)]
[0001-configure.ac-PGTK_LIBS-remove-dl-dependency.patch (text/x-patch, attachment)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#50337; Package emacs. (Mon, 06 Dec 2021 18:13:01 GMT) Full text and rfc822 format available.

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

From: Daniel Semyonov <daniel <at> dsemy.com>
To: 50337 <at> debbugs.gnu.org
Subject: Re: bug#50337: 28.0.50; (while-no-input (redisplay) forms...) block
 behaves differently when window-system is pgtk
Date: Mon, 06 Dec 2021 20:12:33 +0200
This has been fixed at some point (not sure how to close this bug, or if
I'm even able to do so as the reporter).

Thanks,
Daniel




Reply sent to Daniel Semyonov <daniel <at> dsemy.com>:
You have taken responsibility. (Mon, 06 Dec 2021 18:32:01 GMT) Full text and rfc822 format available.

Notification sent to Daniel Semyonov <daniel <at> dsemy.com>:
bug acknowledged by developer. (Mon, 06 Dec 2021 18:32:01 GMT) Full text and rfc822 format available.

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

From: Daniel Semyonov <daniel <at> dsemy.com>
To: 50337-done <at> debbugs.gnu.org
Subject: bug#50337: 28.0.50; (while-no-input (redisplay) forms...) block
 behaves differently when window-system is pgtk
Date: Mon, 06 Dec 2021 20:31:39 +0200
My testing (on two different computers which were affected by this
issue) indicates that this bug has been fixed.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#50337; Package emacs. (Tue, 07 Dec 2021 02:21:02 GMT) Full text and rfc822 format available.

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

From: Po Lu <luangruo <at> yahoo.com>
To: Daniel Semyonov <daniel <at> dsemy.com>
Cc: 50337-done <at> debbugs.gnu.org
Subject: Re: bug#50337: 28.0.50; (while-no-input (redisplay) forms...) block
 behaves differently when window-system is pgtk
Date: Tue, 07 Dec 2021 10:20:10 +0800
Daniel Semyonov <daniel <at> dsemy.com> writes:

> This has been fixed at some point (not sure how to close this bug, or if
> I'm even able to do so as the reporter).
>
> Thanks,
> Daniel

Great!  I think I fixed that a few days ago making interrupt-based input
work on the PGTK port, so I'm closing this bug.




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Tue, 04 Jan 2022 12:24:05 GMT) Full text and rfc822 format available.

This bug report was last modified 2 years and 74 days ago.

Previous Next


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