Package: emacs;
Reported by: Ihor Radchenko <yantar92 <at> gmail.com>
Date: Thu, 13 Oct 2022 02:17:01 UTC
Severity: normal
Found in version 29.0.50
Done: Stefan Monnier <monnier <at> iro.umontreal.ca>
Bug is archived. No further changes may be made.
To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 58479 in the body.
You can then email your comments to 58479 AT debbugs.gnu.org in the normal way.
Toggle the display of automated, internal messages from the tracker.
View this report as an mbox folder, status mbox, maintainer mbox
bug-gnu-emacs <at> gnu.org
:bug#58479
; Package emacs
.
(Thu, 13 Oct 2022 02:17:01 GMT) Full text and rfc822 format available.Ihor Radchenko <yantar92 <at> gmail.com>
:bug-gnu-emacs <at> gnu.org
.
(Thu, 13 Oct 2022 02:17:01 GMT) Full text and rfc822 format available.Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
From: Ihor Radchenko <yantar92 <at> gmail.com> To: bug-gnu-emacs <at> gnu.org Subject: 29.0.50; [feature/noverlay] Displaced overlays in notmuch search buffers after refreshing Date: Thu, 13 Oct 2022 10:17:22 +0800
Hi, As I mentioned in https://yhetil.org/emacs-devel/jwvo7ulzmvv.fsf-monnier+emacs <at> 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>
monnier <at> iro.umontreal.ca, matt <at> rfc20.org, bug-gnu-emacs <at> gnu.org
:bug#58479
; Package emacs
.
(Thu, 13 Oct 2022 04:26:02 GMT) Full text and rfc822 format available.Message #8 received at 58479 <at> debbugs.gnu.org (full text, mbox):
From: Matt Armstrong <matt <at> rfc20.org> To: Ihor Radchenko <yantar92 <at> gmail.com> Cc: 58479 <at> debbugs.gnu.org Subject: Re: bug#58479: 29.0.50; [feature/noverlay] Displaced overlays in notmuch search buffers after refreshing Date: Wed, 12 Oct 2022 21:25:04 -0700
X-Debbugs-CC: monnier <at> iro.umontreal.ca, matt <at> rfc20.org ^^^ I don't know if Debbugs pseudoheaders work here but I'll give it a shot. Ihor Radchenko <yantar92 <at> gmail.com> writes: > As I mentioned in > https://yhetil.org/emacs-devel/jwvo7ulzmvv.fsf-monnier+emacs <at> 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)
bug-gnu-emacs <at> gnu.org
:bug#58479
; Package emacs
.
(Fri, 14 Oct 2022 04:56:02 GMT) Full text and rfc822 format available.Message #11 received at 58479 <at> debbugs.gnu.org (full text, mbox):
From: Ihor Radchenko <yantar92 <at> gmail.com> To: Matt Armstrong <matt <at> rfc20.org> Cc: 58479 <at> debbugs.gnu.org Subject: Re: bug#58479: 29.0.50; [feature/noverlay] Displaced overlays in notmuch search buffers after refreshing Date: Fri, 14 Oct 2022 12:56:21 +0800
Matt Armstrong <matt <at> 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>
bug-gnu-emacs <at> gnu.org
:bug#58479
; Package emacs
.
(Fri, 14 Oct 2022 20:31:02 GMT) Full text and rfc822 format available.Message #14 received at 58479 <at> debbugs.gnu.org (full text, mbox):
From: Stefan Monnier <monnier <at> iro.umontreal.ca> To: Ihor Radchenko <yantar92 <at> gmail.com> Cc: Matt Armstrong <matt <at> rfc20.org>, 58479 <at> debbugs.gnu.org Subject: Re: bug#58479: 29.0.50; [feature/noverlay] Displaced overlays in notmuch search buffers after refreshing Date: Fri, 14 Oct 2022 16:30:03 -0400
> 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);
bug-gnu-emacs <at> gnu.org
:bug#58479
; Package emacs
.
(Sat, 15 Oct 2022 01:39:01 GMT) Full text and rfc822 format available.Message #17 received at 58479 <at> debbugs.gnu.org (full text, mbox):
From: Ihor Radchenko <yantar92 <at> gmail.com> To: Stefan Monnier <monnier <at> iro.umontreal.ca> Cc: Matt Armstrong <matt <at> rfc20.org>, 58479 <at> debbugs.gnu.org Subject: Re: bug#58479: 29.0.50; [feature/noverlay] Displaced overlays in notmuch search buffers after refreshing Date: Sat, 15 Oct 2022 09:38:49 +0800
Stefan Monnier <monnier <at> 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>
bug-gnu-emacs <at> gnu.org
:bug#58479
; Package emacs
.
(Sat, 15 Oct 2022 03:53:01 GMT) Full text and rfc822 format available.Message #20 received at 58479 <at> debbugs.gnu.org (full text, mbox):
From: Stefan Monnier <monnier <at> iro.umontreal.ca> To: Ihor Radchenko <yantar92 <at> gmail.com> Cc: Matt Armstrong <matt <at> rfc20.org>, 58479 <at> debbugs.gnu.org Subject: Re: bug#58479: 29.0.50; [feature/noverlay] Displaced overlays in notmuch search buffers after refreshing Date: Fri, 14 Oct 2022 23:52:44 -0400
> 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
bug-gnu-emacs <at> gnu.org
:bug#58479
; Package emacs
.
(Sat, 15 Oct 2022 04:12:02 GMT) Full text and rfc822 format available.Message #23 received at 58479 <at> debbugs.gnu.org (full text, mbox):
From: Ihor Radchenko <yantar92 <at> gmail.com> To: Stefan Monnier <monnier <at> iro.umontreal.ca> Cc: Matt Armstrong <matt <at> rfc20.org>, 58479 <at> debbugs.gnu.org Subject: Re: bug#58479: 29.0.50; [feature/noverlay] Displaced overlays in notmuch search buffers after refreshing Date: Sat, 15 Oct 2022 12:11:55 +0800
Stefan Monnier <monnier <at> 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>
bug-gnu-emacs <at> gnu.org
:bug#58479
; Package emacs
.
(Sat, 15 Oct 2022 13:44:01 GMT) Full text and rfc822 format available.Message #26 received at 58479 <at> debbugs.gnu.org (full text, mbox):
From: Stefan Monnier <monnier <at> iro.umontreal.ca> To: Ihor Radchenko <yantar92 <at> gmail.com> Cc: Matt Armstrong <matt <at> rfc20.org>, 58479 <at> debbugs.gnu.org Subject: Re: bug#58479: 29.0.50; [feature/noverlay] Displaced overlays in notmuch search buffers after refreshing Date: Sat, 15 Oct 2022 09:43:01 -0400
> 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
bug-gnu-emacs <at> gnu.org
:bug#58479
; Package emacs
.
(Sun, 16 Oct 2022 00:56:04 GMT) Full text and rfc822 format available.Message #29 received at 58479 <at> debbugs.gnu.org (full text, mbox):
From: Ihor Radchenko <yantar92 <at> posteo.net> To: Stefan Monnier <monnier <at> iro.umontreal.ca> Cc: Matt Armstrong <matt <at> rfc20.org>, 58479 <at> debbugs.gnu.org, Ihor Radchenko <yantar92 <at> gmail.com> Subject: Re: bug#58479: 29.0.50; [feature/noverlay] Displaced overlays in notmuch search buffers after refreshing Date: Sat, 15 Oct 2022 14:22:42 +0000
Stefan Monnier <monnier <at> 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>
bug-gnu-emacs <at> gnu.org
:bug#58479
; Package emacs
.
(Sun, 16 Oct 2022 23:42:01 GMT) Full text and rfc822 format available.Message #32 received at 58479 <at> debbugs.gnu.org (full text, mbox):
From: Matt Armstrong <matt <at> rfc20.org> To: Ihor Radchenko <yantar92 <at> posteo.net>, Stefan Monnier <monnier <at> iro.umontreal.ca> Cc: 58479 <at> debbugs.gnu.org, Ihor Radchenko <yantar92 <at> gmail.com> Subject: Re: bug#58479: 29.0.50; [feature/noverlay] Displaced overlays in notmuch search buffers after refreshing Date: Sun, 16 Oct 2022 16:41:41 -0700
Ihor Radchenko <yantar92 <at> posteo.net> writes: > Stefan Monnier <monnier <at> 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.
bug-gnu-emacs <at> gnu.org
:bug#58479
; Package emacs
.
(Mon, 17 Oct 2022 01:29:02 GMT) Full text and rfc822 format available.Message #35 received at 58479 <at> debbugs.gnu.org (full text, mbox):
From: Ihor Radchenko <yantar92 <at> posteo.net> To: Matt Armstrong <matt <at> rfc20.org> Cc: 58479 <at> debbugs.gnu.org, Stefan Monnier <monnier <at> iro.umontreal.ca>, Ihor Radchenko <yantar92 <at> gmail.com> Subject: Re: bug#58479: 29.0.50; [feature/noverlay] Displaced overlays in notmuch search buffers after refreshing Date: Mon, 17 Oct 2022 01:28:40 +0000
Matt Armstrong <matt <at> 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>
bug-gnu-emacs <at> gnu.org
:bug#58479
; Package emacs
.
(Mon, 17 Oct 2022 05:57:02 GMT) Full text and rfc822 format available.Message #38 received at 58479 <at> debbugs.gnu.org (full text, mbox):
From: Matt Armstrong <matt <at> rfc20.org> To: Ihor Radchenko <yantar92 <at> posteo.net> Cc: 58479 <at> debbugs.gnu.org, Stefan Monnier <monnier <at> iro.umontreal.ca>, Ihor Radchenko <yantar92 <at> gmail.com> Subject: Re: bug#58479: 29.0.50; [feature/noverlay] Displaced overlays in notmuch search buffers after refreshing Date: Sun, 16 Oct 2022 22:56:47 -0700
Ihor Radchenko <yantar92 <at> posteo.net> writes: > Matt Armstrong <matt <at> 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)
bug-gnu-emacs <at> gnu.org
:bug#58479
; Package emacs
.
(Mon, 17 Oct 2022 08:21:02 GMT) Full text and rfc822 format available.Message #41 received at 58479 <at> debbugs.gnu.org (full text, mbox):
From: Ihor Radchenko <yantar92 <at> posteo.net> To: Matt Armstrong <matt <at> rfc20.org> Cc: 58479 <at> debbugs.gnu.org, Stefan Monnier <monnier <at> iro.umontreal.ca>, Ihor Radchenko <yantar92 <at> gmail.com> Subject: Re: bug#58479: 29.0.50; [feature/noverlay] Displaced overlays in notmuch search buffers after refreshing Date: Mon, 17 Oct 2022 08:21:18 +0000
Matt Armstrong <matt <at> 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>
bug-gnu-emacs <at> gnu.org
:bug#58479
; Package emacs
.
(Mon, 17 Oct 2022 18:55:02 GMT) Full text and rfc822 format available.Message #44 received at 58479 <at> debbugs.gnu.org (full text, mbox):
From: Matt Armstrong <matt <at> rfc20.org> To: Ihor Radchenko <yantar92 <at> posteo.net> Cc: 58479 <at> debbugs.gnu.org, Stefan Monnier <monnier <at> iro.umontreal.ca>, Ihor Radchenko <yantar92 <at> gmail.com> Subject: Re: bug#58479: 29.0.50; [feature/noverlay] Displaced overlays in notmuch search buffers after refreshing Date: Mon, 17 Oct 2022 11:53:49 -0700
Ihor Radchenko <yantar92 <at> posteo.net> writes: > Matt Armstrong <matt <at> 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?
bug-gnu-emacs <at> gnu.org
:bug#58479
; Package emacs
.
(Mon, 17 Oct 2022 22:06:02 GMT) Full text and rfc822 format available.Message #47 received at 58479 <at> debbugs.gnu.org (full text, mbox):
From: Stefan Monnier <monnier <at> iro.umontreal.ca> To: Matt Armstrong <matt <at> rfc20.org> Cc: 58479 <at> debbugs.gnu.org, Ihor Radchenko <yantar92 <at> posteo.net>, Ihor Radchenko <yantar92 <at> gmail.com> Subject: Re: bug#58479: 29.0.50; [feature/noverlay] Displaced overlays in notmuch search buffers after refreshing Date: Mon, 17 Oct 2022 18:05:47 -0400
> 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
bug-gnu-emacs <at> gnu.org
:bug#58479
; Package emacs
.
(Tue, 18 Oct 2022 20:40:01 GMT) Full text and rfc822 format available.Message #50 received at 58479 <at> debbugs.gnu.org (full text, mbox):
From: Stefan Monnier <monnier <at> iro.umontreal.ca> To: Ihor Radchenko <yantar92 <at> gmail.com> Cc: Matt Armstrong <matt <at> rfc20.org>, 58479 <at> debbugs.gnu.org Subject: Re: bug#58479: 29.0.50; [feature/noverlay] Displaced overlays in notmuch search buffers after refreshing Date: Tue, 18 Oct 2022 16:38:55 -0400
Ihor Radchenko [2022-10-15 09:38:49] wrote: > Stefan Monnier <monnier <at> 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
bug-gnu-emacs <at> gnu.org
:bug#58479
; Package emacs
.
(Wed, 19 Oct 2022 08:09:02 GMT) Full text and rfc822 format available.Message #53 received at 58479 <at> debbugs.gnu.org (full text, mbox):
From: Ihor Radchenko <yantar92 <at> posteo.net> To: Stefan Monnier <monnier <at> iro.umontreal.ca> Cc: Matt Armstrong <matt <at> rfc20.org>, 58479 <at> debbugs.gnu.org, Ihor Radchenko <yantar92 <at> gmail.com> Subject: Re: bug#58479: 29.0.50; [feature/noverlay] Displaced overlays in notmuch search buffers after refreshing Date: Wed, 19 Oct 2022 08:09:32 +0000
Stefan Monnier <monnier <at> 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>
Stefan Monnier <monnier <at> iro.umontreal.ca>
:Ihor Radchenko <yantar92 <at> gmail.com>
:Message #58 received at 58479-done <at> debbugs.gnu.org (full text, mbox):
From: Stefan Monnier <monnier <at> iro.umontreal.ca> To: Ihor Radchenko <yantar92 <at> posteo.net> Cc: Matt Armstrong <matt <at> rfc20.org>, 58479-done <at> debbugs.gnu.org, Ihor Radchenko <yantar92 <at> gmail.com> Subject: Re: bug#58479: 29.0.50; [feature/noverlay] Displaced overlays in notmuch search buffers after refreshing Date: Wed, 19 Oct 2022 08:31:55 -0400
Ihor Radchenko [2022-10-19 08:09:32] wrote: > Stefan Monnier <monnier <at> 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
bug-gnu-emacs <at> gnu.org
:bug#58479
; Package emacs
.
(Wed, 19 Oct 2022 22:00:02 GMT) Full text and rfc822 format available.Message #61 received at 58479-done <at> debbugs.gnu.org (full text, mbox):
From: Matt Armstrong <matt <at> rfc20.org> To: Stefan Monnier <monnier <at> iro.umontreal.ca>, Ihor Radchenko <yantar92 <at> posteo.net> Cc: 58479-done <at> debbugs.gnu.org, Ihor Radchenko <yantar92 <at> gmail.com> Subject: Re: bug#58479: 29.0.50; [feature/noverlay] Displaced overlays in notmuch search buffers after refreshing Date: Wed, 19 Oct 2022 14:59:15 -0700
Stefan Monnier <monnier <at> iro.umontreal.ca> writes: > Ihor Radchenko [2022-10-19 08:09:32] wrote: >> Stefan Monnier <monnier <at> 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 <at> 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!
bug-gnu-emacs <at> gnu.org
:bug#58479
; Package emacs
.
(Wed, 19 Oct 2022 22:27:02 GMT) Full text and rfc822 format available.Message #64 received at 58479 <at> debbugs.gnu.org (full text, mbox):
From: Matt Armstrong <matt <at> rfc20.org> To: Stefan Monnier <monnier <at> iro.umontreal.ca>, Ihor Radchenko <yantar92 <at> gmail.com> Cc: 58479 <at> debbugs.gnu.org Subject: Re: bug#58479: 29.0.50; [feature/noverlay] Displaced overlays in notmuch search buffers after refreshing Date: Wed, 19 Oct 2022 15:26:05 -0700
Stefan Monnier <monnier <at> 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]
bug-gnu-emacs <at> gnu.org
:bug#58479
; Package emacs
.
(Wed, 19 Oct 2022 23:50:02 GMT) Full text and rfc822 format available.Message #67 received at 58479 <at> debbugs.gnu.org (full text, mbox):
From: Matt Armstrong <matt <at> rfc20.org> To: Stefan Monnier <monnier <at> iro.umontreal.ca>, Ihor Radchenko <yantar92 <at> gmail.com> Cc: 58479 <at> debbugs.gnu.org Subject: Re: bug#58479: 29.0.50; [feature/noverlay] Displaced overlays in notmuch search buffers after refreshing Date: Wed, 19 Oct 2022 16:49:06 -0700
Matt Armstrong <matt <at> rfc20.org> writes: > Stefan Monnier <monnier <at> 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')
bug-gnu-emacs <at> gnu.org
:bug#58479
; Package emacs
.
(Thu, 20 Oct 2022 01:53:01 GMT) Full text and rfc822 format available.Message #70 received at 58479 <at> debbugs.gnu.org (full text, mbox):
From: Stefan Monnier <monnier <at> iro.umontreal.ca> To: Matt Armstrong <matt <at> rfc20.org> Cc: 58479 <at> debbugs.gnu.org, Ihor Radchenko <yantar92 <at> gmail.com> Subject: Re: bug#58479: 29.0.50; [feature/noverlay] Displaced overlays in notmuch search buffers after refreshing Date: Wed, 19 Oct 2022 21:51:53 -0400
> 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.
bug-gnu-emacs <at> gnu.org
:bug#58479
; Package emacs
.
(Thu, 20 Oct 2022 22:00:02 GMT) Full text and rfc822 format available.Message #73 received at 58479 <at> debbugs.gnu.org (full text, mbox):
From: Matt Armstrong <matt <at> rfc20.org> To: Stefan Monnier <monnier <at> iro.umontreal.ca> Cc: 58479 <at> debbugs.gnu.org, Ihor Radchenko <yantar92 <at> gmail.com> Subject: Re: bug#58479: 29.0.50; [feature/noverlay] Displaced overlays in notmuch search buffers after refreshing Date: Thu, 20 Oct 2022 14:59:24 -0700
Stefan Monnier <monnier <at> 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.
bug-gnu-emacs <at> gnu.org
:bug#58479
; Package emacs
.
(Thu, 20 Oct 2022 22:36:02 GMT) Full text and rfc822 format available.Message #76 received at 58479 <at> debbugs.gnu.org (full text, mbox):
From: Stefan Monnier <monnier <at> iro.umontreal.ca> To: Matt Armstrong <matt <at> rfc20.org> Cc: 58479 <at> debbugs.gnu.org, Ihor Radchenko <yantar92 <at> gmail.com> Subject: Re: bug#58479: 29.0.50; [feature/noverlay] Displaced overlays in notmuch search buffers after refreshing Date: Thu, 20 Oct 2022 18:34:59 -0400
Matt Armstrong [2022-10-20 14:59:24] wrote: > Stefan Monnier <monnier <at> 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
Debbugs Internal Request <help-debbugs <at> gnu.org>
to internal_control <at> debbugs.gnu.org
.
(Fri, 18 Nov 2022 12:24:08 GMT) Full text and rfc822 format available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.