From fcec780f4bf68073bfad76998b05bf8663e9b83f Mon Sep 17 00:00:00 2001 From: Devin Mullins Date: Sat, 6 Oct 2007 09:09:59 +0200 Subject: change Dmenu functions to return IO/X (Maybe String) dmenu exits with code 1 when you hit Escape, and I wanna create a contrib that takes advantage of that. This required changes in four contribs (Commands, DirectoryPrompt, ShellPrompt, and WorkspaceDir), and might require changes in users' Configs. Also, I'm not sure some of the changes I made to the client code are very Haskelly. Would appreciate input there. darcs-hash:20071006070959-78224-eeefb4300d6d3de7b199f2b1ad37ba43384e03f1.gz --- WorkspaceDir.hs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'WorkspaceDir.hs') diff --git a/WorkspaceDir.hs b/WorkspaceDir.hs index 97e5f94..32f548d 100644 --- a/WorkspaceDir.hs +++ b/WorkspaceDir.hs @@ -68,8 +68,10 @@ workspaceDir :: LayoutClass l a => String -> l a workspaceDir s = ModifiedLayout (WorkspaceDir s) scd :: String -> X () -scd x = do x' <- io (runProcessWithInput "bash" [] ("echo -n " ++ x) `catch` \_ -> return x) - catchIO $ setCurrentDirectory x' +scd x = do x' <- io (runProcessWithInput "bash" [] ("echo -n " ++ x) `catch` \_ -> return Nothing) + case x' of + Just newDir -> catchIO $ setCurrentDirectory newDir + Nothing -> return () changeDir :: XPConfig -> X () changeDir c = directoryPrompt c "Set working directory: " (sendMessage . Chdir) -- cgit v1.2.3