From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Sean McAfee Newsgroups: gmane.emacs.bugs Subject: bug#74438: 29.1; global-mark-ring does not work as described Date: Tue, 19 Nov 2024 12:24:43 -0800 Message-ID: Mime-Version: 1.0 Content-Type: multipart/alternative; boundary="00000000000076d493062749d356" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="29273"; mail-complaints-to="usenet@ciao.gmane.io" To: 74438@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Tue Nov 19 21:26:28 2024 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1tDUns-0007RZ-3b for geb-bug-gnu-emacs@m.gmane-mx.org; Tue, 19 Nov 2024 21:26:28 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tDUnV-0004hP-8F; Tue, 19 Nov 2024 15:26:05 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tDUnT-0004h3-Oq for bug-gnu-emacs@gnu.org; Tue, 19 Nov 2024 15:26:03 -0500 Original-Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1tDUnT-0004KN-Fu for bug-gnu-emacs@gnu.org; Tue, 19 Nov 2024 15:26:03 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=debbugs.gnu.org; s=debbugs-gnu-org; h=Date:From:MIME-Version:To:Subject; bh=1/ssmLKstO4X2fKuZ1P90HRDxGe0+wyQGQ2FkB2malc=; b=jwm+d57eNctSfLiu8eyC0HWAS00B1rmXu9PVXt1VRsXRrzXIpLWkVopyhO6AX1tkhMVJrLijLAZ0+5aztUFW0s/4audjFmTzm+/0QECoyy8yM6XFy27510Qddz7V4bzM+TfS5+tkKi8LhXKwEo6DP9ZQro5TmjFJM6xwMiMCMoDuVAeWJTYVd0hZqKJp66JG+oyuRcY+Whqe/ZUaUG+pLYsPdr5Nmeq0piUgJMnMzuk7AgFMKLq4pXpbEBYpmSdFJ/V6ByJZkagOnM+rY/SeSTGnO3jgbdgza2faHjKiSnUQ0zcrLPrC8E4GlvgoXA6EaN3MFTrFM/Y9kqu43z/fQQ==; Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1tDUnS-0008OL-A8 for bug-gnu-emacs@gnu.org; Tue, 19 Nov 2024 15:26:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Sean McAfee Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 19 Nov 2024 20:26:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 74438 X-GNU-PR-Package: emacs X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.173204792532200 (code B ref -1); Tue, 19 Nov 2024 20:26:02 +0000 Original-Received: (at submit) by debbugs.gnu.org; 19 Nov 2024 20:25:25 +0000 Original-Received: from localhost ([127.0.0.1]:44168 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tDUmp-0008NF-9h for submit@debbugs.gnu.org; Tue, 19 Nov 2024 15:25:25 -0500 Original-Received: from lists.gnu.org ([209.51.188.17]:51426) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1tDUml-0008N6-EU for submit@debbugs.gnu.org; Tue, 19 Nov 2024 15:25:21 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tDUmj-0004bm-Jw for bug-gnu-emacs@gnu.org; Tue, 19 Nov 2024 15:25:17 -0500 Original-Received: from mail-yw1-x1132.google.com ([2607:f8b0:4864:20::1132]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1tDUma-0003up-8j for bug-gnu-emacs@gnu.org; Tue, 19 Nov 2024 15:25:11 -0500 Original-Received: by mail-yw1-x1132.google.com with SMTP id 00721157ae682-6e2e41bd08bso41645617b3.2 for ; Tue, 19 Nov 2024 12:24:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1732047895; x=1732652695; darn=gnu.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=1/ssmLKstO4X2fKuZ1P90HRDxGe0+wyQGQ2FkB2malc=; b=ldPLb0TgqhRPS1+gVx/ywEZHlE411aeYmqyMdboyXcl8eIDIaHYoiUlZ+hTLcn++am 6krd5y8+8SmmZey2Ej4pob5BqwkQIHc0MCNVI9I/mtiTUwE7WyoVyB/JxZmFDQ4o6lgj UXkDdAXpyV8PtmbccCnfyXF4q0W9wI1SdlcquuPl+gSLok1gbIeDAvD0rRMLDiMoXUf6 npiFKTfHws41EY8Q5/jU2LRhGtkIDlT6rDkTFBeAGdWePs3aiIwoPXftcKXvjr2EbnZn 2+7GoYWXVG5uXnuaIwZwqCxlmWQW3VW4ZAkEpFIMsIXSSEaWmJKVGa0BofzPwhCOPvvX o7Yg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1732047895; x=1732652695; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=1/ssmLKstO4X2fKuZ1P90HRDxGe0+wyQGQ2FkB2malc=; b=s61HkGTrRxmPw4W0+DV39U/i+R7kWgKLrz+HpxbF9I4z8vd+AHrrYUAEiC0nOKyAbp Ze67ISWmCs/cH55TBR7VAKyP68eHujzfmu4Nbsir9OJHh/bAsZipWmarOk84BpOFDUAr MsYJeX1IU+iwsTp1/wJNAfPoq7c4jt67jde3ixo3oN+I6KKXbbxpzdTT2bJlbhXfYeFD vEEW33YU/xZxlEd+egA7X/9hA/BW2S5CHpxlHoBEoltDXiMLSIl9KOjdzLS/fEUywt4y KCn4tRlbhh+Hi9YhuiDDfyNaIp5kYOn2PyCSQifJgHPOZZpiFNIqWZTYH0p0bc+hHz0e zdzw== X-Gm-Message-State: AOJu0YwnKIT9STIgMq5KfurW2YROwcOwHPcOOMzGJ83ACkeHG7qwKNCu OeuqQe8mn1ySJlpSA+NvwCrkMIEjeFZ0Yc1tsV+WmEoDvg/OFIvc5MrN64+gS0HmTZsWQ+HxZN5 UKDhj11b89ft44xI7e8ddpKocisKTJBj7+KzSfg== X-Google-Smtp-Source: AGHT+IHLDvf6vmBpHYDrOj8ImMjxcRDC5LNtJ0OXWq1ZJ+6VgsIjcPB8cahjuZPRsWl6SUEhC1HcWVHliWrx0A0UnYw= X-Received: by 2002:a05:690c:3391:b0:6e3:bbc:338c with SMTP id 00721157ae682-6eebd0e6530mr2906977b3.6.1732047894137; Tue, 19 Nov 2024 12:24:54 -0800 (PST) Received-SPF: pass client-ip=2607:f8b0:4864:20::1132; envelope-from=eefacm@gmail.com; helo=mail-yw1-x1132.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:295660 Archived-At: --00000000000076d493062749d356 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Starting from emacs -Q: - Go to a new buffer named "foo". - Set the mark with C-SPC. - Go to a new buffer named "bar". - Set the mark with C-SPC. - Go back to buffer foo. - Set the mark with C-SPC. - Check the value of the global-mark-ring variable, as with C-h v or giving its name to the eval-expression command. The first marker in the ring is the one in buffer bar, not in buffer foo, even though buffer foo is where the mark was most recently set. This behavior contradicts what is described here: https://www.gnu.org/software/emacs/manual/html_node/emacs/Global-Mark-Ring.= html To wit: "Each time you set a mark, this is recorded in the global mark ring in addition to the current buffer=E2=80=99s own mark ring, if you have switched buffers since the previous mark setting." I've tracked the reason for this to the push-mark-command function, which does not push the mark unless it's not at the same place as point, or if it's given a true argument. set-mark-command calls push-mark-command, but passes nil to it unless, puzzlingly, the command's name is not "set-mark-command". For a bit of background, what I want to do is to set the mark at the beginning of a sexp (actually JSON) in one buffer, then go to the start of another sexp in a different buffer, and run a command that compares the two sexps, using the marker at the front of the global mark ring to find the first sexp. But this is unreliable since setting the mark does not necessarily update the global mark ring. Workarounds I've considered include: - Call push-mark-command manually with M-x, or bind it to a key sequence, and call it with a prefix argument. - Alias set-mark-command as a new command with a different name, and use that instead. - Use a custom marker, updated from a custom command. Obviously, none of these are as convenient as using the global mark ring. And in any event, there's still a bug in Emacs, even if only a documentation bug. In GNU Emacs 29.1 (build 1, aarch64-apple-darwin21.6.0, NS appkit-2113.60 Version 12.6.6 (Build 21G646)) of 2023-08-16 built on armbob.lan Windowing system distributor 'Apple', version 10.3.2487 System Description: macOS 14.7.1 Configured using: 'configure --with-ns '--enable-locallisppath=3D/Library/Application Support/Emacs/${version}/site-lisp:/Library/Application Support/Emacs/site-lisp' --with-modules 'CFLAGS=3D-DFD_SETSIZE=3D10000 -DDARWIN_UNLIMITED_SELECT' --with-x-toolkit=3Dno' Configured features: ACL GLIB GMP GNUTLS JPEG JSON LIBXML2 MODULES NOTIFY KQUEUE NS PDUMPER PNG RSVG SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER ZLIB Important settings: value of $LANG: en_US.UTF-8 locale-coding-system: utf-8-unix Major mode: ELisp/l Minor modes in effect: recentf-mode: t emms-mode-line-mode: t emms-playing-time-display-mode: t emms-playing-time-mode: t tracking-mode: t volatile-highlights-mode: t projectile-mode: t elisp-slime-nav-mode: t global-git-commit-mode: t magit-auto-revert-mode: t auto-revert-mode: t shell-dirtrack-mode: t server-mode: t global-flycheck-mode: t flycheck-mode: t minibuffer-depth-indicate-mode: t ido-vertical-mode: t global-undo-tree-mode: t undo-tree-mode: t paredit-mode: t override-global-mode: t desktop-save-mode: t winner-mode: t electric-pair-mode: t savehist-mode: t ido-everywhere: t tooltip-mode: t global-eldoc-mode: t eldoc-mode: t show-paren-mode: t electric-indent-mode: t mouse-wheel-mode: t global-prettify-symbols-mode: t prettify-symbols-mode: t menu-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t blink-cursor-mode: t line-number-mode: t transient-mark-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t Load-path shadows: ~/emacs/copilot.el/copilot hides ~/emacs/copilot ~/emacs/inf-ruby/inf-ruby hides /Users/sean/.emacs.d/elpa/inf-ruby-20240925.49/inf-ruby /Users/sean/.emacs.d/elpa/transient-20241023.1537/transient hides /Applications/Emacs 3.app/Contents/Resources/lisp/transient /Users/sean/.emacs.d/elpa/use-package-20230426.2324/use-package-jump hides /Applications/Emacs 3.app/Contents/Resources/lisp/use-package/use-package-jump /Users/sean/.emacs.d/elpa/use-package-20230426.2324/use-package-ensure hides /Applications/Emacs 3.app/Contents/Resources/lisp/use-package/use-package-ensure /Users/sean/.emacs.d/elpa/use-package-20230426.2324/use-package-core hides /Applications/Emacs 3.app/Contents/Resources/lisp/use-package/use-package-core /Users/sean/.emacs.d/elpa/use-package-20230426.2324/use-package-delight hides /Applications/Emacs 3.app/Contents/Resources/lisp/use-package/use-package-delight /Users/sean/.emacs.d/elpa/use-package-20230426.2324/use-package-diminish hides /Applications/Emacs 3.app/Contents/Resources/lisp/use-package/use-package-diminish /Users/sean/.emacs.d/elpa/use-package-20230426.2324/use-package hides /Applications/Emacs 3.app/Contents/Resources/lisp/use-package/use-package /Users/sean/.emacs.d/elpa/use-package-20230426.2324/use-package-bind-key hides /Applications/Emacs 3.app/Contents/Resources/lisp/use-package/use-package-bind-key /Users/sean/.emacs.d/elpa/bind-key-20230203.2004/bind-key hides /Applications/Emacs 3.app/Contents/Resources/lisp/use-package/bind-key /Users/sean/.emacs.d/elpa/use-package-20230426.2324/use-package-lint hides /Applications/Emacs 3.app/Contents/Resources/lisp/use-package/use-package-lint /Users/sean/.emacs.d/elpa/flim-20240221.1353/sasl hides /Applications/Emacs 3.app/Contents/Resources/lisp/net/sasl /Users/sean/.emacs.d/elpa/seq-2.24/seq hides /Applications/Emacs 3.app/Contents/Resources/lisp/emacs-lisp/seq /Users/sean/.emacs.d/elpa/eldoc-1.15.0/eldoc hides /Applications/Emacs 3.app/Contents/Resources/lisp/emacs-lisp/eldoc Features: (shadow mail-extr emacsbug japan-util kkc ja-dic-utl quail url-cache pulse vc-annotate expand-region subword-mode-expansions text-mode-expansions cc-mode-expansions the-org-mode-expansions ruby-mode-expansions python-el-fgallina-expansions js2-mode-expansions js-mode-expansions html-mode-expansions css-mode-expansions er-basic-expansions expand-region-core expand-region-custom mc-edit-lines goto-addr ag find-dired tabify org-datetree org-capture sh-script display-line-numbers delsel tramp-sh completion docker-tramp tramp-cache tramp tramp-loaddefs trampver tramp-integration files-x tramp-compat elnode db web time-stamp fakir dotassoc kv noflet cl-indent cl-print magit-bookmark bookmark shortdoc help-fns radix-tree recentf tree-widget misearch multi-isearch executable vc-hg vc-bzr vc-src vc-sccs vc-svn vc-cvs vc-rcs log-view bug-reference magit-extras face-remap emojify apropos tar-mode arc-mode archive-mode ht network-stream slack slack-company slack-unread slack-websocket slack-thread-event slack-room-event slack-star-event slack-reaction-event slack-reply-event slack-typing slack-slash-commands slack-message-event slack-event slack-dialog-edit-element-buffer slack-dialog-buffer slack-dialog slack-stars-buffer slack-search-result-buffer slack-thread-message-compose-buffer slack-file-list-buffer slack-file-info-buffer slack-all-threads-buffer slack-message-buffer slack-user-profile-buffer slack-pinned-items-buffer slack-pinned-item slack-thread-message-buffer slack-room-info-buffer slack-room-buffer slack-message-share-buffer slack-message-edit-buffer slack-room-message-compose-buffer slack-message-compose-buffer slack-message-attachment-preview-buffer slack-action slack-star slack-reminder slack-search slack-message-reaction slack-message-editor slack-message-sender slack-message-notification alert log4e notifications gntp slack-buffer slack-message-formatter slack-thread slack-im slack-channel slack-group slack-conversations slack-create-message slack-attachment slack-selectable slack-bot-message slack-user-message slack-file slack-message slack-message-faces slack-unescape slack-block slack-mrkdwn slack-usergroup slack-reaction slack-modeline slack-room slack-counts slack-user slack-bot slack-dnd-status slack-emoji slack-image slack-request slack-log lui flyspell ispell slack-team slack-team-ws slack-util websocket diary-lib diary-loaddefs json-mode json-snatcher css-mode color sql view java-ts-mode yaml-ts-mode restclient smartparens-python python cap-words superword subword smartparens-scala scala-mode scala-mode-prettify-symbols scala-mode-imenu scala-mode-map scala-mode-fontlock scala-mode-indent scala-mode-paragraph scala-mode-syntax scala-mode-lib kotlin-mode kotlin-mode-indent kotlin-mode-lexer org-bullets oc-basic org-element org-persist org-id org-refile avl-tree ol-eww eww xdg url-queue mm-url ol-rmail ol-mhe ol-irc ol-info ol-gnus nnselect gnus-art mm-uu mml2015 mm-view mml-smime smime dig gnus-sum shr pixel-fill kinsoku url-file svg gnus-group gnus-undo gnus-start gnus-dbus gnus-cloud nnimap nnmail mail-source utf7 nnoo parse-time gnus-spec gnus-int gnus-range gnus-win ol-docview doc-view jka-compr image-mode exif ol-bibtex bibtex iso8601 ol-bbdb ol-w3m ol-doi org-link-doi smartparens-org org org-macro org-pcomplete org-list org-footnote org-faces org-entities noutline outline ob-emacs-lisp org-table org-loaddefs cal-menu calendar cal-loaddefs ruby-ts-mode gnus-dired perl6-detect copilot editorconfig editorconfig-core editorconfig-core-handle editorconfig-fnmatch jsonrpc ert ewoc debug backtrace warnings emms-idapi-browser emms-idapi emms-idapi-musicbrainz emms-mpris dbus emms-librefm-stream xml emms-librefm-scrobbler emms-playlist-limit emms-i18n emms-history emms-score emms-stream-info emms-metaplaylist-mode emms-bookmarks emms-cue emms-mode-line-icon emms-browser sort emms-volume emms-volume-sndioctl emms-volume-mixerctl emms-volume-pulse emms-volume-amixer emms-playlist-sort emms-last-played emms-player-xine emms-player-mpd tq emms-lyrics emms-url emms-streams emms-show-all emms-tag-editor emms-tag-tracktag emms-mark emms-mode-line emms-cache emms-info-native emms-info-native-spc emms-info-native-mp3 emms-info-native-ogg emms-info-native-opus emms-info-native-flac emms-info-native-vorbis bindat emms-info-exiftool emms-info-tinytag emms-info-metaflac emms-info-opusinfo emms-info-ogginfo emms-info-mp3info emms-playlist-mode emms-player-vlc emms-player-mpv emms-playing-time emms-info emms-later-do emms-player-mplayer emms-player-simple emms-source-playlist emms-source-file locate emms-setup emms emms-compat scribd-sentry scribd-airflow scribd-github request scribd-devkube scribd-aws ob-ruby ob ob-tangle ol org-src ob-ref ob-lob ob-table ob-exp ob-comint ob-core org-cycle org-fold org-fold-core ob-eval org-keys oc org-compat org-version org-macs hmac csv let-alist smartparens-config smartparens-javascript smartparens-text smartparens-ruby smartparens-html smartparens-c smartparens loadhist robe url-http url-auth url-gw nsm inf-ruby ruby-mode smie git-link yasnippet git-timemachine vc-git whitespace dash-functional gnutls tracking shorten ibuf-macs chruby treesit-auto xref-js2 vc vc-dispatcher js2-mode js c-ts-common treesit cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs dired-filter f dired-hacks-utils dired-aux dired-x shell-pop term disp-table ehelp beginend volatile-highlights iedit iedit-lib mc-hide-unmatched-lines-mode mc-mark-more tagedit s sgml-mode facemenu dom mc-cycle-cursors multiple-cursors-core rect dtrt-indent advice projectile lisp-mnt grep ibuf-ext ibuffer ibuffer-loaddefs elisp-slime-nav etags fileloop generator xref project magit-submodule magit-blame magit-stash magit-reflog magit-bisect magit-push magit-pull magit-fetch magit-clone magit-remote magit-commit magit-sequence magit-notes magit-worktree magit-tag magit-merge magit-branch magit-reset magit-files magit-refs magit-status magit magit-repos magit-apply magit-wip magit-log which-func imenu magit-diff smerge-mode diff-mode git-commit log-edit message sendmail yank-media puny dired dired-loaddefs rfc822 mml mml-sec epa derived mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 ietf-drums mailabbrev gmm-utils mailheader pcvs-util add-log magit-core magit-autorevert autorevert filenotify magit-margin magit-transient magit-process with-editor shell pcomplete server magit-mode transient benchmark magit-git magit-base magit-section format-spec cursor-sensor crm compat compat-30 ido-completing-read+ memoize cus-edit pp icons minibuf-eldef flycheck find-func diminish gnus nnheader gnus-util time-date mail-utils range mm-util mail-prsvr wid-edit autoinsert misc hl-line cus-load mb-depth ido-vertical-mode undo-tree diff ack compile text-property-search paredit edmacro kmacro dash cl-extra help-mode use-package use-package-ensure use-package-delight use-package-diminish use-package-bind-key bind-key easy-mmode use-package-core desktop frameset finder-inf winner elec-pair savehist hippie-exp comint ansi-osc ansi-color ring thingatpt ido cl company-autoloads counsel-autoloads csv-autoloads cyberpunk-theme-autoloads dired-filter-autoloads dired-launch-autoloads dired-ranger-autoloads dired-hacks-utils-autoloads docker-autoloads dtrt-indent-autoloads editorconfig-autoloads ein-autoloads anaphora-autoloads emms-autoloads enh-ruby-mode-autoloads expand-region-autoloads fix-word flycheck-autoloads folding-autoloads ghub-autoloads git-link-autoloads git-timemachine-autoloads epg rfc6068 epg-config gnu-elpa-keyring-update go-mode-autoloads helm-swoop-autoloads helm-autoloads helm-core-autoloads async-autoloads htmlize-autoloads ido-completing-read+-autoloads inf-ruby-autoloads json-mode-autoloads lsp-metals-autoloads dap-mode-autoloads lsp-docker-autoloads lsp-treemacs-autoloads lsp-ui-autoloads lsp-mode-autoloads f-autoloads magit-autoloads pcase magit-section-autoloads markdown-mode-autoloads multiple-cursors-autoloads paredit-autoloads pcre2el-autoloads pdf-tools-autoloads rx polymode-autoloads popup-autoloads projectile-autoloads protobuf-mode-autoloads sbt-mode-autoloads scala-mode-autoloads semi-autoloads flim-autoloads apel-autoloads shell-pop-autoloads log4e-autoloads circe-autoloads oauth2-autoloads smartparens-autoloads swift-mode-autoloads swiper-autoloads ivy-autoloads terraform-mode-autoloads hcl-mode-autoloads transient-autoloads treemacs-autoloads posframe-autoloads treepy-autoloads treesit-auto-autoloads volatile-highlights-autoloads dash-autoloads web-mode-autoloads wfnames-autoloads with-editor-autoloads info compat-autoloads xref-js2-autoloads js2-mode-autoloads yaml-mode-autoloads yasnippet-autoloads zenburn-theme-autoloads package browse-url url url-proxy url-privacy url-expand url-methods url-history url-cookie generate-lisp-file url-domsuf url-util mailcap url-handlers url-parse auth-source cl-seq eieio eieio-core cl-macs password-cache json subr-x map byte-opt gv bytecomp byte-compile url-vars cl-loaddefs cl-lib rmc iso-transl tooltip cconv eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel term/ns-win ns-win ucs-normalize mule-util term/common-win 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 theme-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 kqueue cocoa ns multi-tty make-network-process emacs) Memory information: ((conses 16 7653353 1099840) (symbols 48 86385 1) (strings 32 645539 137118) (string-bytes 1 21255905) (vectors 16 363777) (vector-slots 8 11459569 492070) (floats 8 4731 140) (intervals 56 408064 16183) (buffers 984 303)) --00000000000076d493062749d356 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable

