mirror of
https://github.com/xmonad/xmonad-contrib.git
synced 2025-07-26 01:31:52 -07:00
Merge pull request #23 from psibi/prompt-multiple-key
Add multiple key support for completion key
This commit is contained in:
1
.mailmap
1
.mailmap
@@ -66,6 +66,7 @@ Rickard Gustafsson <acura@allyourbase.se>
|
||||
Robert Marlow <bobstopper@bobturf.org>
|
||||
Robert Marlow <bobstopper@bobturf.org> <robreim@bobturf.org>
|
||||
Rohan Jain <crodjer@gmail.com>
|
||||
Sibi Prabakaran <sibi@psibi.in> <psibi2000@gmail.com>
|
||||
Sean Escriva <sean.escriva@gmail.com>
|
||||
Sean McEligot <seanmce33@gmail.com>
|
||||
Spencer Janssen <spencerjanssen@gmail.com> <sjanssen@cse.unl.edu>
|
||||
|
@@ -1,5 +1,13 @@
|
||||
# Change Log / Release Notes
|
||||
|
||||
## 0.13
|
||||
|
||||
### Breaking Changes
|
||||
|
||||
* The type of `completionKey` (of `XPConfig` record) has been
|
||||
changed from `KeySym` to `(KeyMask, KeySym)`. The default value
|
||||
for this is still binded to `Tab` key.
|
||||
|
||||
## 0.12 (December 14, 2015)
|
||||
|
||||
### Breaking Changes
|
||||
|
@@ -4,6 +4,7 @@
|
||||
-- |
|
||||
-- Module : XMonad.Prompt
|
||||
-- Copyright : (C) 2007 Andrea Rossato, 2015 Evgeny Kurnevsky
|
||||
-- 2015 Sibi Prabakaran
|
||||
-- License : BSD3
|
||||
--
|
||||
-- Maintainer : Spencer Janssen <spencerjanssen@gmail.com>
|
||||
@@ -144,7 +145,7 @@ data XPConfig =
|
||||
-- history entries to remember
|
||||
, promptKeymap :: M.Map (KeyMask,KeySym) (XP ())
|
||||
-- ^ Mapping from key combinations to actions
|
||||
, completionKey :: KeySym -- ^ Key that should trigger completion
|
||||
, completionKey :: (KeyMask, KeySym) -- ^ Key that should trigger completion
|
||||
, changeModeKey :: KeySym -- ^ Key to change mode (when the prompt has multiple modes)
|
||||
, defaultText :: String -- ^ The text by default in the prompt line
|
||||
, autoComplete :: Maybe Int -- ^ Just x: if only one completion remains, auto-select it,
|
||||
@@ -242,7 +243,7 @@ instance Default XPConfig where
|
||||
, borderColor = "white"
|
||||
, promptBorderWidth = 1
|
||||
, promptKeymap = defaultXPKeymap
|
||||
, completionKey = xK_Tab
|
||||
, completionKey = (0,xK_Tab)
|
||||
, changeModeKey = xK_grave
|
||||
, position = Bottom
|
||||
, height = 18
|
||||
@@ -489,7 +490,7 @@ handle ks@(sym,_) e@(KeyEvent {ev_event_type = t, ev_state = m}) = do
|
||||
chgModeKey <- gets $ changeModeKey . config
|
||||
c <- getCompletions
|
||||
when (length c > 1) $ modify (\s -> s { showComplWin = True })
|
||||
if complKey == sym
|
||||
if complKey == (m,sym)
|
||||
then completionHandle c ks e
|
||||
else if (sym == chgModeKey) then
|
||||
do
|
||||
@@ -507,7 +508,7 @@ completionHandle c ks@(sym,_) (KeyEvent { ev_event_type = t, ev_state = m }) = d
|
||||
complKey <- gets $ completionKey . config
|
||||
alwaysHlight <- gets $ alwaysHighlight . config
|
||||
case () of
|
||||
() | t == keyPress && sym == complKey ->
|
||||
() | t == keyPress && (m,sym) == complKey ->
|
||||
do
|
||||
st <- get
|
||||
let updateState l = case alwaysHlight of
|
||||
@@ -523,7 +524,7 @@ completionHandle c ks@(sym,_) (KeyEvent { ev_event_type = t, ev_state = m }) = d
|
||||
[] -> updateWindows >> eventLoop handle
|
||||
[x] -> updateState [x] >> getCompletions >>= updateWins
|
||||
l -> updateState l >> updateWins l
|
||||
| t == keyRelease && sym == complKey -> eventLoop (completionHandle c)
|
||||
| t == keyRelease && (m,sym) == complKey -> eventLoop (completionHandle c)
|
||||
| otherwise -> keyPressHandle m ks -- some other key, handle it normally
|
||||
-- some other event: go back to main loop
|
||||
completionHandle _ k e = handle k e
|
||||
|
Reference in New Issue
Block a user