configuration.nix/home/laptop/programs/neovim/nvim/default.lua
Ivan Dimitrov f5e1e3cb5b Squashed commit of the following:
commit eb451fe1a7324b35621921cd232480d0fbbec34b
Author: Ivan Dimitrov <ivan@idimitrov.dev>
Date:   Thu Oct 5 15:40:15 2023 +0300

    nvim bash

commit fe31d8e972e5729715f2f9a70e8226f35759dc9a
Author: Ivan Dimitrov <ivan@idimitrov.dev>
Date:   Thu Oct 5 15:35:16 2023 +0300

    nvim nix

commit af96dff98e80c54eabff9d219119950993878e27
Author: Ivan Dimitrov <ivan@idimitrov.dev>
Date:   Thu Oct 5 15:25:03 2023 +0300

    some js cleanup

commit ffee7d74c9c7c06f879afa8542c4f55492566bb7
Author: Ivan Dimitrov <ivan@idimitrov.dev>
Date:   Thu Oct 5 15:20:41 2023 +0300

    nvim lua

commit 9607813c11893b96070cb056d03eda6b821f9282
Author: Ivan Dimitrov <ivan@idimitrov.dev>
Date:   Thu Oct 5 15:11:20 2023 +0300

    server capabilities check for doc highlight

commit d889f14fb93c35f4d5a4d9e9430a5770d080ef96
Author: Ivan Dimitrov <ivan@idimitrov.dev>
Date:   Thu Oct 5 14:29:47 2023 +0300

    adding servers

commit e91f8f81b6c2ccc35926cac13e71da1a8997b98a
Author: Ivan Dimitrov <ivan@idimitrov.dev>
Date:   Thu Oct 5 13:42:26 2023 +0300

    lists

commit 9239ed57fe73dcde7c11547d211ebec1e8d3078f
Author: Ivan Dimitrov <ivan@idimitrov.dev>
Date:   Thu Oct 5 13:39:10 2023 +0300

    neovim split
2023-10-05 15:48:01 +03:00

125 lines
3.3 KiB
Lua

vim.wo.number = true
vim.o.scrolloff = 15
vim.o.hlsearch = false
vim.o.updatetime = 20
vim.o.autoread = true
vim.o.tabstop = 4
vim.o.shiftwidth = 4
vim.o.expandtab = true
vim.g.mapleader = " "
vim.g.maplocalleader = " "
vim.keymap.set({ "n", "v" }, "<Space>", "<Nop>", { silent = true }) -- nop leader
local nmap = function(keys, cmd)
vim.keymap.set("n", keys, cmd, { noremap = true, silent = true })
end
local vmap = function(keys, cmd)
vim.keymap.set("v", keys, cmd, { noremap = true, silent = true })
end
local tmap = function(keys, cmd)
vim.keymap.set("t", keys, cmd, { noremap = true, silent = true })
end
nmap("<leader>/", require("Comment.api").toggle.linewise.current)
vmap("<leader>/", "<ESC><cmd>lua require('Comment.api').toggle.linewise(vim.fn.visualmode())<CR>")
nmap("<Tab>", "<cmd>BufferNext<cr>")
nmap("<S-Tab>", "<cmd>BufferPrevious<cr>")
nmap("<leader>x", "<cmd>BufferClose<cr>")
nmap("<leader>h", "<cmd>ToggleTerm<cr>")
tmap("<leader>h", "<cmd>ToggleTerm<cr>")
nmap("<leader>r", "<cmd>!%:p<cr>")
nmap("<leader>ff", require("telescope.builtin").find_files)
nmap("<leader>fw", require("telescope.builtin").live_grep)
nmap("<leader>e", vim.diagnostic.open_float)
local cmp = require("cmp")
local lspconfig = require("lspconfig")
local cmp_capabilities = require("cmp_nvim_lsp").default_capabilities()
local on_attach = function(client, bufnr)
nmap("<leader>ca", vim.lsp.buf.code_action)
nmap("<leader>lr", vim.lsp.buf.rename)
nmap("gd", vim.lsp.buf.definition)
nmap("<leader>lf", function()
vim.lsp.buf.format()
end)
nmap("K", vim.lsp.buf.hover)
nmap("gr", require("telescope.builtin").lsp_references)
if client.server_capabilities.documentHighlightProvider then
vim.api.nvim_create_autocmd("CursorHold", {
callback = function()
vim.lsp.buf.document_highlight()
end,
})
vim.api.nvim_create_autocmd("CursorMoved", {
callback = function()
vim.lsp.buf.clear_references()
end,
})
end
end
cmp.setup({
snippet = {
expand = function(args)
require("luasnip").lsp_expand(args.body)
end,
},
mapping = cmp.mapping.preset.insert({
["<C-Space>"] = cmp.mapping.complete(),
["<CR>"] = cmp.mapping.confirm({ select = true }),
}),
sources = cmp.config.sources({ { name = "nvim_lsp" }, { name = "luasnip" } }, { { name = "buffer" } }),
})
for server, cfg in pairs(servers) do
lspconfig[server].setup({
cmd = cfg.cmd,
settings = cfg.settings,
capabilities = cmp_capabilities,
on_attach = on_attach,
})
end
require 'nvim-treesitter.configs'.setup {
autotag = {
enable = true,
}
}
require("Comment").setup()
require("toggleterm").setup()
require("autoclose").setup()
require("gitsigns").setup()
require("nvim-surround").setup()
require("telescope").setup {
defaults = {
file_ignore_patterns = { "hosts" },
}
}
require("lualine").setup({
options = {
theme = "catppuccin"
}
})
require("catppuccin").setup({
flavour = "mocha",
transparent_background = true,
integrations = {
cmp = true,
gitsigns = true,
treesitter = true,
telescope = {
enabled = true,
},
markdown = true
},
})
vim.cmd.colorscheme("catppuccin")