diff options
author | Stefan Holdermans <stefan@holdermans.nl> | 2020-04-20 21:51:57 +0200 |
---|---|---|
committer | Marge Bot <ben+marge-bot@smart-cactus.org> | 2020-05-21 12:16:08 -0400 |
commit | a0b79e1b16887371d5cd14d53a607772ca730fb5 (patch) | |
tree | 3722888cc606656e6a7a5c110e2ae3b8ec410cf1 /ghc | |
parent | 82663959d2f1ddbb514a652593bc8064fd69d6aa (diff) | |
download | haskell-a0b79e1b16887371d5cd14d53a607772ca730fb5.tar.gz |
Allow GHCi :script file names in double quotes
This patch updates the user interface of GHCi so that file names passed
to the ':script' command can be wrapped in double quotes.
For example:
:script "foo bar.script"
The implementation uses a modified version of 'words' that treats
character sequences enclosed in double quotes as single words.
Fixes #18027.
Diffstat (limited to 'ghc')
-rw-r--r-- | ghc/GHCi/UI.hs | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/ghc/GHCi/UI.hs b/ghc/GHCi/UI.hs index c1fce215c3..36e27dd5b4 100644 --- a/ghc/GHCi/UI.hs +++ b/ghc/GHCi/UI.hs @@ -2267,12 +2267,15 @@ scriptCmd ws = do [s] -> runScript s _ -> throwGhcException (CmdLineError "syntax: :script <filename>") --- | A version of 'words' that does not break on backslash-escaped spaces. --- E.g., 'words\' "lorem\\ ipsum dolor"' yields '["lorem ipsum", "dolor"]'. +-- | A version of 'words' that treats sequences enclosed in double quotes as +-- single words and that does not break on backslash-escaped spaces. +-- E.g., 'words\' "\"lorem ipsum\" dolor"' and 'words\' "lorem\\ ipsum dolor"' +-- yield '["lorem ipsum", "dolor"]'. -- Used to scan for file paths in 'scriptCmd'. words' :: String -> [String] words' s = case dropWhile isSpace s of "" -> [] + s'@('\"' : _) | [(w, s'')] <- reads s' -> w : words' s'' s' -> go id s' where go acc [] = [acc []] |