From d38fd6e564489a3670498090ca2c57726694b12f Mon Sep 17 00:00:00 2001 From: bumpsoo Date: Mon, 13 Nov 2023 14:53:14 +0000 Subject: [PATCH] plugins --- .config/nvim/lua/bumpsoo/bumpsoo/init.lua | 13 ++ .config/nvim/lua/bumpsoo/bumpsoo/lazy.lua | 14 ++ .../nvim/lua/bumpsoo/bumpsoo/lspconfig.lua | 98 ++++++++++++++ .../lua/bumpsoo/bumpsoo/plugins/fugitive.lua | 6 + .../lua/bumpsoo/bumpsoo/plugins/lspconfig.lua | 128 ++++++++++++++++++ .../lua/bumpsoo/bumpsoo/plugins/telescope.lua | 10 ++ .../bumpsoo/bumpsoo/plugins/tokyonight.lua | 9 ++ .../bumpsoo/bumpsoo/plugins/treesitter.lua | 9 ++ .config/nvim/lua/bumpsoo/bumpsoo/remap.lua | 2 + .config/nvim/lua/bumpsoo/bumpsoo/set.lua | 17 +++ .config/nvim/lua/bumpsoo/plugins/fugitive.lua | 6 + .../nvim/lua/bumpsoo/plugins/lspconfig.lua | 6 + .config/nvim/lua/bumpsoo/set.lua | 8 +- README.md | 27 +++- 14 files changed, 348 insertions(+), 5 deletions(-) create mode 100644 .config/nvim/lua/bumpsoo/bumpsoo/init.lua create mode 100644 .config/nvim/lua/bumpsoo/bumpsoo/lazy.lua create mode 100644 .config/nvim/lua/bumpsoo/bumpsoo/lspconfig.lua create mode 100644 .config/nvim/lua/bumpsoo/bumpsoo/plugins/fugitive.lua create mode 100644 .config/nvim/lua/bumpsoo/bumpsoo/plugins/lspconfig.lua create mode 100644 .config/nvim/lua/bumpsoo/bumpsoo/plugins/telescope.lua create mode 100644 .config/nvim/lua/bumpsoo/bumpsoo/plugins/tokyonight.lua create mode 100644 .config/nvim/lua/bumpsoo/bumpsoo/plugins/treesitter.lua create mode 100644 .config/nvim/lua/bumpsoo/bumpsoo/remap.lua create mode 100644 .config/nvim/lua/bumpsoo/bumpsoo/set.lua create mode 100644 .config/nvim/lua/bumpsoo/plugins/fugitive.lua create mode 100644 .config/nvim/lua/bumpsoo/plugins/lspconfig.lua diff --git a/.config/nvim/lua/bumpsoo/bumpsoo/init.lua b/.config/nvim/lua/bumpsoo/bumpsoo/init.lua new file mode 100644 index 0000000..4c4468f --- /dev/null +++ b/.config/nvim/lua/bumpsoo/bumpsoo/init.lua @@ -0,0 +1,13 @@ +vim.opt.clipboard = "unnamedplus" +if vim.fn.has('wsl') == 1 then + vim.api.nvim_create_autocmd('TextYankPost', { + group = vim.api.nvim_create_augroup('Yank', { clear = true }), + callback = function() + vim.fn.system('clip.exe', vim.fn.getreg('"')) + end, + }) +end + +require("bumpsoo.remap") +require("bumpsoo.lazy") +require("bumpsoo.set") diff --git a/.config/nvim/lua/bumpsoo/bumpsoo/lazy.lua b/.config/nvim/lua/bumpsoo/bumpsoo/lazy.lua new file mode 100644 index 0000000..2961950 --- /dev/null +++ b/.config/nvim/lua/bumpsoo/bumpsoo/lazy.lua @@ -0,0 +1,14 @@ +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("bumpsoo.plugins") + diff --git a/.config/nvim/lua/bumpsoo/bumpsoo/lspconfig.lua b/.config/nvim/lua/bumpsoo/bumpsoo/lspconfig.lua new file mode 100644 index 0000000..89dec35 --- /dev/null +++ b/.config/nvim/lua/bumpsoo/bumpsoo/lspconfig.lua @@ -0,0 +1,98 @@ +function default_keymaps(opts) + local buffer = opts.buffer or vim.api.nvim_get_current_buf() + local key_opts = {buffer = buffer} + + vim.key.map.set('n', 'K', vim.lsp.buf.hover, key_opts) + vim.key.map.set('n', 'K', vim.lsp.buf.hover) + vim.key.map.set('n', 'gd', vim.lsp.buf.definition, key_opts) + vim.key.map.set('n', 'gD', vim.lsp.buf.declaration, key_opts) + vim.key.map.set('n', 'gi', vim.lsp.buf.implementation, key_opts) + vim.key.map.set('n', 'go', vim.lsp.buf.type_definition, key_opts) + vim.key.map.set('n', 'gr', vim.lsp.buf.references, key_opts) + vim.key.map.set('n', 'gs', vim.lsp.buf.signature_help, key_opts) + vim.key.map.set('n', '', vim.lsp.buf.rename, key_opts) + vim.key.map.set('n', '', vim.lsp.buf.format, key_opts:append({async = true})) + vim.key.map.set('x', '', vim.lsp.buf.format, key_opts:append({async = true})) + vim.key.map.set('n', '', vim.lsp.buf.code_action, key_opts) + + if vim.lsp.buf.range_code_action then + vim.key.map.set('x', '', vim.lsp.buf.range_code_action, key_opts) + else + vim.key.map.set('x', '', vim.lsp.buf.code_action, key_opts) + end + + vim.key.map.set('n', 'gl', vim.diagnostic.open_float, key_opts) + vim.key.map.set('n', '[d', vim.diagnostic.goto_prev, key_opts) + vim.key.map.set('n', ']d', vim.diagnostic.goto_next, key_opts) +end + +local on_attach = function(client, bufnr) + default_keymaps({buffer = bufnr}) +end + + +local cfg = function () + local util = require("lspconfig/util") + local on_attach = on_attach + local capabilities = vim.lsp.protocol.make_client_capabilities() + capabilities.textDocument.completion.completionItem = { + documentationFormat = { "markdown", "plaintext" }, + snippetSupport = true, + preselectSupport = true, + insertReplaceSupport = true, + labelDetailsSupport = true, + deprecatedSupport = true, + commitCharactersSupport = true, + tagSupport = { valueSet = { 1 } }, + resolveSupport = { + properties = { + "documentation", "detail", "additionalTextEdits", + }, + }, + } + require('lspconfig').gopls.setup{ + on_attach = on_attach, + capabilities = capabilites, + cmd = {"gopls"}, + filetypes = {"go", "gomod", "gowork", "gotmlpl"}, + root_dir = require("lspconfig/util").root_pattern("go.work", "go.mod", ".git"), + settings = { + gopls = { + completeUnimported = true, + } + } + } +-- vim.api.nvim_create_autocmd('LspAttach', { +-- group = vim.api.nvim_create_augroup('UserLspConfig', {}), +-- callback = function(ev) +-- -- Enable completion triggered by +-- vim.bo[ev.buf].omnifunc = 'v:lua.vim.lsp.omnifunc' +-- +-- -- Buffer local mappings. +-- -- See `:help vim.lsp.*` for documentation on any of the below functions +-- local opts = { buffer = ev.buf } +-- vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, opts) +-- vim.keymap.set('n', 'gd', vim.lsp.buf.definition, opts) +-- vim.keymap.set('n', 'K', vim.lsp.buf.hover, opts) +-- vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, opts) +-- vim.keymap.set('n', '', vim.lsp.buf.signature_help, opts) +-- vim.keymap.set('n', 'wa', vim.lsp.buf.add_workspace_folder, opts) +-- vim.keymap.set('n', 'wr', vim.lsp.buf.remove_workspace_folder, opts) +-- vim.keymap.set('n', 'wl', function() +-- print(vim.inspect(vim.lsp.buf.list_workspace_folders())) +-- end, opts) +-- vim.keymap.set('n', 'D', vim.lsp.buf.type_definition, opts) +-- vim.keymap.set('n', 'rn', vim.lsp.buf.rename, opts) +-- vim.keymap.set({ 'n', 'v' }, 'ca', vim.lsp.buf.code_action, opts) +-- vim.keymap.set('n', 'gr', vim.lsp.buf.references, opts) +-- vim.keymap.set('n', 'f', function() +-- vim.lsp.buf.format { async = true } +-- end, opts) +-- end, +-- }) +end + +return { + "neovim/nvim-lspconfig", + config = cfg +} diff --git a/.config/nvim/lua/bumpsoo/bumpsoo/plugins/fugitive.lua b/.config/nvim/lua/bumpsoo/bumpsoo/plugins/fugitive.lua new file mode 100644 index 0000000..858c38e --- /dev/null +++ b/.config/nvim/lua/bumpsoo/bumpsoo/plugins/fugitive.lua @@ -0,0 +1,6 @@ +return { + "tpope/vim-fugitive", + config = function() + vim.keymap.set("n", "gs", vim.cmd.Git) + end +} diff --git a/.config/nvim/lua/bumpsoo/bumpsoo/plugins/lspconfig.lua b/.config/nvim/lua/bumpsoo/bumpsoo/plugins/lspconfig.lua new file mode 100644 index 0000000..58018b3 --- /dev/null +++ b/.config/nvim/lua/bumpsoo/bumpsoo/plugins/lspconfig.lua @@ -0,0 +1,128 @@ +return { + "neovim/nvim-lspconfig", + event = { "BufReadPre", "BufNewFile" }, + dependencies = { + "hrsh7th/nvim-cmp", + "hrsh7th/cmp-nvim-lsp", + 'saadparwaiz1/cmp_luasnip', + 'L3MON4D3/LuaSnip', + }, + config = function() + -- import lspconfig plugin + local lspconfig = require("lspconfig") + + -- import cmp-nvim-lsp plugin + local cmp_nvim_lsp = require("cmp_nvim_lsp") + + local keymap = vim.keymap -- for conciseness + + local opts = { noremap = true, silent = true } + local on_attach = function(client, bufnr) + opts.buffer = bufnr + + -- set keybinds + opts.desc = "Show LSP references" + keymap.set("n", "gR", "Telescope lsp_references", opts) + + opts.desc = "Go to declaration" + keymap.set("n", "gD", vim.lsp.buf.declaration, opts) + + opts.desc = "Show LSP definitions" + keymap.set("n", "gd", "Telescope lsp_definitions", opts) + + opts.desc = "Show LSP implementations" + keymap.set("n", "gi", "Telescope lsp_implementations", opts) + + opts.desc = "Show LSP type definitions" + keymap.set("n", "gt", "Telescope lsp_type_definitions", opts) + + opts.desc = "See available code actions" + keymap.set({ "n", "v" }, "ca", vim.lsp.buf.code_action, opts) + + opts.desc = "Smart rename" + keymap.set("n", "rn", vim.lsp.buf.rename, opts) + + opts.desc = "Show buffer diagnostics" + keymap.set("n", "D", "Telescope diagnostics bufnr=0", opts) + opts.desc = "Show line diagnostics" + keymap.set("n", "d", vim.diagnostic.open_float, opts) + + opts.desc = "Go to previous diagnostic" + keymap.set("n", "[d", vim.diagnostic.goto_prev, opts) + + opts.desc = "Go to next diagnostic" + keymap.set("n", "]d", vim.diagnostic.goto_next, opts) + + opts.desc = "Show documentation for what is under cursor" + keymap.set("n", "K", vim.lsp.buf.hover, opts) + + opts.desc = "Restart LSP" + keymap.set("n", "rs", ":LspRestart", opts) + end + + -- used to enable autocompletion (assign to every lsp server config) + local capabilities = cmp_nvim_lsp.default_capabilities() + + -- Change the Diagnostic symbols in the sign column (gutter) + -- (not in youtube nvim video) + local signs = { Error = " ", Warn = " ", Hint = "󰠠 ", Info = " " } + for type, icon in pairs(signs) do + local hl = "DiagnosticSign" .. type + vim.fn.sign_define(hl, { text = icon, texthl = hl, numhl = "" }) + end + local lspconfig = require("lspconfig") + lspconfig.gopls.setup({ + settings = { + gopls = { + analyses = { + unusedparams = true, + }, + staticcheck = true, + gofumpt = true, + }, + }, + capabilities = capabilities, + on_attach = on_attach, + }) + local cmp = require 'cmp' + cmp.setup { + snippet = { + expand = function(args) + luasnip.lsp_expand(args.body) + end, + }, + mapping = cmp.mapping.preset.insert({ + [''] = cmp.mapping.scroll_docs(-4), -- Up + [''] = cmp.mapping.scroll_docs(4), -- Down + -- C-b (back) C-f (forward) for snippet placeholder navigation. + [''] = cmp.mapping.complete(), + [''] = cmp.mapping.confirm { + behavior = cmp.ConfirmBehavior.Replace, + select = true, + }, + [''] = cmp.mapping(function(fallback) + if cmp.visible() then + cmp.select_next_item() + elseif luasnip.expand_or_jumpable() then + luasnip.expand_or_jump() + 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' }), + }), + sources = { + { name = 'nvim_lsp' }, + { name = 'luasnip' }, + }, + } + end +} diff --git a/.config/nvim/lua/bumpsoo/bumpsoo/plugins/telescope.lua b/.config/nvim/lua/bumpsoo/bumpsoo/plugins/telescope.lua new file mode 100644 index 0000000..7b4cf98 --- /dev/null +++ b/.config/nvim/lua/bumpsoo/bumpsoo/plugins/telescope.lua @@ -0,0 +1,10 @@ +return { + 'nvim-telescope/telescope.nvim', tag = '0.1.4', + dependencies = { 'nvim-lua/plenary.nvim' }, + config = function() + local builtin = require('telescope.builtin') + vim.keymap.set('n', 'ff', builtin.find_files, {}) + vim.keymap.set('n', 'fg', builtin.live_grep, {}) + vim.keymap.set('n', 'ft', builtin.help_tags, {}) + end +} diff --git a/.config/nvim/lua/bumpsoo/bumpsoo/plugins/tokyonight.lua b/.config/nvim/lua/bumpsoo/bumpsoo/plugins/tokyonight.lua new file mode 100644 index 0000000..4588d2a --- /dev/null +++ b/.config/nvim/lua/bumpsoo/bumpsoo/plugins/tokyonight.lua @@ -0,0 +1,9 @@ +return { + "folke/tokyonight.nvim", + lazy = false, + priority = 1000, + opts = {}, + config = function() + vim.cmd[[colorscheme tokyonight-day]] + end +} diff --git a/.config/nvim/lua/bumpsoo/bumpsoo/plugins/treesitter.lua b/.config/nvim/lua/bumpsoo/bumpsoo/plugins/treesitter.lua new file mode 100644 index 0000000..2fd0d99 --- /dev/null +++ b/.config/nvim/lua/bumpsoo/bumpsoo/plugins/treesitter.lua @@ -0,0 +1,9 @@ + +return { + "nvim-treesitter/nvim-treesitter", + build = function() + require("nvim-treesitter.install").update({ + with_sync = true + }) + end +} diff --git a/.config/nvim/lua/bumpsoo/bumpsoo/remap.lua b/.config/nvim/lua/bumpsoo/bumpsoo/remap.lua new file mode 100644 index 0000000..b1d0af6 --- /dev/null +++ b/.config/nvim/lua/bumpsoo/bumpsoo/remap.lua @@ -0,0 +1,2 @@ +vim.g.mapleader = " " +vim.keymap.set("n", "ex", vim.cmd.Ex) diff --git a/.config/nvim/lua/bumpsoo/bumpsoo/set.lua b/.config/nvim/lua/bumpsoo/bumpsoo/set.lua new file mode 100644 index 0000000..fc58bf0 --- /dev/null +++ b/.config/nvim/lua/bumpsoo/bumpsoo/set.lua @@ -0,0 +1,17 @@ +vim.opt.nu = true +vim.opt.relativenumber = true + +vim.opt.colorcolumn = "80" + +vim.opt.list = true +vim.opt.listchars = { + tab = "→ ", + space = "·", + nbsp = "+", +} + +vim.opt.tabstop = 4 +vim.opt.softtabstop = 4 +vim.opt.shiftwidth = 4 + +vim.opt.termguicolors = true diff --git a/.config/nvim/lua/bumpsoo/plugins/fugitive.lua b/.config/nvim/lua/bumpsoo/plugins/fugitive.lua new file mode 100644 index 0000000..858c38e --- /dev/null +++ b/.config/nvim/lua/bumpsoo/plugins/fugitive.lua @@ -0,0 +1,6 @@ +return { + "tpope/vim-fugitive", + config = function() + vim.keymap.set("n", "gs", vim.cmd.Git) + end +} diff --git a/.config/nvim/lua/bumpsoo/plugins/lspconfig.lua b/.config/nvim/lua/bumpsoo/plugins/lspconfig.lua new file mode 100644 index 0000000..5e4eb06 --- /dev/null +++ b/.config/nvim/lua/bumpsoo/plugins/lspconfig.lua @@ -0,0 +1,6 @@ +return { + "neovim/nvim-lspconfig", + config = function() + require'lspconfig'.gopls.setup{} + end +} diff --git a/.config/nvim/lua/bumpsoo/set.lua b/.config/nvim/lua/bumpsoo/set.lua index 5d6ea33..3135fe4 100644 --- a/.config/nvim/lua/bumpsoo/set.lua +++ b/.config/nvim/lua/bumpsoo/set.lua @@ -1,5 +1,11 @@ vim.opt.nu = true vim.opt.relativenumber = true - vim.opt.colorcolumn = "80" + +vim.opt.list = true +vim.opt.listchars = { + tab = "→ ", + space = "·", + nbsp = "+", +} diff --git a/README.md b/README.md index 6b83aba..fecc0c7 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,31 @@ +### from wsl - alpine + +running [mini root fs](https://www.alpinelinux.org/downloads/) + +``` +wsl --import Alpine 'E:\alpine\' E:\alpine-minirootfs-3.18.4-x86_64.tar +``` + +dependencies + +``` +apk add neovim tmux git openssh ripgrep curl gcc go + +go install golang.org/x/tools/gopls@latest +``` + ### dev configuration for alpine linux -- neovim -- git -- tmux -- shell +- neovim (.config/nvim/\*) +- git (.gitconfig ~/personal/.gitconfig) +- tmux (.tmux.conf) +- shell (.profile) ### neovim plugins - lazy (plugin manager) - treesitter - telescope +- tokyonight +- lspconfig +- fugitive