Starting from emacs -Q:

- Go to a new buff= er named "foo".
- Set the mark with C-SPC.
- Go to a new bu= ffer named "bar".
- Set the mark with C-SPC.
- Go back to b= uffer foo.
- Set the mark with C-SPC.
- Check the value of the global= -mark-ring variable, as with C-h v
=C2=A0 or giving its name to the eval= -expression command.

The first marker in the ring is the one in buff= er bar, not in
buffer foo, even though buffer foo is where the mark was = most
recently set.=C2=A0 This behavior contradicts what is described her= e:

https://www.gnu.org/software/emacs/manual/html_n= ode/emacs/Global-Mark-Ring.html

To wit: "Each time you set = a mark, this is recorded in the global mark
ring in addition to the curr= ent buffer=E2=80=99s own mark ring, if you have
switched buffers since t= he previous mark setting."

I've tracked the reason for this= to the push-mark-command function,
which does not push the mark unless = it's not at the same place as point,
or if it's given a true arg= ument. =C2=A0set-mark-command calls
push-mark-command, but passes nil to= it unless, puzzlingly, the
command's name is not "set-mark-com= mand".

For a bit of background, what I want to = do is to set the mark at the
beginning of a sexp (actually JSON) in one = buffer, then go to the start
of another sexp in a different buffer, and = run a command that compares
the two sexps, using the marker at the front= of the global mark ring to
find the first sexp.=C2=A0 But this is unrel= iable since setting the mark does
not necessarily update the global mark= ring.=C2=A0 Workarounds I've
considered include:

