summaryrefslogtreecommitdiff
path: root/tables.go
diff options
context:
space:
mode:
Diffstat (limited to 'tables.go')
-rw-r--r--tables.go33
1 files changed, 32 insertions, 1 deletions
diff --git a/tables.go b/tables.go
index 086bdf7..a69bb1a 100644
--- a/tables.go
+++ b/tables.go
@@ -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()