From: Stefan Monnier <monnier@iro.umontreal.ca>
To: help-gnu-emacs@gnu.org
Subject: Re: wrong type error in local variables
Date: Thu, 02 Jul 2020 13:42:41 -0400 [thread overview]
Message-ID: <jwvfta9vmst.fsf-monnier+emacs@gnu.org> (raw)
In-Reply-To: 878sg1ri0f.fsf@ebih.ebihd
>> `find-file` should not be called from Elisp.
>> Use `find-file-noselect` instead.
> Oups, if so I have 15 changes to make.
> Why doesn't the byte compiler say this?
Because noone has added the annotation for it yet (tho there are
various comments in the code that say so).
FWIW, I just tried adding it (see patch below), and I see that we have
many cases in Emacs's own Lisp code where we call `find-file`
from Elisp. I suspect that many of them would benefit from being
changed, but the need to go and update all those cases might be a
reason why it hasn't been done yet :-(
Stefan
diff --git a/lisp/files.el b/lisp/files.el
index 742fd78df1d..a29d02bf591 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -1688,6 +1688,7 @@ find-file
To visit a file without any kind of conversion and without
automatically choosing a major mode, use \\[find-file-literally]."
+ (declare (interactive-only find-file-noselect))
(interactive
(find-file-read-args "Find file: "
(confirm-nonexistent-file-or-buffer)))
@@ -1761,15 +1762,16 @@ find-file-other-frame
(switch-to-buffer-other-frame value))))
(defun find-file-existing (filename)
- "Edit the existing file FILENAME.
+ "Edit the existing file FILENAME.
Like \\[find-file], but allow only a file that exists, and do not allow
file names with wildcards."
- (interactive (nbutlast (find-file-read-args "Find existing file: " t)))
- (if (and (not (called-interactively-p 'interactive))
- (not (file-exists-p filename)))
- (error "%s does not exist" filename)
- (find-file filename)
- (current-buffer)))
+ (interactive (nbutlast (find-file-read-args "Find existing file: " t)))
+ (if (not (or (called-interactively-p 'interactive)
+ (file-exists-p filename)))
+ (error "%s does not exist" filename)
+ (with-suppressed-warnings ((interactive-only find-file))
+ (find-file filename))
+ (current-buffer)))
(defun find-file--read-only (fun filename wildcards)
(unless (or (and wildcards find-file-wildcards
next prev parent reply other threads:[~2020-07-02 17:42 UTC|newest]
Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-07-02 14:46 wrong type error in local variables Douglas Lewan
2020-07-02 15:06 ` Joost Kremers
2020-07-02 15:59 ` Douglas Lewan
2020-07-02 15:56 ` Stefan Monnier
2020-07-02 16:36 ` Emanuel Berg via Users list for the GNU Emacs text editor
2020-07-02 17:09 ` Douglas Lewan
2020-07-02 17:45 ` Emanuel Berg via Users list for the GNU Emacs text editor
2020-07-02 17:42 ` Stefan Monnier [this message]
2020-07-03 1:19 ` Emanuel Berg via Users list for the GNU Emacs text editor
2020-07-03 1:40 ` Douglas Lewan
2020-07-03 2:00 ` Emanuel Berg via Users list for the GNU Emacs text editor
2020-07-03 2:24 ` Douglas Lewan
2020-07-03 3:45 ` Emanuel Berg via Users list for the GNU Emacs text editor
2020-07-03 5:13 ` Douglas Lewan
2020-07-03 6:05 ` Emanuel Berg via Users list for the GNU Emacs text editor
2020-07-02 17:04 ` Douglas Lewan
2020-07-02 17:15 ` Douglas Lewan
-- strict thread matches above, loose matches on Subject: below --
2020-07-03 8:33 Anders Munch
2020-07-03 10:36 ` Emanuel Berg via Users list for the GNU Emacs text editor
2020-07-03 14:07 ` Douglas Lewan
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=jwvfta9vmst.fsf-monnier+emacs@gnu.org \
--to=monnier@iro.umontreal.ca \
--cc=help-gnu-emacs@gnu.org \
/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.
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).