Tab broken in version 0.46.3 (MacOS)

After updating this morning, tab is no longer accepting inline suggestions. I am using emacs-mcx keyboard shortcuts so it is defaulting to tabToTabStop, but it was working before this update and I can’t seem to add it back.

2025-02-25 08:21:27.432 [info] [KeybindingService]: / Soft dispatching keyboard event
2025-02-25 08:21:27.432 [info] [KeybindingService]: | Resolving [Tab]
2025-02-25 08:21:27.433 [info] [KeybindingService]: \ From 13 keybinding entries, matched emacs-mcx.tabToTabStop, when: config.emacs-mcx.emacsLikeTab && editorTextFocus && !editorHoverFocused && !editorParameterHintsVisible && !editorReadonly && !editorTabCompletion && !editorTabMovesFocus && !inSnippetMode && !inlineSuggestionVisible && !suggestWidgetVisible, source: user extension tuttieee.emacs-mcx.
2025-02-25 08:21:27.433 [info] [KeybindingService]: / Received  keydown event - modifiers: [], code: Tab, keyCode: 9, key: Tab
2025-02-25 08:21:27.433 [info] [KeybindingService]: | Converted keydown event - modifiers: [], code: Tab, keyCode: 2 ('Tab')

I removed any “tab” shortcuts in my keyboard shortcuts JSON so aside of emacs-mcx things should be default. Here is an image of all things bound to tab:

The cursor suggestion also still displays “Tab” as the completion ley but I’ve found the visual shortcut queues to frequently be incorrect.

7 Likes

I was able to fix this for now by adding tab to my user keyboard shortcuts:

{
    "key": "tab",
    "command": "editor.action.acceptCursorTabSuggestion",
    "when": "cpp.shouldAcceptTab"
  }

Even though “Accept Cursor Tab Settings” is there in system settings, it was not registering and instead matching the emacs-mcx extension. I assumed these were in order of precedence. Perhaps something in the latest update or VSCode changed? It’s duplicated now in the GUI editor but that’s fine for now.

3 Likes

I am having the same issue in 0.46.3 and 0.46.4 on MacOS. Tab to accept inline suggestion is no longer working.

1 Like

I uninstalled and reinstalled Version: 0.45.15 and Tab to accept is working again. This definitely seems like a bug in 0.46.x.

2 Likes

Appreciate the validation. Lost of weird keybinding issues in 0.46. It seems they’re trying undo some of the keybind hijacking in this release. I’m curious how many developer hours were lost. 3 hours so far for me.

3 Likes

Hey, this was a bug in that version, but I believe this should be resolved in whichever version is the latest available to you (0.45.15 or 0.46.x)!

1 Like

I’m still getting it. I use VSpaceMacs extension so that may complicate things, but i’ve never had an issue in previous versions. I’m currently on. I applied @jhirn suggestion and it isn’t working for me. What i have realized is that it always fails when i’m in vim mode, not insert mode

Version: 0.46.7 (Universal)

VSCode Version: 1.96.2

Commit: 3611c5390c448b242ab97e328493bb8ef7241e60

Date: 2025-02-27T07:15:37.748Z (7 hrs ago)

Electron: 32.2.6

Chromium: 128.0.6613.186

Node.js: 20.18.1

V8: 12.8.374.38-electron.0

OS: Darwin arm64 23.6.0
1 Like

Fwiw my keybindings.json looked like this

  {
    "key": "tab",
    "command": "extension.vim_tab",
    "when": "editorTextFocus && vim.active && !inDebugRepl && vim.mode != 'Insert' && editorLangId != 'magit'"
  },
  {
    "key": "tab",
    "command": "-extension.vim_tab",
    "when": "editorTextFocus && vim.active && !inDebugRepl && vim.mode != 'Insert'"
  },

I followed @jhirn suggestion to add

{
    "key": "tab",
    "command": "editor.action.acceptCursorTabSuggestion",
    "when": "cpp.shouldAcceptTab"
  }

Above those so my final keybindings.json has

  {
    "key": "tab",
    "command": "editor.action.acceptCursorTabSuggestion",
    "when": "cpp.shouldAcceptTab"
  },
  {
    "key": "tab",
    "command": "extension.vim_tab",
    "when": "editorTextFocus && vim.active && !inDebugRepl && vim.mode != 'Insert' && editorLangId != 'magit'"
  },
  {
    "key": "tab",
    "command": "-extension.vim_tab",
    "when": "editorTextFocus && vim.active && !inDebugRepl && vim.mode != 'Insert'"
  },

