From: Eshel Yaron via "Bug reports for GNU Emacs, the Swiss army knife of text editors" <bug-gnu-emacs@gnu.org>
To: 62864@debbugs.gnu.org
Subject: bug#62864: 30.0.50; Interactive forms that fail to provide required arguments
Date: Sat, 15 Apr 2023 19:34:58 +0300 [thread overview]
Message-ID: <m18retyuh9.fsf@eshelyaron.com> (raw)
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))
next reply other threads:[~2023-04-15 16:34 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-04-15 16:34 Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors [this message]
2023-05-06 8:32 ` bug#62864: 30.0.50; Interactive forms that fail to provide required arguments Eli Zaretskii
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=m18retyuh9.fsf@eshelyaron.com \
--to=bug-gnu-emacs@gnu.org \
--cc=62864@debbugs.gnu.org \
--cc=me@eshelyaron.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).