From f49e7d653aa308303f84126eae05f7ff77a2e205 Mon Sep 17 00:00:00 2001 From: nikshalark Date: Fri, 16 Apr 2021 14:48:57 -0400 Subject: [PATCH] Redefined `ComplCaseSensitivity` as a proper sum type. (#509) --- CHANGES.md | 2 ++ XMonad/Layout/WorkspaceDir.hs | 2 +- XMonad/Prompt.hs | 4 ++-- XMonad/Prompt/Directory.hs | 2 +- XMonad/Prompt/Shell.hs | 8 +++++--- 5 files changed, 11 insertions(+), 7 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index 5890e497..e8933eb1 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -491,6 +491,8 @@ - Added `maxComplColumns` field to `XPConfig`, to limit the number of columns in the completion window. + - Redefine `ComplCaseSensitivity` to a proper sum type as opposed to a newtype wrapped around Bool. + * `XMonad.Actions.TreeSelect` - Fixed a crash when focusing a new window while the tree select diff --git a/XMonad/Layout/WorkspaceDir.hs b/XMonad/Layout/WorkspaceDir.hs index b3c55dc5..b02f26ab 100644 --- a/XMonad/Layout/WorkspaceDir.hs +++ b/XMonad/Layout/WorkspaceDir.hs @@ -62,7 +62,7 @@ import XMonad.StackSet ( tag, currentTag ) -- If you prefer a prompt with case-insensitive completion: -- -- > , ((modm .|. shiftMask, xK_x ), --- changeDir def {complCaseSensitivity = ComplCaseSensitive False}) +-- changeDir def {complCaseSensitivity = CaseInSensitive}) -- -- For detailed instruction on editing the key binding see: -- diff --git a/XMonad/Prompt.hs b/XMonad/Prompt.hs index 16c60a8f..fa65690a 100644 --- a/XMonad/Prompt.hs +++ b/XMonad/Prompt.hs @@ -208,7 +208,7 @@ type ComplFunction = String -> IO [String] type XPMode = XPType data XPOperationMode = XPSingleMode ComplFunction XPType | XPMultipleModes (W.Stack XPType) -newtype ComplCaseSensitivity = ComplCaseSensitive Bool +data ComplCaseSensitivity = CaseSensitive | CaseInSensitive instance Show XPType where show (XPT p) = showXPrompt p @@ -341,7 +341,7 @@ instance Default XPConfig where , defaultText = [] , autoComplete = Nothing , showCompletionOnTab = False - , complCaseSensitivity = ComplCaseSensitive True + , complCaseSensitivity = CaseSensitive , searchPredicate = isPrefixOf , alwaysHighlight = False , defaultPrompter = id diff --git a/XMonad/Prompt/Directory.hs b/XMonad/Prompt/Directory.hs index c729b892..5488e31c 100644 --- a/XMonad/Prompt/Directory.hs +++ b/XMonad/Prompt/Directory.hs @@ -47,7 +47,7 @@ directoryPrompt c prom f = mkXPrompt (Dir prom csn f) c (getDirCompl csn) f directoryMultipleModes :: String -- ^ Prompt. -> (String -> X ()) -- ^ Action. -> XPType -directoryMultipleModes = directoryMultipleModes' (ComplCaseSensitive True) +directoryMultipleModes = directoryMultipleModes' CaseSensitive -- | Like @directoryMultipleModes@ with a parameter for completion case-sensitivity. directoryMultipleModes' :: ComplCaseSensitivity -- ^ Completion case sensitivity. diff --git a/XMonad/Prompt/Shell.hs b/XMonad/Prompt/Shell.hs index d3f81765..24521b03 100644 --- a/XMonad/Prompt/Shell.hs +++ b/XMonad/Prompt/Shell.hs @@ -98,7 +98,7 @@ unsafePrompt c config = mkXPrompt Shell config (getShellCompl [c] $ searchPredic where run a = unsafeSpawn $ c ++ " " ++ a getShellCompl :: [String] -> Predicate -> String -> IO [String] -getShellCompl = getShellCompl' (ComplCaseSensitive True) +getShellCompl = getShellCompl' CaseSensitive getShellCompl' :: ComplCaseSensitivity -> [String] -> Predicate -> String -> IO [String] getShellCompl' csn cmds p s | s == "" || last s == ' ' = return [] @@ -128,8 +128,10 @@ compgen csn actionOpt s = runProcessWithInput "bash" [] $ complCaseSensitivityCmd csn ++ " ; " ++ compgenCmd actionOpt s complCaseSensitivityCmd :: ComplCaseSensitivity -> String -complCaseSensitivityCmd (ComplCaseSensitive b) = - "bind 'set completion-ignore-case " ++ (if b then "off" else "on") ++ "'" +complCaseSensitivityCmd CaseSensitive = + "bind 'set completion-ignore-case off'" +complCaseSensitivityCmd CaseInSensitive = + "bind 'set completion-ignore-case on'" compgenCmd :: String -> String -> String compgenCmd actionOpt s = "compgen -A " ++ actionOpt ++ " -- " ++ s ++ "\n"