Vscode: Keyboard actions in file explorer not working and is stuck in fancy tree filter mode

Created on 23 Jan 2019  路  21Comments  路  Source: microsoft/vscode


  • VSCode Version: 1.31.0-insider
  • OS Version: macOS 10.14.1 (18B75)

Steps to Reproduce:

Edit: These keyboard shortcuts are provided by the VSCode vim plugin.

  1. Use any action in file explorer A, a, j, k, etc...
  2. This should create file, folder, navigate, etc...

image

Other information:
Looks like this is introduced with: #66669

image

image

Looks like the option to configure what mode to use is not correctly working or fully exposed yet. After setting this option, the behavior is the same.


Does this issue occur when all extensions are disabled?: Yes

bug list verified

Most helpful comment

Will introduce exactly that: a keybinding/command which enables that mode, cancellable by Escape, in which users can use the filter. This behaviour would be regulated by a setting like workbench.list.manualKeyboardNavigation, defaulting to false. VIM users would have to switch it to true. Any user could switch it to true.

The golden hammer would be to have this working automatically if VIM is enabled... thinking more about it... 馃

All 21 comments

@joaomoreno I see that in the PR it was mentioned that workbench.tree.keyboardNavigation was the option, but in the code: https://github.com/Microsoft/vscode/blob/306feb428aaaca054afb97b80360972a00f71bd8/src/vs/platform/list/browser/listService.ts#L116

It is listed as workbench.list.keyboardNavigation. Is this a mistake/typo? Setting this option to "simple" restores the original functionality.

I decided to call it workbench.list.keyboardNavigation because it will apply to all lists, and trees are basically lists too.

It is listed as workbench.list.keyboardNavigation. Is this a mistake/typo? Setting this option to "simple" restores the original functionality.

So, setting workbench.list.keyboardNavigation = simple works for you?

@isidorn Verified that simple works great. So we just need to find a way to either automate this for VIM users, or communicate to the VIM extension that it should set keyboard navigation to simple and/or announce it in the release notes.

cc @jpoon

Sorry, what is this? Don't have context.

So we just need to find a way to either automate this for VIM users, or communicate to the VIM extension that it should set keyboard navigation to simple and/or announce it in the release notes.

At the minimum, we can add it to the VIM readme. Maybe I'm a purist, but I'm not a fan of extensions auto-setting workspace/workbench-scoped configurations (ie. I don't want extensions mucking with my settings).

my 2 cents: filtering should only kick in if a key is pressed that is not associated with a command. this behaviour is now broken not only for users of the VIM extension but anyone that changed keybindings to "printable" characters, if I am not mistaken?

EDIT: oops it is vim providing these defaults

@joaomoreno @bpasero The screenshot I took above was with all extensions disabled and these are alternative keyboard shortcuts that come with vscode for list navigation:

image

image

I don't think this has anything to do with the vim extension.

@joaomoreno Yep setting to "simple" restores the original functionality.

image

This also interferes with keyboard actions pertaining to creating new files:
image

@joaomoreno I like the fancy lists and I think maybe a hotkey toggle when the file explorer is focused would be really nice. Or better yet, as VIM users we could get the benefits of both worlds by toggling into the mode to do filtering and then go back to simple navigation.

Will introduce exactly that: a keybinding/command which enables that mode, cancellable by Escape, in which users can use the filter. This behaviour would be regulated by a setting like workbench.list.manualKeyboardNavigation, defaulting to false. VIM users would have to switch it to true. Any user could switch it to true.

The golden hammer would be to have this working automatically if VIM is enabled... thinking more about it... 馃

Was looking around and found a nice little article with a small extension:

https://medium.com/hack-visual-studio-code/toggle-any-setting-in-vs-code-using-keyboard-shortcut-arguments-cdb5ddc56955

settings.json:

    "settings.cycle": [
        {
            "id": "listMode", // must be unique
            "overrideWorkspaceSettings": false,
            "values": [
                {
                    "workbench.list.keyboardNavigation": "simple"
                },
                {
                    "workbench.list.keyboardNavigation": "filter"
                }
            ]
        }
    ],

keybindings.json:

  { "key": "cmd+shift+l", "command": "settings.cycle.listMode",
    "when": "explorerViewletVisible && filesExplorerFocus"
  },

I'm able to toggle modes while the explorer is active and be able to go between each. Unfortunately I can't use the VIM navigation when I toggle it back to simple:

jan-24-2019 09-39-15

Actually, simple also doesn't work for VIM since both the keyboard navigation and the vim keybindings kick in in sequence.

Proposal 1

  1. Introduce a new context key manualKeyboardNavigation which, when set to true, would require the user to press a certain keybinding to enable type filtering.
  2. Contribute that same keybinding
  3. Have VIM set that context to true in their activation function (using executeCommand('setContext', ...

Proposal 2

  1. Introduce a new setting workbench.list.manualKeyboardNavigation which, when set to true, would require the user to press a certain keybinding to enable type filtering.
  2. Contribute that same keybinding
  3. Have VIM change that setting to true in their activation function.

cc @jpoon Thoughts?

I would prefer a solution that does not change settings simply because a user is stuck with this setting once VIM is uninstalled again.

Fixed by introducing a new command list.toggleKeyboardNavigation and a new context key listAutomaticKeyboardNavigation which, when set to false`, requires the aforementioned command to be run in order to go into _filter_ mode.

I verified that setting the listAutomaticKeyboardNavigation context key disables the keyboard navigation and that it can be re-enabled with the keyboard shortcut

I verified that setting the listAutomaticKeyboardNavigation context key disables the keyboard navigation and that it can be re-enabled with the keyboard shortcut

@mjbvz would you please tell me where should i write this setting in vscode settings? Can't find out.
Tried settings.json, didn't worked for me.

@cherninely Hi~ I have found how to fix your problem!
You just need to set the
"workbench.list.keyboardNavigation": "filter" or
"workbench.list.keyboardNavigation": "highlight"
Since list.toggleKeyboardNavigation is to toggle navigation mode to filter or highlight. While you just set to simple, so the navigation mode is just simple after toggling(whether it is on or off).
image

So for those of us who don't use the VIM extension, is it possible for us to have a similar thing? I.e. only filter the tree if we toggle that filter mode with another shortcut?

If so how do we set it up? I don't have a setting for enabling/disabling automatic keyboard navigation (which I assume is the filter thing)?

@joaomoreno perhaps you can clarify?

Since list.toggleKeyboardNavigation is to toggle navigation mode to filter or highlight. While you just set to simple, so the navigation mode is just simple after toggling(whether it is on or off).

It looks we should wait for release of this option to try this out, cause i can't find it in my settings. Or somehow build vscode from master

https://github.com/Microsoft/vscode/issues/68233 Introduced a workbench.list.automaticKeyboardNavigation setting for people who have single letter keybindings for lists/trees. When false, you must run the list.toggleKeyboardNavigation command to enter filter mode, for which you can configure a keybinding.

This is already out in Insiders. It will come out next stable and I'll document it in the release notes.

Was this page helpful?
0 / 5 - 0 ratings