sayanarijit / xplr

A hackable, minimal, fast TUI file explorer
https://xplr.dev
MIT License
4.06k stars 75 forks source link

Hitting enter after esc takes a long time #685

Closed sayanarijit closed 2 months ago

sayanarijit commented 6 months ago

Discussed in https://github.com/sayanarijit/xplr/discussions/684

Originally posted by **ElSamhaa** January 1, 2024 Great project btw 🙂
sayanarijit commented 6 months ago

Config:

version = '0.21.3'

xplr.config.general.selection_ui.style = {
  add_modifiers = { "CrossedOut", "Reversed" },
}

xplr.config.general.focus_selection_ui.style = {
  add_modifiers = { "Bold", "CrossedOut", "Reversed" },
}

xplr.config.modes.custom.Z = {
  name = "Z",
  key_bindings = {
    on_key = {
      Z = {
        messages = {
          "PrintPwdAndQuit",
        },
      },
      Q = {
        messages = {
          "Quit",
        },
      },
    },
  },
}

xplr.config.modes.builtin.default.key_bindings.on_key["Z"] = {
  messages = {
    { SwitchModeCustom = "Z" },
  },
}

xplr.config.modes.builtin.default.key_bindings.on_key["enter"] = { messages = { "Enter" } }

xplr.config.modes.builtin.default.key_bindings.on_key["e"] = xplr.config.modes.builtin.action.key_bindings.on_key.e

xplr.config.modes.builtin.search.key_bindings.on_key.enter.messages = { "Enter", "PopMode" }

xplr.config.modes.builtin.search.key_bindings.on_key["/"] = { messages = { "Enter", "ResetInputBuffer" } }
sayanarijit commented 6 months ago

https://private-user-images.githubusercontent.com/34912861/293594792-46b64316-4ed2-4f82-b5e4-453c37892663.mov?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MDQxMjY0NjksIm5iZiI6MTcwNDEyNjE2OSwicGF0aCI6Ii8zNDkxMjg2MS8yOTM1OTQ3OTItNDZiNjQzMTYtNGVkMi00ZjgyLWI1ZTQtNDUzYzM3ODkyNjYzLm1vdj9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDAxMDElMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwMTAxVDE2MjI0OVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTk2MGIxOTAzYjJhODEyOTg5MDgzMGFkODJiYWM0MmEzMDliMjU1YWU1ZWQ0Y2ZiOTJjZjNhMGI3MTViMDliNzUmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.CMii411dK_tKn368yrVcg1B8ocz8RPC-s9hraNL8enI

ElSamhaa commented 6 months ago

@sayanarijit I've found out that it's happening when I'm using tmux for some reason. Without tmux, it works fine. It's still interesting because I'm not experiencing this issue with vim even under tmux.

sayanarijit commented 6 months ago

Check your tmux key bindings...

ElSamhaa commented 6 months ago

Found this https://github.com/tmux/tmux/wiki/FAQ#what-is-the-escape-time-option-is-zero-a-good-value I've fixed it for xplr by setting set -g escape-time 0. Still, I can't understand why I'm not facing the same under vim/neovim? Maybe xplr handles escape sequences differently?

here is my only set tmux keybindings:

bind h select-pane -L
bind j select-pane -D
bind k select-pane -U
bind l select-pane -R

bind -r C-h resize-pane -L
bind -r C-j resize-pane -D
bind -r C-k resize-pane -U
bind -r C-l resize-pane -R

bind -nr C-j 'send-keys Down'
bind -nr C-k 'send-keys Up'

bind -r C-n 'swapw -s +1; next-window'
bind -r C-p 'swapw -s -1; previous-window'
sayanarijit commented 2 months ago

Thanks for posting the solution. xplr uses crossterm for input reading, so its behavior depends on how crossterm handles inputs.

Closing this...