aboutsummaryrefslogtreecommitdiff
path: root/lib/Daffm/View.hs
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Daffm/View.hs')
-rw-r--r--lib/Daffm/View.hs14
1 files changed, 9 insertions, 5 deletions
diff --git a/lib/Daffm/View.hs b/lib/Daffm/View.hs
index 387fffc..081cd38 100644
--- a/lib/Daffm/View.hs
+++ b/lib/Daffm/View.hs
@@ -4,7 +4,7 @@ import Brick.Types (Widget)
import Brick.Widgets.Core (Padding (Max, Pad), emptyWidget, hBox, hLimit, padLeft, padRight, str, txt, vBox, vLimit, withAttr, (<+>))
import Brick.Widgets.Edit (renderEditor)
import qualified Brick.Widgets.List as L
-import Daffm.Attrs (directoryAttr, directorySelectedAttr, fileAttr, fileSelectedAttr)
+import Daffm.Attrs (directoryAttr, directorySelectedAttr, fileAttr, fileSelectedAttr, searchMarchAttr)
import Daffm.Keymap (showKeySequence)
import Daffm.Types (AppState (..), FileInfo (..), FileType (..), FocusTarget (..))
import Data.Int (Int64)
@@ -21,7 +21,7 @@ appView appState@(AppState {stateFiles}) = [ui]
ui = vBox [vLimit 1 header, box, vLimit 1 cmdline]
header = headerView appState
cmdline = cmdlineView appState
- box = L.renderList (fileItemView appState) True stateFiles
+ box = L.renderListWithIndex (fileItemView appState) True stateFiles
hFixed :: Int -> Widget n -> Widget n
hFixed w = hLimit w . padRight Max
@@ -29,20 +29,24 @@ hFixed w = hLimit w . padRight Max
headerView :: AppState -> Widget n
headerView (AppState {stateCwd}) = txt stateCwd
-fileItemView :: AppState -> Bool -> FileInfo -> Widget FocusTarget
-fileItemView appState sel fileInfo@(FileInfo {filePath, fileSize, fileType, fileMode}) =
+fileItemView :: AppState -> Int -> Bool -> FileInfo -> Widget FocusTarget
+fileItemView appState index sel fileInfo@(FileInfo {filePath, fileSize, fileType, fileMode}) =
hBox
[ hFixed 2 fileSelectionView,
hFixed 10 $ fileModeView fileMode,
hFixed 6 $ fileTypeView fileType,
hFixed 7 $ fileSizeView fileSize,
- fileNameView sel fileInfo
+ fileNameView sel fileInfo,
+ searchMatchIndicatorView
]
where
fileSizeView = txt . prettyFileSize . fromIntegral
fileTypeView = txt . showFileType
fileModeView = txt . showFileMode
fileSelectionView = txt $ if Set.member filePath $ stateFileSelections appState then ">" else " "
+ searchMatchIndicatorView
+ | index `Vec.elem` stateSearchMatches appState = padLeft (Pad 1) $ withAttr searchMarchAttr $ txt "*"
+ | otherwise = emptyWidget
showFileType :: FileType -> Text.Text
showFileType Directory = "dir"