- = Call push-mark-command manually with M-x, or bind it to a key
=C2=A0 seq= uence, and call it with a prefix argument.
- Alias set-mark-command as a= new command with a different name, and use
=C2=A0 that instead.
- Us= e a custom marker, updated from a custom command.

Obviously, none of= these are as convenient as using the global mark
ring.=C2=A0 And i= n any event, there's still a bug in Emacs, even if only a
doc= umentation bug.


In GNU Emacs 29.1 (build 1, aarch64= -apple-darwin21.6.0, NS
=C2=A0appkit-2113.60 Version 12.6.6 (Build 21G64= 6)) of 2023-08-16 built on
=C2=A0armbob.lan
Windowing system distribu= tor 'Apple', version 10.3.2487
System Description: =C2=A0macOS 1= 4.7.1

Configured using:
=C2=A0'configure --with-ns '--ena= ble-locallisppath=3D/Library/Application
=C2=A0Support/Emacs/${version}/= site-lisp:/Library/Application
=C2=A0Support/Emacs/site-lisp' --with= -modules 'CFLAGS=3D-DFD_SETSIZE=3D10000
=C2=A0-DDARWIN_UNLIMITED_SEL= ECT' --with-x-toolkit=3Dno'

Configured features:
ACL GLIB= GMP GNUTLS JPEG JSON LIBXML2 MODULES NOTIFY KQUEUE NS PDUMPER
PNG RSVG = SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER ZLIB

