From c7e8fb4668100623585ba3c524a9b3615a630e85 Mon Sep 17 00:00:00 2001 From: Julien Rabier Date: Fri, 20 Jan 2023 16:50:26 +0100 Subject: [PATCH] [nvim] push more config --- private_dot_config/nvim/lua/config/lazy.lua | 9 +- .../nvim/lua/plugins/example.lua | 92 +++++++++++++++++-- private_dot_config/nvim/stylua.toml | 2 +- 3 files changed, 94 insertions(+), 9 deletions(-) diff --git a/private_dot_config/nvim/lua/config/lazy.lua b/private_dot_config/nvim/lua/config/lazy.lua index 8a3b188..6180096 100644 --- a/private_dot_config/nvim/lua/config/lazy.lua +++ b/private_dot_config/nvim/lua/config/lazy.lua @@ -17,8 +17,13 @@ require("lazy").setup({ -- { import = "lazyvim.plugins.extras.lang.json" }, }, defaults = { - lazy = true, -- every plugin is lazy-loaded by default - version = "*", -- try installing the latest stable version for plugins that support semver + -- By default, only LazyVim plugins will be lazy-loaded. Your custom plugins will load during startup. + -- If you know what you're doing, you can set this to `true` to have all your custom plugins lazy-loaded by default. + lazy = false, + -- It's recommended to leave version=false for now, since a lot the plugin that support versioning, + -- have outdated releases, which may break your Neovim install. + version = false, -- always use the latest git commit + -- version = "*", -- try installing the latest stable version for plugins that support semver }, install = { colorscheme = { "tokyonight", "habamax" } }, checker = { enabled = true }, -- automatically check for plugin updates diff --git a/private_dot_config/nvim/lua/plugins/example.lua b/private_dot_config/nvim/lua/plugins/example.lua index edb3ab1..989a9fb 100644 --- a/private_dot_config/nvim/lua/plugins/example.lua +++ b/private_dot_config/nvim/lua/plugins/example.lua @@ -9,6 +9,17 @@ if true then return {} end -- * disable/enabled LazyVim plugins -- * override the configuration of LazyVim plugins return { + -- add gruvbox + { "ellisonleao/gruvbox.nvim" }, + + -- Configure LazyVim to load gruvbox + { + "LazyVim/LazyVim", + opts = { + colorscheme = "gruvbox", + }, + }, + -- change trouble config { "folke/trouble.nvim", @@ -38,10 +49,9 @@ return { end, }, - -- change some telescope options and add telescope-fzf-native + -- change some telescope options and a keymap to browse plugin files { "nvim-telescope/telescope.nvim", - dependencies = { { "nvim-telescope/telescope-fzf-native.nvim", build = "make" } }, keys = { -- add a keymap to browse plugin files -- stylua: ignore @@ -60,6 +70,12 @@ return { winblend = 0, }, }, + }, + + -- add telescope-fzf-native + { + "nvim-telescope/telescope.nvim", + dependencies = { { "nvim-telescope/telescope-fzf-native.nvim", build = "make" } }, -- apply the config and additionally load fzf-native config = function(_, opts) local telescope = require("telescope") @@ -68,7 +84,20 @@ return { end, }, - -- add pyright and setup tsserver with typescript.nvim + -- add pyright to lspconfig + { + "neovim/nvim-lspconfig", + ---@class PluginLspOpts + opts = { + ---@type lspconfig.options + servers = { + -- pyright will be automatically installed with mason and loaded with lspconfig + pyright = {}, + }, + }, + }, + + -- add tsserver and setup with typescript.nvim instead of lspconfig { "neovim/nvim-lspconfig", dependencies = { @@ -85,8 +114,7 @@ return { opts = { ---@type lspconfig.options servers = { - -- pyright will be automatically installed with mason and loaded with lspconfig - pyright = {}, + -- tsserver will be automatically installed with mason and loaded with lspconfig tsserver = {}, }, -- you can do any additional lsp server setup here @@ -133,7 +161,7 @@ return { }, -- since `vim.tbl_deep_extend`, can only merge tables and not lists, the code above - -- would overwrite `ensure_installed` with the ne value. + -- would overwrite `ensure_installed` with the new value. -- If you'd rather extend the default config, use the code below instead: { "nvim-treesitter/nvim-treesitter", @@ -186,4 +214,56 @@ return { }, }, }, + + -- Use for completion and snippets (supertab) + -- first: disable default and behavior in LuaSnip + { + "L3MON4D3/LuaSnip", + keys = function() + return {} + end, + }, + -- then: setup supertab in cmp + { + "hrsh7th/nvim-cmp", + dependencies = { + "hrsh7th/cmp-emoji", + }, + ---@param opts cmp.ConfigSchema + opts = function(_, opts) + local has_words_before = function() + unpack = unpack or table.unpack + local line, col = unpack(vim.api.nvim_win_get_cursor(0)) + return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil + end + + local luasnip = require("luasnip") + local cmp = require("cmp") + + opts.mapping = vim.tbl_extend("force", opts.mapping, { + [""] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_next_item() + -- You could replace the expand_or_jumpable() calls with expand_or_locally_jumpable() + -- they way you will only jump inside the snippet region + elseif luasnip.expand_or_jumpable() then + luasnip.expand_or_jump() + elseif has_words_before() then + cmp.complete() + else + fallback() + end + end, { "i", "s" }), + [""] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_prev_item() + elseif luasnip.jumpable(-1) then + luasnip.jump(-1) + else + fallback() + end + end, { "i", "s" }), + }) + end, + }, } diff --git a/private_dot_config/nvim/stylua.toml b/private_dot_config/nvim/stylua.toml index 0f90030..5d6c50d 100644 --- a/private_dot_config/nvim/stylua.toml +++ b/private_dot_config/nvim/stylua.toml @@ -1,3 +1,3 @@ indent_type = "Spaces" indent_width = 2 -column_width = 120 +column_width = 120 \ No newline at end of file