issue #218 range format operator

fix-keymap-buffer
ray-x 2 years ago
parent a9c223cc22
commit ae251289b3

@ -1,5 +1,6 @@
-- https://github.com/wention/dotfiles/blob/master/.config/nvim/lua/config/lsp.lua -- https://github.com/wention/dotfiles/blob/master/.config/nvim/lua/config/lsp.lua
-- https://github.com/lukas-reineke/dotfiles/blob/master/vim/lua/lsp/handlers.lua -- https://github.com/lukas-reineke/dotfiles/blob/master/vim/lua/lsp/handlers.lua
return { return {
format_hdl = function(err, result, ctx, _) -- FIXME: bufnr is nil format_hdl = function(err, result, ctx, _) -- FIXME: bufnr is nil
if err ~= nil or result == nil then if err ~= nil or result == nil then
@ -31,14 +32,13 @@ return {
end end
end, 100) end, 100)
end, end,
range_foramt = function(err, result, ctx, _) range_format = function()
if err then
print("failed to format", vim.inspect(result), vim.inspect(ctx))
end
local old_func = vim.go.operatorfunc local old_func = vim.go.operatorfunc
_G.op_func_formatting = function() _G.op_func_formatting = function()
print('formatting range')
local start = vim.api.nvim_buf_get_mark(0, '[') local start = vim.api.nvim_buf_get_mark(0, '[')
local finish = vim.api.nvim_buf_get_mark(0, ']') local finish = vim.api.nvim_buf_get_mark(0, ']')
print(vim.inspect(start), vim.inspect(finish))
vim.lsp.buf.range_formatting({}, start, finish) vim.lsp.buf.range_formatting({}, start, finish)
vim.go.operatorfunc = old_func vim.go.operatorfunc = old_func
_G.op_func_formatting = nil _G.op_func_formatting = nil

@ -61,7 +61,7 @@ local key_maps = {
}, },
{ key = '<Space>ff', func = vim.lsp.buf.format, mode = 'n', desc = 'format' }, { key = '<Space>ff', func = vim.lsp.buf.format, mode = 'n', desc = 'format' },
{ key = '<Space>ff', func = vim.lsp.buf.range_formatting, mode = 'v', desc = 'range format' }, { key = '<Space>ff', func = vim.lsp.buf.range_formatting, mode = 'v', desc = 'range format' },
{ key = '<Space>rf', func = require('navigator.formatting').range_format, mode = 'n', desc = 'range_fmt_v' }, { key = '<Space>gm', func = require('navigator.formatting').range_format, mode = 'n', desc = 'range format operator e.g gmip' },
{ key = '<Space>wl', func = require('navigator.workspace').list_workspace_folders, desc = 'list_workspace_folders' }, { key = '<Space>wl', func = require('navigator.workspace').list_workspace_folders, desc = 'list_workspace_folders' },
{ key = '<Space>la', mode = 'n', func = require('navigator.codelens').run_action, desc = 'run code lens action' }, { key = '<Space>la', mode = 'n', func = require('navigator.codelens').run_action, desc = 'run code lens action' },
} }
@ -177,7 +177,8 @@ local function set_mapping(lsp_attach_info)
key_maps = _NgConfigValues.keymaps or {} key_maps = _NgConfigValues.keymaps or {}
log('setting maps to ', key_maps) log('setting maps to ', key_maps)
end end
local fmtkey, rfmtkey local fmtkey, rfmtkey, nrfmtkey
require('navigator.formatting')
for _, value in pairs(key_maps) do for _, value in pairs(key_maps) do
if value.doc then if value.doc then
vim.notify('doc field no longer supported in navigator mapping, use desc instead') vim.notify('doc field no longer supported in navigator mapping, use desc instead')
@ -211,8 +212,10 @@ local function set_mapping(lsp_attach_info)
opts.desc = value.desc opts.desc = value.desc
end end
vim.keymap.set(value.mode or 'n', value.key, value.func, opts) vim.keymap.set(value.mode or 'n', value.key, value.func, opts)
if string.find(value.desc, 'range format') then if string.find(value.desc, 'range format') and value.mode == 'v' then
rfmtkey = value.key rfmtkey = value.key
if string.find(value.desc, 'range format') and value.mode == 'n' then
nrfmtkey = value.key
elseif string.find(value.desc, 'format') then elseif string.find(value.desc, 'format') then
fmtkey = value.key fmtkey = value.key
end end
@ -264,6 +267,9 @@ local function set_mapping(lsp_attach_info)
del_keymap('v', rfmtkey) del_keymap('v', rfmtkey)
end end
if not range_fmt and nrfmtkey then
del_keymap('n', nrfmtkey)
end
log('enable format ', doc_fmt, range_fmt, _NgConfigValues.lsp.format_on_save) log('enable format ', doc_fmt, range_fmt, _NgConfigValues.lsp.format_on_save)
end end

Loading…
Cancel
Save