Important = settings:
=C2=A0 value of $LANG: en_US.UTF-8
=C2=A0 locale-coding-sys= tem: utf-8-unix

Major mode: ELisp/l

Minor modes in effect:=C2=A0 recentf-mode: t
=C2=A0 emms-mode-line-mode: t
=C2=A0 emms-pla= ying-time-display-mode: t
=C2=A0 emms-playing-time-mode: t
=C2=A0 tra= cking-mode: t
=C2=A0 volatile-highlights-mode: t
=C2=A0 projectile-mo= de: t
=C2=A0 elisp-slime-nav-mode: t
=C2=A0 global-git-commit-mode: t=
=C2=A0 magit-auto-revert-mode: t
=C2=A0 auto-revert-mode: t
=C2= =A0 shell-dirtrack-mode: t
=C2=A0 server-mode: t
=C2=A0 global-flyche= ck-mode: t
=C2=A0 flycheck-mode: t
=C2=A0 minibuffer-depth-indicate-m= ode: t
=C2=A0 ido-vertical-mode: t
=C2=A0 global-undo-tree-mode: t=C2=A0 undo-tree-mode: t
=C2=A0 paredit-mode: t
=C2=A0 override-glob= al-mode: t
=C2=A0 desktop-save-mode: t
=C2=A0 winner-mode: t
=C2= =A0 electric-pair-mode: t
=C2=A0 savehist-mode: t
=C2=A0 ido-everywhe= re: t
=C2=A0 tooltip-mode: t
=C2=A0 global-eldoc-mode: t
=C2=A0 el= doc-mode: t
=C2=A0 show-paren-mode: t
=C2=A0 electric-indent-mode: t<= br>=C2=A0 mouse-wheel-mode: t
=C2=A0 global-prettify-symbols-mode: t
= =C2=A0 prettify-symbols-mode: t
=C2=A0 menu-bar-mode: t
=C2=A0 file-n= ame-shadow-mode: t
=C2=A0 global-font-lock-mode: t
=C2=A0 font-lock-m= ode: t
=C2=A0 blink-cursor-mode: t
=C2=A0 line-number-mode: t
=C2= =A0 transient-mark-mode: t
=C2=A0 auto-composition-mode: t
=C2=A0 aut= o-encryption-mode: t
=C2=A0 auto-compression-mode: t

