summaryrefslogtreecommitdiff
path: root/lua
diff options
context:
space:
mode:
Diffstat (limited to 'lua')
-rw-r--r--lua/config.lua27
-rw-r--r--lua/lsp.lua23
-rw-r--r--lua/my_telescope.lua25
-rw-r--r--lua/packages.lua50
-rw-r--r--lua/remap.lua4
-rw-r--r--lua/theme.lua21
-rw-r--r--lua/treesitter.lua48
7 files changed, 198 insertions, 0 deletions
diff --git a/lua/config.lua b/lua/config.lua
new file mode 100644
index 0000000..b5b9d89
--- /dev/null
+++ b/lua/config.lua
@@ -0,0 +1,27 @@
+vim.o.shiftwidth = 4
+vim.o.tabstop = 4
+vim.o.softtabstop = 4
+vim.o.expandtab = true
+
+vim.o.hlsearch = false
+vim.o.number = true
+vim.o.mouse = "a"
+vim.o.ignorecase = true
+vim.o.smartcase = true
+vim.o.updatetime = 100
+vim.o.timeout = true
+vim.o.timeoutlen = 300
+vim.o.completeopt = "menuone,noselect"
+vim.o.termguicolors = true
+vim.o.swapfile = false
+vim.o.backup = false
+vim.o.incsearch = true
+vim.o.scrolloff = 5
+vim.o.colorcolumn = "80,120"
+
+vim.o.autoread = true
+vim.api.nvim_create_autocmd({ "BufEnter", "CursorHold", "CursorHoldI", "FocusGained" }, {
+ command = "if mode() != 'c' | checktime | endif",
+ pattern = { "*" },
+})
+
diff --git a/lua/lsp.lua b/lua/lsp.lua
new file mode 100644
index 0000000..4e0cf17
--- /dev/null
+++ b/lua/lsp.lua
@@ -0,0 +1,23 @@
+local lsp = require("lsp-zero").preset({})
+
+lsp.on_attach(function(client, b)
+ local nmap = function(keys, func, desc)
+ vim.keymap.set("n", keys, func, { buffer = b, desc = desc })
+ end
+
+ nmap("<f2>", vim.lsp.buf.rename, "Rename symbol")
+ nmap("<leader>ca", vim.lsp.buf.code_action, "Code action")
+ nmap("<f12>", vim.lsp.buf.definition, "Go to definition")
+ nmap("<leader>fr", require("telescope.builtin").lsp_references, "Find references")
+ nmap("<c-o>", require("telescope.builtin").lsp_document_symbols, "Find document symbols")
+ nmap("<c-h>", vim.lsp.buf.hover, "Signature help")
+end)
+
+lsp.ensure_installed({
+ "clangd",
+})
+
+require("lspconfig").clangd.setup({})
+
+lsp.setup()
+
diff --git a/lua/my_telescope.lua b/lua/my_telescope.lua
new file mode 100644
index 0000000..5f87981
--- /dev/null
+++ b/lua/my_telescope.lua
@@ -0,0 +1,25 @@
+require("telescope").setup({
+ pickers = {
+ buffers = {
+ mappings = {
+ i = {
+ ["<c-d>"] = "delete_buffer",
+ },
+ },
+ },
+ lsp_document_symbols = {
+ layout_config = { width = 0.8 },
+ symbol_width = 70,
+ },
+ },
+})
+
+local telescope_builtin = require("telescope.builtin")
+vim.keymap.set("n", "<c-p>", telescope_builtin.find_files, { desc = "Find file" })
+vim.keymap.set("n", "<c-s-f>", telescope_builtin.live_grep, { desc = "Find with grep" })
+vim.keymap.set("n", "<leader><leader>", telescope_builtin.buffers, { desc = "Find buffer" })
+vim.keymap.set("n", "<c-f>", telescope_builtin.current_buffer_fuzzy_find, { desc = "Search in buffer" })
+vim.keymap.set("n", "<leader>fd", telescope_builtin.diagnostics, { desc = "Find diagnostics" })
+vim.keymap.set("n", "<leader>d", vim.diagnostic.open_float, { desc = "Open floating diagnostic message" })
+vim.keymap.set("n", "<leader>q", vim.diagnostic.setloclist, { desc = "Open diagnostics list" })
+
diff --git a/lua/packages.lua b/lua/packages.lua
new file mode 100644
index 0000000..ab26af7
--- /dev/null
+++ b/lua/packages.lua
@@ -0,0 +1,50 @@
+local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim"
+if not vim.loop.fs_stat(lazypath) then
+ vim.fn.system({
+ "git",
+ "clone",
+ "--filter=blob:none",
+ "https://github.com/folke/lazy.nvim.git",
+ "--branch=stable", -- latest stable release
+ lazypath,
+ })
+end
+vim.opt.rtp:prepend(lazypath)
+
+require("lazy").setup({
+ {
+ "nvim-telescope/telescope.nvim", tag = "0.1.1",
+ dependencies = { "nvim-lua/plenary.nvim" },
+ },
+ {
+ "Mofiqul/vscode.nvim",
+ },
+ {
+ "nvim-lualine/lualine.nvim",
+ dependencies = { "nvim-tree/nvim-web-devicons" },
+ },
+ {
+ "nvim-treesitter/nvim-treesitter",
+ dependencies = {
+ "nvim-treesitter/nvim-treesitter-textobjects",
+ },
+ build = ":TSUpdate",
+ },
+ {
+ "VonHeikemen/lsp-zero.nvim",
+ branch = "v2.x",
+ dependencies = {
+ {"neovim/nvim-lspconfig"},
+ {
+ "williamboman/mason.nvim",
+ build = function()
+ pcall(vim.cmd, "MasonUpdate")
+ end,
+ },
+ { "williamboman/mason-lspconfig.nvim" },
+ { "hrsh7th/nvim-cmp" },
+ { "hrsh7th/cmp-nvim-lsp" },
+ { "L3MON4D3/LuaSnip" },
+ },
+ },
+})
diff --git a/lua/remap.lua b/lua/remap.lua
new file mode 100644
index 0000000..d9ecd61
--- /dev/null
+++ b/lua/remap.lua
@@ -0,0 +1,4 @@
+vim.keymap.set("x", "d", "\"_d")
+vim.keymap.set("n", "d", "\"_d")
+vim.keymap.set("x", "D", "\"_D")
+vim.keymap.set("n", "D", "\"_D")
diff --git a/lua/theme.lua b/lua/theme.lua
new file mode 100644
index 0000000..d8d2475
--- /dev/null
+++ b/lua/theme.lua
@@ -0,0 +1,21 @@
+vim.o.background = "dark"
+
+local c = require("vscode.colors").get_colors()
+require("vscode").setup({
+ style = "dark",
+ group_overrides = {
+ ["@punctuation.bracket"] = { fg = c.vscFront },
+ },
+})
+
+vim.cmd.colorscheme("vscode")
+
+require("lualine").setup({
+ options = {
+ theme = "vscode",
+ icons_enabled = false,
+ component_separators = "|",
+ section_separators = "",
+ },
+})
+
diff --git a/lua/treesitter.lua b/lua/treesitter.lua
new file mode 100644
index 0000000..8113094
--- /dev/null
+++ b/lua/treesitter.lua
@@ -0,0 +1,48 @@
+require("nvim-treesitter.configs").setup({
+ ensured_installed = { "c", "cpp", "lua", "vim", "vimdoc" },
+ auto_install = false,
+ highlight = {
+ enable = true,
+ },
+ incremental_selection = {
+ enable = true,
+ keymaps = {
+ init_selection = "<c-s>",
+ node_incremental = "<c-s>",
+ node_decremental = "<m-s>",
+ },
+ },
+ textobjects = {
+ select = {
+ enable = true,
+ loookahead = true,
+ keymaps = {
+ ["aa"] = "@parameter.outer",
+ ["ia"] = "@parameter.inner",
+ ["af"] = "@function.outer",
+ ["if"] = "@function.inner",
+ },
+ },
+ move = {
+ enable = true,
+ goto_next_start = {
+ [")a"] = "@parameter.inner",
+ },
+ goto_previous_start = {
+ ["(a"] = "@parameter.inner",
+ },
+ },
+ swap = {
+ enable = true,
+ swap_next = {
+ ["<leader>a"] = "@parameter.inner",
+ },
+ swap_previous = {
+ ["<leader>A"] = "@parameter.inner",
+ },
+ },
+ },
+ indent = { enable = true, disable = { "python" } },
+ additional_vim_regex_highlighting = false,
+})
+