From 1cd0ebdaca3088943f844b31f31f54ea8788aff5 Mon Sep 17 00:00:00 2001 From: Joachim Breitner Date: Mon, 8 Sep 2008 12:57:58 +0200 Subject: XPrompt: Add showCompletionOnTab option This patch partially implements http://code.google.com/p/xmonad/issues/detail?id!5 It adds a XPConfig option that, if enabled, hides the completion window until the user presses Tab once. Default behaviour is preserved. TODO: If Tab causes a unique completion, continue to hide the completion window. darcs-hash:20080908105758-23c07-0d014c22f15e853d2a918d53788274374eaf4dca.gz --- XMonad/Prompt.hs | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) (limited to 'XMonad/Prompt.hs') diff --git a/XMonad/Prompt.hs b/XMonad/Prompt.hs index 7e3254b..53c9024 100644 --- a/XMonad/Prompt.hs +++ b/XMonad/Prompt.hs @@ -83,6 +83,7 @@ data XPState = , complWin :: Maybe Window , complWinDim :: Maybe ComplWindowDim , completionFunction :: String -> IO [String] + , showComplWin :: Bool , gcon :: !GC , fontS :: !XMonadFont , xptype :: !XPType @@ -105,6 +106,7 @@ data XPConfig = , historySize :: !Int -- ^ The number of history entries to be saved , defaultText :: String -- ^ The text by default in the prompt line , autoComplete :: Maybe Int -- ^ Just x: if only one completion remains, auto-select it, + , showCompletionOnTab :: Bool -- ^ Only show list of completions when Tab was pressed -- and delay by x microseconds } deriving (Show, Read) @@ -175,6 +177,7 @@ defaultXPConfig = , historySize = 256 , defaultText = [] , autoComplete = Nothing + , showCompletionOnTab = False } type ComplFunction = String -> IO [String] @@ -189,6 +192,7 @@ initState d rw w s compl gc fonts pt h c = , complWin = Nothing , complWinDim = Nothing , completionFunction = compl + , showComplWin = not (showCompletionOnTab c) , gcon = gc , fontS = fonts , xptype = XPT pt @@ -276,6 +280,7 @@ eventLoop action = do handle :: KeyStroke -> Event -> XP () handle k@(ks,_) e@(KeyEvent {ev_event_type = t}) | t == keyPress && ks == xK_Tab = do + modify $ \s -> s { showComplWin = True } c <- getCompletions completionHandle c k e handle ks (KeyEvent {ev_event_type = t, ev_state = m}) @@ -636,7 +641,7 @@ redrawComplWin compl = do let recreate = do destroyComplWin w <- createComplWin nwi drawComplWin w compl - if (compl /= [] ) + if (compl /= [] && showComplWin st) then case complWin st of Just w -> case complWinDim st of Just wi -> if nwi == wi -- complWinDim did not change @@ -816,4 +821,4 @@ historyCompletion = \x -> liftM (filter $ isInfixOf x) readHistoryIO -- 'getHistory' is uselessly of the type "XP [String]". readHistoryIO :: IO [String] readHistoryIO = do (hist,_) <- readHistory - return $ map command_history hist \ No newline at end of file + return $ map command_history hist -- cgit v1.2.3