all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* bug#58479: 29.0.50; [feature/noverlay] Displaced overlays in notmuch search buffers after refreshing
@ 2022-10-13  2:17 Ihor Radchenko
  2022-10-13  4:25 ` Matt Armstrong
  0 siblings, 1 reply; 24+ messages in thread
From: Ihor Radchenko @ 2022-10-13  2:17 UTC (permalink / raw)
  To: 58479

Hi,

As I mentioned in
https://yhetil.org/emacs-devel/jwvo7ulzmvv.fsf-monnier+emacs@gnu.org/, I
consistently observe issues with overlays in notmuch search buffers on
feature/noverlay branch.

I have tested with Emacs 29 master vs. feature/noverlay and confirm that
the problem only appears in feature/noverlays.

I do not have a good recipe starting from emacs -Q (not sure how to make
that for notmuch), but I will try to provide as much information as I
can.

When I do
1. M-x notmuch-search <RET> date:today <RET>
   notmuch search buffer with today's email is displayed on my system
   This search buffer uses overlays to truncate thread author list:

   Text content at position 35:


There is an overlay here:
 From 35 to 68
  invisible            ellipsis
  isearch-open-invisible delete-overlay


There are text properties here:
  face                 (notmuch-search-flagged-face notmuch-search-non-matching-authors)
  notmuch-search-result [Show]

 At this point, no anomaly is observed
2. I hit "r" to refresh current notmuch buffer
   Unexpectedly, "..." (depicting hidden overlays) appear at bob.
   M-x describe-text-properties on the strange overlay yields:

   There are 12 overlays here:
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 ....

3. I hit "r" again and I get 24 overlays ther
4. The number of overlays grows proportionally with number of times I
   hit "r"

I tried to debug a bit further and noted that running
M-: (let ((inhibit-read-only t)) (erase-buffer))
in the search buffer followed by
M-: (overlays-in (point-min) (point-max))
yields non-nil -- overlays are not cleared upon deleting the containing text.

In GNU Emacs 29.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version
 3.24.34, cairo version 1.16.0) of 2022-10-12 built on yantar92-laptop
Repository revision: 12836db6e4e09378d41301b3d4e1fcff58132d3a
Repository branch: feature/noverlay
Windowing system distributor 'The X.Org Foundation', version 11.0.12101004
System Description: Gentoo Linux

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ JPEG
JSON LCMS2 LIBXML2 MODULES NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP SOUND
SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS WEBP X11 XDBE XIM XINPUT2 XPM
GTK3 ZLIB

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

Major mode: notmuch-search

Minor modes in effect:
  pyvenv-mode: t
  TeX-PDF-mode: t
  git-email-notmuch-mode: t
  git-email-piem-mode: t
  piem-notmuch-mode: t
  org-edna-mode: t
  eros-mode: t
  pdf-occur-global-minor-mode: t
  which-key-mode: t
  diredfl-global-mode: t
  winner-mode: t
  eval-sexp-fu-flash-mode: t
  global-flycheck-mode: t
  flycheck-mode: t
  el-patch-use-package-mode: t
  global-git-commit-mode: t
  magit-auto-revert-mode: t
  recentf-mode: t
  persistent-scratch-autosave-mode: t
  savehist-mode: t
  helm-adaptive-mode: t
  helm-mode: t
  helm-minibuffer-history-mode: t
  helm-ff-icon-mode: t
  shell-dirtrack-mode: t
  helm--remap-mouse-mode: t
  async-bytecomp-package-mode: t
  boon-mode: t
  boon-local-mode: t
  global-page-break-lines-mode: t
  shackle-mode: t
  override-global-mode: t
  straight-use-package-mode: t
  straight-package-neutering-mode: t
  global-eldoc-mode: t
  show-paren-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  global-prettify-symbols-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  window-divider-mode: t
  buffer-read-only: t
  line-number-mode: t
  indent-tabs-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  abbrev-mode: t

Load-path shadows:
/home/yantar92/.emacs.d/straight/build/transient/transient hides /home/yantar92/Git/emacs/lisp/transient
/home/yantar92/.emacs.d/straight/build/xref/xref hides /home/yantar92/Git/emacs/lisp/progmodes/xref
/home/yantar92/.emacs.d/straight/build/project/project hides /home/yantar92/Git/emacs/lisp/progmodes/project
/home/yantar92/.emacs.d/straight/build/org/ox-odt hides /home/yantar92/Git/emacs/lisp/org/ox-odt
/home/yantar92/.emacs.d/straight/build/org/org hides /home/yantar92/Git/emacs/lisp/org/org
/home/yantar92/.emacs.d/straight/build/org/ox-org hides /home/yantar92/Git/emacs/lisp/org/ox-org
/home/yantar92/.emacs.d/straight/build/org/ox-publish hides /home/yantar92/Git/emacs/lisp/org/ox-publish
/home/yantar92/.emacs.d/straight/build/org/ox-man hides /home/yantar92/Git/emacs/lisp/org/ox-man
/home/yantar92/.emacs.d/straight/build/org/ox-md hides /home/yantar92/Git/emacs/lisp/org/ox-md
/home/yantar92/.emacs.d/straight/build/org/ox-latex hides /home/yantar92/Git/emacs/lisp/org/ox-latex
/home/yantar92/.emacs.d/straight/build/org/ox-koma-letter hides /home/yantar92/Git/emacs/lisp/org/ox-koma-letter
/home/yantar92/.emacs.d/straight/build/org/ox-icalendar hides /home/yantar92/Git/emacs/lisp/org/ox-icalendar
/home/yantar92/.emacs.d/straight/build/org/ox-html hides /home/yantar92/Git/emacs/lisp/org/ox-html
/home/yantar92/.emacs.d/straight/build/org/ox-beamer hides /home/yantar92/Git/emacs/lisp/org/ox-beamer
/home/yantar92/.emacs.d/straight/build/org/ox-ascii hides /home/yantar92/Git/emacs/lisp/org/ox-ascii
/home/yantar92/.emacs.d/straight/build/org/org-timer hides /home/yantar92/Git/emacs/lisp/org/org-timer
/home/yantar92/.emacs.d/straight/build/org/org-tempo hides /home/yantar92/Git/emacs/lisp/org/org-tempo
/home/yantar92/.emacs.d/straight/build/org/org-table hides /home/yantar92/Git/emacs/lisp/org/org-table
/home/yantar92/.emacs.d/straight/build/org/org-refile hides /home/yantar92/Git/emacs/lisp/org/org-refile
/home/yantar92/.emacs.d/straight/build/org/org-protocol hides /home/yantar92/Git/emacs/lisp/org/org-protocol
/home/yantar92/.emacs.d/straight/build/org/org-src hides /home/yantar92/Git/emacs/lisp/org/org-src
/home/yantar92/.emacs.d/straight/build/org/org-plot hides /home/yantar92/Git/emacs/lisp/org/org-plot
/home/yantar92/.emacs.d/straight/build/org/org-mouse hides /home/yantar92/Git/emacs/lisp/org/org-mouse
/home/yantar92/.emacs.d/straight/build/org/org-num hides /home/yantar92/Git/emacs/lisp/org/org-num
/home/yantar92/.emacs.d/straight/build/org/org-lint hides /home/yantar92/Git/emacs/lisp/org/org-lint
/home/yantar92/.emacs.d/straight/build/org/org-mobile hides /home/yantar92/Git/emacs/lisp/org/org-mobile
/home/yantar92/.emacs.d/straight/build/org/org-pcomplete hides /home/yantar92/Git/emacs/lisp/org/org-pcomplete
/home/yantar92/.emacs.d/straight/build/org/org-inlinetask hides /home/yantar92/Git/emacs/lisp/org/org-inlinetask
/home/yantar92/.emacs.d/straight/build/org/org-indent hides /home/yantar92/Git/emacs/lisp/org/org-indent
/home/yantar92/.emacs.d/straight/build/org/org-list hides /home/yantar92/Git/emacs/lisp/org/org-list
/home/yantar92/.emacs.d/straight/build/org/org-macs hides /home/yantar92/Git/emacs/lisp/org/org-macs
/home/yantar92/.emacs.d/straight/build/org/org-loaddefs hides /home/yantar92/Git/emacs/lisp/org/org-loaddefs
/home/yantar92/.emacs.d/straight/build/org/org-id hides /home/yantar92/Git/emacs/lisp/org/org-id
/home/yantar92/.emacs.d/straight/build/org/org-feed hides /home/yantar92/Git/emacs/lisp/org/org-feed
/home/yantar92/.emacs.d/straight/build/org/org-goto hides /home/yantar92/Git/emacs/lisp/org/org-goto
/home/yantar92/.emacs.d/straight/build/org/org-habit hides /home/yantar92/Git/emacs/lisp/org/org-habit
/home/yantar92/.emacs.d/straight/build/org/org-keys hides /home/yantar92/Git/emacs/lisp/org/org-keys
/home/yantar92/.emacs.d/straight/build/org/org-ctags hides /home/yantar92/Git/emacs/lisp/org/org-ctags
/home/yantar92/.emacs.d/straight/build/org/org-datetree hides /home/yantar92/Git/emacs/lisp/org/org-datetree
/home/yantar92/.emacs.d/straight/build/org/org-agenda hides /home/yantar92/Git/emacs/lisp/org/org-agenda
/home/yantar92/.emacs.d/straight/build/org/org-footnote hides /home/yantar92/Git/emacs/lisp/org/org-footnote
/home/yantar92/.emacs.d/straight/build/org/org-faces hides /home/yantar92/Git/emacs/lisp/org/org-faces
/home/yantar92/.emacs.d/straight/build/org/org-duration hides /home/yantar92/Git/emacs/lisp/org/org-duration
/home/yantar92/.emacs.d/straight/build/org/org-clock hides /home/yantar92/Git/emacs/lisp/org/org-clock
/home/yantar92/.emacs.d/straight/build/org/org-entities hides /home/yantar92/Git/emacs/lisp/org/org-entities
/home/yantar92/.emacs.d/straight/build/org/org-crypt hides /home/yantar92/Git/emacs/lisp/org/org-crypt
/home/yantar92/.emacs.d/straight/build/org/org-capture hides /home/yantar92/Git/emacs/lisp/org/org-capture
/home/yantar92/.emacs.d/straight/build/org/org-compat hides /home/yantar92/Git/emacs/lisp/org/org-compat
/home/yantar92/.emacs.d/straight/build/org/org-colview hides /home/yantar92/Git/emacs/lisp/org/org-colview
/home/yantar92/.emacs.d/straight/build/org/org-attach-git hides /home/yantar92/Git/emacs/lisp/org/org-attach-git
/home/yantar92/.emacs.d/straight/build/org/org-archive hides /home/yantar92/Git/emacs/lisp/org/org-archive
/home/yantar92/.emacs.d/straight/build/org/org-attach hides /home/yantar92/Git/emacs/lisp/org/org-attach
/home/yantar92/.emacs.d/straight/build/org/ol-rmail hides /home/yantar92/Git/emacs/lisp/org/ol-rmail
/home/yantar92/.emacs.d/straight/build/org/ol-w3m hides /home/yantar92/Git/emacs/lisp/org/ol-w3m
/home/yantar92/.emacs.d/straight/build/org/ol-gnus hides /home/yantar92/Git/emacs/lisp/org/ol-gnus
/home/yantar92/.emacs.d/straight/build/org/ol-mhe hides /home/yantar92/Git/emacs/lisp/org/ol-mhe
/home/yantar92/.emacs.d/straight/build/org/ob-fortran hides /home/yantar92/Git/emacs/lisp/org/ob-fortran
/home/yantar92/.emacs.d/straight/build/org/ol-eww hides /home/yantar92/Git/emacs/lisp/org/ol-eww
/home/yantar92/.emacs.d/straight/build/org/ol-irc hides /home/yantar92/Git/emacs/lisp/org/ol-irc
/home/yantar92/.emacs.d/straight/build/org/ol-info hides /home/yantar92/Git/emacs/lisp/org/ol-info
/home/yantar92/.emacs.d/straight/build/org/ol-man hides /home/yantar92/Git/emacs/lisp/org/ol-man
/home/yantar92/.emacs.d/straight/build/org/ol-docview hides /home/yantar92/Git/emacs/lisp/org/ol-docview
/home/yantar92/.emacs.d/straight/build/org/ol-bibtex hides /home/yantar92/Git/emacs/lisp/org/ol-bibtex
/home/yantar92/.emacs.d/straight/build/org/ol-eshell hides /home/yantar92/Git/emacs/lisp/org/ol-eshell
/home/yantar92/.emacs.d/straight/build/org/ol-doi hides /home/yantar92/Git/emacs/lisp/org/ol-doi
/home/yantar92/.emacs.d/straight/build/org/oc-csl hides /home/yantar92/Git/emacs/lisp/org/oc-csl
/home/yantar92/.emacs.d/straight/build/org/ol-bbdb hides /home/yantar92/Git/emacs/lisp/org/ol-bbdb
/home/yantar92/.emacs.d/straight/build/org/oc-natbib hides /home/yantar92/Git/emacs/lisp/org/oc-natbib
/home/yantar92/.emacs.d/straight/build/org/oc-basic hides /home/yantar92/Git/emacs/lisp/org/oc-basic
/home/yantar92/.emacs.d/straight/build/org/oc-biblatex hides /home/yantar92/Git/emacs/lisp/org/oc-biblatex
/home/yantar92/.emacs.d/straight/build/org/ob hides /home/yantar92/Git/emacs/lisp/org/ob
/home/yantar92/.emacs.d/straight/build/org/ob-tangle hides /home/yantar92/Git/emacs/lisp/org/ob-tangle
/home/yantar92/.emacs.d/straight/build/org/ob-table hides /home/yantar92/Git/emacs/lisp/org/ob-table
/home/yantar92/.emacs.d/straight/build/org/ob-sqlite hides /home/yantar92/Git/emacs/lisp/org/ob-sqlite
/home/yantar92/.emacs.d/straight/build/org/ob-sql hides /home/yantar92/Git/emacs/lisp/org/ob-sql
/home/yantar92/.emacs.d/straight/build/org/ob-sed hides /home/yantar92/Git/emacs/lisp/org/ob-sed
/home/yantar92/.emacs.d/straight/build/org/ob-shell hides /home/yantar92/Git/emacs/lisp/org/ob-shell
/home/yantar92/.emacs.d/straight/build/org/ob-C hides /home/yantar92/Git/emacs/lisp/org/ob-C
/home/yantar92/.emacs.d/straight/build/org/ob-screen hides /home/yantar92/Git/emacs/lisp/org/ob-screen
/home/yantar92/.emacs.d/straight/build/org/ob-sass hides /home/yantar92/Git/emacs/lisp/org/ob-sass
/home/yantar92/.emacs.d/straight/build/org/ob-python hides /home/yantar92/Git/emacs/lisp/org/ob-python
/home/yantar92/.emacs.d/straight/build/org/ob-scheme hides /home/yantar92/Git/emacs/lisp/org/ob-scheme
/home/yantar92/.emacs.d/straight/build/org/ob-ruby hides /home/yantar92/Git/emacs/lisp/org/ob-ruby
/home/yantar92/.emacs.d/straight/build/org/ob-processing hides /home/yantar92/Git/emacs/lisp/org/ob-processing
/home/yantar92/.emacs.d/straight/build/org/ob-ref hides /home/yantar92/Git/emacs/lisp/org/ob-ref
/home/yantar92/.emacs.d/straight/build/org/ob-plantuml hides /home/yantar92/Git/emacs/lisp/org/ob-plantuml
/home/yantar92/.emacs.d/straight/build/org/ob-org hides /home/yantar92/Git/emacs/lisp/org/ob-org
/home/yantar92/.emacs.d/straight/build/org/ob-perl hides /home/yantar92/Git/emacs/lisp/org/ob-perl
/home/yantar92/.emacs.d/straight/build/org/ob-octave hides /home/yantar92/Git/emacs/lisp/org/ob-octave
/home/yantar92/.emacs.d/straight/build/org/ob-ocaml hides /home/yantar92/Git/emacs/lisp/org/ob-ocaml
/home/yantar92/.emacs.d/straight/build/org/ob-matlab hides /home/yantar92/Git/emacs/lisp/org/ob-matlab
/home/yantar92/.emacs.d/straight/build/org/ob-maxima hides /home/yantar92/Git/emacs/lisp/org/ob-maxima
/home/yantar92/.emacs.d/straight/build/org/ob-makefile hides /home/yantar92/Git/emacs/lisp/org/ob-makefile
/home/yantar92/.emacs.d/straight/build/org/ob-lua hides /home/yantar92/Git/emacs/lisp/org/ob-lua
/home/yantar92/.emacs.d/straight/build/org/ob-lob hides /home/yantar92/Git/emacs/lisp/org/ob-lob
/home/yantar92/.emacs.d/straight/build/org/ob-lisp hides /home/yantar92/Git/emacs/lisp/org/ob-lisp
/home/yantar92/.emacs.d/straight/build/org/ob-lilypond hides /home/yantar92/Git/emacs/lisp/org/ob-lilypond
/home/yantar92/.emacs.d/straight/build/org/ob-latex hides /home/yantar92/Git/emacs/lisp/org/ob-latex
/home/yantar92/.emacs.d/straight/build/org/ob-julia hides /home/yantar92/Git/emacs/lisp/org/ob-julia
/home/yantar92/.emacs.d/straight/build/org/ob-js hides /home/yantar92/Git/emacs/lisp/org/ob-js
/home/yantar92/.emacs.d/straight/build/org/ob-java hides /home/yantar92/Git/emacs/lisp/org/ob-java
/home/yantar92/.emacs.d/straight/build/org/ob-haskell hides /home/yantar92/Git/emacs/lisp/org/ob-haskell
/home/yantar92/.emacs.d/straight/build/org/ob-groovy hides /home/yantar92/Git/emacs/lisp/org/ob-groovy
/home/yantar92/.emacs.d/straight/build/org/ob-gnuplot hides /home/yantar92/Git/emacs/lisp/org/ob-gnuplot
/home/yantar92/.emacs.d/straight/build/org/ob-forth hides /home/yantar92/Git/emacs/lisp/org/ob-forth
/home/yantar92/.emacs.d/straight/build/org/ob-exp hides /home/yantar92/Git/emacs/lisp/org/ob-exp
/home/yantar92/.emacs.d/straight/build/org/ob-eshell hides /home/yantar92/Git/emacs/lisp/org/ob-eshell
/home/yantar92/.emacs.d/straight/build/org/ob-dot hides /home/yantar92/Git/emacs/lisp/org/ob-dot
/home/yantar92/.emacs.d/straight/build/org/ob-core hides /home/yantar92/Git/emacs/lisp/org/ob-core
/home/yantar92/.emacs.d/straight/build/org/ob-eval hides /home/yantar92/Git/emacs/lisp/org/ob-eval
/home/yantar92/.emacs.d/straight/build/org/ob-emacs-lisp hides /home/yantar92/Git/emacs/lisp/org/ob-emacs-lisp
/home/yantar92/.emacs.d/straight/build/org/ob-ditaa hides /home/yantar92/Git/emacs/lisp/org/ob-ditaa
/home/yantar92/.emacs.d/straight/build/org/ob-css hides /home/yantar92/Git/emacs/lisp/org/ob-css
/home/yantar92/.emacs.d/straight/build/org/ob-clojure hides /home/yantar92/Git/emacs/lisp/org/ob-clojure
/home/yantar92/.emacs.d/straight/build/org/ob-calc hides /home/yantar92/Git/emacs/lisp/org/ob-calc
/home/yantar92/.emacs.d/straight/build/org/ob-comint hides /home/yantar92/Git/emacs/lisp/org/ob-comint
/home/yantar92/.emacs.d/straight/build/org/ob-awk hides /home/yantar92/Git/emacs/lisp/org/ob-awk
/home/yantar92/.emacs.d/straight/build/org/ob-R hides /home/yantar92/Git/emacs/lisp/org/ob-R
/home/yantar92/.emacs.d/straight/build/org/org-element hides /home/yantar92/Git/emacs/lisp/org/org-element
/home/yantar92/.emacs.d/straight/build/org/ox hides /home/yantar92/Git/emacs/lisp/org/ox
/home/yantar92/.emacs.d/straight/build/org/ox-texinfo hides /home/yantar92/Git/emacs/lisp/org/ox-texinfo
/home/yantar92/.emacs.d/straight/build/org/ol hides /home/yantar92/Git/emacs/lisp/org/ol
/home/yantar92/.emacs.d/straight/build/org/oc hides /home/yantar92/Git/emacs/lisp/org/oc
/home/yantar92/.emacs.d/straight/build/org/org-macro hides /home/yantar92/Git/emacs/lisp/org/org-macro
/home/yantar92/.emacs.d/straight/build/org/org-version hides /home/yantar92/Git/emacs/lisp/org/org-version
/home/yantar92/.emacs.d/straight/build/map/map hides /home/yantar92/Git/emacs/lisp/emacs-lisp/map
/home/yantar92/.emacs.d/straight/build/let-alist/let-alist hides /home/yantar92/Git/emacs/lisp/emacs-lisp/let-alist

Features:
(shadow footnote emacsbug highlight-indentation elpy elpy-rpc pyvenv
eshell esh-cmd esh-ext esh-opt esh-proc esh-io esh-arg esh-module
esh-groups esh-util elpy-shell elpy-profile elpy-django elpy-refactor
grep descr-text helm-command helm-elisp helm-eval font-latex latex
latex-flymake flymake-proc flymake tex-ispell tex-style tex tex-mode
org-duration cal-iso vc org-table-sticky-header oc-basic ffap
tramp-archive tramp-gvfs helm-x-files helm-for-files helm-bookmark
helm-external helm-net git-email-magit magit-patch git-email-notmuch
git-email-piem git-email git-email-autoloads project-autoloads
xref-autoloads piem-notmuch piem piem-maildir mail-extr piem-autoloads
org-crypt helm-notmuch helm-notmuch-autoloads ol-notmuch
ol-notmuch-autoloads org-eldoc org-table-sticky-header-autoloads
posframe posframe-autoloads ob-async ob-async-autoloads ob-latex ob-dot
ob-calc calc-store calc-trail ob-gnuplot ob-ditaa ob-C cc-mode cc-fonts
cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs
ob-python ob-perl ob-org ob-shell ob-mathematica
ob-mathematica-autoloads org-tempo tempo org-archive ox-md ox-beamer
engrave-faces engrave-faces-autoloads ox-extra orgdiff orgdiff-autoloads
doct ya-org-capture ya-org-capture-autoloads doct-autoloads
org-capture-pop-frame org-capture-pop-frame-autoloads org-protocol
org-analyzer-autoloads pomidor-autoloads alert-autoloads log4e-autoloads
gntp-autoloads helm-org-ql helm-org org-clock org-autosort
org-autosort-autoloads helm-org-contacts helm-org-contacts-autoloads
org-contacts gnus-art mm-uu mml2015 gnus-sum gnus-group gnus-undo
gnus-start gnus-dbus gnus-cloud nnimap nnmail mail-source utf7 nnoo
gnus-spec gnus-int gnus-range gnus-win gnus nnheader range
org-contacts-autoloads helm-org-ql-autoloads helm-org-autoloads
org-ql-search org-ql-view ov org-super-agenda org-ql peg ts
org-ql-autoloads peg-autoloads ov-autoloads org-super-agenda-autoloads
ts-autoloads org-quick-peek org-quick-peek-autoloads calfw-org
calfw-org-autoloads calfw holidays holiday-loaddefs calfw-autoloads
org-attach cdlatex reftex reftex-loaddefs reftex-vars texmathp
cdlatex-autoloads org-capture-ref org-ref-url-utils org-ref org-ref-core
org-ref-glossary org-ref-bibtex avy doi-utils org-ref-utils
org-ref-export citeproc citeproc-itemgetters citeproc-biblatex
citeproc-bibtex ol-bibtex citeproc-cite citeproc-subbibs citeproc-sort
citeproc-name citeproc-formatters citeproc-number rst citeproc-proc
citeproc-disamb citeproc-itemdata citeproc-generic-elements
citeproc-macro citeproc-choose citeproc-date citeproc-context
citeproc-prange citeproc-style citeproc-locale citeproc-term citeproc-rt
citeproc-lib citeproc-s queue ox-pandoc ox-org ox-odt rng-loc rng-uri
rng-parse rng-match rng-dt rng-util rng-pttrn nxml-parse nxml-ns
nxml-enc xmltok nxml-util ox-latex ox-icalendar ox-html table ox-ascii
ox-publish ox org-ref-misc-links org-ref-label-link org-ref-ref-links
org-ref-citation-links org-ref-bibliography-links bibtex-completion
biblio biblio-download biblio-dissemin biblio-ieee biblio-hal
biblio-dblp biblio-crossref biblio-arxiv timezone biblio-doi biblio-core
ido parsebib bibtex org-ref-autoloads ox-pandoc-autoloads
citeproc-autoloads string-inflection-autoloads queue-autoloads
bibtex-completion-autoloads biblio-autoloads biblio-core-autoloads
parsebib-autoloads htmlize-autoloads scimax-inkscape
scimax-inkscape-autoloads org-pdftools pdf-annot facemenu org-noter
org-pdftools-autoloads org-noter-autoloads org-capture org-checklist
org-habit org-edna org-edna-autoloads org-inlinetask org-drill persist
org-agenda org-drill-autoloads persist-autoloads ol-info ol-w3m ol-doi
org-link-doi speed-type speed-type-autoloads ement ement-notify
ement-room ewoc ement-lib ement-api ement-structs ement-macros warnings
dns ement-autoloads svg-lib-autoloads taxy-magit-section-autoloads
taxy-autoloads map-autoloads plz plz-autoloads 0x0 0x0-autoloads
notmuch-calendar-x notmuch-calendar-x-autoloads notmuch notmuch-tree
notmuch-jump notmuch-hello notmuch-show notmuch-print notmuch-crypto
notmuch-mua notmuch-message notmuch-draft notmuch-maildir-fcc
notmuch-address notmuch-company notmuch-parser notmuch-wash coolj
notmuch-query goto-addr icalendar diary-lib diary-loaddefs notmuch-tag
notmuch-lib notmuch-version notmuch-compat mm-view mml-smime smime dig
w3m-autoloads elfeed-score elfeed-score-maint elfeed-score-scoring
elfeed-score-serde elfeed-score-rule-stats elfeed-org org-element
org-persist elfeed-org-autoloads quick-peek quick-peek-autoloads
elfeed-show elfeed-search hideshow display-fill-column-indicator eros
rainbow-delimiters highlight-numbers parent-mode easy-escape
license-snippets yasnippet-snippets-autoloads yasnippet-snippets
yasnippet elfeed-csv elfeed elfeed-curl elfeed-log elfeed-db elfeed-lib
avl-tree url-queue xml-query elfeed-score-rules elfeed-score-log
elfeed-score-autoloads elfeed-autoloads ytel-show-autoloads ytel
ytel-autoloads qrencode-el-autoloads tb-keycast tb-keycast-autoloads
gif-screencast gif-screencast-autoloads yaml-mode yaml-mode-autoloads
mingus libmpdee cl mingus-autoloads libmpdee-autoloads calctex calc-sel
calctex-autoloads shell-pop-autoloads eterm-256color-autoloads
xterm-color-autoloads vterm term ehelp vterm-module term/xterm xterm
vterm-autoloads diffpdf diffpdf-autoloads pdf-view-restore
pdf-view-restore-autoloads 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 cedet pdf-isearch
pdf-misc pdf-tools pdf-roll pdf-view jka-compr pdf-cache pdf-info tq
pdf-util pdf-macs pdf-tools-autoloads tablist-autoloads image-roll
image-roll-autoloads wolfram-mode wolfram-mode-autoloads
ledger-mode-autoloads auctex-autoloads tex-site ebuild-mode skeleton
sh-script smie executable ebuild-mode-autoloads lua-mode
lua-mode-autoloads gnuplot-autoloads eros-autoloads nameless
nameless-autoloads paredit paredit-autoloads company-jedi
company-jedi-autoloads jedi jedi-core python-environment epc ctable
concurrent auto-complete jedi-autoloads auto-complete-autoloads
jedi-core-autoloads python-environment-autoloads epc-autoloads
ctable-autoloads concurrent-autoloads elpy-autoloads pyvenv-autoloads
highlight-indentation-autoloads python helm-info which-key
which-key-autoloads helm-descbinds helm-descbinds-autoloads elisp-demos
elisp-demos-autoloads helpful info-look help-fns elisp-refs
helpful-autoloads elisp-refs-autoloads tldr tldr-autoloads
lsp-ui-autoloads lsp-mode-autoloads spinner-autoloads macrostep
macrostep-autoloads highlight-refontification
highlight-refontification-autoloads font-lock-profiler
font-lock-profiler-autoloads font-lock-studio font-lock-studio-autoloads
memory-usage memory-usage-autoloads bug-hunter bug-hunter-autoloads
lorem-ipsum lorem-ipsum-autoloads license-snippets-autoloads
yasnippet-autoloads move-text move-text-autoloads aggressive-indent
aggressive-indent-autoloads visual-regexp-autoloads magit-bookmark
bookmark helm-bm helm-bm-autoloads bm bm-autoloads helm-dash dash-docs
helm-dash-autoloads dash-docs-autoloads disk-usage disk-usage-autoloads
dired-git-info-autoloads dired-hide-dotfiles-autoloads
dired-filter-autoloads diredfl diredfl-autoloads
all-the-icons-dired-autoloads dired-async dired-open-autoloads
dired-avfs dired-avfs-autoloads dired-narrow-autoloads dired-hacks-utils
dired-hacks-utils-autoloads dired+ image-file image-converter dired-x
dired-aux dired+-autoloads winner windower emacs-windower-autoloads
goggles pulse skip-buffers-mode avy-autoloads eval-sexp-fu
eval-sexp-fu-autoloads goggles-autoloads easy-escape-autoloads
highlight-numbers-autoloads parent-mode-autoloads
rainbow-delimiters-autoloads highlight-parentheses
highlight-parentheses-autoloads flycheck-tip error-tip notifications
dbus popup flycheck-tip-autoloads flycheck flycheck-autoloads
pkg-info-autoloads epl-autoloads wordnut wordnut-history wordnut-u
wordnut-autoloads smog smog-autoloads writegood-mode
writegood-mode-autoloads langtool-ignore-fonts
langtool-ignore-fonts-autoloads langtool compile langtool-autoloads
el-patch-autoloads el-patch el-patch-stub flyspell ispell hi-lock ediff
ediff-merg ediff-mult ediff-wind ediff-diff ediff-help ediff-init
ediff-util browse-at-remote vc-git vc-dispatcher f f-shortdoc shortdoc
browse-at-remote-autoloads f-autoloads code-review code-review-actions
code-review-comment code-review-section code-review-bitbucket
code-review-faces shr pixel-fill kinsoku url-file svg xml dom emojify
apropos tar-mode arc-mode archive-mode ht code-review-gitlab
code-review-utils code-review-parse-hunk code-review-github
code-review-db uuidgen calc-misc calc-ext calc calc-loaddefs rect
calc-macs a code-review-interfaces deferred forge-list forge-commands
forge-semi forge-bitbucket buck forge-gogs gogs forge-gitea gtea
forge-gitlab glab forge-github ghub-graphql treepy gsexp ghub let-alist
gnutls forge-notify forge-revnote forge-pullreq forge-issue forge-topic
yaml bug-reference forge-post markdown-mode thingatpt forge-repo forge
forge-core forge-db closql emacsql-sqlite emacsql emacsql-compiler
url-http url-auth url-gw nsm 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 browse-url
url-handlers magit-repos magit-apply magit-wip magit-log which-func
imenu edebug debug backtrace magit-diff smerge-mode diff diff-mode
git-commit log-edit message sendmail yank-media puny rfc822 mml mml-sec
epa derived epg rfc6068 epg-config gnus-util text-property-search
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 magit-core magit-autorevert magit-margin
magit-transient magit-process with-editor magit-mode transient magit-git
magit-base magit-section crm compat-27 compat-26 code-review-autoloads
emojify-autoloads ht-autoloads deferred-autoloads uuidgen-autoloads
a-autoloads forge-autoloads yaml-autoloads markdown-mode-autoloads
ghub-autoloads treepy-autoloads let-alist-autoloads
emacsql-sqlite-autoloads emacsql-autoloads closql-autoloads
magit-autoloads magit-section-autoloads git-commit-autoloads
with-editor-autoloads transient-autoloads autorevert recentf tree-widget
disp-table hl-todo pretty-symbols company-oddmuse company-keywords
company-etags etags fileloop generator xref project company-gtags
company-dabbrev-code company-dabbrev company-files company-clang
company-capf company-cmake company-semantic company-template
company-bbdb company persistent-scratch persistent-scratch-autoloads
savehist backup-walker-autoloads company-autoloads helm-adaptive
helm-mode helm-misc helm-files image-dired image-dired-tags
image-dired-external image-dired-util xdg image-mode dired
dired-loaddefs exif filenotify tramp tramp-loaddefs trampver
tramp-integration cus-edit pp cus-load wid-edit files-x tramp-compat
shell parse-time iso8601 ls-lisp helm-buffers helm-occur helm-tags
helm-locate helm-grep helm-regexp helm-utils helm-help helm-types helm
helm-global-bindings helm-easymenu helm-core async-bytecomp helm-source
helm-multi-match helm-lib helm-autoloads popup-autoloads
helm-core-autoloads face-remap pyim pyim-cloudim url url-proxy
url-privacy url-expand url-methods url-history url-cookie url-domsuf
mailcap pyim-probe pyim-preview pyim-page pyim-indicator pyim-dregcache
pyim-dhashcache sort pyim-dict async pyim-autoselector pyim-process
pyim-punctuation pyim-outcome pyim-candidates pyim-cstring pyim-cregexp
xr pyim-codes pyim-imobjs pyim-pinyin pyim-entered pyim-dcache url-util
url-parse auth-source eieio eieio-core password-cache json map url-vars
pyim-pymap pyim-scheme pyim-common pyim-autoloads xr-autoloads
async-autoloads reverse-im quail reverse-im-autoloads hydra lv
boon-qwerty color olivetti straight-x boon boon-keys boon-core advice
boon-loaddefs boon-autoloads multiple-cursors-autoloads
expand-region-autoloads meta-functions org-id org-refile dash
meta-functions-autoloads dash-autoloads hl-line memoize
memoize-autoloads info-colors info-colors-autoloads hl-todo-autoloads
latex-pretty-symbols latex-pretty-symbols-autoloads
pretty-symbols-autoloads page-break-lines page-break-lines-autoloads
edmacro kmacro adaptive-wrap adaptive-wrap-autoloads olivetti-autoloads
shackle trace shackle-autoloads use-package-diminish all-the-icons
all-the-icons-faces data-material data-weathericons data-octicons
data-fileicons data-faicons data-alltheicons all-the-icons-autoloads org
ob ob-tangle ob-ref ob-lob ob-table ob-exp org-macro org-footnote
org-src ob-comint org-pcomplete pcomplete comint osc ansi-color ring
org-list org-entities time-date noutline outline icons ob-emacs-lisp
ob-core ob-eval org-cycle org-font-lock org-font-lock-core
org-element-match org-faces org-table ol rx org-fold org-fold-core
org-keys oc org-loaddefs find-func cal-menu calendar cal-loaddefs
org-version org-compat org-font-lock-obsolete org-macs format-spec
modus-operandi-theme modus-themes modus-themes-autoloads s s-autoloads
asoc asoc.el-autoloads no-littering compat no-littering-autoloads
compat-autoloads hydra-autoloads lv-autoloads finder-inf
use-package-bind-key org-contrib-autoloads bind-key diminish
diminish-autoloads use-package-core use-package-autoloads
bind-key-autoloads straight-autoloads cl-extra help-mode straight info
autoload loaddefs-gen generate-lisp-file radix-tree lisp-mnt easy-mmode
cl-seq pcase subr-x byte-opt cl-macs gv cl-loaddefs cl-lib bytecomp
byte-compile cconv server rmc iso-transl tooltip eldoc paren electric
uniquify ediff-hook vc-hooks lisp-float-type elisp-mode 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 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 nadvice seq simple cl-generic
indonesian philippine 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 emoji-zwj charscript charprop case-table epa-hook
jka-cmpr-hook help abbrev obarray oclosure cl-preloaded button loaddefs
faces cus-face macroexp files window text-properties overlay sha1 md5
base64 format env code-pages mule custom widget keymap
hashtable-print-readable backquote threads dbusbind inotify lcms2
dynamic-setting system-font-setting font-render-setting cairo
move-toolbar gtk x-toolkit xinput2 x multi-tty make-network-process
emacs)

Memory information:
((conses 16 12227780 1358744)
 (symbols 48 87874 1045)
 (strings 32 669678 172747)
 (string-bytes 1 20916974)
 (vectors 16 485755)
 (vector-slots 8 11739880 3327093)
 (floats 8 4841 5442)
 (intervals 56 237779 18133)
 (buffers 984 49))

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>





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

* bug#58479: 29.0.50; [feature/noverlay] Displaced overlays in notmuch search buffers after refreshing
  2022-10-13  2:17 bug#58479: 29.0.50; [feature/noverlay] Displaced overlays in notmuch search buffers after refreshing Ihor Radchenko
@ 2022-10-13  4:25 ` Matt Armstrong
  2022-10-14  4:56   ` Ihor Radchenko
  0 siblings, 1 reply; 24+ messages in thread
From: Matt Armstrong @ 2022-10-13  4:25 UTC (permalink / raw)
  To: Ihor Radchenko; +Cc: 58479, monnier, matt

X-Debbugs-CC: monnier@iro.umontreal.ca, matt@rfc20.org

^^^ I don't know if Debbugs pseudoheaders work here but I'll give it a
shot.


Ihor Radchenko <yantar92@gmail.com> writes:

> As I mentioned in
> https://yhetil.org/emacs-devel/jwvo7ulzmvv.fsf-monnier+emacs@gnu.org/,
> I consistently observe issues with overlays in notmuch search buffers
> on feature/noverlay branch.
>
> I have tested with Emacs 29 master vs. feature/noverlay and confirm that
> the problem only appears in feature/noverlays.

Thank you for following up with a clear report of the problem.  I use
notmuch so it was easy for me to follow your steps.  I agree that an
"emacs -Q" recepie won't be practical here.

Request: could you try your repro again for notmuch-search and include
the output of the `my-dump-overlays' function below?