Load-path sh= adows:
~/emacs/copilot.el/copilot hides ~/emacs/copilot
~/emacs/inf-r= uby/inf-ruby hides /Users/sean/.emacs.d/elpa/inf-ruby-20240925.49/inf-ruby<= br>/Users/sean/.emacs.d/elpa/transient-20241023.1537/transient hides /Appli= cations/Emacs 3.= app/Contents/Resources/lisp/transient
/Users/sean/.emacs.d/elpa/use-= package-20230426.2324/use-package-jump hides /Applications/Emacs 3.app/C= ontents/Resources/lisp/use-package/use-package-jump
/Users/sean/.ema= cs.d/elpa/use-package-20230426.2324/use-package-ensure hides /Applications/= Emacs 3.app/Contents/Resources/lisp/use-package/use-package-ensure=
/Users/sean/.emacs.d/elpa/use-package-20230426.2324/use-package-core hi= des /Applications/Emacs 3.app/Contents/Resources/lisp/use-package/use-pa= ckage-core
/Users/sean/.emacs.d/elpa/use-package-20230426.2324/use-p= ackage-delight hides /Applications/Emacs 3.app/Contents/Resources/lis= p/use-package/use-package-delight
/Users/sean/.emacs.d/elpa/use-pack= age-20230426.2324/use-package-diminish hides /Applications/Emacs 3.a= pp/Contents/Resources/lisp/use-package/use-package-diminish
/Users/s= ean/.emacs.d/elpa/use-package-20230426.2324/use-package hides /Applications= /Emacs 3.app/Contents/Resources/lisp/use-package/use-package
/Users/se= an/.emacs.d/elpa/use-package-20230426.2324/use-package-bind-key hides /Appl= ications/Emacs 3.app/Contents/Resources/lisp/use-package/use-package= -bind-key
/Users/sean/.emacs.d/elpa/bind-key-20230203.2004/bind-key = hides /Applications/Emacs 3.app/Contents/Resources/lisp/use-package/bind-key=
/Users/sean/.emacs.d/elpa/use-package-20230426.2324/use-package-lint hi= des /Applications/Emacs 3.app/Contents/Resources/lisp/use-package/use-pa= ckage-lint
/Users/sean/.emacs.d/elpa/flim-20240221.1353/sasl hides /= Applications/Emacs 3.app/Contents/Resources/lisp/net/sasl
/Users/sean/.emacs.d/elpa/s= eq-2.24/seq hides /Applications/Emacs 3.app/Contents/Resources/lisp/emacs-lisp/seq=
/Users/sean/.emacs.d/elpa/eldoc-1.15.0/eldoc hides /Applications/Emacs = 3.app/Con= tents/Resources/lisp/emacs-lisp/eldoc

