Enha: codingdir for coding assistant

This commit is contained in:
Grail Finder
2026-02-18 22:00:52 +03:00
parent f560ecf70b
commit 931b646c30
7 changed files with 61 additions and 2 deletions

View File

@@ -820,7 +820,7 @@ func makeFilePicker() *tview.Flex {
}
// Create UI elements
listView := tview.NewList()
listView.SetBorder(true).SetTitle("Files & Directories").SetTitleAlign(tview.AlignLeft)
listView.SetBorder(true).SetTitle("Files & Directories [c: set CodingDir]").SetTitleAlign(tview.AlignLeft)
// Status view for selected file information
statusView := tview.NewTextView()
statusView.SetBorder(true).SetTitle("Selected File").SetTitleAlign(tview.AlignLeft)
@@ -1032,6 +1032,37 @@ func makeFilePicker() *tview.Flex {
refreshList(currentDisplayDir, "")
return nil
}
if event.Rune() == 'c' {
// Set CodingDir to current directory
itemIndex := listView.GetCurrentItem()
if itemIndex >= 0 && itemIndex < listView.GetItemCount() {
itemText, _ := listView.GetItemText(itemIndex)
// Get the actual directory path
var targetDir string
if strings.HasPrefix(itemText, "Exit") || strings.HasPrefix(itemText, "Select this directory") {
targetDir = currentDisplayDir
} else {
actualItemName := itemText
if bracketPos := strings.Index(itemText, " ["); bracketPos != -1 {
actualItemName = itemText[:bracketPos]
}
if strings.HasPrefix(actualItemName, "../") {
targetDir = path.Dir(currentDisplayDir)
} else if strings.HasSuffix(actualItemName, "/") {
dirName := strings.TrimSuffix(actualItemName, "/")
targetDir = path.Join(currentDisplayDir, dirName)
} else {
targetDir = currentDisplayDir
}
}
cfg.CodingDir = targetDir
if err := notifyUser("CodingDir", "Set to: "+targetDir); err != nil {
logger.Error("failed to notify user", "error", err)
}
pages.RemovePage(filePickerPage)
return nil
}
}
case tcell.KeyEnter:
// Get the currently highlighted item in the list
itemIndex := listView.GetCurrentItem()