abo-abo / swiper

Ivy - a generic completion frontend for Emacs, Swiper - isearch with an overview, and more. Oh, man!
https://oremacs.com/swiper/
2.28k stars 338 forks source link

Error with completion "ivy--shorter-matches-first: Wrong number of arguments: #<subr sort>, 3" #3052

Closed martinfowler closed 1 week ago

martinfowler commented 4 weeks ago

After a recent upgrade of my packages, I started getting the following error when using completion-at-point

ivy--shorter-matches-first: Wrong number of arguments: #<subr sort>, 3

Digging into this, I saw commit 5b8436e had modified ivy--shorter-matches-first to use a new version of the built-in sort function that's available in Emacs 30. I'm running emacs 29.4 on MacOS.

Digging a bit further I found issue 3038 which describes using conditional compilation using static-if allowing a polyfill to run on older versions of Emacs such as mine.

But for some reason it's not working on my machine. I download packages using use-package and upgraded via list-packages. I'm running ivy version 20240524.1139.

basil-conto commented 3 weeks ago

What does typing M-: (list (fboundp 'static-if) (fboundp 'value<)) RET yield on your end?

And would you mind including here the information gathered by M-x report-emacs-bug RET?

Thanks.

Kyrremann commented 3 weeks ago

I have the same problem, and have had it for at least a month, but finally now sat down to try to figure it out. It's (only) when I try to complete something in shell. It works if I add more letters, usually more than three. The error pops up, and then remove my input.

M-: (list (fboundp 'static-if) (fboundp 'value<)) RET returns (t t).

My report

