chore: resolve merge conflicts carefully

tauraamui created

Change summary

internal/fsext/ls.go                               | 14 +++-
internal/tui/components/chat/editor/editor.go      | 46 ++++++++-------
internal/tui/components/chat/editor/editor_test.go |  6 -
3 files changed, 34 insertions(+), 32 deletions(-)

Detailed changes

internal/fsext/ls.go 🔗

@@ -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,

internal/tui/components/chat/editor/editor.go 🔗

@@ -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()))
 }

internal/tui/components/chat/editor/editor_test.go 🔗

@@ -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)