nvim/lua/keybindings.lua

105 lines
3.4 KiB
Lua

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', '<leader>q', vim.diagnostic.open_float, opts)
vim.keymap.set('n', '<leader>e', '<cmd>Ex<CR>', opts)
vim.keymap.set('n', '<leader>ff', tbuiltin.find_files, opts)
vim.keymap.set('n', '<leader>fb', '<cmd>Telescope buffers<cr>', opts)
vim.keymap.set('n', '<leader>bb', save_all_and_build, opts)
vim.keymap.set('n', '<leader>br', save_all_and_buildnrun, opts)
-- TODO: get fancy and read the commentstring and user
vim.keymap.set('i', '<A-t>', '// TODO(twig): ', opts)
vim.keymap.set('i', '<A-y>', '// NOTE(twig): ', opts)
vim.api.nvim_set_keymap('i', '<C-.>', '->', opts)
--vim.api.nvim_set_keymap('i', '<A-.>', '->', opts)
-- This is horrendous on windows, can't use nvim for almost a minute!
vim.keymap.set('n', 'K', '')
vim.keymap.set('n', '<leader>fs', '<cmd>Telescope grep_string<cr>', opts)
vim.keymap.set('n', '<leader>ss', '<cmd>Telescope spell_suggest<cr>', opts)
vim.keymap.set('n', '<leader>t', '<cmd>Telescope<cr>', 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', '<leader>rb', vim.lsp.buf.declaration, bufopts)
vim.keymap.set('n', '<leader>rd', vim.lsp.buf.definition, bufopts)
vim.keymap.set('n', '<leader>rf', tbuiltin.lsp_references, bufopts)
vim.keymap.set('n', '<leader>rs', tbuiltin.lsp_document_symbols, bufopts)
vim.keymap.set('n', '<leader>rr', vim.lsp.buf.rename, bufopts)
--vim.keymap.set('i', '<A-.>', v:lua.vim.lsp.omnifunc, bufopts)
--DAP
vim.keymap.set('n', '<F5>', dap.continue, bufopts)
vim.keymap.set('n', '<F9>', dap.toggle_breakpoint, bufopts)
vim.keymap.set('n', '<F10>', dap.step_over, bufopts)
vim.keymap.set('n', '<F11>', dap.step_into, bufopts)
vim.keymap.set('n', '<F12>', 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