Filters: respect shebang if filter is executable.

Closes #1389.
This commit is contained in:
John MacFarlane 2014-06-30 14:03:47 -07:00
parent 124cfb80f5
commit 264e366f1a

View file

@ -49,7 +49,7 @@ import System.Console.GetOpt
import Data.Char ( toLower )
import Data.List ( intercalate, isPrefixOf, isSuffixOf, sort )
import System.Directory ( getAppUserDataDirectory, findExecutable,
doesFileExist )
doesFileExist, Permissions(..), getPermissions )
import System.IO ( stdout, stderr )
import System.IO.Error ( isDoesNotExistError )
import qualified Control.Exception as E
@ -104,8 +104,12 @@ externalFilter f args' d = do
Nothing -> do
exists <- doesFileExist f
if exists
then return $
then do
isExecutable <- executable `fmap`
getPermissions f
return $
case map toLower $ takeExtension f of
_ | isExecutable -> (f, args')
".py" -> ("python", f:args')
".hs" -> ("runhaskell", f:args')
".pl" -> ("perl", f:args')