[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
master c64e650fb34 3/3: Support shebang lines with amended environment
From: |
Eli Zaretskii |
Subject: |
master c64e650fb34 3/3: Support shebang lines with amended environment |
Date: |
Sat, 17 Feb 2024 03:32:50 -0500 (EST) |
branch: master
commit c64e650fb346d92294703d22f8cd7deb7c47b49e
Author: Kévin Le Gouguec <kevin.legouguec@gmail.com>
Commit: Eli Zaretskii <eliz@gnu.org>
Support shebang lines with amended environment
For bug#64939.
* lisp/files.el (auto-mode-interpreter-regexp): Account for possible
VARIABLE=[VALUE] operands.
* test/lisp/files-tests.el (files-tests-auto-mode-interpreter):
Add an example from the coreutils manual.
---
lisp/files.el | 5 ++++-
test/lisp/files-tests.el | 4 +++-
2 files changed, 7 insertions(+), 2 deletions(-)
diff --git a/lisp/files.el b/lisp/files.el
index 5098d49048e..524385edc84 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -3274,12 +3274,15 @@ and `inhibit-local-variables-suffixes'. If
;; Optional group 1: env(1) invocation.
"\\("
"[^ \t\n]*/bin/env[ \t]*"
- ;; Within group 1: possible -S/--split-string.
+ ;; Within group 1: possible -S/--split-string and environment
+ ;; adjustments.
"\\(?:"
;; -S/--split-string
"\\(?:-[0a-z]*S[ \t]*\\|--split-string=\\)"
;; More env arguments.
"\\(?:-[^ \t\n]+[ \t]+\\)*"
+ ;; Interpreter environment modifications.
+ "\\(?:[^ \t\n]+=[^ \t\n]*[ \t]+\\)*"
"\\)?"
"\\)?"
;; Group 2: interpreter.
diff --git a/test/lisp/files-tests.el b/test/lisp/files-tests.el
index 0a5c3b897e4..d4c1ef3ba67 100644
--- a/test/lisp/files-tests.el
+++ b/test/lisp/files-tests.el
@@ -1694,7 +1694,9 @@ set to."
(files-tests--check-shebang "#!/usr/bin/env -S-vi bash -eux" 'sh-base-mode
'bash)
(files-tests--check-shebang "#!/usr/bin/env -ivS --default-signal=INT bash
-eux" 'sh-base-mode 'bash)
(files-tests--check-shebang "#!/usr/bin/env -ivS --default-signal bash -eux"
'sh-base-mode 'bash)
- (files-tests--check-shebang "#!/usr/bin/env -vS -uFOOBAR bash -eux"
'sh-base-mode 'bash))
+ (files-tests--check-shebang "#!/usr/bin/env -vS -uFOOBAR bash -eux"
'sh-base-mode 'bash)
+ ;; Invocation through env, with modified environment.
+ (files-tests--check-shebang "#!/usr/bin/env -S PYTHONPATH=/...:${PYTHONPATH}
python" 'python-base-mode))
(ert-deftest files-test-dir-locals-auto-mode-alist ()
"Test an `auto-mode-alist' entry in `.dir-locals.el'"