In GNU Emacs 29.4 (build 1, aarch64-apple-darwin23.5.0, NS appkit-2487.60 Version 14.5 (Build 23F79)) of 2024-06-30 built on Kyrres-MacBook-Pro.local Windowing system distributor 'Apple', version 10.3.2487 System Description: macOS 14.6.1 Configured using: 'configure --disable-dependency-tracking --disable-silent-rules --enable-locallisppath=/opt/homebrew/share/emacs/site-lisp --infodir=/opt/homebrew/Cellar/emacs-plus@29/29.4/share/info/emacs --prefix=/opt/homebrew/Cellar/emacs-plus@29/29.4 --with-xml2 --with-gnutls --without-compress-install --without-dbus --without-imagemagick --with-modules --with-rsvg --with-ns --disable-ns-self-contained 'CFLAGS=-Os -w -pipe -mmacosx-version-min=14 -isysroot/Library/Developer/CommandLineTools/SDKs/MacOSX14.sdk -DFD_SETSIZE=10000 -DDARWIN_UNLIMITED_SELECT' 'CPPFLAGS=-I/opt/homebrew/opt/icu4c/include -I/opt/homebrew/opt/sqlite/include -I/opt/homebrew/opt/readline/include -isystem/opt/homebrew/include -F/opt/homebrew/Frameworks -isysroot/Library/Developer/CommandLineTools/SDKs/MacOSX14.sdk' 'LDFLAGS=-L/opt/homebrew/opt/icu4c/lib -L/opt/homebrew/opt/sqlite/lib -L/opt/homebrew/opt/readline/lib -L/opt/homebrew/lib -F/opt/homebrew/Frameworks -Wl,-headerpad_max_install_names -isysroot/Library/Developer/CommandLineTools/SDKs/MacOSX14.sdk'' Configured features: ACL GIF GLIB GMP GNUTLS JPEG JSON LCMS2 LIBXML2 MODULES NOTIFY KQUEUE NS PDUMPER PNG RSVG SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER WEBP XIM ZLIB Important settings: value of $LANG: en_US.UTF-8 locale-coding-system: utf-8-unix Major mode: Messages Minor modes in effect: recentf-mode: t all-the-icons-ivy-rich-mode: t counsel-mode: t ivy-rich-mode: t ivy-mode: t marginalia-mode: t which-key-mode: t global-company-mode: t company-mode: t pyvenv-mode: t override-global-mode: t magit-todos-mode: t global-git-commit-mode: t magit-auto-revert-mode: t coterm-mode: t shell-dirtrack-mode: t kubectx-mode: t savehist-mode: t save-place-mode: t persistent-scratch-autosave-mode: t global-undo-tree-mode: t undo-tree-mode: t global-diff-hl-mode: t global-auto-revert-mode: t display-time-mode: t el-patch-use-package-mode: t tooltip-mode: t global-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 blink-cursor-mode: t buffer-read-only: t column-number-mode: t indent-tabs-mode: t transient-mark-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t Load-path shadows: /Users/kyrremann/.emacs.d/elpa/transient-20240805.1231/transient hides /opt/homebrew/Cellar/emacs-plus@29/29.4/share/emacs/29.4/lisp/transient /Users/kyrremann/.emacs.d/elpa/jsonrpc-1.0.25/jsonrpc hides /opt/homebrew/Cellar/emacs-plus@29/29.4/share/emacs/29.4/lisp/jsonrpc /Users/kyrremann/.emacs.d/elpa/use-package-20230426.2324/use-package-jump hides /opt/homebrew/Cellar/emacs-plus@29/29.4/share/emacs/29.4/lisp/use-package/use-package-jump /Users/kyrremann/.emacs.d/elpa/use-package-20230426.2324/use-package-diminish hides /opt/homebrew/Cellar/emacs-plus@29/29.4/share/emacs/29.4/lisp/use-package/use-package-diminish /Users/kyrremann/.emacs.d/elpa/use-package-20230426.2324/use-package hides /opt/homebrew/Cellar/emacs-plus@29/29.4/share/emacs/29.4/lisp/use-package/use-package /Users/kyrremann/.emacs.d/elpa/use-package-20230426.2324/use-package-delight hides /opt/homebrew/Cellar/emacs-plus@29/29.4/share/emacs/29.4/lisp/use-package/use-package-delight /Users/kyrremann/.emacs.d/elpa/use-package-20230426.2324/use-package-lint hides /opt/homebrew/Cellar/emacs-plus@29/29.4/share/emacs/29.4/lisp/use-package/use-package-lint /Users/kyrremann/.emacs.d/elpa/bind-key-20230203.2004/bind-key hides /opt/homebrew/Cellar/emacs-plus@29/29.4/share/emacs/29.4/lisp/use-package/bind-key /Users/kyrremann/.emacs.d/elpa/use-package-20230426.2324/use-package-core hides /opt/homebrew/Cellar/emacs-plus@29/29.4/share/emacs/29.4/lisp/use-package/use-package-core /Users/kyrremann/.emacs.d/elpa/use-package-20230426.2324/use-package-ensure hides /opt/homebrew/Cellar/emacs-plus@29/29.4/share/emacs/29.4/lisp/use-package/use-package-ensure /Users/kyrremann/.emacs.d/elpa/use-package-20230426.2324/use-package-bind-key hides /opt/homebrew/Cellar/emacs-plus@29/29.4/share/emacs/29.4/lisp/use-package/use-package-bind-key /Users/kyrremann/.emacs.d/elpa/eglot-1.17/eglot hides /opt/homebrew/Cellar/emacs-plus@29/29.4/share/emacs/29.4/lisp/progmodes/eglot /Users/kyrremann/.emacs.d/elpa/eldoc-1.15.0/eldoc hides /opt/homebrew/Cellar/emacs-plus@29/29.4/share/emacs/29.4/lisp/emacs-lisp/eldoc Features: (shadow sort display-line-numbers flyspell ispell mail-extr emacsbug recentf tree-widget magit-bookmark bookmark ace-window avy bash-completion xterm-color all-the-icons-ivy-rich counsel xdg swiper ivy-rich ivy delsel ivy-faces ivy-overlay colir company-oddmuse company-keywords company-etags company-gtags company-dabbrev-code company-dabbrev company-files company-clang company-cmake company-semantic company-template company-bbdb tramp tramp-loaddefs trampver tramp-integration tramp-compat marginalia which-key go-mode find-file ffap copilot-chat copilot-chat-copilot flycheck find-func py-autopep8 yasnippet-snippets yasnippet highlight-indentation flymake-proc flymake warnings company-capf company 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 python treesit ido hideshow files-x etags fileloop generator xref project cus-edit pp epa-file use-package-bind-key bind-key magit-todos pcre2el rxt advice re-builder hl-todo f s async grep compile forge-repos forge-tablist hl-line forge-topics forge-commands forge-semi forge-bitbucket buck forge-gogs gogs forge-gitea gtea forge-gitlab glab forge-github ghub-graphql treepy gsexp ghub url-http url-gw nsm url-auth let-alist gnutls forge-notify forge-revnote forge-pullreq forge-issue forge-topic yaml parse-time iso8601 eieio-custom wid-edit bug-reference forge-post markdown-mode rx color thingatpt noutline outline icons forge-repo forge forge-core forge-db closql emacsql-sqlite-common emacsql emacsql-compiler eieio-base 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 git-commit log-edit message sendmail yank-media puny dired dired-loaddefs rfc822 mml mml-sec epa derived epg rfc6068 epg-config gnus-util text-property-search time-date mailabbrev mail-utils gmm-utils mailheader add-log magit-core magit-autorevert magit-margin magit-transient magit-process with-editor server magit-mode transient edmacro kmacro benchmark magit-git magit-base magit-section format-spec cursor-sensor crm coterm compat compat-30 term disp-table shell pcomplete ehelp comint ansi-osc ansi-color ring exec-path-from-shell midnight use-package-ensure diary-lib diary-loaddefs cal-menu calendar cal-loaddefs auto-package-update dash kubectx-mode all-the-icons all-the-icons-faces data-material data-weathericons data-octicons data-fileicons data-faicons data-alltheicons modus-vivendi-theme modus-themes savehist saveplace persistent-scratch undo-tree diff queue diff-hl log-view pcvs-util vc-dir ewoc vc vc-dispatcher diff-mode easy-mmode autorevert filenotify elec-pair time desktop frameset cus-load quelpa-use-package cl-extra use-package-core quelpa mm-decode mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums mail-prsvr lisp-mnt help-fns radix-tree help-mode finder-inf all-the-icons-ivy-autoloads all-the-icons-ivy-rich-autoloads all-the-icons-autoloads auto-package-update-autoloads bash-completion-autoloads breadcrumb-autoloads cargo-mode-autoloads company-jedi-autoloads company-lua-autoloads copilot-chat-autoloads coterm-autoloads counsel-autoloads diff-hl-autoloads dired-single-autoloads dockerfile-mode-autoloads editorconfig-autoloads eglot-autoloads eldoc-autoloads elpy-autoloads company-autoloads emojify-autoloads enh-ruby-mode-autoloads exec-path-from-shell-autoloads flycheck-hl-todo-autoloads flycheck-rust-autoloads flycheck-autoloads flymake-lua-autoloads forge-autoloads closql-autoloads emacsql-autoloads ghub-autoloads go-autoloads gotest-autoloads groovy-mode-autoloads highlight-indent-guides-autoloads highlight-indentation-autoloads inf-ruby-autoloads ivy-rich-autoloads jedi-autoloads auto-complete-autoloads jedi-core-autoloads epc-autoloads ctable-autoloads concurrent-autoloads jsonrpc-autoloads kotlin-mode-autoloads kotlin-ts-mode-autoloads kubel-autoloads lin-autoloads link-hint-autoloads lua-mode-autoloads magit-file-icons-autoloads el-patch-autoloads el-patch el-patch-stub magit-todos-autoloads magit-autoloads pcase magit-section-autoloads git-commit-autoloads hl-todo-autoloads f-autoloads async-autoloads marginalia-autoloads markdown-mode-autoloads monokai-theme-autoloads move-text-autoloads nerd-icons-autoloads nginx-mode-autoloads pcre2el-autoloads popup-autoloads py-autopep8-autoloads pytest-autoloads python-environment-autoloads deferred-autoloads pyvenv-autoloads quelpa-use-package-autoloads rainbow-mode-autoloads rubocopfmt-autoloads rust-mode-autoloads swiper-autoloads ivy-autoloads terraform-doc-autoloads promise-autoloads request-autoloads terraform-mode-autoloads dash-autoloads hcl-mode-autoloads toml-autoloads transient-autoloads treepy-autoloads treesit-auto-autoloads which-key-autoloads with-editor-autoloads info compat-autoloads yaml-autoloads yaml-mode-autoloads yasnippet-snippets-autoloads yasnippet-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 lcms2 multi-tty make-network-process emacs) Memory information: ((conses 16 786969 51622) (symbols 48 43503 0) (strings 32 209023 7481) (string-bytes 1 5969765) (vectors 16 79841) (vector-slots 8 1045223 56852) (floats 8 942 587) (intervals 56 34710 0) (buffers 984 16))

