Package: emacs;
Reported by: Eshel Yaron <me <at> eshelyaron.com>
Date: Sat, 15 Apr 2023 16:36:01 UTC
Severity: normal
Found in version 30.0.50
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
From: Eshel Yaron <me <at> eshelyaron.com> To: bug-gnu-emacs <at> gnu.org Subject: 30.0.50; Interactive forms that fail to provide required arguments Date: Sat, 15 Apr 2023 19:34:58 +0300
Hi, I've noticed that dictionary.el defines some functions with an `interactive' form that doesn't provide their required arguments. For example, `dictionary-new-search' must be called with at least one argument, but when called interactively it gets called with no arguments. The other two such cases in dictionary.el are `dictionary-definition' and `dictionary-switch-tooltip-mode'. IIUC, these "commands" are never actually called interactively, and it should be safe to simply drop the `interactive' form so they don't show up in `M-x dictionary- TAB'. A quick scan of the lisp/ directory of emacs.git reveals a similar issue with the following function definitions: calc/calc-misc.el: calc-info-goto-node calc/calc-prog.el: calc-edit-macro-finish-edit emacs-lisp/backtrace.el: backtrace-expand-ellipsis emulation/edt-mapper.el: edt-map-key gnus/gnus-kill.el: gnus-kill-file-apply-string international/isearch-x.el: isearch-exit-recursive-edit net/dictionary.el: dictionary-new-search net/dictionary.el: dictionary-definition net/dictionary.el: dictionary-switch-tooltip-mode net/eudcb-bbdb.el: eudc-bbdb-set-server net/eudcb-ldap.el: eudc-ldap-get-field-list net/eudcb-mab.el: eudc-mab-set-server net/eudcb-macos-contacts.el: eudc-macos-contacts-set-server net/newst-backend.el: newsticker-save-item net/newst-plainview.el: newsticker-set-auto-narrow-to-feed net/newst-plainview.el: newsticker-set-auto-narrow-to-item net/newst-reader.el: newsticker-browse-url-item net/ntlm.el: ntlm-build-auth-request net/socks.el: socks-open-connection obsolete/eudcb-ph.el: eudc-ph-get-field-list obsolete/html2text.el: html2text-remove-tags obsolete/iswitchb.el: iswitchb-window-buffer-p obsolete/landmark.el: landmark-print-distance-int obsolete/landmark.el: landmark-print-moves obsolete/tpu-mapper.el: tpu-map-key org/org-colview.el: org-columns-compute org/org-ctags.el: org-ctags-visit-buffer-or-file org/org-keys.el: org-speed-move-safe org/org-plot.el: org-plot/gnuplot-to-grid-data org/org-src.el: org-src-associate-babel-session org/org.el: org-agenda-prepare-buffers org/org.el: org--math-always-on progmodes/dcl-mode.el: dcl-indent-to progmodes/ebrowse.el: ebrowse-redraw-marks progmodes/ebrowse.el: ebrowse-view-file-other-frame progmodes/gud.el: gud-basic-call progmodes/idlwave.el: idlwave-display-user-catalog-widget progmodes/opascal.el: opascal-debug-tokenize-region progmodes/prolog.el: prolog-goto-predicate-info progmodes/verilog-mode.el: verilog-backward-case-item progmodes/verilog-mode.el: verilog-just-one-space progmodes/verilog-mode.el: verilog-indent-declaration progmodes/vhdl-mode.el: vhdl-template-array progmodes/vhdl-mode.el: vhdl-template-if-then-use progmodes/vhdl-mode.el: vhdl-template-record progmodes/vhdl-mode.el: vhdl-doc-variable textmodes/reftex-index.el: reftex-index-analyze-entry calculator.el: calculator-saved-move dframe.el: dframe-get-focus filesets.el: filesets-convert-patterns speedbar.el: speedbar-toggle-etags treesit.el: treesit--explorer-jump woman.el: woman-reset-emulation Here's the code I used to perform the scan, note it assumes emacs.git is at ~/checkouts/emacs: (defun required-argument-p (arg) (not (member arg '(&optional &rest)))) (defun find-bad-interactive-declarations () (interactive) (dolist (file (directory-files-recursively "~/checkouts/emacs/lisp" (rx ".el" eos))) (with-current-buffer (find-file-noselect file t t) (goto-char (point-min)) (ignore-errors (while-let ((sexp (condition-case _ (read (current-buffer)) (end-of-file nil)))) (pcase sexp (`(defun ,fun ,`(,(pred required-argument-p) . ,_) . ,(or `(,_ (interactive) . ,_) `((interactive) . ,_))) (message "%s: %s" (file-relative-name file "~/checkouts/emacs/lisp") fun)))))))) Best, Eshel In GNU Emacs 30.0.50 (build 6, x86_64-apple-darwin22.4.0, NS appkit-2299.50 Version 13.3.1 (Build 22E261)) of 2023-04-15 built on esmac Repository revision: 234be3d670cf04503a81f74617239f62364457ae Repository branch: master Windowing system distributor 'Apple', version 10.3.2299 System Description: macOS 13.3.1 Configured using: 'configure CFLAGS=-O3 --with-native-compilation --with-json --with-tree-sitter' Configured features: ACL DBUS GIF GLIB GMP GNUTLS JPEG JSON LCMS2 LIBXML2 MODULES NATIVE_COMP NOTIFY KQUEUE NS PDUMPER PNG RSVG SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS TREE_SITTER WEBP XIM ZLIB Important settings: value of $LC_CTYPE: UTF-8 locale-coding-system: utf-8-unix Major mode: Lisp Interaction Minor modes in effect: tooltip-mode: t global-eldoc-mode: t eldoc-mode: t show-paren-mode: t electric-indent-mode: t mouse-wheel-mode: t tool-bar-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 indent-tabs-mode: t transient-mark-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t Load-path shadows: None found. Features: (shadow sort mail-extr emacsbug message mailcap yank-media puny dired dired-loaddefs rfc822 mml mml-sec password-cache epa derived epg rfc6068 epg-config gnus-util text-property-search time-date mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader cl-loaddefs comp comp-cstr warnings icons subr-x rx cl-seq cl-macs gv cl-extra help-mode bytecomp byte-compile cl-lib sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils 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 dbusbind kqueue cocoa ns lcms2 multi-tty make-network-process native-compile emacs) Memory information: ((conses 16 77774 10775) (symbols 48 7102 0) (strings 32 19402 1802) (string-bytes 1 593314) (vectors 16 15917) (vector-slots 8 280865 12269) (floats 8 27 24) (intervals 56 223 0) (buffers 984 11))
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.