Merge pull request #333 from wz1000/master

Allow WindowPrompt to execute arbitrary actions with the window
This commit is contained in:
Brent Yorgey
2020-04-16 22:05:28 -05:00
committed by GitHub
2 changed files with 14 additions and 6 deletions

View File

@@ -77,6 +77,11 @@
- Added `recentWS` function which allows the recency list to be filtered with
a user-provided predicate.
* `XMonad.Prompt.Window`
- Added a `WithWindow` constructor to `WindowPrompt` to allow executing
actions of type `Window -> X ()` on the chosen window.
## 0.16
### Breaking Changes

View File

@@ -72,13 +72,14 @@ import XMonad.Util.NamedWindows
-- "XMonad.Doc.Extending#Editing_key_bindings".
-- Describe actions that can applied on the selected window
data WindowPrompt = Goto | Bring | BringCopy | BringToMaster
data WindowPrompt = Goto | Bring | BringCopy | BringToMaster | WithWindow String (Window -> X())
instance XPrompt WindowPrompt where
showXPrompt Goto = "Go to window: "
showXPrompt Bring = "Bring window: "
showXPrompt BringToMaster
= "Bring window to master: "
showXPrompt BringCopy = "Bring a copy: "
showXPrompt (WithWindow xs _) = xs
commandToComplete _ c = c
nextCompletion _ = getNextCompletion
@@ -96,13 +97,15 @@ instance XPrompt WindowModePrompt where
modeAction (WindowModePrompt action winmap _) buf auto = do
let name = if null auto then buf else auto
a = case action of
Goto -> gotoAction winmap
Bring -> bringAction winmap
BringCopy -> bringCopyAction winmap
BringToMaster -> bringToMaster winmap
Goto -> gotoAction
Bring -> bringAction
BringCopy -> bringCopyAction
BringToMaster -> bringToMaster
WithWindow _ f -> withWindow f
a name
where
winAction a m = flip whenJust (windows . a) . flip M.lookup m
withWindow f = flip whenJust f . flip M.lookup winmap
winAction a = withWindow (windows . a)
gotoAction = winAction W.focusWindow
bringAction = winAction bringWindow
bringCopyAction = winAction bringCopyWindow