manatee 0.0.8 → 0.0.9
raw patch · 2 files changed
+36/−13 lines, 2 files
Files
- Manatee/Daemon.hs +35/−12
- manatee.cabal +1/−1
Manatee/Daemon.hs view
@@ -181,17 +181,18 @@ ] -- | Interactivebar keymap.-interactiveKeymap :: EditableClass ed => Map Text (ed -> IO ())+interactiveKeymap :: Map Text (Environment -> Entry -> IO ()) interactiveKeymap = M.fromList- [("Tab", editableExpandCompletion)- ,("BackSpace", editableDeleteBackwardChar)- ,("M-,", editableDeleteBackwardChar)- ,("M-<", editableDeleteBackwardWord)- ,("M-d", editableDeleteAllText)- ,("M-x", editableCutClipboard)- ,("M-c", editableCopyClipboard)- ,("M-v", editablePasteClipboard)]+ [("Tab", \ _ ed -> editableExpandCompletion ed)+ ,("BackSpace", \ _ ed -> editableDeleteBackwardChar ed)+ ,("M-,", \ _ ed -> editableDeleteBackwardChar ed)+ ,("M-<", \ _ ed -> editableDeleteBackwardWord ed)+ ,("M-d", \ _ ed -> editableDeleteAllText ed)+ ,("M-x", \ _ ed -> editableCutClipboard ed)+ ,("M-c", \ _ ed -> editableCopyClipboard ed)+ ,("M-v", interactivebarPasteClipboard)+ ] -- | Local keymap for extension. localKeymap :: Keymap@@ -761,20 +762,42 @@ -- | Handle interactivebar key press event. handleInteractivebarKeyPress :: Environment -> Text -> Interactivebar -> IO () handleInteractivebarKeyPress env keystoke bar = do- let client = envDaemonClient env- entry = interactivebarEntry bar+ -- Get entry.+ let entry = interactivebarEntry bar -- Focus anything input entry. editableFocus entry -- Do action. isChanged <- editableIsChanged entry $ case M.lookup keystoke interactiveKeymap of- Just action -> action entry+ Just action -> action env entry _ -> -- Insert character. when (T.length keystoke == 1) $ do unselectText <- editableGetUnselectText entry editableSetText entry (unselectText ++ T.unpack keystoke)+ -- Send key press signal.+ sendAnythingViewKeyPress env entry keystoke isChanged++-- | Paste clipboard to interactivebar.+interactivebarPasteClipboard :: Environment -> Entry -> IO ()+interactivebarPasteClipboard env ed = do+ clipboard <- widgetGetClipboard ed selectionClipboard+ clipboardRequestText clipboard $ \ text ->+ text ?>= \ content -> do+ -- Paste data from clipboard.+ pos <- editableGetPosition ed+ editableInsertText ed content pos+ editableSetPosition ed (pos + length content)++ -- Send key press signal.+ sendAnythingViewKeyPress env ed "" True++-- | Send anything key press.+sendAnythingViewKeyPress :: EditableClass ed => Environment -> ed -> Text -> Bool -> IO ()+sendAnythingViewKeyPress env entry keystoke isChanged = do+ -- Get client.+ let client = envDaemonClient env -- Get input string. allText <- editableGetAllText entry unselectText <- editableGetUnselectText entry
manatee.cabal view
@@ -1,5 +1,5 @@ name: manatee-version: 0.0.8+version: 0.0.9 Cabal-Version: >= 1.6 license: GPL-3 license-file: LICENSE