From 328176735bf68e1e6523648dee04b6af73d2bee2 Mon Sep 17 00:00:00 2001 From: Ken Micklas Date: Sat, 20 Oct 2018 12:23:08 -0400 Subject: [PATCH] Add fallbackCompletion to support module completion in ghci :add (#91) --- System/Console/Haskeline/Completion.hs | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/System/Console/Haskeline/Completion.hs b/System/Console/Haskeline/Completion.hs index b17bb0c7..04b8e9a9 100644 --- a/System/Console/Haskeline/Completion.hs +++ b/System/Console/Haskeline/Completion.hs @@ -3,6 +3,7 @@ module System.Console.Haskeline.Completion( Completion(..), noCompletion, simpleCompletion, + fallbackCompletion, -- * Word completion completeWord, completeWordWithPrev, @@ -188,3 +189,12 @@ fixPath ('~':c:path) | isPathSeparator c = do home <- getHomeDirectory return (home path) fixPath path = return path + +-- | If the first completer produces no suggestions, fallback to the second +-- completer's output. +fallbackCompletion :: Monad m => CompletionFunc m -> CompletionFunc m -> CompletionFunc m +fallbackCompletion a b input = do + aCompletions <- a input + if null (snd aCompletions) + then b input + else return aCompletions