diff options
| author | Craig Jennings <c@cjennings.net> | 2026-06-30 17:34:32 -0400 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-06-30 17:34:32 -0400 |
| commit | dd8e1576cdfa282efbbc610737b039721841c60c (patch) | |
| tree | eb6192c9c4be9f3ef064cf8901445b8429482670 /modules | |
| parent | 6660b0dc2a6e32aa4c4aec910a6a08bf8bb1e807 (diff) | |
| download | dotemacs-dd8e1576cdfa282efbbc610737b039721841c60c.tar.gz dotemacs-dd8e1576cdfa282efbbc610737b039721841c60c.zip | |
fix(prog-shell): only auto-chmod scripts in prog-mode buffers
cj/make-script-executable runs from a global after-save-hook and set +x on any saved file whose first line was a shebang, in every buffer. A downloaded script you were reading, a template, or a shebang in a text or org file silently became executable. I gated it on derived-mode-p prog-mode, so it only acts on actual script buffers. Real scripts (sh-mode, python-mode) still get the fast path.
Diffstat (limited to 'modules')
| -rw-r--r-- | modules/prog-shell.el | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/modules/prog-shell.el b/modules/prog-shell.el index d7f97932b..3ed51da11 100644 --- a/modules/prog-shell.el +++ b/modules/prog-shell.el @@ -166,8 +166,12 @@ Overrides default prog-mode keybindings with shell-specific commands." ;; Automatically set execute permission on shell scripts with shebangs (defun cj/make-script-executable () - "Make the current file executable if it has a shebang." + "Make the current file executable if it is a script buffer with a shebang. +Runs from a global `after-save-hook', so it gates on `prog-mode': a shebang in a +text, org, or fundamental-mode buffer (a script being read, quoted, or reviewed) +is left alone rather than silently made executable." (when (and buffer-file-name + (derived-mode-p 'prog-mode) (not (file-executable-p buffer-file-name)) (save-excursion (goto-char (point-min)) |
