mirror of
https://github.com/xmonad/xmonad-contrib.git
synced 2025-05-19 03:20:21 -07:00
Add renameProjectPrompt, fix directory prompting completion
This commit is contained in:
parent
60922e0cae
commit
ea8e0ea7b6
@ -30,6 +30,7 @@ module XMonad.Actions.DynamicProjects
|
|||||||
-- * Bindings
|
-- * Bindings
|
||||||
, switchProjectPrompt
|
, switchProjectPrompt
|
||||||
, shiftToProjectPrompt
|
, shiftToProjectPrompt
|
||||||
|
, renameProjectPrompt
|
||||||
|
|
||||||
-- * Helper Functions
|
-- * Helper Functions
|
||||||
, switchProject
|
, switchProject
|
||||||
@ -227,7 +228,10 @@ switchProjectPrompt c = projectPrompt c switch
|
|||||||
switch ps name = case Map.lookup name ps of
|
switch ps name = case Map.lookup name ps of
|
||||||
Just p -> switchProject p
|
Just p -> switchProject p
|
||||||
Nothing | null name -> return ()
|
Nothing | null name -> return ()
|
||||||
| otherwise -> directoryPrompt c "Project Dir: " (mkProject name)
|
| otherwise -> directoryPrompt dirC "Project Dir: " (mkProject name)
|
||||||
|
|
||||||
|
dirC :: XPConfig
|
||||||
|
dirC = c { alwaysHighlight = False } -- Fix broken tab completion.
|
||||||
|
|
||||||
mkProject :: ProjectName -> FilePath -> X ()
|
mkProject :: ProjectName -> FilePath -> X ()
|
||||||
mkProject name dir = do
|
mkProject name dir = do
|
||||||
@ -260,7 +264,26 @@ projectPrompt c f = do
|
|||||||
ps <- XS.gets projects
|
ps <- XS.gets projects
|
||||||
|
|
||||||
let names = sort (Map.keys ps `union` ws)
|
let names = sort (Map.keys ps `union` ws)
|
||||||
mkXPrompt (Wor "Project: ") c (mkComplFunFromList' names) (f ps)
|
label = "Switch or Create Project: "
|
||||||
|
|
||||||
|
mkXPrompt (Wor label) c (mkComplFunFromList' names) (f ps)
|
||||||
|
|
||||||
|
--------------------------------------------------------------------------------
|
||||||
|
-- | Rename the current project.
|
||||||
|
renameProjectPrompt :: XPConfig -> X ()
|
||||||
|
renameProjectPrompt c = mkXPrompt (Wor "New Project Name: ") c (return . (:[])) go
|
||||||
|
where
|
||||||
|
go :: String -> X ()
|
||||||
|
go name = do
|
||||||
|
p <- currentProject
|
||||||
|
ps <- XS.gets projects
|
||||||
|
renameWorkspaceByName name
|
||||||
|
|
||||||
|
let p' = fromMaybe (p { projectName = name }) $ Map.lookup name ps
|
||||||
|
ps' = Map.insert name p' $ Map.delete (projectName p) ps
|
||||||
|
|
||||||
|
XS.modify $ \s -> s {projects = ps'}
|
||||||
|
activateProject p'
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
-- | Activate a project by updating the working directory and
|
-- | Activate a project by updating the working directory and
|
||||||
|
Loading…
x
Reference in New Issue
Block a user