Subject: bug#38633: 27.0.50; Broken faces

From: Eli Zaretskii <[email-masked]>
Date: Mon, 16 Dec 2019 09:48:46 +0200

On December 16, 2019 9:04:00 AM GMT+02:00, Manuel Uberti <[email-masked]> wrote:
> Hi,
> 
> I am tracking Emacs master branch, and following commit dd3f2130cf2 (*
> A better
> fix for extension of overlay string's faces), adding ":extend t" to
> some of the
> faces in the packages I use to extend them as needed doesn't seem to
> work any more.
> 
> One example is here:
> https://github.com/emacs-helm/helm-ls-git/issues/55
> 
> What needs to be done to fix the broken faces?
> 
> Thank you
> Kind regards
> 
> 
> In GNU Emacs 27.0.50 (build 1, x86_64-debian-linux-gnu, GTK+ Version
> 3.22.30)
>  of 2019-12-16 built on hathaway
> Repository revision: 5aab1e83f55ccbf7affc25272f6b1107aa17598c
> Repository branch: master
> Windowing system distributor 'The X.Org Foundation', version
> 11.0.12004000
> System Description: Ubuntu 18.04.3 LTS
> 
> Recent messages:
> Waiting for git... [2 times]
> Starting new Ispell process /usr/bin/hunspell with en_GB
> dictionary...done
> Loading /home/manuel/.emacs.d/var/recentf-save.el (source)...done
> Beginning of buffer [2 times]
> Mark set
> 
> Configured using:
>  'configure --host=x86_64-debian-linux-gnu --with-modules
>  --with-imagemagick --with-harfbuzz'
> 
> Configured features:
> XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND GPM DBUS GSETTINGS GLIB
> NOTIFY INOTIFY ACL LIBSELINUX GNUTLS LIBXML2 FREETYPE HARFBUZZ
> M17N_FLT
> LIBOTF XFT ZLIB TOOLKIT_SCROLL_BARS GTK3 X11 XDBE XIM MODULES THREADS
> PDUMPER LCMS2 GMP
> 
> Important settings:
>   value of $LC_MONETARY: it_IT.UTF-8
>   value of $LC_NUMERIC: it_IT.UTF-8
>   value of $LC_TIME: it_IT.UTF-8
>   value of $LANG: en_GB.UTF-8
>   value of $XMODIFIERS: @im=ibus
>   locale-coding-system: utf-8
> 
> Major mode: Fundamental
> 
> Minor modes in effect:
>   git-identity-magit-mode: t
>   global-magit-file-mode: t
>   magit-auto-revert-mode: t
>   global-git-commit-mode: t
>   shell-command-with-editor-mode: t
>   async-bytecomp-package-mode: t
>   global-flycheck-mode: t
>   global-company-mode: t
>   company-mode: t
>   recentf-mode: t
>   helm-adaptive-mode: t
>   helm-mode: t
>   shell-dirtrack-mode: t
>   global-page-break-lines-mode: t
>   delete-selection-mode: t
>   auto-image-file-mode: t
>   direnv-mode: t
>   eldoc-in-minibuffer-mode: t
>   global-git-gutter-mode: t
>   helm-descbinds-mode: t
>   helm-autoresize-mode: t
>   helm--remap-mouse-mode: t
>   mark-thing-at-mode: t
>   minibuffer-depth-indicate-mode: t
>   save-place-mode: t
>   show-smartparens-global-mode: t
>   show-smartparens-mode: t
>   smartparens-global-mode: t
>   smartparens-mode: t
>   global-so-long-mode: t
>   winner-mode: t
>   ws-butler-global-mode: t
>   ws-butler-mode: t
>   psession-mode: t
>   psession-savehist-mode: t
>   el-patch-use-package-mode: t
>   general-override-mode: t
>   gcmh-mode: t
>   straight-use-package-mode: t
>   global-eldoc-mode: t
>   eldoc-mode: t
>   electric-indent-mode: t
>   mouse-wheel-mode: t
>   tool-bar-mode: t
>   menu-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
>   transient-mark-mode: t
> 
> Load-path shadows:
> /home/manuel/.emacs.d/straight/build/let-alist/let-alist hides
> /usr/local/share/emacs/27.0.50/lisp/emacs-lisp/let-alist
> 
> Features:
> (shadow sort mail-extr emacsbug sendmail helm-command helm-elisp
> helm-eval magit-extras descr-text bug-reference mule-util git-identity
> hydra lv 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 package url-handlers
> magit-repos magit-apply magit-wip magit-log which-func magit-diff
> smerge-mode diff magit-core magit-autorevert magit-margin
> magit-transient magit-process magit-mode transient git-commit
> magit-git
> magit-section benchmark magit-utils crm log-edit message rmc rfc822
> mml
> mml-sec epa epg epg-config gnus-util rmail rmail-loaddefs 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 flycheck-clj-kondo
> flycheck
> jka-compr compile let-alist ido helm-ls-git vc-git diff-mode vc
> vc-dispatcher helm-x-files disp-table autorevert filenotify
> company-oddmuse company-keywords company-etags etags fileloop
> generator
> company-gtags company-dabbrev-code company-dabbrev company-files
> company-capf company-cmake company-xcode company-clang
> company-semantic
> company-eclim company-template company-bbdb company cursor-sensor
> recentf tree-widget wid-edit helm-for-files helm-bookmark helm-info
> hippie-exp rainbow-mode xterm-color flyspell-correct-helm
> flyspell-correct flyspell ispell goto-addr highlight-numbers
> parent-mode
> hl-line symbol-overlay bookmark text-property-search pp helm-external
> helm-net browse-url xml url url-proxy url-privacy url-expand
> url-methods
> url-history url-cookie url-domsuf url-util mailcap helm-adaptive
> helm-xref xref project helpful imenu trace edebug backtrace info-look
> find-func f dash-functional help-fns radix-tree elisp-refs s loop
> helm-mode helm-files image-dired image-mode exif tramp tramp-loaddefs
> trampver tramp-integration files-x tramp-compat shell pcomplete comint
> ansi-color parse-time iso8601 time-date ls-lisp dired-aux ffap
> url-parse
> auth-source password-cache url-vars helm-buffers helm-occur helm-tags
> helm-locate helm-grep helm-regexp format-spec helm-utils helm-help
> helm-types page-break-lines sanityinc-tomorrow-night-theme
> color-theme-sanityinc-tomorrow color delsel image-file server dired-x
> dired dired-loaddefs direnv json map eldoc-eval git-gutter-fringe
> fringe-helper git-gutter helm-descbinds helm derived helm-source
> eieio-compat helm-multi-match helm-lib pcase keychain-environment
> mark-thing-at choice-program choice-program-complete eieio mb-depth
> saveplace smartparens advice thingatpt dash so-long winner ws-butler
> zop-to-char-autoloads xterm-color-autoloads ws-butler-autoloads
> wordnut-autoloads wgrep-autoloads web-mode-autoloads
> visual-regexp-steroids-autoloads visual-regexp-autoloads
> unfill-autoloads undo-fu-autoloads typo-autoloads trashed-autoloads
> symbol-overlay-autoloads smartparens-autoloads rainbow-mode-autoloads
> psession async psession-autoloads page-break-lines-autoloads
> multiple-cursors-autoloads markdown-mode-autoloads
> mark-thing-at-autoloads choice-program-autoloads magit-autoloads
> transient-autoloads latex-extra-autoloads
> keychain-environment-autoloads
> kaocha-runner-autoloads json-mode-autoloads rx json-snatcher-autoloads
> json-reformat-autoloads js2-mode-autoloads hungry-delete-autoloads
> highlight-numbers-autoloads parent-mode-autoloads helpful-autoloads
> elisp-refs-autoloads loop-autoloads dash-functional-autoloads
> helm-xref-autoloads el-patch helm-rg-autoloads helm-ls-git-autoloads
> eieio-core eieio-loaddefs helm-descbinds-autoloads
> helm-bibtex-autoloads
> biblio-autoloads biblio-core-autoloads parsebib-autoloads
> goto-last-change-autoloads gnutls puny git-identity-autoloads
> f-autoloads hydra-autoloads lv-autoloads git-gutter-fringe-autoloads
> fringe-helper-autoloads git-gutter-autoloads git-commit-autoloads
> with-editor-autoloads flyspell-correct-helm-autoloads helm-autoloads
> helm-core-autoloads popup-autoloads async-autoloads
> flyspell-correct-autoloads ring flycheck-clj-kondo-autoloads
> flycheck-autoloads let-alist-autoloads fish-mode-autoloads
> fd-dired-autoloads esup-autoloads fullframe elfeed-autoloads
> eldoc-eval-autoloads dotenv-mode-autoloads dockerfile-mode-autoloads
> docker-compose-mode-autoloads yaml-mode-autoloads direnv-autoloads
> dash-autoloads diredfl-autoloads csv-mode-autoloads
> css-eldoc-autoloads
> crux-autoloads company-reftex-autoloads s-autoloads
> company-auctex-autoloads auctex-autoloads tex-site yasnippet-autoloads
> company-autoloads color-theme-sanityinc-tomorrow-autoloads
> cider-autoloads sesman-autoloads spinner-autoloads queue-autoloads
> pkg-info-autoloads epl-autoloads parseedn-autoloads parseclj-autoloads
> a-autoloads clojure-mode-autoloads beginend-autoloads
> bash-completion-autoloads apheleia-autoloads easy-mmode
> ace-window-autoloads avy-autoloads edmacro kmacro general no-littering
> no-littering-autoloads general-autoloads gcmh gcmh-autoloads
> el-patch-autoloads blackout blackout-autoloads cl-seq use-package-core
> fullframe-autoloads finder-inf use-package-autoloads
> bind-key-autoloads
> straight-autoloads info cl-extra help-mode easymenu seq byte-opt
> straight subr-x cl-macs gv cl-loaddefs cl-lib bytecomp byte-compile
> cconv 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 system-font-setting font-render-setting
> move-toolbar gtk x-toolkit x multi-tty make-network-process emacs)
> 
> Memory information:
> ((conses 16 565329 388594)
>  (symbols 48 31644 352)
>  (strings 32 132974 49678)
>  (string-bytes 1 5399781)
>  (vectors 16 40747)
>  (vector-slots 8 472816 230820)
>  (floats 8 419 775)
>  (intervals 56 1429 388)
>  (buffers 1000 24))

Thank you for your report.

Are you saying that the problems were caused   by dd3f2130cf2 alone?  IOW, if you go back to d57bb0c323 (note: this is NOT the parent of dd3f2130cf2!), then the problems disappear?  If not, please tell which was the last commit on master you used before the problematic one.

In general, I don't understand what exactly is the face setup in your scenario (I don't use helm), even afyer reading the issue you referred to.  So I will need a detailed description of what happens in that use case, including whether there are display strings or overlays involved, and what are the faces in effect there.  For best results, please provide a reproduction recipe starting from "emacs -Q", preferably not involving helm at all.

Thanks.