@@ -206,16 +206,20 @@ func (dl *directoryLister) getIgnore(path string) ignore.IgnoreParser {
}
type (
- DirectoryLister func(initialPath string, ignorePatterns []string, depth, limit int) ([]string, bool, error)
+ DirectoryLister func(initialPath string, ignorePatterns []string) ([]string, bool, error)
DirectoryListerResolver func() DirectoryLister
)
-func ResolveDirectoryLister() DirectoryLister {
- return listDirectory
+func ResolveDirectoryLister(maxDepth, limit int) DirectoryListerResolver {
+ return func() DirectoryLister {
+ return listDirectory(maxDepth, limit)
+ }
}
-func listDirectory(initialPath string, ignorePatterns []string, depth, limit int) ([]string, bool, error) {
- return ListDirectory(initialPath, ignorePatterns, depth, limit)
+func listDirectory(maxDepth, limit int) func(initialPath string, ignorePatterns []string) ([]string, bool, error) {
+ return func(initialPath string, ignorePatterns []string) ([]string, bool, error) {
+ return ListDirectory(initialPath, ignorePatterns, maxDepth, limit)
+ }
}
// ListDirectory lists files and directories in the specified path,
@@ -336,7 +336,8 @@ func (m *editorCmp) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
m.isCompletionsOpen = true
m.currentQuery = ""
m.completionsStartIndex = curIdx
- cmds = append(cmds, m.startCompletions)
+
+ cmds = append(cmds, m.startCompletions())
case m.isCompletionsOpen && curIdx <= m.completionsStartIndex:
cmds = append(cmds, util.CmdHandler(completions.CloseCompletionsMsg{}))
}
@@ -547,27 +548,27 @@ func (m *editorCmp) SetPosition(x, y int) tea.Cmd {
return nil
}
-func (m *editorCmp) startCompletions() tea.Msg {
- ls := m.app.Config().Options.TUI.Completions
- depth, limit := ls.Limits()
- files, _, _ := m.listDirResolver()(".", nil, depth, limit)
- slices.Sort(files)
- completionItems := make([]completions.Completion, 0, len(files))
- for _, file := range files {
- file = strings.TrimPrefix(file, "./")
- completionItems = append(completionItems, completions.Completion{
- Title: file,
- Value: FileCompletionItem{
- Path: file,
- },
- })
- }
+func (m *editorCmp) startCompletions() func() tea.Msg {
+ return func() tea.Msg {
+ files, _, _ := m.listDirResolver()(".", nil)
+ slices.Sort(files)
+ completionItems := make([]completions.Completion, 0, len(files))
+ for _, file := range files {
+ file = strings.TrimPrefix(file, "./")
+ completionItems = append(completionItems, completions.Completion{
+ Title: file,
+ Value: FileCompletionItem{
+ Path: file,
+ },
+ })
+ }
- x, y := m.completionsPosition()
- return completions.OpenCompletionsMsg{
- Completions: completionItems,
- X: x,
- Y: y,
+ x, y := m.completionsPosition()
+ return completions.OpenCompletionsMsg{
+ Completions: completionItems,
+ X: x,
+ Y: y,
+ }
}
}
@@ -661,5 +662,6 @@ func newEditor(app *app.App, resolveDirLister fsext.DirectoryListerResolver) *ed
}
func New(app *app.App) Editor {
- return newEditor(app, fsext.ResolveDirectoryLister)
+ ls := app.Config().Options.TUI.Completions.Limits
+ return newEditor(app, fsext.ResolveDirectoryLister(ls()))
}
@@ -108,7 +108,7 @@ func assertBatchContainsOpenCompletionsMsg(t *testing.T, batchMsg tea.BatchMsg,
func mockDirLister(paths []string) fsext.DirectoryListerResolver {
return func() fsext.DirectoryLister {
- return func(initialPath string, ignorePatterns []string, limit int) ([]string, bool, error) {
+ return func(initialPath string, ignorePatterns []string) ([]string, bool, error) {
return paths, false, nil
}
}
@@ -130,10 +130,6 @@ func simulateUpdate(up updater, msg tea.Msg) (updater, tea.Msg) {
var pngMagicNumberData = []byte("\x89PNG\x0D\x0A\x1A\x0A")
-func mockResolveAbs(path string) (string, error) {
- return path, nil
-}
-
func TestEditorTypingForwardSlashOpensCompletions(t *testing.T) {
testEditor := newEditor(&app.App{}, mockDirLister([]string{}))
require.NotNil(t, testEditor)