From ae251289b34bc970adc74aba8859f422e65c52e4 Mon Sep 17 00:00:00 2001 From: ray-x Date: Mon, 1 Aug 2022 03:09:43 +1000 Subject: [PATCH] issue #218 range format operator --- lua/navigator/formatting.lua | 8 ++++---- lua/navigator/lspclient/mapping.lua | 12 +++++++++--- 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/lua/navigator/formatting.lua b/lua/navigator/formatting.lua index d860120..37ff85d 100644 --- a/lua/navigator/formatting.lua +++ b/lua/navigator/formatting.lua @@ -1,5 +1,6 @@ -- 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 + return { format_hdl = function(err, result, ctx, _) -- FIXME: bufnr is nil if err ~= nil or result == nil then @@ -31,14 +32,13 @@ return { end end, 100) end, - range_foramt = function(err, result, ctx, _) - if err then - print("failed to format", vim.inspect(result), vim.inspect(ctx)) - end + range_format = function() local old_func = vim.go.operatorfunc _G.op_func_formatting = function() + print('formatting range') local start = 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.go.operatorfunc = old_func _G.op_func_formatting = nil diff --git a/lua/navigator/lspclient/mapping.lua b/lua/navigator/lspclient/mapping.lua index 784a1f8..03d90e5 100644 --- a/lua/navigator/lspclient/mapping.lua +++ b/lua/navigator/lspclient/mapping.lua @@ -61,7 +61,7 @@ local key_maps = { }, { key = 'ff', func = vim.lsp.buf.format, mode = 'n', desc = 'format' }, { key = 'ff', func = vim.lsp.buf.range_formatting, mode = 'v', desc = 'range format' }, - { key = 'rf', func = require('navigator.formatting').range_format, mode = 'n', desc = 'range_fmt_v' }, + { key = 'gm', func = require('navigator.formatting').range_format, mode = 'n', desc = 'range format operator e.g gmip' }, { key = 'wl', func = require('navigator.workspace').list_workspace_folders, desc = 'list_workspace_folders' }, { key = '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 {} log('setting maps to ', key_maps) end - local fmtkey, rfmtkey + local fmtkey, rfmtkey, nrfmtkey + require('navigator.formatting') for _, value in pairs(key_maps) do if value.doc then 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 end 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 + if string.find(value.desc, 'range format') and value.mode == 'n' then + nrfmtkey = value.key elseif string.find(value.desc, 'format') then fmtkey = value.key end @@ -264,6 +267,9 @@ local function set_mapping(lsp_attach_info) del_keymap('v', rfmtkey) 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) end