local indent = require 'config.keymaps.indent' local map = require 'config.helpers.keymap' local n = map 'n' local i = map 'i' local v = map 'v' local t = map 't' local nv = map { 'n', 'v' } n 'j' 'gj' 'Move: down by line' n 'k' 'gk' 'Move: up by line' n '' ':bn' 'Buffer: next' n '' ':bp' 'Buffer: previous' n 'bd' ':bd' 'Buffer: delete' t '' [[]] 'Exit from terminal mode' n '' 'h' 'Window: move left' n '' 'j' 'Window: move down' n '' 'k' 'Window: move up' n '' 'l' 'Window: move right' -- Indentation i '' (indent.smarttab) { 'Indent', expr = true } v '>' '>gv' 'Indent right' v '<' 'e' (vim.diagnostic.open_float) 'Open error diagnostics' n '[d' (vim.diagnostic.goto_prev) 'Previous diagnostic message' n ']d' (vim.diagnostic.goto_next) 'Next diagnostic message' n 'dl' (vim.diagnostic.setloclist) 'Diagnostic: list messages' -- X local function insert_date() local row, col = unpack(vim.api.nvim_win_get_cursor(0)) local text = os.date '!%Y-%m-%dT%H:%M:%SZ' ---@cast text string col = math.min(#vim.api.nvim_get_current_line(), col + 1) vim.api.nvim_buf_set_text(0, row - 1, col, row - 1, col, { text }) end n 'xd' (insert_date) 'Execute: full date' v 'xs' [[:sort]] 'Sort: by first word' -- Meta local function open_config() vim.fn.chdir '~/.config/nvim' vim.cmd 'Explore' end n 'mn' (open_config) 'Meta: neovim config' n 'ml' ':Lazy' 'Meta: lazy' -- LSP do local group = vim.api.nvim_create_augroup('UserLspConfig', {}) local function setup_lsp_keymaps(ev) -- Enable completion triggered by vim.bo[ev.buf].omnifunc = 'v:lua.vim.lsp.omnifunc' local function format() vim.lsp.buf.format({ async = true }) end local function format_selection() vim.lsp.buf.format({ async = true, range = { ["start"] = vim.api.nvim_buf_get_mark(0, "<"), ["end"] = vim.api.nvim_buf_get_mark(0, ">"), } }) end local function workspaces_list() print(vim.inspect(vim.lsp.buf.list_workspace_folders())) end local function toggle_inlay_hints() vim.lsp.inlay_hint.enable(not vim.lsp.inlay_hint.is_enabled({})) end local buffer = ev.buf n ',' (toggle_inlay_hints) {'LSP: show inlay hints', buffer} n 'K' (vim.lsp.buf.hover) {'LSP: show hover help', buffer} n '' (vim.lsp.buf.signature_help) {'LSP: signature help', buffer} n 'ld' (vim.lsp.buf.definition) {'LSP: definition', buffer} n 'lD' (vim.lsp.buf.declaration) {'LSP: declaration', buffer} n 'li' (vim.lsp.buf.implementation) {'LSP: implementation', buffer} n 'lR' (vim.lsp.buf.references) {'LSP: references', buffer} n 'lt' (vim.lsp.buf.type_definition) {'LSP: type definition', buffer} n 'lr' (vim.lsp.buf.rename) {'LSP: rename identifier', buffer} nv 'la' (vim.lsp.buf.code_action) {'LSP: code actions', buffer} n 'lf' (format) {'LSP: format file', buffer} v 'lf' (format_selection) {'LSP: format file', buffer} n 'wa' (vim.lsp.buf.add_workspace_folder) {'LSP: add workspace folder', buffer} n 'wr' (vim.lsp.buf.remove_workspace_folder) {'LSP: remove workspace folder', buffer} n 'wl' (workspaces_list) {'LSP: list workspace folders', buffer} end vim.api.nvim_create_autocmd('LspAttach', { group = group, callback = setup_lsp_keymaps }) end