From 7ada94df42a2403d3825c2e312ce56621d7a0670 Mon Sep 17 00:00:00 2001 From: Tomas Janousek Date: Mon, 7 Nov 2016 20:57:45 +0100 Subject: [PATCH] X.A.WorkspaceNames: add getWorkspaceNames' --- XMonad/Actions/WorkspaceNames.hs | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/XMonad/Actions/WorkspaceNames.hs b/XMonad/Actions/WorkspaceNames.hs index 0e719d7e..83f93ad7 100644 --- a/XMonad/Actions/WorkspaceNames.hs +++ b/XMonad/Actions/WorkspaceNames.hs @@ -24,6 +24,7 @@ module XMonad.Actions.WorkspaceNames ( -- * Workspace naming renameWorkspace, workspaceNamesPP, + getWorkspaceNames', getWorkspaceNames, getWorkspaceName, getCurrentWorkspaceName, @@ -90,20 +91,22 @@ instance ExtensionClass WorkspaceNames where initialValue = WorkspaceNames M.empty extensionType = PersistentExtension +-- | Returns a lookup function that maps workspace tags to workspace names. +getWorkspaceNames' :: X (WorkspaceId -> Maybe String) +getWorkspaceNames' = do + WorkspaceNames m <- XS.get + return (`M.lookup` m) + -- | Returns a function that maps workspace tag @\"t\"@ to @\"t:name\"@ for -- workspaces with a name, and to @\"t\"@ otherwise. getWorkspaceNames :: X (WorkspaceId -> String) getWorkspaceNames = do - WorkspaceNames m <- XS.get - return $ \wks -> case M.lookup wks m of - Nothing -> wks - Just s -> wks ++ ":" ++ s + lookup <- getWorkspaceNames' + return $ \wks -> wks ++ maybe "" (':' :) (lookup wks) -- | Gets the name of a workspace, if set, otherwise returns nothing. getWorkspaceName :: WorkspaceId -> X (Maybe String) -getWorkspaceName w = do - WorkspaceNames m <- XS.get - return $ M.lookup w m +getWorkspaceName w = ($ w) `fmap` getWorkspaceNames' -- | Gets the name of the current workspace. See 'getWorkspaceName' getCurrentWorkspaceName :: X (Maybe String)