mirror of
https://github.com/kovidgoyal/kitty
synced 2026-06-12 19:49:32 +02:00
Allow simple interaction to pick save file name
can type and if no matches are found the typed text is used as the file name with a further opportunity to edit it.
This commit is contained in:
@@ -292,7 +292,7 @@ func (h *Handler) change_to_current_dir_if_possible() error {
|
||||
|
||||
func (h *Handler) finish_selection() error {
|
||||
if h.state.mode.CanSelectNonExistent() {
|
||||
h.initialize_save_file_name()
|
||||
h.initialize_save_file_name(h.state.suggested_save_file_name)
|
||||
return h.draw_screen()
|
||||
}
|
||||
h.lp.Quit(0)
|
||||
@@ -333,15 +333,17 @@ func (h *Handler) OnKeyEvent(ev *loop.KeyEvent) (err error) {
|
||||
return h.draw_screen()
|
||||
}
|
||||
case ev.MatchesPressOrRepeat("enter"):
|
||||
m := h.current_abspath()
|
||||
if h.state.mode.SelectFiles() {
|
||||
m := h.current_abspath()
|
||||
var s os.FileInfo
|
||||
if s, err = os.Stat(m); err != nil {
|
||||
h.lp.Beep()
|
||||
return nil
|
||||
}
|
||||
if s.IsDir() {
|
||||
return h.change_to_current_dir_if_possible()
|
||||
if m != "" {
|
||||
var s os.FileInfo
|
||||
if s, err = os.Stat(m); err != nil {
|
||||
h.lp.Beep()
|
||||
return nil
|
||||
}
|
||||
if s.IsDir() {
|
||||
return h.change_to_current_dir_if_possible()
|
||||
}
|
||||
}
|
||||
}
|
||||
if h.add_selection_if_possible() {
|
||||
@@ -350,7 +352,13 @@ func (h *Handler) OnKeyEvent(ev *loop.KeyEvent) (err error) {
|
||||
}
|
||||
return h.draw_screen()
|
||||
} else {
|
||||
h.lp.Beep()
|
||||
if h.state.mode.CanSelectNonExistent() {
|
||||
t := h.state.SearchText()
|
||||
h.initialize_save_file_name(utils.IfElse(t == "", h.state.suggested_save_file_name, t))
|
||||
return h.draw_screen()
|
||||
} else {
|
||||
h.lp.Beep()
|
||||
}
|
||||
}
|
||||
}
|
||||
case SAVE_FILE:
|
||||
|
||||
@@ -43,11 +43,11 @@ func (h *Handler) save_file_name_handle_key(ev *loop.KeyEvent) (err error) {
|
||||
return
|
||||
}
|
||||
|
||||
func (h *Handler) initialize_save_file_name() {
|
||||
func (h *Handler) initialize_save_file_name(use_fname_when_no_selections string) {
|
||||
h.state.screen = SAVE_FILE
|
||||
h.rl.ResetText()
|
||||
cdir := h.state.CurrentDir()
|
||||
fname := h.state.suggested_save_file_name
|
||||
fname := use_fname_when_no_selections
|
||||
if len(h.state.selections) > 0 {
|
||||
if q, err := filepath.Abs(h.state.selections[0]); err == nil {
|
||||
if s, err := os.Stat(q); err == nil {
|
||||
|
||||
Reference in New Issue
Block a user