From 65f0046083b6239bdd76a81af63e3cad4516c75a Mon Sep 17 00:00:00 2001 From: Steven Le Rouzic Date: Sun, 2 Apr 2023 17:44:43 +0200 Subject: Initial commit --- lua/config.lua | 27 +++++++++++++++++++++++++++ lua/lsp.lua | 23 +++++++++++++++++++++++ lua/my_telescope.lua | 25 +++++++++++++++++++++++++ lua/packages.lua | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ lua/remap.lua | 4 ++++ lua/theme.lua | 21 +++++++++++++++++++++ lua/treesitter.lua | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ 7 files changed, 198 insertions(+) create mode 100644 lua/config.lua create mode 100644 lua/lsp.lua create mode 100644 lua/my_telescope.lua create mode 100644 lua/packages.lua create mode 100644 lua/remap.lua create mode 100644 lua/theme.lua create mode 100644 lua/treesitter.lua (limited to 'lua') 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("", vim.lsp.buf.rename, "Rename symbol") + nmap("ca", vim.lsp.buf.code_action, "Code action") + nmap("", vim.lsp.buf.definition, "Go to definition") + nmap("fr", require("telescope.builtin").lsp_references, "Find references") + nmap("", require("telescope.builtin").lsp_document_symbols, "Find document symbols") + nmap("", 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 = { + [""] = "delete_buffer", + }, + }, + }, + lsp_document_symbols = { + layout_config = { width = 0.8 }, + symbol_width = 70, + }, + }, +}) + +local telescope_builtin = require("telescope.builtin") +vim.keymap.set("n", "", telescope_builtin.find_files, { desc = "Find file" }) +vim.keymap.set("n", "", telescope_builtin.live_grep, { desc = "Find with grep" }) +vim.keymap.set("n", "", telescope_builtin.buffers, { desc = "Find buffer" }) +vim.keymap.set("n", "", telescope_builtin.current_buffer_fuzzy_find, { desc = "Search in buffer" }) +vim.keymap.set("n", "fd", telescope_builtin.diagnostics, { desc = "Find diagnostics" }) +vim.keymap.set("n", "d", vim.diagnostic.open_float, { desc = "Open floating diagnostic message" }) +vim.keymap.set("n", "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 = "", + node_incremental = "", + node_decremental = "", + }, + }, + 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 = { + ["a"] = "@parameter.inner", + }, + swap_previous = { + ["A"] = "@parameter.inner", + }, + }, + }, + indent = { enable = true, disable = { "python" } }, + additional_vim_regex_highlighting = false, +}) + -- cgit