@@ -49,7 +49,7 @@ import System.Console.GetOpt
4949import Data.Char ( toLower )
5050import Data.List ( intercalate, isPrefixOf, isSuffixOf, sort )
5151import System.Directory ( getAppUserDataDirectory, findExecutable,
52− doesFileExist )
52+ doesFileExist, Permissions(..), getPermissions )
5353import System.IO ( stdout, stderr )
5454import System.IO.Error ( isDoesNotExistError )
5555import qualified Control.Exception as E
@@ -104,8 +104,12 @@ externalFilter f args' d = do
104104 Nothing -> do
105105 exists <- doesFileExist f
106106 if exists
107− then return $
107+ then do
108+ isExecutable <- executable `fmap`
109+ getPermissions f
110+ return $
108111 case map toLower $ takeExtension f of
112+ _ | isExecutable -> (f, args')
109113 ".py" -> ("python", f:args')
110114 ".hs" -> ("runhaskell", f:args')
111115 ".pl" -> ("perl", f:args')