* bug#62864: 30.0.50; Interactive forms that fail to provide required arguments
@ 2023-04-15 16:34 Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-05-06 8:32 ` Eli Zaretskii
0 siblings, 1 reply; 2+ messages in thread
From: Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-04-15 16:34 UTC (permalink / raw)
To: 62864
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))
^ permalink raw reply [flat|nested] 2+ messages in thread
* bug#62864: 30.0.50; Interactive forms that fail to provide required arguments
2023-04-15 16:34 bug#62864: 30.0.50; Interactive forms that fail to provide required arguments Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2023-05-06 8:32 ` Eli Zaretskii
0 siblings, 0 replies; 2+ messages in thread
From: Eli Zaretskii @ 2023-05-06 8:32 UTC (permalink / raw)
To: Eshel Yaron; +Cc: 62864
> Date: Sat, 15 Apr 2023 19:34:58 +0300
> From: Eshel Yaron via "Bug reports for GNU Emacs,
> the Swiss army knife of text editors" <bug-gnu-emacs@gnu.org>
>
> 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:
Thanks, I've now fixed many of those on the master branch. Notable
exceptions are Org files and those in the lisp/obsolete subdirectory.
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2023-05-06 8:32 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-04-15 16:34 bug#62864: 30.0.50; Interactive forms that fail to provide required arguments Eshel Yaron via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-05-06 8:32 ` Eli Zaretskii
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).