Package: emacs;
Reported by: Daniel Pittman <daniel <at> rimspace.net>
Date: Sun, 4 Dec 2022 11:05:01 UTC
Severity: normal
Found in version 28.2
Done: Mattias Engdegård <mattiase <at> acm.org>
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 59814 in the body.
You can then email your comments to 59814 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#59814
; Package emacs
.
(Sun, 04 Dec 2022 11:05:01 GMT) Full text and rfc822 format available.Daniel Pittman <daniel <at> rimspace.net>
:bug-gnu-emacs <at> gnu.org
.
(Sun, 04 Dec 2022 11:05:01 GMT) Full text and rfc822 format available.Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
From: Daniel Pittman <daniel <at> rimspace.net> To: bug-gnu-emacs <at> gnu.org Subject: 28.2; `rx-let` bindings are not visible to `pcase` `rx` forms Date: Sun, 4 Dec 2022 12:03:43 +0100
[Message part 1 (text/plain, inline)]
Local rx bindings through the `rx-let` form are not visible to rx expressions during `pcase` expansion: (rx-let ((bug "demo")) (rx bug)) => "demo" (pcase "demo" ((rx "demo") t)) => t (rx-let ((bug "demo")) (pcase "demo" ((rx bug) t))) => (error "Unknown rx symbol ‘bug’") => ;; expected: t It looks like `rx--pcase-macroexpander` isn't correctly passing the :rx-local binding out of the macroexpansion environment into the translation functions, or something like that. In GNU Emacs 28.2 (build 2, x86_64-w64-mingw32) of 2022-09-13 built on AVALON Windowing system distributor 'Microsoft Corp.', version 10.0.22000 System Description: Microsoft Windows 10 Pro (v10.0.2009.22000.1219) Configured using: 'configure --with-modules --without-dbus --with-native-compilation --without-compress-install CFLAGS=-O2' Configured features: ACL GIF GMP GNUTLS HARFBUZZ JPEG JSON LCMS2 LIBXML2 MODULES NATIVE_COMP NOTIFY W32NOTIFY PDUMPER PNG RSVG SOUND THREADS TIFF TOOLKIT_SCROLL_BARS XPM ZLIB Important settings: value of $LANG: ENA locale-coding-system: cp1252 Major mode: ELisp/l Minor modes in effect: treemacs-filewatch-mode: t treemacs-follow-mode: t treemacs-git-mode: deferred treemacs-fringe-indicator-mode: t dap-mode: t global-git-commit-mode: t magit-auto-revert-mode: t highlight-defined-mode: t lexbind-mode: t rainbow-delimiters-mode: t ws-butler-mode: t global-cwarn-mode: t global-atomic-chrome-edit-mode: t shell-dirtrack-mode: t global-auto-revert-mode: t yas-global-mode: t yas-minor-mode: t global-undo-tree-mode: t undo-tree-mode: t smart-yank-mode: t global-anzu-mode: t anzu-mode: t save-place-mode: t beginend-global-mode: t beginend-prog-mode: t cascading-dir-locals-mode: t midnight-mode: t desktop-save-mode: t persistent-scratch-autosave-mode: t async-bytecomp-package-mode: t el-patch-use-package-mode: t gcmh-mode: t which-key-mode: t global-dash-fontify-mode: t dash-fontify-mode: t override-global-mode: t straight-use-package-mode: t straight-package-neutering-mode: t straight-symlink-emulation-mode: t straight-live-modifications-mode: t tooltip-mode: t global-eldoc-mode: t eldoc-mode: t show-paren-mode: t electric-indent-mode: t mouse-wheel-mode: t menu-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t temp-buffer-resize-mode: t column-number-mode: t line-number-mode: t transient-mark-mode: t Load-path shadows: c:/Users/danie/.emacs.d/straight/build/transient/transient hides c:/Users/danie/scoop/apps/emacs/current/share/emacs/28.2/lisp/transient c:/Users/danie/.emacs.d/straight/build/less-css-mode/less-css-mode hides c:/Users/danie/scoop/apps/emacs/current/share/emacs/28.2/lisp/textmodes/less-css-mode c:/Users/danie/.emacs.d/straight/build/xref/xref hides c:/Users/danie/scoop/apps/emacs/current/share/emacs/28.2/lisp/progmodes/xref c:/Users/danie/.emacs.d/straight/build/project/project hides c:/Users/danie/scoop/apps/emacs/current/share/emacs/28.2/lisp/progmodes/project c:/Users/danie/.emacs.d/straight/build/tramp/trampver hides c:/Users/danie/scoop/apps/emacs/current/share/emacs/28.2/lisp/net/trampver c:/Users/danie/.emacs.d/straight/build/tramp/tramp hides c:/Users/danie/scoop/apps/emacs/current/share/emacs/28.2/lisp/net/tramp c:/Users/danie/.emacs.d/straight/build/tramp/tramp-uu hides c:/Users/danie/scoop/apps/emacs/current/share/emacs/28.2/lisp/net/tramp-uu c:/Users/danie/.emacs.d/straight/build/tramp/tramp-sudoedit hides c:/Users/danie/scoop/apps/emacs/current/share/emacs/28.2/lisp/net/tramp-sudoedit c:/Users/danie/.emacs.d/straight/build/tramp/tramp-sshfs hides c:/Users/danie/scoop/apps/emacs/current/share/emacs/28.2/lisp/net/tramp-sshfs c:/Users/danie/.emacs.d/straight/build/tramp/tramp-smb hides c:/Users/danie/scoop/apps/emacs/current/share/emacs/28.2/lisp/net/tramp-smb c:/Users/danie/.emacs.d/straight/build/tramp/tramp-sh hides c:/Users/danie/scoop/apps/emacs/current/share/emacs/28.2/lisp/net/tramp-sh c:/Users/danie/.emacs.d/straight/build/tramp/tramp-rclone hides c:/Users/danie/scoop/apps/emacs/current/share/emacs/28.2/lisp/net/tramp-rclone c:/Users/danie/.emacs.d/straight/build/tramp/tramp-integration hides c:/Users/danie/scoop/apps/emacs/current/share/emacs/28.2/lisp/net/tramp-integration c:/Users/danie/.emacs.d/straight/build/tramp/tramp-gvfs hides c:/Users/danie/scoop/apps/emacs/current/share/emacs/28.2/lisp/net/tramp-gvfs c:/Users/danie/.emacs.d/straight/build/tramp/tramp-fuse hides c:/Users/danie/scoop/apps/emacs/current/share/emacs/28.2/lisp/net/tramp-fuse c:/Users/danie/.emacs.d/straight/build/tramp/tramp-ftp hides c:/Users/danie/scoop/apps/emacs/current/share/emacs/28.2/lisp/net/tramp-ftp c:/Users/danie/.emacs.d/straight/build/tramp/tramp-crypt hides c:/Users/danie/scoop/apps/emacs/current/share/emacs/28.2/lisp/net/tramp-crypt c:/Users/danie/.emacs.d/straight/build/tramp/tramp-compat hides c:/Users/danie/scoop/apps/emacs/current/share/emacs/28.2/lisp/net/tramp-compat c:/Users/danie/.emacs.d/straight/build/tramp/tramp-cmds hides c:/Users/danie/scoop/apps/emacs/current/share/emacs/28.2/lisp/net/tramp-cmds c:/Users/danie/.emacs.d/straight/build/tramp/tramp-cache hides c:/Users/danie/scoop/apps/emacs/current/share/emacs/28.2/lisp/net/tramp-cache c:/Users/danie/.emacs.d/straight/build/tramp/tramp-archive hides c:/Users/danie/scoop/apps/emacs/current/share/emacs/28.2/lisp/net/tramp-archive c:/Users/danie/.emacs.d/straight/build/tramp/tramp-adb hides c:/Users/danie/scoop/apps/emacs/current/share/emacs/28.2/lisp/net/tramp-adb c:/Users/danie/.emacs.d/straight/build/let-alist/let-alist hides c:/Users/danie/scoop/apps/emacs/current/share/emacs/28.2/lisp/emacs-lisp/let-alist c:/Users/danie/.emacs.d/straight/build/faceup/faceup hides c:/Users/danie/scoop/apps/emacs/current/share/emacs/28.2/lisp/emacs-lisp/faceup Features: (mail-extr emacsbug sendmail magit-patch magit-subtree magit-gitignore magit-ediff ediff ediff-merg ediff-mult ediff-wind ediff-diff ediff-help ediff-init ediff-util eieio-opt shortdoc find-dired wgrep grep pcmpl-unix em-unix em-term term ehelp em-smart em-script em-prompt em-ls em-hist em-pred em-glob em-cmpl em-dirs esh-var em-basic em-banner em-alias esh-mode eshell macrostep gitignore-mode conf-mode git-modes-autoloads thai-util thai-word descr-text esh-cmd esh-ext esh-opt esh-proc esh-io esh-arg esh-module esh-groups esh-util pcre2el rxt cl-print cl-indent misc string-inflection novice magit-extras re-builder two-column sort ispell tabify dired-filter dired-hacks-utils dired-x shadow tree-sitter-langs tree-sitter-langs-build tar-mode tree-sitter-hl tree-sitter tree-sitter-load tree-sitter-cli tsc tsc-dyn tsc-dyn-get tsc-obsolete tree-sitter-langs-autoloads tree-sitter-autoloads tsc-autoloads autoload swap-buffers quail vc-mtn vc-bzr vc-src vc-sccs vc-svn vc-cvs vc-rcs vc-hgcmd vc-dir face-remap 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 forge-notify forge-revnote forge-pullreq forge-issue forge-topic yaml bug-reference forge-post forge-repo forge forge-core forge-db closql emacsql-sqlite emacsql emacsql-compiler magit-submodule magit-obsolete magit-popup 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 wdired xterm-color ialign helpful trace edebug info-look help-fns radix-tree elisp-refs visual-regexp move-text executable time-stamp hippie-exp misearch multi-isearch cursor-sensor view lsp-zig lsp-steep lsp-svelte lsp-sqls lsp-yaml lsp-xml lsp-vimscript lsp-vhdl lsp-vetur lsp-html lsp-verilog lsp-vala lsp-v lsp-terraform lsp-tex lsp-sorbet lsp-solargraph lsp-rust lsp-rf lsp-r lsp-purescript lsp-pylsp lsp-pyls lsp-pwsh lsp-php lsp-perl lsp-ocaml lsp-nix lsp-nim lsp-markdown lsp-lua lsp-kotlin lsp-json lsp-javascript dap-java lsp-java lsp-treemacs lsp-treemacs-themes treemacs treemacs-header-line treemacs-compatibility treemacs-mode treemacs-interface treemacs-extensions treemacs-mouse-interface treemacs-tags treemacs-persistence treemacs-filewatch-mode treemacs-follow-mode treemacs-rendering treemacs-async treemacs-workspaces treemacs-dom treemacs-visuals treemacs-fringe-indicator treemacs-scope treemacs-faces treemacs-icons treemacs-themes treemacs-core-utils pfuture hl-line treemacs-logging treemacs-customization treemacs-macros lsp-haxe lsp-groovy lsp-hack lsp-go lsp-completion lsp-gdscript lsp-fsharp lsp-fortran lsp-eslint lsp-erlang lsp-elixir lsp-elm lsp-dockerfile lsp-dhall lsp-d lsp-css lsp-csharp gnutls lsp-crystal lsp-cmake lsp-clojure lsp-semantic-tokens lsp-clangd lsp-beancount lsp-bash lsp-angular lsp-ada lsp-actionscript yaml-mode highlight-indent-guides smart-jump-python python generic json-mode json-reformat json-snatcher js bat-mode speedbar ezimage dframe powershell info-colors mule-util rng-xsd xsd-regexp rng-cmpct whattf-dt rng-nxml rng-valid rng-loc rng-uri rng-parse nxml-parse rng-match rng-dt rng-util rng-pttrn nxml-ns nxml-mode nxml-outln nxml-rap nxml-util nxml-enc xmltok lua-mode arc-mode archive-mode dired-aux smart-jump-csharp-mode csharp-mode csharp-compilation cc-langs dap-mode dap-launch posframe dap-overlays lsp-mode lsp-protocol tree-widget wid-edit network-stream markdown-mode edit-indirect noutline outline inline ht vc-git magit-diff smerge-mode git-commit log-edit message dired dired-loaddefs rfc822 mml mml-sec epa gnus-util rmail rmail-loaddefs mm-decode mm-bodies mm-encode mailabbrev gmm-utils pcvs-util add-log magit-core magit-autorevert magit-margin magit-transient magit-process magit-mode transient magit-git magit-section magit-utils crm diff-mode autoinsert figlet-autoloads julia-mode-autoloads ess-autoloads sayid-autoloads sayid highlight-defined lexbind-mode rainbow-delimiters ws-butler smart-jump-clojure-mode clj-refactor pkg-info url-http url-auth url-gw nsm rmc puny epl cap-words superword subword hydra lv inflections sgml-mode facemenu dom cider tramp-sh cider-debug cider-browse-ns cider-mode cider-inspector cider-completion cider-profile cider-eval cider-repl-history pulse cider-repl cider-resolve cider-test nobreak-fade cider-overlays cider-stacktrace cider-doc cider-browse-spec cider-clojuredocs cider-eldoc cider-client cider-common cider-connection cider-util cider-popup sesman-browser nrepl-client kubernetes-tramp docker-tramp tramp-cache tramp tramp-loaddefs trampver tramp-integration files-x tramp-compat parse-time iso8601 time-date format-spec sesman vc vc-dispatcher queue nrepl-dict cider-compat spinner parseedn parseclj-parser parseclj-lex clojure-mode align mc-hide-unmatched-lines-mode mc-mark-more mc-cycle-cursors multiple-cursors-core rect paredit clj-refactor-compat clj-refactor-autoloads paredit-autoloads clj-decompiler-autoloads cider-autoloads sesman-autoloads parseedn-autoloads parseclj-autoloads clojure-mode-autoloads racket-mode-autoloads pos-tip-autoloads faceup-autoloads mermaid-mode-autoloads plantuml-mode-autoloads graphviz-dot-mode-autoloads lexbind-mode-autoloads macrostep-autoloads highlight-defined-autoloads cl-lib-highlight cl-lib-highlight-autoloads cl-libify-autoloads derived protobuf-mode-autoloads go-mode-autoloads csharp-mode-autoloads glsl-mode-autoloads groovy-mode-autoloads lsp-java-autoloads dap-mode-autoloads lsp-treemacs-autoloads bui-autoloads treemacs-autoloads cfrs-autoloads posframe-autoloads pfuture-autoloads ace-window-autoloads avy-autoloads lsp-sourcekit-autoloads swift-helpful-autoloads swift-mode-autoloads cwarn hy-mode-autoloads python-docstring-autoloads zimports-autoloads projectile-autoloads pip-requirements-autoloads sql-indent-autoloads apples-mode-autoloads jq-mode-autoloads jsonnet-mode-autoloads smart-jump-typescript-mode tide tide-lv imenu flycheck etags fileloop generator typescript-mode compile text-property-search tide-autoloads typescript-mode-autoloads indium-autoloads json-process-client-autoloads company-autoloads js2-refactor-autoloads multiple-cursors-autoloads add-node-modules-path-autoloads rjsx-mode-autoloads js2-mode-autoloads rustic-autoloads homebrew-mode-autoloads inf-ruby-autoloads pcmpl-homebrew-autoloads yard-mode-autoloads puppet-mode-autoloads toml-mode-autoloads lua-mode-autoloads powershell-mode-autoloads powershell-autoloads rmsbolt-autoloads smart-jump-lisp-mode smart-jump-elisp-mode smart-jump-cc-mode smart-jump xref project smart-jump-autoloads dumb-jump-autoloads popup-autoloads highlight-indent-guides-autoloads lsp-ui-autoloads lsp-mode-autoloads flycheck-autoloads pkg-info-autoloads epl-autoloads cmake-font-lock-autoloads cmake-mode-autoloads bazel-autoloads caddyfile-mode-autoloads loop-autoloads generic-x cc-mode cc-fonts cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs ialign-autoloads nginx-mode-autoloads apache-mode-autoloads systemd-autoloads ssh-config-mode-autoloads elquery-autoloads esxml-autoloads kv-autoloads less-css-mode-autoloads rnc-mode-autoloads jira-markup-mode-autoloads pandoc-mode-autoloads hydra-autoloads lv-autoloads ws-butler-autoloads peep-dired-autoloads dired-filter-autoloads dired-hacks-utils-autoloads esh-help-autoloads xterm-color-autoloads vterm-autoloads atomic-chrome websocket bindat let-alist atomic-chrome-autoloads websocket-autoloads gist-autoloads gh-autoloads marshal-autoloads ht-autoloads logito-autoloads forge-autoloads yaml-autoloads markdown-mode-autoloads ghub-autoloads treepy-autoloads let-alist-autoloads closql-autoloads emacsql-sqlite-autoloads emacsql-autoloads magit-autoloads git-commit-autoloads hg-histedit with-editor shell pcomplete comint ansi-color ring server hg-histedit-autoloads hgignore-mode-autoloads hgrc-mode-autoloads vc-hgcmd-autoloads project-autoloads xref-autoloads activity-watch-mode request mailheader autorevert filenotify mail-utils ert pp ewoc debug backtrace activity-watch-mode-autoloads spdx-autoloads yasnippet yasnippet-autoloads info-colors-autoloads tldr-autoloads request-autoloads helpful-autoloads elisp-refs-autoloads kubernetes-tramp-autoloads kubernetes-autoloads with-editor-autoloads magit-popup-autoloads magit-section-autoloads docker-autoloads tablist-autoloads json-mode-autoloads json-snatcher-autoloads json-reformat-autoloads docker-tramp-autoloads dockerfile-mode-autoloads docker-compose-mode-autoloads yaml-mode-autoloads copy-file-on-save-autoloads undo-tree diff undo-tree-autoloads smart-yank smart-yank-autoloads swap-buffers-autoloads rg-autoloads wgrep-autoloads transient-autoloads anzu thingatpt anzu-autoloads loccur-autoloads affe-autoloads consult-autoloads orderless-autoloads list-unicode-display-autoloads expand-region-autoloads saveplace uuidgen-autoloads urlenc-autoloads beginend cus-load beginend-autoloads move-text-autoloads typo-autoloads literal-string-autoloads edit-indirect-autoloads replace-with-inflections-autoloads inflections-autoloads string-inflection-autoloads toggle-quotes-autoloads nobreak-fade-autoloads visual-regexp-autoloads pcre2el-autoloads rainbow-mode-autoloads rainbow-delimiters-autoloads epoch-view-autoloads cascading-dir-locals cascading-dir-locals-autoloads color dracula-theme dracula-theme-autoloads show-font-mode-autoloads font-utils font-utils-autoloads persistent-soft-autoloads list-utils-autoloads midnight edmacro kmacro desktop frameset persistent-scratch persistent-scratch-autoloads tramp-autoloads spinner-autoloads epg rfc6068 epg-config auto-minor-mode auto-minor-mode-autoloads pcache-autoloads noflet-autoloads bug-hunter-autoloads async-bytecomp async async-autoloads cl-format-autoloads a el-patch a-autoloads trie-autoloads heap-autoloads tNFA-autoloads queue-autoloads f f-autoloads s s-autoloads macro-utils cl restart-emacs-autoloads gcmh gcmh-autoloads delight comp comp-cstr warnings which-key advice which-key-autoloads pcase delight-autoloads dash dash-autoloads el-patch-autoloads use-package use-package-ensure use-package-delight use-package-diminish use-package-bind-key bind-key easy-mmode use-package-core straight-recipes bootstrapped-my-emacs use-package-autoloads bind-key-autoloads straight-autoloads info cl-extra help-mode straight finder finder-inf find-func lisp-mnt mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums mail-prsvr package browse-url url url-proxy url-privacy url-expand url-methods url-history url-cookie url-domsuf url-util mailcap url-handlers url-parse auth-source cl-seq eieio eieio-core cl-macs eieio-loaddefs password-cache json map url-vars seq byte-opt gv bytecomp byte-compile cconv cl-loaddefs cl-lib rx subr-x early-init iso-transl tooltip eldoc paren electric uniquify ediff-hook vc-hooks lisp-float-type elisp-mode mwheel dos-w32 ls-lisp disp-table term/w32-win w32-win w32-vars 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 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 emoji-zwj 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 w32notify w32 lcms2 multi-tty make-network-process native-compile emacs) Memory information: ((conses 16 4646095 1709679) (symbols 48 147702 3) (strings 32 420625 259639) (string-bytes 1 15079671) (vectors 16 211346) (vector-slots 8 5117651 1300452) (floats 8 508 2192) (intervals 56 400787 35018) (buffers 992 623))
[Message part 2 (text/html, inline)]
bug-gnu-emacs <at> gnu.org
:bug#59814
; Package emacs
.
(Sun, 04 Dec 2022 14:38:01 GMT) Full text and rfc822 format available.Message #8 received at 59814 <at> debbugs.gnu.org (full text, mbox):
From: Mattias Engdegård <mattiase <at> acm.org> To: 59814 <at> debbugs.gnu.org Cc: Daniel Pittman <daniel <at> rimspace.net> Subject: bug#59814: 28.2; `rx-let` bindings are not visible to `pcase` `rx` forms Date: Sun, 4 Dec 2022 15:37:06 +0100
[Message part 1 (text/plain, inline)]
That's terrible. Would this patch help?
[0001-Fix-pcase-rx-patterns-using-rx-let-bindings-bug-5981.patch (application/octet-stream, attachment)]
Mattias Engdegård <mattiase <at> acm.org>
:Daniel Pittman <daniel <at> rimspace.net>
:Message #13 received at 59814-done <at> debbugs.gnu.org (full text, mbox):
From: Mattias Engdegård <mattiase <at> acm.org> To: 59814-done <at> debbugs.gnu.org Cc: Daniel Pittman <daniel <at> rimspace.net> Subject: bug#59814: 28.2; `rx-let` bindings are not visible to `pcase` `rx` Date: Sun, 11 Dec 2022 17:14:05 +0100
The patch has now been pushed to emacs-29. Thanks for the report!
Debbugs Internal Request <help-debbugs <at> gnu.org>
to internal_control <at> debbugs.gnu.org
.
(Mon, 09 Jan 2023 12:24:05 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.