Subject: bug#49742: 28.0.50; previous-single-property-change sometimes wrong?

From: "T.V Raman" <[email-masked]>
Date: Mon, 26 Jul 2021 08:47:07 -0700

This appears to a corner case where previous-single-property-change
breaks in a surprizing way.

1. ;;; Evaluate the below to get a string with properties.
(setq s

#("-L Trace line evolution (-L)

History simplification" 0 2 (face transient-blue button (t) category transient-button-button command magit-log:-L) 2 25 (button (t) category transient-button-button command magit-log:-L) 25 27 (face transient-inactive-value button (t) category transient-button-button command magit-log:-L) 27 28 (button (t) category transient-button-button command magit-log:-L) 30 52 (face transient-heading)))

2.;;; Insert into a new buffer
(switch-to-buffer "foo")
(insert s)

4. ;;; Place point on the 'H' of "history"

   5. ;;; eval
   (previous-single-property-change (point 'face)

   Instead of returning value of point before the 'H', this returns a
   value that is unexpected, it returns point  past the ')'

   --Raman

In GNU Emacs 28.0.50 (build 13, x86_64-pc-linux-gnu, GTK+ Version 3.24.24, cairo version 1.16.0)
 of 2021-07-22 built on raman-glaptop
Repository revision: 5b868503f53f1cf67388238f825518bfe30398fd
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12011000
System Description: Debian GNU/Linux rodete

Configured using:
 'configure --enable-silent-rules --without-xwidgets --with-mailutils
 --without-compress-install LDFLAGS=-O3 'CPPFLAGS=-Ofast ''

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

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

Major mode: Text

Minor modes in effect:
  recentf-mode: t
  global-git-commit-mode: t
  magit-auto-revert-mode: t
  orgalist-mode: t
  shell-dirtrack-mode: t
  savehist-mode: t
  save-place-mode: t
  psession-mode: t
  psession-autosave-mode: t
  midnight-mode: t
  ido-ubiquitous-mode: t
  flx-ido-mode: t
  ido-everywhere: t
  display-time-mode: t
  disable-mouse-global-mode: t
  company-statistics-mode: t
  company-prescient-mode: t
  prescient-persist-mode: t
  auto-correct-mode: t
  global-voice-lock-mode: t
  voice-lock-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tab-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  auto-fill-function: #[128 \300\301\302#\207 [apply orgalist--auto-fill yas--auto-fill nil] 5 nil]
  abbrev-mode: t

Load-path shadows:
/home/raman/emacs/lisp/emacspeak/lisp/tapestry hides /home/raman/emacs/lisp/site-lisp/vm/lisp/tapestry
/home/raman/.emacs.d/elpa/lispy-20210702.1206/elpa hides /home/raman/.emacs.d/elpa/ivy-20210602.1349/elpa
/home/raman/.emacs.d/elpa/transient-20210723.1601/transient hides /usr/local/share/emacs/28.0.50/lisp/transient
/home/raman/emacs/lisp/emacspeak/lisp/tetris hides /usr/local/share/emacs/28.0.50/lisp/play/tetris

Features:
(shadow emacsbug mailalias face-remap recentf tree-widget
bash-completion magit-patch magit-subtree magit-ediff emacspeak-ediff
ediff ediff-merg ediff-mult ediff-wind ediff-diff ediff-help
ediff-init ediff-util emacspeak-forge 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 smartparens-markdown
emacspeak-markdown markdown-mode forge-repo forge forge-core forge-db
closql emacsql-sqlite emacsql emacsql-compiler url-http url-auth
url-gw nsm emacspeak-magit 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
emacspeak-package package url-handlers magit-repos magit-apply
magit-wip magit-log which-func magit-diff smerge-mode diff git-commit
log-edit pcvs-util emacspeak-add-log add-log magit-core
magit-autorevert autorevert filenotify magit-margin magit-transient
magit-process with-editor magit-mode emacspeak-transient transient
magit-git magit-section magit-utils crm char-fold misearch
multi-isearch mule-util emacspeak-dbus nm amixer emacspeak-gnus
gm-nnir nnir gnus-art mm-uu mml2015 mm-view mml-smime smime dig
gnus-sum gnus-group gnus-undo gnus-start gnus-dbus dbus
emacspeak-orgalist orgalist smartparens-org emacspeak-org ol-eww
emacspeak-eww emacspeak-google gweb emacspeak-we emacspeak-xslt
dom-addons eww xdg url-queue shr kinsoku svg dom browse-url url
url-proxy url-privacy url-expand url-methods url-history url-cookie
url-domsuf url-util mailcap mm-url org-tempo emacspeak-tempo tempo org
ob ob-tangle ob-ref ob-lob ob-table ob-exp org-macro org-footnote
org-src ob-comint org-pcomplete org-list org-faces org-entities
org-version ob-emacs-lisp ob-core ob-eval org-table ol org-keys
org-compat org-macs org-loaddefs format-spec emacspeak-calendar appt
diary-lib diary-loaddefs solar cal-dst cal-menu calendar cal-loaddefs
macrostep-c cmacexp macrostep emacspeak-tcl tcl emacspeak-lispy lispy
emacspeak-hydra hydra lv swiper emacspeak-ivy ivy ivy-faces
ivy-overlay colir color delsel lispy-inline avy emacspeak-outline
noutline outline edebug backtrace help-fns radix-tree lispy-tags
mode-local emacspeak-comint shell pcomplete comint emacspeak-wizards
vc-git emacspeak-diff-mode diff-mode easy-mmode vc-dispatcher
yasnippet-snippets emacspeak-yasnippet yasnippet emacspeak-smartparens
smartparens-config smartparens-javascript smartparens-text
smartparens-c smartparens emacspeak-hideshow hideshow company-bbdb
company-semantic company-template company-files company-abbrev
company-keywords company-etags etags fileloop generator emacspeak-xref
xref emacspeak-project project ring company-dabbrev-code
company-dabbrev company-capf js imenu emacspeak-c cc-mode cc-fonts
cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs
cl-extra emacspeak-advice emacspeak-cedet warnings xml gnus-cloud
nnimap nnmail mail-source utf7 netrc nnoo parse-time iso8601 gnus-spec
gnus-int gnus-range emacspeak-message message rmc puny rfc822 mml
mml-sec emacspeak-epa epa derived epg epg-config mm-decode mm-bodies
mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader gnus-win
emacspeak-hide smtpmail sendmail auth-source-xoauth2 auth-source-pass
url-parse url-vars gnus nnheader gnus-util emacspeak-rmail rmail
rmail-loaddefs auth-source eieio eieio-core eieio-loaddefs
password-cache rfc2047 rfc2045 ietf-drums time-date mail-utils mm-util
mail-prsvr emacspeak-widget emacspeak-auctex emacspeak-tab-bar
emacspeak-kmacro emacspeak-info emacspeak-ido emacspeak-flycheck
emacspeak-custom emacspeak-company emacspeak-buff-menu soundscape
emacspeak-muggles flycheck ansi-color find-func help-mode rx dash
savehist saveplace psession frameset async midnight
ido-completing-read+ memoize cus-edit pp wid-edit minibuf-eldef gmaps
g-utils cl-macs json map flx-ido flx ido emacspeak-m-player
emacspeak-amark ladspa emacspeak-dired locate dired dired-loaddefs
time disable-mouse company-statistics company-prescient prescient
company edmacro kmacro subr-x auto-correct thingatpt cus-start
cus-load modus-vivendi-theme pcase modus-themes seq gv server
file-xoauth2 laptop-local xbacklight emacs-startup emacspeak-setup
emacspeak emacspeak-preamble emacspeak-sounds emacspeak-speak
text-property-search sox-gen emacspeak-keymap emacspeak-pronounce
voice-defs voice-setup outloud-voices dtk-speak cl-seq byte-opt
bytecomp byte-compile cconv advice cl-loaddefs cl-lib info tex-site
slime-autoloads iso-transl tooltip eldoc electric uniquify ediff-hook
vc-hooks lisp-float-type mwheel term/x-win x-win term/common-win x-dnd
tool-bar dnd fontset image regexp-opt fringe tabulated-list replace
newcomment text-mode elisp-mode lisp-mode prog-mode register page
tab-bar menu-bar rfn-eshadow isearch easymenu timer select scroll-bar
mouse jit-lock font-lock syntax font-core term/tty-colors frame
minibuffer cl-generic cham georgian utf-8-lang misc-lang vietnamese
tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew
greek romanian slovak czech european ethiopic indian cyrillic chinese
composite charscript charprop case-table epa-hook jka-cmpr-hook help
simple abbrev obarray cl-preloaded nadvice button loaddefs faces
cus-face macroexp files window text-properties overlay sha1 md5 base64
format env code-pages mule custom widget hashtable-print-readable
backquote threads dbusbind inotify lcms2 dynamic-setting
system-font-setting font-render-setting cairo move-toolbar gtk
x-toolkit x multi-tty make-network-process emacs)

Memory information:
((conses 16 681624 465381)
 (symbols 48 47649 65)
 (strings 32 191994 93919)
 (string-bytes 1 6275630)
 (vectors 16 108517)
 (vector-slots 8 2019785 660233)
 (floats 8 2558 1354)
 (intervals 56 1961 1030)
 (buffers 992 34))

-- 

Thanks,

--Raman(I Search, I Find, I Misplace, I Research)
♉ Id: kg:/m/0285kf1  🦮

-- 

Thanks,

--Raman(I Search, I Find, I Misplace, I Research)
♉ Id: kg:/m/0285kf1  🦮