Files
dotfiles/.vscode/extensions/asvetliakov.vscode-neovim-1.18.24/runtime/vscode/code_actions.lua
2025-12-15 12:50:23 -05:00

54 lines
1.5 KiB
Lua

local vscode = require("vscode")
local function esc()
local key = vim.api.nvim_replace_termcodes("<esc>", true, true, true)
vim.api.nvim_feedkeys(key, "n", false)
end
local k = function(mode, lhs, rhs)
vim.keymap.set(mode, lhs, rhs, { expr = true }) -- expr is required
end
------------
-- Format --
------------
local format = vscode.to_op(function(ctx)
vscode.action("editor.action.formatSelection", { range = ctx.range, callback = esc })
end)
local format_line = function()
return format() .. "_"
end
k({ "n", "x" }, "gq", format)
k({ "n" }, "gqq", format_line)
k({ "n", "x" }, "=", format)
k({ "n" }, "==", format_line)
-------------
-- Comment --
-------------
local comment = vscode.to_op(function(ctx)
local cmd = ctx.is_linewise and "editor.action.commentLine" or "editor.action.blockComment"
local opts = { range = ctx.range, callback = esc }
if ctx.is_linewise and ctx.is_current_line then
opts.range = nil
end
vscode.action(cmd, opts)
end)
local comment_line = function()
return comment() .. "_"
end
k({ "n", "x" }, "gc", comment)
k({ "n" }, "gcc", comment_line)
k({ "x" }, "<C-/>", comment)
k({ "n" }, "<C-/>", comment_line)
-- legacy {{{
k({ "n", "x" }, "<Plug>VSCodeCommentary", comment)
k({ "n" }, "<Plug>VSCodeCommentaryLine", comment_line)
vim.api.nvim_create_user_command("VSCodeCommentary", function(arg)
vscode.action("editor.action.commentLine", { range = { arg.line1 - 1, arg.line2 - 1 } })
end, { bang = true, range = true })
-- }}}