Features:
(shadow mail-= extr emacsbug japan-util kkc ja-dic-utl quail url-cache
pulse vc-annotat= e expand-region subword-mode-expansions
text-mode-expansions cc-mode-exp= ansions the-org-mode-expansions
ruby-mode-expansions python-el-fgallina-= expansions js2-mode-expansions
js-mode-expansions html-mode-expansions c= ss-mode-expansions
er-basic-expansions expand-region-core expand-region-= custom
mc-edit-lines goto-addr ag find-dired tabify org-datetree org-cap= ture
sh-script display-line-numbers delsel tramp-sh completion docker-tr= amp
tramp-cache tramp tramp-loaddefs trampver tramp-integration files-x<= br>tramp-compat elnode db web time-stamp fakir dotassoc kv noflet cl-indent=
cl-print magit-bookmark bookmark shortdoc help-fns radix-tree recentftree-widget misearch multi-isearch executable vc-hg vc-bzr vc-src
vc-s= ccs vc-svn vc-cvs vc-rcs log-view bug-reference magit-extras
face-remap = emojify apropos tar-mode arc-mode archive-mode ht
network-stream slack s= lack-company slack-unread slack-websocket
slack-thread-event slack-room-= event slack-star-event
slack-reaction-event slack-reply-event slack-typi= ng slack-slash-commands
slack-message-event slack-event slack-dialog-edi= t-element-buffer
slack-dialog-buffer slack-dialog slack-stars-buffer
= slack-search-result-buffer slack-thread-message-compose-buffer
slack-fil= e-list-buffer slack-file-info-buffer slack-all-threads-buffer
slack-mess= age-buffer slack-user-profile-buffer slack-pinned-items-buffer
slack-pin= ned-item slack-thread-message-buffer slack-room-info-buffer
slack-room-b= uffer slack-message-share-buffer slack-message-edit-buffer
slack-room-me= ssage-compose-buffer slack-message-compose-buffer
slack-message-attachme= nt-preview-buffer slack-action slack-star
slack-reminder slack-search sl= ack-message-reaction slack-message-editor
slack-message-sender slack-mes= sage-notification alert log4e
notifications gntp slack-buffer slack-mess= age-formatter slack-thread
slack-im slack-channel slack-group slack-conv= ersations
slack-create-message slack-attachment slack-selectable slack-b= ot-message
slack-user-message slack-file slack-message slack-message-fac= es
slack-unescape slack-block slack-mrkdwn slack-usergroup slack-reactio= n
slack-modeline slack-room slack-counts slack-user slack-bot
slack-d= nd-status slack-emoji slack-image slack-request slack-log lui
flyspell i= spell slack-team slack-team-ws slack-util websocket diary-lib
diary-load= defs json-mode json-snatcher css-mode color sql view
java-ts-mode yaml-t= s-mode restclient smartparens-python python cap-words
superword subword = smartparens-scala scala-mode
scala-mode-prettify-symbols scala-mode-imen= u scala-mode-map
scala-mode-fontlock scala-mode-indent scala-mode-paragr= aph
scala-mode-syntax scala-mode-lib kotlin-mode kotlin-mode-indent
k= otlin-mode-lexer org-bullets oc-basic org-element org-persist org-id
org= -refile avl-tree ol-eww eww xdg url-queue mm-url ol-rmail ol-mhe
ol-irc = ol-info ol-gnus nnselect gnus-art mm-uu mml2015 mm-view mml-smime
smime = dig gnus-sum shr pixel-fill kinsoku url-file svg gnus-group
gnus-undo gn= us-start gnus-dbus gnus-cloud nnimap nnmail mail-source utf7
nnoo parse-= time gnus-spec gnus-int gnus-range gnus-win ol-docview
doc-view jka-comp= r image-mode exif ol-bibtex bibtex iso8601 ol-bbdb
ol-w3m ol-doi org-lin= k-doi smartparens-org org org-macro org-pcomplete
org-list org-footnote = org-faces org-entities noutline outline
ob-emacs-lisp org-table org-load= defs cal-menu calendar cal-loaddefs
ruby-ts-mode gnus-dired perl6-detect= copilot editorconfig
editorconfig-core editorconfig-core-handle editorc= onfig-fnmatch jsonrpc
ert ewoc debug backtrace warnings emms-idapi-brows= er emms-idapi
emms-idapi-musicbrainz emms-mpris dbus emms-librefm-stream= xml
emms-librefm-scrobbler emms-playlist-limit emms-i18n emms-historyemms-score emms-stream-info emms-metaplaylist-mode emms-bookmarks
emms= -cue emms-mode-line-icon emms-browser sort emms-volume
emms-volume-sndio= ctl emms-volume-mixerctl emms-volume-pulse
emms-volume-amixer emms-playl= ist-sort emms-last-played emms-player-xine
emms-player-mpd tq emms-lyric= s emms-url emms-streams emms-show-all
emms-tag-editor emms-tag-tracktag = emms-mark emms-mode-line emms-cache
emms-info-native emms-info-native-sp= c emms-info-native-mp3
emms-info-native-ogg emms-info-native-opus emms-i= nfo-native-flac
emms-info-native-vorbis bindat emms-info-exiftool emms-i= nfo-tinytag
emms-info-metaflac emms-info-opusinfo emms-info-ogginfo
e= mms-info-mp3info emms-playlist-mode emms-player-vlc emms-player-mpv
emms= -playing-time emms-info emms-later-do emms-player-mplayer
emms-player-si= mple emms-source-playlist emms-source-file locate
emms-setup emms emms-c= ompat scribd-sentry scribd-airflow scribd-github
request scribd-devkube = scribd-aws ob-ruby ob ob-tangle ol org-src ob-ref
ob-lob ob-table ob-exp= ob-comint ob-core org-cycle org-fold
org-fold-core ob-eval org-keys oc = org-compat org-version org-macs hmac
csv let-alist smartparens-config sm= artparens-javascript smartparens-text
smartparens-ruby smartparens-html = smartparens-c smartparens loadhist
robe url-http url-auth url-gw nsm inf= -ruby ruby-mode smie git-link
yasnippet git-timemachine vc-git whitespac= e dash-functional gnutls
tracking shorten ibuf-macs chruby treesit-auto = xref-js2 vc vc-dispatcher
js2-mode js c-ts-common treesit cc-mode cc-fon= ts cc-guess cc-menus
cc-cmds cc-styles cc-align cc-engine cc-vars cc-def= s dired-filter f
dired-hacks-utils dired-aux dired-x shell-pop term disp= -table ehelp
beginend volatile-highlights iedit iedit-lib
mc-hide-unm= atched-lines-mode mc-mark-more tagedit s sgml-mode facemenu
dom mc-cycle= -cursors multiple-cursors-core rect dtrt-indent advice
projectile lisp-m= nt grep ibuf-ext ibuffer ibuffer-loaddefs
elisp-slime-nav etags fileloop= generator xref project magit-submodule
magit-blame magit-stash magit-re= flog magit-bisect magit-push magit-pull
magit-fetch magit-clone magit-re= mote magit-commit magit-sequence
magit-notes magit-worktree magit-tag ma= git-merge magit-branch
magit-reset magit-files magit-refs magit-status m= agit magit-repos
magit-apply magit-wip magit-log which-func imenu magit-= diff smerge-mode
diff-mode git-commit log-edit message sendmail yank-med= ia puny dired
dired-loaddefs rfc822 mml mml-sec epa derived mm-decode mm= -bodies
mm-encode mail-parse rfc2231 rfc2047 rfc2045 ietf-drums mailabbr= ev
gmm-utils mailheader pcvs-util add-log magit-core magit-autorevertautorevert filenotify magit-margin magit-transient magit-process
with-e= ditor shell pcomplete server magit-mode transient benchmark
magit-git ma= git-base magit-section format-spec cursor-sensor crm compat
compat-30 id= o-completing-read+ memoize cus-edit pp icons minibuf-eldef
flycheck find= -func diminish gnus nnheader gnus-util time-date mail-utils
range mm-uti= l mail-prsvr wid-edit autoinsert misc hl-line cus-load
mb-depth ido-vert= ical-mode undo-tree diff ack compile
text-property-search paredit edmacr= o kmacro dash cl-extra help-mode
use-package use-package-ensure use-pack= age-delight use-package-diminish
use-package-bind-key bind-key easy-mmod= e use-package-core desktop
frameset finder-inf winner elec-pair savehist= hippie-exp comint ansi-osc
ansi-color ring thingatpt ido cl company-aut= oloads counsel-autoloads
csv-autoloads cyberpunk-theme-autoloads dired-f= ilter-autoloads
dired-launch-autoloads dired-ranger-autoloads
dired-h= acks-utils-autoloads docker-autoloads dtrt-indent-autoloads
editorconfig= -autoloads ein-autoloads anaphora-autoloads emms-autoloads
enh-ruby-mode= -autoloads expand-region-autoloads fix-word
flycheck-autoloads folding-a= utoloads ghub-autoloads git-link-autoloads
git-timemachine-autoloads epg= rfc6068 epg-config gnu-elpa-keyring-update
go-mode-autoloads helm-swoop= -autoloads helm-autoloads
helm-core-autoloads async-autoloads htmlize-au= toloads
ido-completing-read+-autoloads inf-ruby-autoloads json-mode-auto= loads
lsp-metals-autoloads dap-mode-autoloads lsp-docker-autoloads
ls= p-treemacs-autoloads lsp-ui-autoloads lsp-mode-autoloads f-autoloads
mag= it-autoloads pcase magit-section-autoloads markdown-mode-autoloads
multi= ple-cursors-autoloads paredit-autoloads pcre2el-autoloads
pdf-tools-auto= loads rx polymode-autoloads popup-autoloads
projectile-autoloads protobu= f-mode-autoloads sbt-mode-autoloads
scala-mode-autoloads semi-autoloads = flim-autoloads apel-autoloads
shell-pop-autoloads log4e-autoloads circe-= autoloads oauth2-autoloads
smartparens-autoloads swift-mode-autoloads sw= iper-autoloads
ivy-autoloads terraform-mode-autoloads hcl-mode-autoloads=
transient-autoloads treemacs-autoloads posframe-autoloads
treepy-aut= oloads treesit-auto-autoloads volatile-highlights-autoloads
dash-autoloa= ds web-mode-autoloads wfnames-autoloads
with-editor-autoloads info compa= t-autoloads xref-js2-autoloads
js2-mode-autoloads yaml-mode-autoloads ya= snippet-autoloads
zenburn-theme-autoloads package browse-url url url-pro= xy url-privacy
url-expand url-methods url-history url-cookie generate-li= sp-file
url-domsuf url-util mailcap url-handlers url-parse auth-source c= l-seq
eieio eieio-core cl-macs password-cache json subr-x map byte-opt g= v
bytecomp byte-compile url-vars cl-loaddefs cl-lib rmc iso-transl toolt= ip
cconv eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-ty= pe
elisp-mode mwheel term/ns-win ns-win ucs-normalize mule-util
term/= common-win tool-bar dnd fontset image regexp-opt fringe
tabulated-list r= eplace newcomment text-mode lisp-mode prog-mode register
page tab-bar me= nu-bar rfn-eshadow isearch easymenu timer select
scroll-bar mouse jit-lo= ck font-lock syntax font-core term/tty-colors
frame minibuffer nadvice s= eq simple cl-generic indonesian philippine
cham georgian utf-8-lang misc= -lang vietnamese tibetan thai tai-viet lao
korean japanese eucjp-ms cp51= 932 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 the= me-loaddefs faces cus-face macroexp
files window text-properties overlay= sha1 md5 base64 format env
code-pages mule custom widget keymap hashtab= le-print-readable backquote
threads kqueue cocoa ns multi-tty make-netwo= rk-process emacs)

Memory information:
((conses 16 7653353 1099840= )
=C2=A0(symbols 48 86385 1)
=C2=A0(strings 32 645539 137118)
=C2= =A0(string-bytes 1 21255905)
=C2=A0(vectors 16 363777)
=C2=A0(vector-= slots 8 11459569 492070)
=C2=A0(floats 8 4731 140)
=C2=A0(intervals 5= 6 408064 16183)
=C2=A0(buffers 984 303))
--00000000000076d493062749d356--