return { 'johmsalas/text-case.nvim', config = function() local textcase = require('textcase') require("telescope").load_extension("textcase") textcase.setup({ default_keymappings_enabled = false, enable_methods = { 'to_upper_case', 'to_lower_case', 'to_snake_case', 'to_dash_case', 'to_title_dash_case', 'to_constant_case', 'to_dot_case', 'to_phrase_case', 'to_camel_case', 'to_pascal_case', 'to_title_case', 'to_path_case', 'to_upper_phrase_case', 'to_lower_phrase_case', }, }) local changes = { -- 'to_upper_case', -- 'to_lower_case', { type = 'to_snake_case', keys = 's', lsp = true }, { type = 'to_dash_case', keys = '-', lsp = false }, { type = 'to_title_dash_case', keys = 't-', lsp = false }, { type = 'to_constant_case', keys = 'u', lsp = true }, { type = 'to_dot_case', keys = '.', lsp = false }, -- 'to_phrase_case', { type = 'to_camel_case', keys = 'c', lsp = true }, { type = 'to_pascal_case', keys = 'm', lsp = true }, -- 'to_title_case', { type = 'to_path_case', keys = '/', lsp = false }, -- 'to_upper_phrase_case', -- 'to_lower_phrase_case', } for _, change in ipairs(changes) do -- normal mode current word vim.keymap.set('n', 'cr' .. change.keys, function() textcase.current_word(change.type) end, { noremap = true }) -- normal mode lsp rename if change.lsp then vim.keymap.set('n', 'cr' .. string.upper(change.keys), function() textcase.lsp_rename(change.type) end, { noremap = true }) end -- visual mode selection vim.keymap.set('v', 'T' .. change.keys, function() textcase.visual(change.type) end, { noremap = true }) end end }