GNU bug report logs -
#66902
30.0.50; Recognize env -S/--split-string in shebangs
Previous Next
Full log
View this message in rfc822 format
[Message part 1 (text/plain, inline)]
Your bug report
#66902: 30.0.50; Recognize env -S/--split-string in shebangs
which was filed against the emacs package, has been closed.
The explanation is attached below, along with your original report.
If you require more details, please reply to 66902 <at> debbugs.gnu.org.
--
66902: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=66902
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
> From: Kévin Le Gouguec <kevin.legouguec <at> gmail.com>
> Cc: 66902 <at> debbugs.gnu.org
> Date: Sat, 18 Nov 2023 18:44:06 +0100
>
> Kévin Le Gouguec <kevin.legouguec <at> gmail.com> writes:
>
> > Eli Zaretskii <eliz <at> gnu.org> writes:
> >
> >> I'd prefer not to have rx required in files.el, so could you please
> >> rewrite those parts of your patch and resubmit? Also, please add a
> >> NEWS entry about the change.
> >
> > ACK; will get to it in the coming days.
>
> s/days/hours/
>
> I left a 'concat' in, because (a) it lets us interleave comments (b) the
> byte-compiler seems to smartly condense it all to one big string literal
> anyway. (Though if files.el is preloaded, everything happens at
> build-time and the .elc does not matter much, IIUC?)
>
> Let me know if we would prefer a plain raw string literal.
>
> Added a NEWS entry (under § 'Changes in Emacs 30.1 / Miscellaneous',
> assuming 'master'); added a bug reference; squashed it all.
Thanks, installed on the master branch, and closing the bug.
[Message part 3 (message/rfc822, inline)]
[Message part 4 (text/plain, inline)]
Hello,
While Emacs correctly picks makefile-gmake-mode when visiting a file
with the following shebang:
#!/usr/bin/make -f
It fails to do so for this shebang:
#!/usr/bin/env -S make -f
env(1) suggests -S is the idiomatic way to pass arguments to programs in
shebangs:
> -S/--split-string usage in scripts
> The -S option allows specifying multiple parameters in a script.
> Running a script named 1.pl containing the following first line:
>
> #!/usr/bin/env -S perl -w -T
> ...
>
> Will execute perl -w -T 1.pl .
>
> Without the '-S' parameter the script will likely fail with:
>
> /usr/bin/env: 'perl -w -T': No such file or directory
I've poked at lisp/files.el; the attached diff seems sufficient to make
Emacs pick makefile-gmake-mode .
[files.diff (text/x-diff, inline)]
diff --git a/lisp/files.el b/lisp/files.el
index 3d838cd3b8c..97594ff8a13 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -3246,7 +3246,8 @@ inhibit-local-variables-p
(defvar auto-mode-interpreter-regexp
(purecopy "#![ \t]?\\([^ \t\n]*\
-/bin/env[ \t]\\)?\\([^ \t\n]+\\)")
+/bin/env[ \t]\\(?:\\(?:-S\\|--split-string\\)[ \t]\\)?\\)?\
+\\([^ \t\n]+\\)")
"Regexp matching interpreters, for file mode determination.
This regular expression is matched against the first line of a file
to determine the file's mode in `set-auto-mode'. If it matches, the file
[Message part 6 (text/plain, inline)]
Questions before proceeding to ChangeLog entries & regression tests:
1. Is this something we would like Emacs to recognize out of the box, or
is it too niche?
2. What about the more general forms shown in (info "(coreutils) env
invocation")?
#!/usr/bin/env -[v]S[OPTION]... [NAME=VALUE]... COMMAND [ARGS]...
3. Assuming we do want to amend that regexp, would it be possible to use
rx here? OT1H guessing "no" because files.el is pre-reloaded, whereas
rx.el is not; OTOH I see that files.el requires easy-mmode at
compile-time, and that package does not show up in loadup.el, so…
settling for "maybe?"
WDYT?
In GNU Emacs 30.0.50 (build 1, x86_64-pc-linux-gnu, GTK+ Version
3.24.37, cairo version 1.16.0) of 2023-08-20 built on hirondell
Repository revision: 652e45b70d82e6f615febe00553dbded80557845
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12101007
System Description: Debian GNU/Linux 12 (bookworm)
Configured using:
'configure
--cache-file=/home/peniblec/.cache/emacs/config,src,emacs,master
--with-cairo --with-gconf --with-sqlite3 --with-xinput2'
Configured features:
ACL CAIRO DBUS FREETYPE GCONF GIF GLIB GMP GNUTLS GPM GSETTINGS HARFBUZZ
JPEG JSON LCMS2 LIBOTF LIBSELINUX LIBSYSTEMD LIBXML2 M17N_FLT MODULES
NOTIFY INOTIFY PDUMPER PNG RSVG SECCOMP SOUND SQLITE3 THREADS TIFF
TOOLKIT_SCROLL_BARS TREE_SITTER WEBP X11 XDBE XIM XINPUT2 XPM GTK3 ZLIB
Important settings:
value of $LANG: en_US.UTF-8
locale-coding-system: utf-8-unix
This bug report was last modified 1 year and 183 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.