lazygit icon indicating copy to clipboard operation
lazygit copied to clipboard

Key bindings in custom commands are all mapped to lower cases

Open fenguoerbian opened this issue 1 year ago • 6 comments

Describe the bug In my config.yaml I've set two custom commands to push and pull to specific remotes and branches. This part of the config is shown as below

customCommands:
  - key: '<c-p>'
    description: "Pull from a specific remote repository"
    context: 'files'
    loadingText: 'Pulling ...'
    command: git pull {{ .Form.Remote }} {{ .Form.RemoteBranch }}
    prompts:
      - type: 'input'
        key: 'Remote'
        title: "Remote:"
        suggestions:
          preset: 'remotes'
      - type: 'input'
        key: 'RemoteBranch'
        title: "Remote branch:"
        suggestions:
          command: "git branch --remote --list '{{.Form.Remote}}/*' --format='%(refname:short)' | sed 's/{{.Form.Remote}}\\///'"
  - key: '<c-P>' # '<c-P>' will not work?, seems to be same as '<c-p>', please use '?' in file panel to bring up the keybindings menu
    description: "Push to a specific remote repository"
    context: 'files'
    loadingText: 'Pus hing ...'
    command: git push {{ .Form.Remote }} {{ .Form.RemoteBranch }}
    prompts:
      - type: 'input'
        key: 'Remote'
        title: "Remote:"
        suggestions:
          preset: 'remotes'
      - type: 'input'
        key: 'RemoteBranch'
        title: "Remote branch:"
        suggestions:
          command: "git branch --remote --list '{{.Form.Remote}}/*' --format='%(refname:short)' | sed 's/{{.Form.Remote}}\\///'"          

The key bindings for these two commands are <c-p> and <c-P>. But in actuality they are all mapped to <c-p> in lazygit, see the screenshot below:

lazygit_keybinding_problems

To Reproduce As described in the bug description

Expected behavior I'm not sure whether the custom command keybindings support the capital letter or am I just missing some config settings to setup a keybinding with capital letter.

Version info: lazygit version: commit=3675570a391b1a49ddd198b4c7e71e17701d4404, build date=2024-03-23T09:09:11Z, build source=binaryRelease, version=0.41.0, os=windows, arch=amd64, git version=2.43.0.windows.1

git version: git version 2.43.0.windows.1

Note: please try updating to the latest version or manually building the latest master to see if the issue still occurs.

fenguoerbian avatar Apr 03 '24 08:04 fenguoerbian

hi, I'll like to give this one a try. Can someone assign me?

dsolerh avatar Apr 09 '24 14:04 dsolerh

@dsolerh feel free to take it, do note that I'm not sure if this is just a bug that we map everything as lowercase, or if we can't actually detect <c-p> vs <c-shift-p>.

mark2185 avatar Apr 09 '24 15:04 mark2185

yes, I think the clear way to implement it will be using <c-shift-something> in that case we'll have to add all those keys to the map, and I guess that check how they are converted to actual key press

dsolerh avatar Apr 09 '24 15:04 dsolerh

Hi, I can't find a way to capture an key event when I press ctr+shift+, I. think that the tcell package does not support this: image https://pkg.go.dev/github.com/gdamore/tcell/[email protected]#ModShift

dsolerh avatar Apr 09 '24 19:04 dsolerh

@stefanhaller you've been elbow-deep in the tcell, you could probably answer this off the cuff.

mark2185 avatar Apr 09 '24 20:04 mark2185

I'm not an expert here either, but my suspicion is that it's just not possible unless tcell implements https://github.com/gdamore/tcell/issues/671.

stefanhaller avatar Apr 11 '24 18:04 stefanhaller