One half of the problem, the left over overlays, appears on master too.
You should be able to confirm by running this wth the notmuch-search
buffer current after refreshing with 'g':

(defun my-dump-overlays ()
  (interactive)
  (with-output-to-temp-buffer "*Overlays*"
    (save-restriction
      (widen)
      (let ((overlays (overlays-in (point-min) (point-max))))
        (princ (format "Buffer %S has %d overlays.\n\n"
                       (current-buffer) (length overlays)))
        (dolist (o overlays)
          (pp o)
          (terpri)
          (pp (overlay-properties o))
          (terpri))))))

I sent the notmuch folks a patch to fix this by setting 'evaporate on
them:
https://nmbug.notmuchmail.org/nmweb/show/20221013032038.23371-1-matt%40rfc20.org

(You verified that the overlays are not cleared up after erasing text,
and they shouldn't be *unless* they have 'evaporate set.  There have
been some discussions that 'evaporate should have been the default from
the beginning, but changing that now might break things.)

The other half of the problem is this: you can see the ellipsis and I
cannot, even on the noverlay branch.  When I play around with the buffer
created by the following I can see the ellipsis up until when the
overlay has length zero, then it disappears.  This is true on master and
the noverlay branch.

(defun my-b58479 ()
  (interactive)
  (with-current-buffer (get-buffer-create "*b58479*")
    (add-to-invisibility-spec (cons 'ellipsis t))
    (goto-char (point-max))
    (insert "Hello, World! ")
    (let ((overlay (make-overlay (- (point) 10) (- (point) 5))))
      (overlay-put overlay 'invisible 'ellipsis))
    (display-buffer (current-buffer))))


I am not sure why you see the issue and I do not, but the clue might be
in what `my-dump-overlays' prints.

-- 
matt (sent from an Emacs running the feature/noverlay branch)





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

* bug#58479: 29.0.50; [feature/noverlay] Displaced overlays in notmuch search buffers after refreshing
  2022-10-13  4:25 ` Matt Armstrong
@ 2022-10-14  4:56   ` Ihor Radchenko
  2022-10-14 20:30     ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 1 reply; 24+ messages in thread
From: Ihor Radchenko @ 2022-10-14  4:56 UTC (permalink / raw)
  To: Matt Armstrong; +Cc: 58479

Matt Armstrong <matt@rfc20.org> writes:

> The other half of the problem is this: you can see the ellipsis and I
> cannot, even on the noverlay branch.  When I play around with the buffer
> created by the following I can see the ellipsis up until when the
> overlay has length zero, then it disappears.  This is true on master and
> the noverlay branch.
>
> (defun my-b58479 ()
>   (interactive)
>   (with-current-buffer (get-buffer-create "*b58479*")
>     (add-to-invisibility-spec (cons 'ellipsis t))
>     (goto-char (point-max))
>     (insert "Hello, World! ")
>     (let ((overlay (make-overlay (- (point) 10) (- (point) 5))))
>       (overlay-put overlay 'invisible 'ellipsis))
>     (display-buffer (current-buffer))))
>
> I am not sure why you see the issue and I do not, but the clue might be
> in what `my-dump-overlays' prints.

On my side, playing with my-b58479 yields erroneous behaviour.
Upon deleting the text under overlay, Emacs suddenly hides text _after_
the overlay. Yet, the overlay is reported to be 0-length.

What I see is:

1. M-x my-b58479
2. Hell<point>...rld!

M-x my-dump-overlays

Buffer #<buffer *b58479*> has 2 overlays.

#<overlay from 1 to 15 in *b58479*>
(window #<window 68 on *b58479*> face hl-line priority -50)

#<overlay from 5 to 10 in *b58479*>
(invisible ellipsis)

3. C-d (5 times)
4. Hell...

"rld!" disappears!

Buffer #<buffer *b58479*> has 2 overlays.

#<overlay from 1 to 10 in *b58479*>
(window #<window 68 on *b58479*> face hl-line priority -50)

#<overlay from 5 to 5 in *b58479*>
(invisible ellipsis)

Also, see the video
https://cubeatic.com/index.php/s/Dd7YinibtfjtYM9

I am at Emacs commit 65a7b5a802a15daa6274403fef822ec3c9b95469.
And I can reproduce the issue with my-b58479 from emacs -Q.

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>





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

* bug#58479: 29.0.50; [feature/noverlay] Displaced overlays in notmuch search buffers after refreshing
  2022-10-14  4:56   ` Ihor Radchenko
@ 2022-10-14 20:30     ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2022-10-15  1:38       ` Ihor Radchenko
  2022-10-19 22:26       ` Matt Armstrong
  0 siblings, 2 replies; 24+ messages in thread
From: Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-10-14 20:30 UTC (permalink / raw)
  To: Ihor Radchenko; +Cc: Matt Armstrong, 58479

> What I see is:
>
> 1. M-x my-b58479
> 2. Hell<point>...rld!
>
> M-x my-dump-overlays
>
> Buffer #<buffer *b58479*> has 2 overlays.
>
> #<overlay from 1 to 15 in *b58479*>
> (window #<window 68 on *b58479*> face hl-line priority -50)
>
> #<overlay from 5 to 10 in *b58479*>
> (invisible ellipsis)
>
> 3. C-d (5 times)
> 4. Hell...
>
> "rld!" disappears!

Thanks, I have fixed this specific problem with the patch below.
Let's hope it also fixes your original issue with notmuch.


        Stefan


diff --git a/src/textprop.c b/src/textprop.c
index 04fae528097..b34246f5bc7 100644
--- a/src/textprop.c
+++ b/src/textprop.c
@@ -649,7 +649,8 @@ get_char_property_and_overlay (Lisp_Object position, register Lisp_Object prop,
 	  Lisp_Object tem = Foverlay_get (node->data, prop);
           struct sortvec *this;
 
-	  if (NILP (tem) || (w && ! overlay_matches_window (w, node->data)))
+	  if (NILP (tem) || node->end < pos + 1
+	      || (w && ! overlay_matches_window (w, node->data)))
 	    continue;
 
           this = (result == items ? items + 1 : items);






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

* bug#58479: 29.0.50; [feature/noverlay] Displaced overlays in notmuch search buffers after refreshing
  2022-10-14 20:30     ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2022-10-15  1:38       ` Ihor Radchenko
  2022-10-15  3:52         ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2022-10-18 20:38         ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2022-10-19 22:26       ` Matt Armstrong
  1 sibling, 2 replies; 24+ messages in thread
From: Ihor Radchenko @ 2022-10-15  1:38 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Matt Armstrong, 58479

Stefan Monnier <monnier@iro.umontreal.ca> writes:

>> 3. C-d (5 times)
>> 4. Hell...
>>
>> "rld!" disappears!
>
> Thanks, I have fixed this specific problem with the patch below.
> Let's hope it also fixes your original issue with notmuch.

Thanks! It appears to fix the issue with notmuch.

However, I noticed a different problem introduced by the patch.

After executing 3, if I run M-x describe-text-properties, the overlay is
not listed in the text properties. Running
M-: (overlays-in (point-min) (point-max)) does list the 0-length
overlay 5..5. However, running M-: (overlays-at 5) yields nil.

I think that the above is not right.

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>





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

* bug#58479: 29.0.50; [feature/noverlay] Displaced overlays in notmuch search buffers after refreshing
  2022-10-15  1:38       ` Ihor Radchenko
@ 2022-10-15  3:52         ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2022-10-15  4:11           ` Ihor Radchenko
  2022-10-18 20:38         ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
  1 sibling, 1 reply; 24+ messages in thread
From: Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-10-15  3:52 UTC (permalink / raw)
  To: Ihor Radchenko; +Cc: Matt Armstrong, 58479

> However, I noticed a different problem introduced by the patch.

Are you sure?  The patch should now affect `overlays-at` at all
(actually, one of the reasons for the introduction of the bug fixed by
the patch is because that code path for `get-char-property` does not
rely on the same code path as `overlays-at`.  The old code shared the
code path for those two, but the new code tries to be more efficient by
avoiding allocation for a temporary storage and reducing an O(N log N)
to O(N)))).

> After executing 3, if I run M-x describe-text-properties, the overlay is
> not listed in the text properties. Running
> M-: (overlays-in (point-min) (point-max)) does list the 0-length
> overlay 5..5. However, running M-: (overlays-at 5) yields nil.
>
> I think that the above is not right.

Whether this is "right" or not is a good question, but AFAIK it's the
"expected" behavior in the sense that it's how `overlays-at` has worked
until now.  So I think it's "right".


        Stefan






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

* bug#58479: 29.0.50; [feature/noverlay] Displaced overlays in notmuch search buffers after refreshing
  2022-10-15  3:52         ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2022-10-15  4:11           ` Ihor Radchenko
  2022-10-15 13:43             ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 1 reply; 24+ messages in thread
From: Ihor Radchenko @ 2022-10-15  4:11 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Matt Armstrong, 58479

Stefan Monnier <monnier@iro.umontreal.ca> writes:

>> After executing 3, if I run M-x describe-text-properties, the overlay is
>> not listed in the text properties. Running
>> M-: (overlays-in (point-min) (point-max)) does list the 0-length
>> overlay 5..5. However, running M-: (overlays-at 5) yields nil.
>>
>> I think that the above is not right.
>
> Whether this is "right" or not is a good question, but AFAIK it's the
> "expected" behavior in the sense that it's how `overlays-at` has worked
> until now.  So I think it's "right".

After reading the docstring of `overlays-at', I do agree. It indeed
explicitly says that zero-length overlays will not be listed.
I was confused because zero-length overlays were listed by
describe-text-properties before your patch above.

I think this bug report can be closed.

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>





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

* bug#58479: 29.0.50; [feature/noverlay] Displaced overlays in notmuch search buffers after refreshing
  2022-10-15  4:11           ` Ihor Radchenko
@ 2022-10-15 13:43             ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2022-10-15 14:22               ` Ihor Radchenko
  0 siblings, 1 reply; 24+ messages in thread
From: Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-10-15 13:43 UTC (permalink / raw)
  To: Ihor Radchenko; +Cc: Matt Armstrong, 58479

> I was confused because zero-length overlays were listed by
> describe-text-properties before your patch above.

That is very strange and makes me suspect there's something I'm maybe
misunderstanding in the code I changed.
Can you send a recipe that shows this difference?


        Stefan






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

* bug#58479: 29.0.50; [feature/noverlay] Displaced overlays in notmuch search buffers after refreshing
  2022-10-15 13:43             ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2022-10-15 14:22               ` Ihor Radchenko
  2022-10-16 23:41                 ` Matt Armstrong
  0 siblings, 1 reply; 24+ messages in thread
From: Ihor Radchenko @ 2022-10-15 14:22 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Matt Armstrong, 58479, Ihor Radchenko

Stefan Monnier <monnier@iro.umontreal.ca> writes:

>> I was confused because zero-length overlays were listed by
>> describe-text-properties before your patch above.
>
> That is very strange and makes me suspect there's something I'm maybe
> misunderstanding in the code I changed.
> Can you send a recipe that shows this difference?

See the recorded video link. Basically, I just executed M-x
describe-text-properties after (3) in my second recipe.

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>





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

* bug#58479: 29.0.50; [feature/noverlay] Displaced overlays in notmuch search buffers after refreshing
  2022-10-15 14:22               ` Ihor Radchenko
@ 2022-10-16 23:41                 ` Matt Armstrong
  2022-10-17  1:28                   ` Ihor Radchenko
  0 siblings, 1 reply; 24+ messages in thread
From: Matt Armstrong @ 2022-10-16 23:41 UTC (permalink / raw)
  To: Ihor Radchenko, Stefan Monnier; +Cc: 58479, Ihor Radchenko

Ihor Radchenko <yantar92@posteo.net> writes:

> Stefan Monnier <monnier@iro.umontreal.ca> writes:
>
>>> I was confused because zero-length overlays were listed by
>>> describe-text-properties before your patch above.
>>
>> That is very strange and makes me suspect there's something I'm maybe
>> misunderstanding in the code I changed.
>> Can you send a recipe that shows this difference?
>
> See the recorded video link. Basically, I just executed M-x
> describe-text-properties after (3) in my second recipe.

Ihor, I can't reproduce this second issue.  I can't see your video.
Firefox on Debian Testing can't decode it for some reason.

Based on your description I wrote this.  Please excuse any amateurish
elisp.

(with-current-buffer (get-buffer-create "*b58479-2*")
  (delete-all-overlays)
  (erase-buffer)
  (insert "Empty overlay here: --><--\n")
  (goto-char (point-min))
  (search-forward "<")
  (let* ((pos (point))
         (overlays-at `(overlays-at ,pos))
         (describe-text-properties
          `(describe-text-properties
            ,pos (current-buffer) (current-buffer))))
    (make-overlay (point) (point))
    (next-line)
    (insert (format "%S -> %S\n"
                    overlays-at (eval overlays-at)))
    (insert (format "%S follows:\n" describe-text-properties))
    (eval describe-text-properties))
  (display-buffer (current-buffer)))

On mainline, I get this buffer:

----------------------------------------------------------------------
Empty overlay here: --><--
(overlays-at 25) -> nil
(describe-text-properties 25 (current-buffer) (current-buffer)) follows:

There is an overlay here:
 From 25 to 25
----------------------------------------------------------------------

On the noverlay branch I get the same result.





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

* bug#58479: 29.0.50; [feature/noverlay] Displaced overlays in notmuch search buffers after refreshing
  2022-10-16 23:41                 ` Matt Armstrong
@ 2022-10-17  1:28                   ` Ihor Radchenko
  2022-10-17  5:56                     ` Matt Armstrong
  0 siblings, 1 reply; 24+ messages in thread
From: Ihor Radchenko @ 2022-10-17  1:28 UTC (permalink / raw)
  To: Matt Armstrong; +Cc: 58479, Stefan Monnier, Ihor Radchenko

Matt Armstrong <matt@rfc20.org> writes:

>> See the recorded video link. Basically, I just executed M-x
>> describe-text-properties after (3) in my second recipe.
>
> Ihor, I can't reproduce this second issue.  I can't see your video.
> Firefox on Debian Testing can't decode it for some reason.

You can download it and open locally.
Also, do note that the second issue was present _before_ Stefan's patch.
Then, Stefan expressed a concern that even though the patch fixed
immediate problem, it might be creating other issues are he did not
anticipate the patch to make any difference in the output of
describe-text-properties (AFAIU).

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>





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

* bug#58479: 29.0.50; [feature/noverlay] Displaced overlays in notmuch search buffers after refreshing
  2022-10-17  1:28                   ` Ihor Radchenko
@ 2022-10-17  5:56                     ` Matt Armstrong
  2022-10-17  8:21                       ` Ihor Radchenko
  0 siblings, 1 reply; 24+ messages in thread
From: Matt Armstrong @ 2022-10-17  5:56 UTC (permalink / raw)
  To: Ihor Radchenko; +Cc: 58479, Stefan Monnier, Ihor Radchenko

Ihor Radchenko <yantar92@posteo.net> writes:

> Matt Armstrong <matt@rfc20.org> writes:
>
>>> See the recorded video link. Basically, I just executed M-x
>>> describe-text-properties after (3) in my second recipe.
>>
>> Ihor, I can't reproduce this second issue.  I can't see your video.
>> Firefox on Debian Testing can't decode it for some reason.
>
> You can download it and open locally.
> Also, do note that the second issue was present _before_ Stefan's patch.
> Then, Stefan expressed a concern that even though the patch fixed
> immediate problem, it might be creating other issues are he did not
> anticipate the patch to make any difference in the output of
> describe-text-properties (AFAIU).

Okay, I'm able to watch your video and think I see what you're talking
about there, but I am not able to reproduce a problem with the Stefan's
fix applied.  Maybe there is some miscommunication.  Everything I try
now seems to work the same on master and the most recent
feature/noverlay.  Could you start from the beginning and provide steps?
I am a little lost with "press this after third step of that after
watching video."  :-)

The "Hello, World" string was a little confusing.  Here is a simpler
version:

(defun my-b58479-3 ()
  (interactive)
  (with-current-buffer (get-buffer-create "*b58479*")
    (add-to-invisibility-spec (cons 'ellipsis t))
    (erase-buffer)
    (delete-all-overlays)
    (insert "123456789")
    (let ((overlay (make-overlay 2 9)))
      (overlay-put overlay 'invisible 'ellipsis))
    (display-buffer (current-buffer))))

Looks like `describe-text-properties' first tries `overlays-at' and,
finding nothing, will try (overlays-in (point) (1+ (point))) to get the
zero-width overlays.

-- 
matt (sent from an Emacs running the feature/noverlay branch)





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

* bug#58479: 29.0.50; [feature/noverlay] Displaced overlays in notmuch search buffers after refreshing
  2022-10-17  5:56                     ` Matt Armstrong
@ 2022-10-17  8:21                       ` Ihor Radchenko
  2022-10-17 18:53                         ` Matt Armstrong
  0 siblings, 1 reply; 24+ messages in thread
From: Ihor Radchenko @ 2022-10-17  8:21 UTC (permalink / raw)
  To: Matt Armstrong; +Cc: 58479, Stefan Monnier, Ihor Radchenko

Matt Armstrong <matt@rfc20.org> writes:

> Okay, I'm able to watch your video and think I see what you're talking
> about there, but I am not able to reproduce a problem with the Stefan's
> fix applied.  Maybe there is some miscommunication.

Yes, we are miscommunicating. The problem being discussed is _without_
Stefan's fix.

> Looks like `describe-text-properties' first tries `overlays-at' and,
> finding nothing, will try (overlays-in (point) (1+ (point))) to get the
> zero-width overlays.

Only with optional argument or when there are text properties at point.
When called interactively, it takes different logic and uses

    (if (not (or (text-properties-at pos) (overlays-at pos)))
	(message "This is plain text.")

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>





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

* bug#58479: 29.0.50; [feature/noverlay] Displaced overlays in notmuch search buffers after refreshing
  2022-10-17  8:21                       ` Ihor Radchenko
@ 2022-10-17 18:53                         ` Matt Armstrong
  2022-10-17 22:05                           ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 1 reply; 24+ messages in thread
From: Matt Armstrong @ 2022-10-17 18:53 UTC (permalink / raw)
  To: Ihor Radchenko; +Cc: 58479, Stefan Monnier, Ihor Radchenko

Ihor Radchenko <yantar92@posteo.net> writes:

> Matt Armstrong <matt@rfc20.org> writes:
>
>> Okay, I'm able to watch your video and think I see what you're talking
>> about there, but I am not able to reproduce a problem with the Stefan's
>> fix applied.  Maybe there is some miscommunication.
>
> Yes, we are miscommunicating. The problem being discussed is _without_
> Stefan's fix.

Since Stefan's fix is committed, is there still a bug here?  Can we
close this issue as fixed?





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

* bug#58479: 29.0.50; [feature/noverlay] Displaced overlays in notmuch search buffers after refreshing
  2022-10-17 18:53                         ` Matt Armstrong
@ 2022-10-17 22:05                           ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 0 replies; 24+ messages in thread
From: Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-10-17 22:05 UTC (permalink / raw)
  To: Matt Armstrong; +Cc: 58479, Ihor Radchenko, Ihor Radchenko

> Since Stefan's fix is committed, is there still a bug here?  Can we
> close this issue as fixed?

Yes, the OP is fixed, AFAIK.  I just have to find the time to look into
the behavior in the video to make sure I understand what's going on
there.  But that's just for me.


        Stefan






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

* bug#58479: 29.0.50; [feature/noverlay] Displaced overlays in notmuch search buffers after refreshing
  2022-10-15  1:38       ` Ihor Radchenko
  2022-10-15  3:52         ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2022-10-18 20:38         ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2022-10-19  8:09           ` Ihor Radchenko
  1 sibling, 1 reply; 24+ messages in thread
From: Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-10-18 20:38 UTC (permalink / raw)
  To: Ihor Radchenko; +Cc: Matt Armstrong, 58479

Ihor Radchenko [2022-10-15 09:38:49] wrote:
> Stefan Monnier <monnier@iro.umontreal.ca> writes:
>>> 3. C-d (5 times)
>>> 4. Hell...
>>>
>>> "rld!" disappears!
>>
>> Thanks, I have fixed this specific problem with the patch below.
>> Let's hope it also fixes your original issue with notmuch.
>
> Thanks! It appears to fix the issue with notmuch.
>
> However, I noticed a different problem introduced by the patch.
>
> After executing 3, if I run M-x describe-text-properties, the overlay is
> not listed in the text properties. Running
> M-: (overlays-in (point-min) (point-max)) does list the 0-length
> overlay 5..5. However, running M-: (overlays-at 5) yields nil.

I don't see this here: the overlay is listed just as much after as
before the patch.  Are you sure you were calling
`M-x describe-text-properties` exactly from the same buffer position?


        Stefan






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

* bug#58479: 29.0.50; [feature/noverlay] Displaced overlays in notmuch search buffers after refreshing
  2022-10-18 20:38         ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2022-10-19  8:09           ` Ihor Radchenko
  2022-10-19 12:31             ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 1 reply; 24+ messages in thread
From: Ihor Radchenko @ 2022-10-19  8:09 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Matt Armstrong, 58479, Ihor Radchenko

Stefan Monnier <monnier@iro.umontreal.ca> writes:

>> After executing 3, if I run M-x describe-text-properties, the overlay is
>> not listed in the text properties. Running
>> M-: (overlays-in (point-min) (point-max)) does list the 0-length
>> overlay 5..5. However, running M-: (overlays-at 5) yields nil.
>
> I don't see this here: the overlay is listed just as much after as
> before the patch.  Are you sure you were calling
> `M-x describe-text-properties` exactly from the same buffer position?

I feel confused.
Didn't you tell me that 0-length overlays should not be listed by
describe-text-properties?

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>





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

* bug#58479: 29.0.50; [feature/noverlay] Displaced overlays in notmuch search buffers after refreshing
  2022-10-19  8:09           ` Ihor Radchenko
@ 2022-10-19 12:31             ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2022-10-19 21:59               ` Matt Armstrong
  0 siblings, 1 reply; 24+ messages in thread
From: Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-10-19 12:31 UTC (permalink / raw)
  To: Ihor Radchenko; +Cc: Matt Armstrong, 58479-done, Ihor Radchenko

Ihor Radchenko [2022-10-19 08:09:32] wrote:
> Stefan Monnier <monnier@iro.umontreal.ca> writes:
>>> After executing 3, if I run M-x describe-text-properties, the overlay is
>>> not listed in the text properties. Running
>>> M-: (overlays-in (point-min) (point-max)) does list the 0-length
>>> overlay 5..5. However, running M-: (overlays-at 5) yields nil.
>>
>> I don't see this here: the overlay is listed just as much after as
>> before the patch.  Are you sure you were calling
>> `M-x describe-text-properties` exactly from the same buffer position?
>
> I feel confused.
> Didn't you tell me that 0-length overlays should not be listed by
> describe-text-properties?

I can't remember saying such a thing, no, unless I was myself confused.
It probably doesn't matter now, tho: let's mark this up to a big
confusion/miscommunication and move on :-)


        Stefan






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

* bug#58479: 29.0.50; [feature/noverlay] Displaced overlays in notmuch search buffers after refreshing
  2022-10-19 12:31             ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2022-10-19 21:59               ` Matt Armstrong
  0 siblings, 0 replies; 24+ messages in thread
From: Matt Armstrong @ 2022-10-19 21:59 UTC (permalink / raw)
  To: Stefan Monnier, Ihor Radchenko; +Cc: 58479-done, Ihor Radchenko

Stefan Monnier <monnier@iro.umontreal.ca> writes:

> Ihor Radchenko [2022-10-19 08:09:32] wrote:
>> Stefan Monnier <monnier@iro.umontreal.ca> writes:
>>>> After executing 3, if I run M-x describe-text-properties, the overlay is
>>>> not listed in the text properties. Running
>>>> M-: (overlays-in (point-min) (point-max)) does list the 0-length
>>>> overlay 5..5. However, running M-: (overlays-at 5) yields nil.
>>>
>>> I don't see this here: the overlay is listed just as much after as
>>> before the patch.  Are you sure you were calling
>>> `M-x describe-text-properties` exactly from the same buffer position?
>>
>> I feel confused.
>> Didn't you tell me that 0-length overlays should not be listed by
>> describe-text-properties?
>
> I can't remember saying such a thing, no, unless I was myself confused.
> It probably doesn't matter now, tho: let's mark this up to a big
> confusion/miscommunication and move on :-)

I think this is where the confusion started:

>> Stefan Monnier <monnier@iro.umontreal.ca> writes:
> That is very strange and makes me suspect there's something I'm maybe
> misunderstanding in the code I changed.

...and then you asked for a way to reproduce it.  I think we're clear on
the issue now, though.  Turns out this "very strange" behavior is
perhaps still strange, but at least the same on master and
feature/noverlay, at least I think!






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

* bug#58479: 29.0.50; [feature/noverlay] Displaced overlays in notmuch search buffers after refreshing
  2022-10-14 20:30     ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2022-10-15  1:38       ` Ihor Radchenko
@ 2022-10-19 22:26       ` Matt Armstrong
  2022-10-19 23:49         ` Matt Armstrong
  1 sibling, 1 reply; 24+ messages in thread
From: Matt Armstrong @ 2022-10-19 22:26 UTC (permalink / raw)
  To: Stefan Monnier, Ihor Radchenko; +Cc: 58479

Stefan Monnier <monnier@iro.umontreal.ca> writes:

> Thanks, I have fixed this specific problem with the patch below.
> Let's hope it also fixes your original issue with notmuch.
>
>         Stefan
>
> diff --git a/src/textprop.c b/src/textprop.c
> index 04fae528097..b34246f5bc7 100644
> --- a/src/textprop.c
> +++ b/src/textprop.c
> @@ -649,7 +649,8 @@ get_char_property_and_overlay (Lisp_Object position, register Lisp_Object prop,
>  	  Lisp_Object tem = Foverlay_get (node->data, prop);
>            struct sortvec *this;
>  
> -	  if (NILP (tem) || (w && ! overlay_matches_window (w, node->data)))
> +	  if (NILP (tem) || node->end < pos + 1
> +	      || (w && ! overlay_matches_window (w, node->data)))
>  	    continue;
>  
>            this = (result == items ? items + 1 : items);

Hmm...spoke too soon.  Despite your fix Stefan, I just ran into the
problem Ihor originally reported with notmuch.  I see an ellipsis in
position 1.  There are many "From 1 to 1" overlays in the buffer that
have the `ellipsis' property.

----------------------------------------------------------------------
             position: 1 of 169746 (0%), column: 0
            character: SPC (displayed as SPC) (codepoint 32, #o40, #x20)
              charset: ascii (ASCII (ISO646 IRV))
code point in charset: 0x20
               script: latin
               syntax:   	which means: whitespace
             category: .:Base, a:ASCII, l:Latin
             to input: type "C-x 8 RET 20" or "C-x 8 RET SPACE"
          buffer code: #x20
            file code: #x20 (encoded by coding system utf-8-unix)
              display: by this font (glyph code):
    ftcrhb:-    -Go Mono-regular-normal-normal-*-15-*-*-*-m-0-iso10646-1 (#x03)

Character code properties: customize what to show
  name: SPACE
  general-category: Zs (Separator, Space)
  decomposition: (32) (' ')

There are 864 overlays here:
 From 1 to 204
  face                 hl-line
  priority             1
  window               nil
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay
 From 1 to 1
  invisible            ellipsis
  isearch-open-invisible delete-overlay


There are text properties here:
  face                 notmuch-search-date
  notmuch-search-result [Show]





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

* bug#58479: 29.0.50; [feature/noverlay] Displaced overlays in notmuch search buffers after refreshing
  2022-10-19 22:26       ` Matt Armstrong
@ 2022-10-19 23:49         ` Matt Armstrong
  2022-10-20  1:51           ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 1 reply; 24+ messages in thread
From: Matt Armstrong @ 2022-10-19 23:49 UTC (permalink / raw)
  To: Stefan Monnier, Ihor Radchenko; +Cc: 58479

Matt Armstrong <matt@rfc20.org> writes:

> Stefan Monnier <monnier@iro.umontreal.ca> writes:
>
>> Thanks, I have fixed this specific problem with the patch below.
>> Let's hope it also fixes your original issue with notmuch.
>>
>>         Stefan
>>
>> diff --git a/src/textprop.c b/src/textprop.c
>> index 04fae528097..b34246f5bc7 100644
>> --- a/src/textprop.c
>> +++ b/src/textprop.c
>> @@ -649,7 +649,8 @@ get_char_property_and_overlay (Lisp_Object position, register Lisp_Object prop,
>>  	  Lisp_Object tem = Foverlay_get (node->data, prop);
>>            struct sortvec *this;
>>  
>> -	  if (NILP (tem) || (w && ! overlay_matches_window (w, node->data)))
>> +	  if (NILP (tem) || node->end < pos + 1
>> +	      || (w && ! overlay_matches_window (w, node->data)))
>>  	    continue;
>>  
>>            this = (result == items ? items + 1 : items);
>
> Hmm...spoke too soon.  Despite your fix Stefan

[...]

New repro, see function below.  Symptoms: despite inserting two lines of
text, and there being a single overlay at (1,1) with the 'invisible
prop, all I see in the buffer is the ellipsis.  I can cursor around and
see the position change in the mode line, but the display never changes.
With the cursor at EOB it appears after the ellipsis.  Anywhere else and
the cursor appears before it.

(defun my-b58479-4 ()
  (interactive)
  (with-current-buffer (get-buffer-create "*b58479*")
    (kill-all-local-variables)
    (delete-all-overlays)
    (setq buffer-read-only nil)
    (setq buffer-file-name nil)
    (setq buffer-undo-list nil)
    (let ((inhibit-read-only t)
          (inhibit-modification-hooks t))
      (erase-buffer))
    (add-to-invisibility-spec (cons 'ellipsis t))
    (goto-char (point-max))
    (insert "first line\nsecond line\n")
    (let ((overlay (make-overlay 1 1)))
      (overlay-put overlay 'invisible 'ellipsis))
    (display-buffer (current-buffer))))



----------------------------------------------------------------------
             position: 1 of 29 (0%), column: 0
            character: f (displayed as f) (codepoint 102, #o146, #x66)
              charset: ascii (ASCII (ISO646 IRV))
code point in charset: 0x66
               script: latin
               syntax: w 	which means: word
             category: .:Base, L:Strong L2R, a:ASCII, l:Latin, r:Roman
             to input: type "C-x 8 RET 66" or "C-x 8 RET LATIN SMALL LETTER F"
          buffer code: #x66
            file code: #x66 (encoded by coding system utf-8-unix)
              display: by this font (glyph code):
    ftcrhb:-    -Go Mono-regular-normal-normal-*-15-*-*-*-m-0-iso10646-1 (#x49)

Character code properties: customize what to show
  name: LATIN SMALL LETTER F
  general-category: Ll (Letter, Lowercase)
  decomposition: (102) ('f')

There is an overlay here:
 From 1 to 1
  invisible            ellipsis
----------------------------------------------------------------------
             position: 29 of 29 (97%), column: 5
            character: q (displayed as q) (codepoint 113, #o161, #x71)
              charset: ascii (ASCII (ISO646 IRV))
code point in charset: 0x71
               script: latin
               syntax: w 	which means: word
             category: .:Base, L:Strong L2R, a:ASCII, l:Latin, r:Roman
             to input: type "C-x 8 RET 71" or "C-x 8 RET LATIN SMALL LETTER Q"
          buffer code: #x71
            file code: #x71 (encoded by coding system utf-8-unix)
              display: by this font (glyph code):
    ftcrhb:-    -Go Mono-regular-normal-normal-*-15-*-*-*-m-0-iso10646-1 (#x54)

Character code properties: customize what to show
  name: LATIN SMALL LETTER Q
  general-category: Ll (Letter, Lowercase)
  decomposition: (113) ('q')





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

* bug#58479: 29.0.50; [feature/noverlay] Displaced overlays in notmuch search buffers after refreshing
  2022-10-19 23:49         ` Matt Armstrong
@ 2022-10-20  1:51           ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2022-10-20 21:59             ` Matt Armstrong
  0 siblings, 1 reply; 24+ messages in thread
From: Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-10-20  1:51 UTC (permalink / raw)
  To: Matt Armstrong; +Cc: 58479, Ihor Radchenko

> New repro, see function below.  Symptoms: despite inserting two lines of
> text, and there being a single overlay at (1,1) with the 'invisible
> prop, all I see in the buffer is the ellipsis.  I can cursor around and
> see the position change in the mode line, but the display never changes.
> With the cursor at EOB it appears after the ellipsis.  Anywhere else and
> the cursor appears before it.
>
> (defun my-b58479-4 ()
>   (interactive)
>   (with-current-buffer (get-buffer-create "*b58479*")
>     (kill-all-local-variables)
>     (delete-all-overlays)
>     (setq buffer-read-only nil)
>     (setq buffer-file-name nil)
>     (setq buffer-undo-list nil)
>     (let ((inhibit-read-only t)
>           (inhibit-modification-hooks t))
>       (erase-buffer))
>     (add-to-invisibility-spec (cons 'ellipsis t))
>     (goto-char (point-max))
>     (insert "first line\nsecond line\n")
>     (let ((overlay (make-overlay 1 1)))
>       (overlay-put overlay 'invisible 'ellipsis))
>     (display-buffer (current-buffer))))

Hmm... I can't see the problem on my end.
I did

    % src/emacs -Q
    <mouse-2> to paste the above code into *scratch*
    C-M-x
    M-x my-b58479-4 RET

but this shows me a buffer with 2 lines and no ellipsis.
[ With the latest code from `feature/noverlay` whch I just pushed with
  your (rebased) changes.  ]


        Stefan


PS: You can use `with-silent-modifications` around the `erase-buffer`
and `insert` calls: it will do the dance with the other variables for you.






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

* bug#58479: 29.0.50; [feature/noverlay] Displaced overlays in notmuch search buffers after refreshing
  2022-10-20  1:51           ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2022-10-20 21:59             ` Matt Armstrong
  2022-10-20 22:34               ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 1 reply; 24+ messages in thread
From: Matt Armstrong @ 2022-10-20 21:59 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: 58479, Ihor Radchenko

Stefan Monnier <monnier@iro.umontreal.ca> writes:

> Hmm... I can't see the problem on my end.

False alarm, sorry.  I was inadvertently running an old branch.  I'm
juggling too many git repos lately as I figure out what the heck I'm
doing.





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

* bug#58479: 29.0.50; [feature/noverlay] Displaced overlays in notmuch search buffers after refreshing
  2022-10-20 21:59             ` Matt Armstrong
@ 2022-10-20 22:34               ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 0 replies; 24+ messages in thread
From: Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2022-10-20 22:34 UTC (permalink / raw)
  To: Matt Armstrong; +Cc: 58479, Ihor Radchenko

Matt Armstrong [2022-10-20 14:59:24] wrote:
> Stefan Monnier <monnier@iro.umontreal.ca> writes:
>> Hmm... I can't see the problem on my end.
> False alarm, sorry.  I was inadvertently running an old branch.

Yay!

> I'm juggling too many git repos lately as I figure out what the heck
> I'm doing.

Welcome to the club,


        Stefan






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

end of thread, other threads:[~2022-10-20 22:34 UTC | newest]

Thread overview: 24+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-10-13  2:17 bug#58479: 29.0.50; [feature/noverlay] Displaced overlays in notmuch search buffers after refreshing Ihor Radchenko
2022-10-13  4:25 ` Matt Armstrong
2022-10-14  4:56   ` Ihor Radchenko
2022-10-14 20:30     ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-10-15  1:38       ` Ihor Radchenko
2022-10-15  3:52         ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-10-15  4:11           ` Ihor Radchenko
2022-10-15 13:43             ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-10-15 14:22               ` Ihor Radchenko
2022-10-16 23:41                 ` Matt Armstrong
2022-10-17  1:28                   ` Ihor Radchenko
2022-10-17  5:56                     ` Matt Armstrong
2022-10-17  8:21                       ` Ihor Radchenko
2022-10-17 18:53                         ` Matt Armstrong
2022-10-17 22:05                           ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-10-18 20:38         ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-10-19  8:09           ` Ihor Radchenko
2022-10-19 12:31             ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-10-19 21:59               ` Matt Armstrong
2022-10-19 22:26       ` Matt Armstrong
2022-10-19 23:49         ` Matt Armstrong
2022-10-20  1:51           ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors
2022-10-20 21:59             ` Matt Armstrong
2022-10-20 22:34               ` Stefan Monnier via Bug reports for GNU Emacs, the Swiss army knife of text editors

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.