And its still not working :man_shrugging:

1 Like

Cursor v0.46.9:

Tab bug still exists: Tab completes emmet suggestion before cursor AI graytext

1 Like

Hi, I’m having same issue, tab is not working.

Version: 0.46.9

I seem to be experiencing this as well on Linux. Did not have problems until 0.46

The gray text suggesion seems to accept fine if the cursor is at the proper indent level. If not, I get this in the keybinding debugger:

2025-03-07 14:17:38.922 [info] [KeybindingService]: \ From 14 keybinding entries, no when clauses matched the context.

Just to add one point of clarity here, i realized tab works when Vim is in Insert Mode but doesnt work in Normal Mode. I’ve gotten a little accustomed to just switching to Insert Mode when i want to make changes but its kinda annoying

Hey @smaccoun. I see you’re using a vim extension. I am using emacs (emacs-mcx specifically). What I’ve found is some of the cursor keybindings do not show up in keyboard troubleshooting which is super problematic. After adding the keybinding I suggested I see this in the Output window:

2025-03-12 15:41:30.696 [info] [KeybindingService]: \ From 14 keybinding entries, matched editor.action.acceptCursorTabSuggestion, when: cpp.shouldAcceptTab, source: user.
2025-03-12 15:41:30.697 [info] [KeybindingService]: / Received  keydown event - modifiers: [], code: Tab, keyCode: 9, key: Tab
2025-03-12 15:41:30.697 [info] [KeybindingService]: | Converted keydown event - modifiers: [], code: Tab, keyCode: 2 ('Tab')
2025-03-12 15:41:30.697 [info] [KeybindingService]: | Resolving [Tab]
2025-03-12 15:41:30.697 [info] [KeybindingService]: \ From 14 keybinding entries, matched editor.action.acceptCursorTabSuggestion, when: cpp.shouldAcceptTab, source: user.
2025-03-12 15:41:30.697 [info] [KeybindingService]: + Invoking command editor.action.acceptCursorTabSuggestion.

Without the user setting (which is a duplicate of the “system” setting) I get this:

2025-03-12 15:42:52.061 [info] [KeybindingService]: / Received keydown event - modifiers: [], code: Tab, keyCode: 9, key: Tab

2025-03-12 15:42:52.061 [info] [KeybindingService]: | Converted keydown event - modifiers: [], code: Tab, keyCode: 2 ('Tab')

2025-03-12 15:42:52.061 [info] [KeybindingService]: | Resolving [Tab]

2025-03-12 15:42:52.061 [info] [KeybindingService]: \ From 13 keybinding entries, matched emacs-mcx.tabToTabStop, when: config.emacs-mcx.emacsLikeTab && editorTextFocus && !editorHoverFocused && !editorParameterHintsVisible && !editorReadonly && !editorTabCompletion && !editorTabMovesFocus && !inSnippetMode && !inlineSuggestionVisible && !suggestWidgetVisible, source: user extension tuttieee.emacs-mcx.

I’m also using this extension which restore some sanity to default keybindings: GitHub - tjx666/vscode-classic-experience: Restore familiar VSCode keybindings in Cursor editor. Smooth transition for VSCode users.. I’m curious if that will help create a sane base for your vim extension to sit on top of. It enabled me to remove a bunch of settings that Cursor stomped on.

I only had one issue with the extension because it uses cmd+] for add to chat which conflicted with indent. I edited this in the GUI keybinding which emitted the following JSON to rebind to a chord cmd+c cmd+c:

{
    "key": "ctrl+c ctrl+c",
    "command": "aichat.close-sidebar",
    "when": "view.workbench.panel.aichat.view.visible"
  },
  {
    "key": "cmd+]",
    "command": "-aichat.close-sidebar",
    "when": "view.workbench.panel.aichat.view.visible"
  },
  {
    "key": "ctrl+c ctrl+c",
    "command": "aichat.newchataction",
    "when": "!view.workbench.panel.aichat.view.visible"
  },
  {
    "key": "cmd+]",
    "command": "-aichat.newchataction",
    "when": "!view.workbench.panel.aichat.view.visible"
  }

Not sure if that helps at all but figured I’d share. Plus it’s just good for the world to have emacs and vim users helping each other.