basil-conto commented 3 weeks ago

Thanks.

It's (only) when I try to complete something in shell. It works if I add more letters, usually more than three. The error pops up, and then remove my input.

The shell completion SNAFU sounds rather like #1755 and #3051, so I wonder if the symptoms are just incidental here.

M-: (list (fboundp 'static-if) (fboundp 'value<)) RET returns (t t).

This is a bit odd, since both static-if and value< (as part of the new sort calling convention) are new in Emacs 30.

So I wonder if these definitions are actually polyfills provided by...

Features: ([...] compat compat-30 [...])

...the compat package:

But then I'm confused, because I thought the same package also polyfills the new arity of sort:

I'll try to have a poke around soon, but in the meantime any extra info you come up with will be helpful.

basil-conto commented 3 weeks ago

I'll try to have a poke around soon, but in the meantime any extra info you come up with will be helpful.

For example, where does C-h f (describe-function) say that static-if, value<, and sort are defined?

appleby commented 3 weeks ago

I have the same issue. In my case, various magit-related packages that I use (magit, forge, ghub, git-modes, etc) pull in a dependency called compat that does indeed define value< and the new sort. However, the compat def for sort specifies :extended t, which apparently means it does not override the original symbol, and must be called with compat-call.

(sort (list 3 2 1) #'<)
(1 2 3)

(compat-call sort (list 3 2 1) :lessp #'value<)
(1 2 3)

I assume compat is loaded before ivy in my config, so in ivy--shorter-matches-first, (fboundp 'value<) is statically t, but sort is still the Emacs 29 version.

(documentation 'sort)
"Sort SEQ, stably, comparing elements using PREDICATE.
Returns the sorted sequence.  SEQ should be a list or vector.  SEQ is
modified by side effects.  PREDICATE is called with two elements of
SEQ, and should return non-nil if the first element should sort before
the second.

(fn SEQ PREDICATE)"
(documentation 'compat--sort)
"[Compatibility function for ‘sort’, defined in Emacs 30.0.50. See (compat) Emacs
30.0.50’ for more details.]

Sort function with support for keyword arguments.  The following arguments are
defined:

:key FUNC -- FUNC is a function that takes a single element from SEQ and returns
  the key value to be used in comparison.  If absent or nil, ‘identity’ is used.

:lessp FUNC -- FUNC is a function that takes two arguments and returns non-nil
  if the first element should come before the second.  If absent or nil,
  ‘value<’ is used.

:reverse BOOL -- if BOOL is non-nil, the sorting order implied by FUNC is
  reversed.  This does not affect stability: equal elements still retain their
  order in the input sequence.

:in-place BOOL -- if BOOL is non-nil, SEQ is sorted in-place and returned.
  Otherwise, a sorted copy of SEQ is returned and SEQ remains unmodified; this
  is the default.

For compatibility, the calling convention (sort SEQ LESSP) can also be used; in
this case, sorting is always done in-place.

(fn SEQ &optional LESSP &rest REST)"
Kyrremann commented 3 weeks ago

You probably got your answer above, but I'll post info from my instance too.

static-if

static-if is a Lisp macro in ‘compat-30.el’.

(static-if CONDITION THEN-FORM &rest ELSE-FORMS)

[Compatibility macro for ‘static-if’, defined in Emacs 30.0.50. See (compat)
Emacs 30.0.50’ for more details.]

value<

value< is a byte-compiled Lisp function in ‘compat-30.el’.

(value< A B)

[Compatibility function for ‘value<’, defined in Emacs 30.0.50. See (compat)
Emacs 30.0.50’ for more details.]

sort

sort is a built-in function in ‘C source code’.

(sort SEQ PREDICATE)

Sort SEQ, stably, comparing elements using PREDICATE.
Returns the sorted sequence.  SEQ should be a list or vector.  SEQ is
modified by side effects.  PREDICATE is called with two elements of
SEQ, and should return non-nil if the first element should sort before
the second.

  Probably introduced at or before Emacs version 25.1.
martinfowler commented 3 weeks ago

Sorry I didn't come back to this. Here's some more information

emacs-report-bug

In GNU Emacs 29.4 (build 1, x86_64-apple-darwin18.7.0, NS appkit-1671.60
 Version 10.14.6 (Build 18G9323)) of 2024-07-24 built on
 builder10-14.lan
Windowing system distributor 'Apple', version 10.3.2487
System Description:  macOS 14.6.1

Configured using:
 'configure --with-ns '--enable-locallisppath=/Library/Application
 Support/Emacs/${version}/site-lisp:/Library/Application
 Support/Emacs/site-lisp' --with-modules 'CFLAGS=-DFD_SETSIZE=10000
 -DDARWIN_UNLIMITED_SELECT' --with-x-toolkit=no'

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/d

Minor modes in effect:
  recentf-mode: t
  repeat-mode: t
  company-quickhelp-mode: t
  company-quickhelp-local-mode: t
  counsel-mode: t
  ivy-mode: t
  delete-selection-mode: t
  csv-field-index-mode: t
  whole-line-or-region-global-mode: t
  whole-line-or-region-local-mode: t
  which-key-mode: t
  shell-dirtrack-mode: t
  yas-global-mode: t
  yas-minor-mode: t
  volatile-highlights-mode: t
  global-undo-tree-mode: t
  undo-tree-mode: t
  override-global-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
  blink-cursor-mode: t
  line-number-mode: t
  transient-mark-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  abbrev-mode: t

Load-path shadows:
/Users/martin/active/tools/emacs/custom hides /Applications/Emacs.app/Contents/Resources/lisp/custom
/Users/martin/.emacs.d/elpa/transient-20240805.1231/transient hides /Applications/Emacs.app/Contents/Resources/lisp/transient
/Users/martin/.emacs.d/elpa/hierarchy-20190425.842/hierarchy hides /Applications/Emacs.app/Contents/Resources/lisp/emacs-lisp/hierarchy

Features:
(shadow mail-extr emacsbug ffap flyspell ispell rng-xsd xsd-regexp
rng-cmpct nxml-mode-expansions rng-nxml rng-valid nxml-mode nxml-outln
nxml-rap tramp-sh recentf tree-widget bookmark persistent-soft
list-utils pcache eieio-base cl font-utils repeat two-column cua-base
misc image-file image-converter oc-basic ol-eww ol-rmail ol-mhe ol-irc
ol-info ol-gnus nnselect gnus-art mm-uu mml2015 mm-view mml-smime smime
gnutls dig gnus-sum gnus-group gnus-undo gnus-start gnus-dbus dbus
gnus-cloud nnimap nnmail mail-source utf7 nnoo gnus-spec gnus-int
gnus-range message sendmail yank-media rfc822 mml mml-sec epa epg
rfc6068 epg-config mm-decode mm-bodies mm-encode mailabbrev gmm-utils
mailheader gnus-win ol-docview doc-view jka-compr image-mode exif
ol-bibtex bibtex ol-bbdb ol-w3m ol-doi org-link-doi face-remap
move-lines misc-functions xmlunicode mfcom-snips mf-treesitter
isolate-kill-ring mf-org ob-ruby ob-shell 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 org-agenda
ox-html table ox-ascii ox-publish ox org-autolist
the-org-mode-expansions org-element org-persist org-id org-refile
avl-tree org org-macro org-pcomplete org-list org-footnote org-faces
org-entities ob-js ob-sqlite ob-sql ob-python
python-el-fgallina-expansions python ob ob-tangle org-src ob-ref ob-lob
ob-table ob-exp ob-comint ob-emacs-lisp ob-core ob-eval org-cycle
org-table ol org-fold org-fold-core org-keys oc org-loaddefs cal-menu
calendar cal-loaddefs org-version org-compat org-macs mf-R mf-css mf-js
flymake-json flymake-easy mf-ruby rubocop mf-ibuffer email-snips mfcom
derived mf-nxml html5-schema mf-markdown special-chars emojify apropos
tar-mode arc-mode archive-mode ht unicode-fonts smart-quotes mf-company
company-quickhelp pos-tip company mf-ivy ivy-hydra counsel swiper ivy
delsel ivy-faces ivy-overlay colir mf-dired dired-collapse dired-rainbow
dired-open dired-filter f dired-hacks-utils dired-aux dired-x dired
dired-loaddefs cc-isearch-menu mf-packages ztree ztree-diff
ztree-diff-model ztree-dir ztree-view ztree-protocol ztree-util focus
ess ess-utils ess-custom git-timemachine vc-git diff-mode vc-dispatcher
wgrep grep ggtags yaml-mode-expansions yaml-mode let-alist
multiple-cursors mc-separate-operations rectangular-region-mode
mc-mark-pop mc-edit-lines mc-hide-unmatched-lines-mode mc-mark-more
mc-cycle-cursors multiple-cursors-core inf-ruby haml-mode
js-mode-expansions js c-ts-common cc-mode-expansions cc-mode cc-fonts
cc-guess cc-menus cc-cmds cc-styles cc-align cc-engine cc-vars cc-defs
css-mode-expansions css-mode treesit html-mode-expansions sgml-mode
facemenu eww xdg url-queue shr pixel-fill kinsoku url-file svg xml dom
mm-url gnus nnheader gnus-util mail-utils range wid-edit
ruby-mode-expansions ruby-mode smie fill-column-indicator csv-mode sort
spinner git-gutter casual casual-symbolic casual-variables
casual-calc-algebra calcalg3 casual-financial casual-stack calc-undo
calc-yank casual-trail casual-graphics casual-fileio calc-vec
casual-vector casual-predicates casual-units casual-trigonometric
casual-time casual-settings casual-angle-measure casual-rounding
casual-random calc-comb casual-logarithmic casual-conversion
casual-complex casual-binary casual-radix casual-labels casual-version
casual-calc transient compat compat-30 calc-math calc-ext calc
calc-loaddefs rect calc-macs whole-line-or-region eglot
external-completion array filenotify jsonrpc ert pp ewoc debug backtrace
flymake-proc flymake compile text-property-search imenu vc-msg
vc-msg-sdk highlight-indent-guides dumb-jump popup which-key
markdown-mode color noutline outline crux tramp tramp-loaddefs trampver
tramp-integration files-x tramp-compat shell pcomplete comint ansi-osc
parse-time iso8601 time-date format-spec ansi-color warnings icons
yasnippet cycle-quotes etags fileloop generator xref project
volatile-highlights hydra advice ring lv diminish undo-tree diff queue
exec-path-from-shell expand-region text-mode-expansions
er-basic-expansions thingatpt expand-region-core expand-region-custom
rainbow-delimiters s dash pkg-info url-http url-auth mail-parse rfc2231
rfc2047 rfc2045 mm-util ietf-drums mail-prsvr url-gw nsm puny find-func
lisp-mnt epl define-repeat-map edmacro kmacro 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 whitespace
cus-load finder-inf ag-autoloads casual-autoloads casual-dired-autoloads
casual-lib-autoloads company-quickhelp-autoloads company-autoloads
counsel-ag-popup-autoloads counsel-autoloads crux-autoloads
csv-mode-autoloads cycle-quotes-autoloads diminish-autoloads
dired-collapse-autoloads dired-filter-autoloads dired-narrow-autoloads
dired-open-autoloads dired-rainbow-autoloads dired-subtree-autoloads
dired-hacks-utils-autoloads dumb-jump-autoloads embark-autoloads
embrace-autoloads emojify-autoloads ess-autoloads
exec-path-from-shell-autoloads expand-region-autoloads
fill-column-indicator-autoloads flymake-json-autoloads
flymake-easy-autoloads focus-autoloads ggtags-autoloads
git-gutter-autoloads git-timemachine-autoloads haml-mode-autoloads
helpful-autoloads elisp-refs-autoloads f-autoloads
highlight-indent-guides-autoloads html5-schema-autoloads
indent-tools-autoloads inf-ruby-autoloads ivy-hydra-autoloads
hydra-autoloads jq-format-autoloads json-mode-autoloads rx
json-navigator-autoloads hierarchy-autoloads json-snatcher-autoloads
lv-autoloads magit-autoloads pcase git-commit-autoloads
magit-section-autoloads markdown-mode-autoloads
multiple-cursors-autoloads org-autolist-autoloads ox-pandoc-autoloads
ht-autoloads plantuml-mode-autoloads dash-autoloads pos-tip-autoloads
puppet-mode-autoloads pkg-info-autoloads epl-autoloads
rainbow-delimiters-autoloads reformatter-autoloads rg-autoloads
rnc-mode-autoloads rubocop-autoloads ruby-refactor-autoloads s-autoloads
scss-mode-autoloads spinner-autoloads string-inflection-autoloads
surround-autoloads swiper-autoloads ivy-autoloads transient-autoloads
undo-tree-autoloads queue-autoloads unicode-fonts-autoloads
ucs-utils-autoloads font-utils-autoloads persistent-soft-autoloads
list-utils-autoloads pcache-autoloads vc-msg-autoloads popup-autoloads
volatile-highlights-autoloads wgrep-autoloads which-key-autoloads
whole-line-or-region-autoloads with-editor-autoloads info
compat-autoloads yafolding-autoloads yaml-mode-autoloads
yasnippet-autoloads ztree-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 626769 46759)
 (symbols 48 51084 0)
 (strings 32 190577 14364)
 (string-bytes 1 5878325)
 (vectors 16 102254)
 (vector-slots 8 1902119 62409)
 (floats 8 576 266)
 (intervals 56 3261 73)
 (buffers 984 23))

(list (fboundp 'static-if) (fboundp 'value<))

(t t)

The functions you asked for:

basil-conto commented 2 weeks ago

Thanks for the information; it seems clear that compat's :extended t breaks the assumptions with which I introduced the polyfills.

Sorry about the breakage and the delay! I aim to push a fix later today.

basil-conto commented 1 week ago

New polyfills coming to a GNU-devel ELPA (and MELPA) near you.

I tested them in a bare Emacs 29.4 with compat preinstalled, and couldn't spot any issues (except for all the other ones ;).

Let me know if you encounter any problems with this.

martinfowler commented 6 days ago

Thanks for fixing that so swiftly. Worked fine on my machine.