I am using GNU Emacs 28.0.50 and trying to enable icicles within. The error I am having:


(add-to-list 'load-path "~/.emacs.d/lisp/icicles")
(require 'icicles)


Debugger entered--Lisp error: (wrong-number-of-arguments (3 . 3) 2)
  make-obsolete(icicle-scatter icicle-scatter-re)
  eval-buffer(#<buffer  *load*-323141> nil "/home/alper/.emacs.d/lisp/icicles/icicles-fn.el" nil t)  ; Reading at buffer position 247290
  load-with-code-conversion("/home/alper/.emacs.d/lisp/icicles/icicles-fn.el" "/home/alper/.emacs.d/lisp/icicles/icicles-fn.el" nil t)
  eval-buffer(#<buffer  *load*-374269> nil "/home/alper/.emacs.d/lisp/icicles/icicles.el" nil t)  ; Reading at buffer position 84578
  load-with-code-conversion("/home/alper/.emacs.d/lisp/icicles/icicles.el" "/home/alper/.emacs.d/lisp/icicles/icicles.el" nil t)
  eval-buffer(#<buffer  *load*> nil "/home/alper/.emacs" nil t)  ; Reading at buffer position 86650
  load-with-code-conversion("/home/alper/.emacs" "/home/alper/.emacs" t t)
  load("~/.emacs" noerror nomessage)
  startup--load-user-init-file(#f(compiled-function () #<bytecode 0x14c922c058d04726>) #f(compiled-function () #<bytecode -0x1f3c692ddc0f4d75>) t)

[Q] What may be the reason for this error and how can I fix it?


It looks like you don't have the latest Icicles source files. The file in question now has this code:

(if (< emacs-major-version 23)
    (make-obsolete 'icicle-scatter 'icicle-scatter-re) ; 2018-01-14
  (make-obsolete 'icicle-scatter 'icicle-scatter-re "2018-01-14"))

So you should not see that problem. The problem you're seeing is from Emacs 28 deciding that the 3rd arg should no longer be optional. Starting with Emacs 23 the 3rd arg is possible, and starting with Emacs 28 it's mandatory. Hence the need for the conditional code now.

Please download the latest Icicles files from Emacs Wiki.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.