GNU bug report logs -
#79380
31.0.50; Flymake does not check Elisp code anymore
Previous Next
Full log
View this message in rfc822 format
[Message part 1 (text/plain, inline)]
Daniel Mendler <mail <at> daniel-mendler.de> writes:
> Thanks for taking a look at this problem!
>
> Spencer Baugh <sbaugh <at> janestreet.com> writes:
>> On Thu, Sep 4, 2025, 12:03 PM Eli Zaretskii <eliz <at> gnu.org> wrote:
>>> > From: Spencer Baugh <sbaugh <at> janestreet.com>
>>> > Date: Thu, 4 Sep 2025 11:45:12 -0400
>>> > Cc: mail <at> daniel-mendler.de, 79380 <at> debbugs.gnu.org
>>> >
>>> > Shouldn't the tests of the value of the user option use stringp
>>> > instead of null?
>>> >
>>> > Is that the convention? I always feel like it's better to test for null
>>> explicitly, so that if the user sets the
>>> > variable to a symbol or list or something they get an error which can
>>> help them track down their mistake.
>>>
>>> I don't think this is about conventions. In this specific case, any
>>> value that is not a string will signal an error in
>>> elisp-flymake-byte-compile--executable, exactly like nil did in the
>>> patch that was installed. So I think any value that is not a string
>>> should be handled as nil (in addition to the checking of strings that
>>> the code already does).
>>>
>>
>> Yes, my suggestion is that signaling an error is good because it shows that
>> the user's configuration is wrong.
>
> I agree that signaling an error would be good. As an alternative you
> could do it explicitly. Check against nil to use the defaults, check
> stringp for a user defined path and throw an explicit error in the other
> cases.
Right, even better. Like this:
[0001-Fix-null-values-of-elisp-flymake-byte-compile-execut.patch (text/x-patch, inline)]
From 7801088c56a2c06fd3cd598f64343598911b76da Mon Sep 17 00:00:00 2001
From: Spencer Baugh <sbaugh <at> janestreet.com>
Date: Thu, 4 Sep 2025 10:36:17 -0400
Subject: [PATCH] Fix null values of elisp-flymake-byte-compile-executable
* lisp/progmodes/elisp-mode.el
(elisp-flymake-byte-compile-executable): Improve defcustom type.
(elisp-flymake-byte-compile--executable): Properly check for
nil. (bug#79380)
---
lisp/progmodes/elisp-mode.el | 17 ++++++++++-------
1 file changed, 10 insertions(+), 7 deletions(-)
diff --git a/lisp/progmodes/elisp-mode.el b/lisp/progmodes/elisp-mode.el
index e8344852829..b660eb74c05 100644
--- a/lisp/progmodes/elisp-mode.el
+++ b/lisp/progmodes/elisp-mode.el
@@ -2292,7 +2292,7 @@ elisp-flymake-byte-compile-executable
If nil, or if the file named by this does not exist, Flymake will
use the same executable as the running Emacs, as specified by the
variables `invocation-name' and `invocation-directory'."
- :type 'file
+ :type '(choice (const :tag "Running Emacs executable" nil) file)
:group 'lisp
:version "31.1")
@@ -2301,13 +2301,16 @@ elisp-flymake-byte-compile--executable
"Return absolute file name of the Emacs executable for flymake byte-compilation."
(let ((filename
(cond
- ((file-name-absolute-p elisp-flymake-byte-compile-executable)
- elisp-flymake-byte-compile-executable)
+ ((null elisp-flymake-byte-compile-executable) nil)
((stringp elisp-flymake-byte-compile-executable)
- (when-let* ((pr (project-current)))
- (file-name-concat (project-root pr)
- elisp-flymake-byte-compile-executable))))))
- (if (file-executable-p filename)
+ (if (file-name-absolute-p elisp-flymake-byte-compile-executable)
+ elisp-flymake-byte-compile-executable
+ (when-let* ((pr (project-current)))
+ (file-name-concat (project-root pr)
+ elisp-flymake-byte-compile-executable))))
+ (t (error "Invalid `elisp-flymake-byte-compile-executable': %s"
+ elisp-flymake-byte-compile-executable)))))
+ (if (and filename (file-executable-p filename))
filename
(when elisp-flymake-byte-compile-executable
(message "No such `elisp-flymake-byte-compile-executable': %s"
--
2.43.7
This bug report was last modified 6 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.