Subject: 27.0.50; Update mode-line of every window when compilation ends

From: Kévin Le Gouguec <[email-masked]>
Date: Wed, 24 Jul 2019 23:22:11 +0200

Hello,

The recent changes on the compilation-in-progress indicator[1] made me
realize that the indicator lingers in the mode-lines of some windows.
To reproduce from emacs -Q:

    C-x 2
    C-x 2
    M-x compile RET C-a C-k true RET

"[Compiling]" correctly disappears from the current window and the
compilation window, but it lingers on the mode-line of the third window.

The attached patch trivially fixes the issue; I do not know whether it's
appropriate, or maybe too heavyweight.

>From 25bc31d85ffd7e27e00ba73bac47856def9e97ec Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?K=C3=A9vin=20Le=20Gouguec?= <[email-masked]>
Date: Wed, 24 Jul 2019 22:50:59 +0200
Subject: [PATCH] Update every mode-line when compilation ends

Otherwise the "[Compiling]" indicator lingers in some of them.

* lisp/progmodes/compile.el (compilation-handle-exit): Refresh
every mode-line.
---
 lisp/progmodes/compile.el | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/lisp/progmodes/compile.el b/lisp/progmodes/compile.el
index f4750c0059..657650b488 100644
--- a/lisp/progmodes/compile.el
+++ b/lisp/progmodes/compile.el
@@ -2214,7 +2214,7 @@ compilation-handle-exit
                                  'compilation-mode-line-exit)))
            compilation-mode-line-errors))
     ;; Force mode line redisplay soon.
-    (force-mode-line-update)
+    (force-mode-line-update t)
     (if (and opoint (< opoint omax))
 	(goto-char opoint))
     (run-hook-with-args 'compilation-finish-functions cur-buffer msg)))
-- 
2.22.0

WDYT?

[1] Make "Compiling" in the mode line a clickable command
    http://git.savannah.gnu.org/cgit/emacs.git/commit/?id=3479ec7332a474b3400cbc6b681c2a1f5637db94

In GNU Emacs 27.0.50 (build 5, x86_64-pc-linux-gnu, GTK+ Version 3.24.9, cairo version 1.16.0)
 of 2019-07-03 built on my-little-tumbleweed
Repository revision: 22760ab357dd8124c856b76a545e562917872d78
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12005000
System Description: openSUSE Tumbleweed

Configured using:
 'configure --with-xwidgets --with-cairo'

Configured features:
XPM JPEG TIFF GIF PNG RSVG CAIRO SOUND GPM DBUS GSETTINGS GLIB NOTIFY
INOTIFY ACL LIBSELINUX GNUTLS LIBXML2 FREETYPE HARFBUZZ M17N_FLT LIBOTF
ZLIB TOOLKIT_SCROLL_BARS GTK3 X11 XDBE XIM THREADS XWIDGETS JSON PDUMPER
LCMS2 GMP

Important settings:
  value of $LC_CTYPE: en_US.UTF-8
  value of $LANG: en_US.UTF-8
  value of $XMODIFIERS: @im=local
  locale-coding-system: utf-8-unix

Major mode: Magit

Minor modes in effect:
  global-magit-file-mode: t
  magit-auto-revert-mode: t
  global-git-commit-mode: t
  async-bytecomp-package-mode: t
  shell-dirtrack-mode: t
  show-paren-mode: t
  minibuffer-depth-indicate-mode: t
  icomplete-mode: t
  global-page-break-lines-mode: t
  page-break-lines-mode: t
  electric-pair-mode: t
  diff-hl-flydiff-mode: t
  global-diff-hl-mode: t
  delete-selection-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:
None found.

Features:
(shadow sort mail-extr magit-patch bug-reference gnus-async qp gnus-ml
nndraft nnmh nnfolder utf-7 epa-file 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 mailcap nntp gnus-cache
gnus-sum gnus-group gnus-undo gnus-start gnus-cloud nnimap nnmail
mail-source utf7 netrc nnoo parse-time gnus-spec gnus-int gnus-range
gnus-win gnus nnheader emacsbug sendmail magit-extras flyspell ispell
rect thingatpt magit-submodule magit-obsolete magit-popup 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 imenu magit-diff smerge-mode magit-core
magit-autorevert autorevert filenotify magit-margin magit-transient
magit-process magit-mode transient git-commit magit-git magit-section
magit-utils crm log-edit message rmc puny dired dired-loaddefs
format-spec rfc822 mml mml-sec epa derived epg gnus-util rmail
rmail-loaddefs text-property-search time-date mm-decode mm-bodies
mm-encode mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums
mail-prsvr mailabbrev mail-utils gmm-utils mailheader pcvs-util add-log
with-editor async-bytecomp async server dash executable cus-edit
wid-edit whitespace eieio-opt speedbar sb-image ezimage dframe shell
pcomplete help-fns radix-tree cl-print debug backtrace find-func
misearch multi-isearch vc-git files-x pcase rx delight advice
eighters-theme cl-extra rg rg-ibuffer rg-result wgrep-rg wgrep s
rg-history rg-header rg-compat ibuf-ext ibuffer ibuffer-loaddefs grep
compile comint ansi-color ring quail help-mode edmacro kmacro disp-table
paren mb-depth icomplete page-break-lines elec-pair diff-hl-flydiff diff
diff-hl vc-dir ewoc vc vc-dispatcher diff-mode easy-mmode delsel
cus-start cus-load mule-util info package easymenu epg-config
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 menu-bar rfn-eshadow isearch timer select
scroll-bar mouse jit-lock font-lock syntax facemenu font-core
term/tty-colors 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 composite charscript charprop case-table epa-hook jka-cmpr-hook
help simple abbrev obarray 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 threads dbusbind inotify lcms2 dynamic-setting
system-font-setting font-render-setting xwidget-internal cairo
move-toolbar gtk x-toolkit x multi-tty make-network-process emacs)

Memory information:
((conses 16 285991 35395)
 (symbols 48 25540 1)
 (strings 32 82326 4257)
 (string-bytes 1 2726046)
 (vectors 16 48859)
 (vector-slots 8 1366992 49654)
 (floats 8 259 339)
 (intervals 56 4124 4946)
 (buffers 992 32))