> On Jun 10, 2017, at 3:17 AM, Eli Zaretskii wrote: > >> From: "Andrew L. Moore" >> Date: Fri, 9 Jun 2017 17:31:30 -0400 >> >> lisp/progmodes/executable.el does not appear to support magic numbers of the form `#/usr/bin/env interpreter’. One way to extend support is via the attached diff which merely adds a new variable `executable-interpreter-path-absolute’. Set the new variable to nil and variable `executable-prefix’ to “#!/usr/bin/env “. > > Thanks. > > Wouldn't it be more elegant (and perhaps also safer, security-wise) if > we supported the special prefix "/usr/bin/env" directly, i.e. without > feeding it via some kind of "back door", and allowing arbitrary > strings there? Attached below is a patch following your suggestions. From NEWS: ** The new variable 'executable-prefix-env' affects the format of the magic number inserted by 'executable-set-magic'. If non-nil, the magic number takes the form "#!/usr/bin/env interpreter", otherwise "#!/path/to/interpreter", which is the default. +++ As you advised, if ‘executable-prefix’ has been customized to something other than “#!” or “#!/usr/bin/env”, it masks the effect of ‘executable-prefix-env’. This behavior is not documented. Instead, the doc string for ‘executable-prefix’ now adds: “… Use of `executable-prefix' is deprecated in favor of `executable-prefix-env’." > If your proposal is accepted, I think at least its documentation parts > should be improved: > >> +(defcustom executable-interpreter-path-absolute t >> + "If non-nil, `executable-set-magic' uses the interpreter's >> +absolute path. Otherwise, it's basename is used." > > This doc string leaves out the important stuff: the reason why the > variable is introduced and how it should be used. I think the doc > string should be more helpful by explicitly describing its intended > usage. New name and new definition: (defcustom executable-prefix-env nil "If non-nil, the magic number inserted by function `executable-set-magic' takes the form \"#!/usr/bin/env interpreter\", otherwise \"#!/path/to/interpreter\"." :version "26.1" :type 'boolean :group 'executable) > >> + :version "26.0" > > Emacs never releases N.0 versions, so this should be "26.1”. Okay. > >> @@ -220,6 +226,9 @@ executable-set-magic >> (and argument (string< "" argument) " ") >> argument)) > > The doc string of executable-set-magic should mention the variable you > introduce. Done - although just by changing a reference from ‘executable-prefix’ to ‘executable-prefix-env’ - i.e., ‘executable-prefix’ is now not referenced in its deprecated role. > Finally, there should be a NEWS entry about this new facility. Thank you! -AM