require('buildcmd') local tbuiltin = require('telescope.builtin') vim.g.mapleader = ' ' --space -- Mappings, mostly taken from nvim-lspconfig local opts = { noremap=true, silent=true } vim.keymap.set('n', 'q', vim.diagnostic.open_float, opts) vim.keymap.set('n', 'e', 'Ex', opts) vim.keymap.set('n', 'ff', tbuiltin.find_files, opts) vim.keymap.set('n', 'fb', 'Telescope buffers', opts) vim.keymap.set('n', 'bb', save_all_and_build, opts) vim.keymap.set('n', 'br', save_all_and_buildnrun, opts) -- TODO: get fancy and read the commentstring and user vim.keymap.set('i', '', '// TODO(twig): ', opts) vim.keymap.set('i', '', '// NOTE(twig): ', opts) vim.api.nvim_set_keymap('i', '', '->', opts) --vim.api.nvim_set_keymap('i', '', '->', opts) -- This is horrendous on windows, can't use nvim for almost a minute! vim.keymap.set('n', 'K', '') vim.keymap.set('n', 'fs', 'Telescope grep_string', opts) vim.keymap.set('n', 'ss', 'Telescope spell_suggest', opts) vim.keymap.set('n', 't', 'Telescope', opts) local dap = require('dap') local on_attach = function(client, bufnr) client.server_capabilities.semanticTokensProvider = nil vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc') -- Mappings local bufopts = { noremap=true, silent=true, buffer=bufnr } -- Replace these with telescope equivalent vim.keymap.set('n', 'rb', vim.lsp.buf.declaration, bufopts) vim.keymap.set('n', 'rd', vim.lsp.buf.definition, bufopts) vim.keymap.set('n', 'rf', tbuiltin.lsp_references, bufopts) vim.keymap.set('n', 'rs', tbuiltin.lsp_document_symbols, bufopts) vim.keymap.set('n', 'rr', vim.lsp.buf.rename, bufopts) --vim.keymap.set('i', '', v:lua.vim.lsp.omnifunc, bufopts) --DAP vim.keymap.set('n', '', dap.continue, bufopts) vim.keymap.set('n', '', dap.toggle_breakpoint, bufopts) vim.keymap.set('n', '', dap.step_over, bufopts) vim.keymap.set('n', '', dap.step_into, bufopts) vim.keymap.set('n', '', dap.step_out, bufopts) --TODO: dap.ui.widgets, widgets.sidebar end local godot_port = os.getenv 'GDScript_Port' or '6005' local lsps = { { "clangd", { cmd = { 'clangd', '--clang-tidy', }, root_markers = { '.clangd', 'compile_commands.json' }, filetypes = { 'c', 'cpp', 'h' }, on_attach = on_attach, } }, { "luals", { cmd = { 'lua-language-server', }, root_markers = { '.git', 'init.lua' }, filetypes = { 'lua' }, on_attach = on_attach, } }, { "python-lsp", { cmd = { 'pylsp' }, root_markers = { '.git' }, filetypes = { 'py' }, on_attach = on_attach, } }, { "godot-lsp", { cmd = vim.lsp.rpc.connect('127.0.0.1', tonumber(godot_port)), filetypes = { 'gd', 'gdscript', 'gdscript3' }, root_markerts = {'project.godot', '.git' }, on_attach = on_attach, } } } for _, lsp in pairs(lsps) do local name, config = lsp[1], lsp[2] vim.lsp.enable(name) if config then vim.lsp.config(name, config) end end