Cursor plugin for Neovim?

My setup is like this:

In init.lua:

if vim.g.vscode then
    require "vscode_keymaps"
    require "options"
else
    ... my normal neovim config

then in vscode_keymaps define your vscode/cursor stuff. For example:

local keymap = vim.keymap.set
local opts = {
    noremap = true,
    silent = true
}

-- remap leader key
keymap("n", "<Space>", "", opts)
vim.g.mapleader = " "
vim.g.maplocalleader = " "

-- general keymaps
keymap({"n", "v"}, "<leader>t", "<cmd>lua require('vscode').action('workbench.action.terminal.toggleTerminal')<CR>")
keymap({"n", "v"}, "<leader>b", "<cmd>lua require('vscode').action('editor.debug.action.toggleBreakpoint')<CR>")
keymap({"n", "v"}, "<leader>d", "<cmd>lua require('vscode').action('editor.action.showHover')<CR>")
keymap({"n", "v"}, "<leader>a", "<cmd>lua require('vscode').action('editor.action.quickFix')<CR>")
keymap({"n", "v"}, "<leader>sp", "<cmd>lua require('vscode').action('workbench.actions.view.problems')<CR>")
keymap({"n", "v"}, "<leader>cn", "<cmd>lua require('vscode').action('notifications.clearAll')<CR>")
keymap({"n", "v"}, "<leader>ff", "<cmd>lua require('vscode').action('workbench.action.quickOpen')<CR>")
keymap({"n", "v"}, "<leader>cp", "<cmd>lua require('vscode').action('workbench.action.showCommands')<CR>")
keymap({"n", "v"}, "<leader>pr", "<cmd>lua require('vscode').action('code-runner.run')<CR>")
keymap({"n", "v"}, "<leader>fd", "<cmd>lua require('vscode').action('editor.action.formatDocument')<CR>")

Most important in my setup are they autocmd’s. See my options.lua where I let the editor return from Insert mode to Normal mode after a timeout.

vim.api.nvim_create_autocmd("InsertEnter", {
    callback = function()
        if is_normal_buffer() then
            vim.b.updaterestore = vim.opt.updatetime:get()
            vim.opt.updatetime = 10000
        end
    end
})

vim.api.nvim_create_autocmd("InsertLeave", {
    callback = function()
        if is_normal_buffer() and vim.b.updaterestore then
            vim.opt.updatetime = vim.b.updaterestore
            vim.b.updaterestore = nil
        end
    end
})

Hope this helps

4 Likes