aboutsummaryrefslogtreecommitdiff
path: root/lib/Daffm/State.hs
diff options
context:
space:
mode:
authorAkshay Nair <phenax5@gmail.com>2025-10-05 22:21:42 +0530
committerAkshay Nair <phenax5@gmail.com>2025-10-08 13:07:40 +0530
commit424d65e53b99c65f07f36578e3d0975c4d093c0e (patch)
tree8e6f9939a37632d51888010bad56011be191057c /lib/Daffm/State.hs
parentabcbb255e8dd5f624ba5173783cf665522b527df (diff)
downloaddaffm-424d65e53b99c65f07f36578e3d0975c4d093c0e.tar.gz
daffm-424d65e53b99c65f07f36578e3d0975c4d093c0e.zip
Add extend config property to extend configs + move defaults
Diffstat (limited to 'lib/Daffm/State.hs')
-rw-r--r--lib/Daffm/State.hs31
1 files changed, 6 insertions, 25 deletions
diff --git a/lib/Daffm/State.hs b/lib/Daffm/State.hs
index 7601acd..210cd8d 100644
--- a/lib/Daffm/State.hs
+++ b/lib/Daffm/State.hs
@@ -13,33 +13,11 @@ import qualified Data.Set as Set
import qualified Data.Text as Text
import qualified Data.Text.Zipper.Generic as Zipper
import qualified Data.Vector as Vec
-import qualified Graphics.Vty as K
import System.Directory (doesDirectoryExist, doesPathExist, getCurrentDirectory, getHomeDirectory, listDirectory, makeAbsolute, setCurrentDirectory)
-import System.FilePath (joinPath, takeDirectory, takeFileName)
+import System.FilePath (joinPath, takeDirectory)
import System.PosixCompat (fileExist)
import qualified System.PosixCompat as Posix
-defaultKeymaps :: Keymap
-defaultKeymaps =
- Map.fromList
- [ ([K.KChar 'q'], CmdQuit),
- ([K.KChar 'r', K.KChar 'r'], CmdReload),
- ([K.KChar '!'], CmdSetCmdline "!"),
- ([K.KChar ':'], CmdEnterCmdline),
- ([K.KChar 'l'], CmdOpenSelection),
- ([K.KChar 'h'], CmdGoBack),
- ([K.KEnter], CmdOpenSelection),
- ([K.KBS], CmdGoBack),
- ([K.KChar 'v'], CmdToggleSelection),
- ([K.KChar '\t'], CmdToggleSelection),
- ([K.KChar 'C'], CmdClearSelection),
- ([K.KChar '~'], CmdChangeDir "~"),
- ([K.KChar '$'], CmdShell False "$SHELL"),
- ([K.KChar 'g', K.KChar 'x'], CmdShell False "!xdg-open % >/dev/null 2>&1"),
- ([K.KChar 'g', K.KChar 'h'], CmdChangeDir "~"),
- ([K.KChar 'g', K.KChar 'c', K.KChar 'f', K.KChar 'g'], CmdChangeDir "~/.config/daffm")
- ]
-
mkEditor :: (Zipper.GenericTextZipper a) => a -> Editor.Editor a FocusTarget
mkEditor = Editor.editor FocusCmdline (Just 1)
@@ -52,7 +30,7 @@ mkEmptyAppState config =
stateListPositionHistory = Map.empty,
stateFileSelections = Set.empty,
stateCwd = "",
- stateKeyMap = configKeymap config <> defaultKeymaps,
+ stateKeyMap = configKeymap config,
stateOpenerScript = configOpener config,
stateKeySequence = []
}
@@ -82,12 +60,15 @@ stripQuotes txt = fromMaybe txt (double <|> single)
double = Text.stripPrefix "\"" txt >>= Text.stripSuffix "\""
single = Text.stripPrefix "'" txt >>= Text.stripSuffix "'"
+stripTrailingSlash :: Text.Text -> Text.Text
+stripTrailingSlash path = fromMaybe path $ Text.stripSuffix "/" path
+
textAsString :: (String -> String) -> Text.Text -> Text.Text
textAsString f = Text.pack . f . Text.unpack
loadDirToState :: FilePathText -> AppState -> IO AppState
loadDirToState dir' appState@(AppState {stateCwd, stateListPositionHistory}) = do
- normalizedDir <- (normalizePath . stripQuotes . trim) dir' >>= withCwdFallback
+ normalizedDir <- (normalizePath . stripTrailingSlash . stripQuotes . trim) dir' >>= withCwdFallback
stat <- Posix.getSymbolicLinkStatus $ Text.unpack normalizedDir
let (dir, targetFilePathM) =
if Posix.isDirectory stat