diff options
author | joe <rbo@gmx.us> | 2025-08-25 18:13:21 +0200 |
---|---|---|
committer | joe <rbo@gmx.us> | 2025-08-25 18:13:21 +0200 |
commit | 41682275d321b6b79ee4c07f25e819875519466e (patch) | |
tree | 301ee0175c17d2394a950ef7d11bffd0d47597ac /.config/nvim/lua | |
parent | up (diff) | |
download | dotfiles-bsd-41682275d321b6b79ee4c07f25e819875519466e.tar.gz dotfiles-bsd-41682275d321b6b79ee4c07f25e819875519466e.tar.bz2 dotfiles-bsd-41682275d321b6b79ee4c07f25e819875519466e.tar.xz dotfiles-bsd-41682275d321b6b79ee4c07f25e819875519466e.tar.zst dotfiles-bsd-41682275d321b6b79ee4c07f25e819875519466e.zip |
cool
Diffstat (limited to '')
18 files changed, 762 insertions, 172 deletions
diff --git a/.config/nvim/lua/bindings.lua b/.config/nvim/lua/config/bindings.lua index 2b4013c..2c5f869 100644 --- a/.config/nvim/lua/bindings.lua +++ b/.config/nvim/lua/config/bindings.lua @@ -64,5 +64,6 @@ vim.keymap.set('n', '<leader>fs', ts.live_grep, { noremap = true, silent = true vim.keymap.set('n', '<leader>fg', function() ts.grep_string({ search = vim.fn.input("Grep > ") }) end, { noremap = true, silent = true }) vim.keymap.set('n', '<leader>ft', ':TodoTelescope keywords=TODO,HACK,WARN,PERF,NOTE,TEST,FIX<CR>', { noremap = true, silent = true }) -- neovim -vim.keymap.set('n', '<leader>vu', vim.cmd.PackerSync, { noremap = true, silent = true }) +vim.keymap.set('n', '<leader>vu', vim.cmd.Lazy, { noremap = true, silent = true }) +vim.keymap.set('n', '<leader>vm', vim.cmd.Mason, { noremap = true, silent = true }) vim.keymap.set('n', '<leader>vv', vim.cmd.Ex, { noremap = true, silent = true }) diff --git a/.config/nvim/lua/hooks.lua b/.config/nvim/lua/config/hooks.lua index eaf0687..eaf0687 100644 --- a/.config/nvim/lua/hooks.lua +++ b/.config/nvim/lua/config/hooks.lua diff --git a/.config/nvim/lua/langs.lua b/.config/nvim/lua/config/langs.lua index 64fe7ea..64fe7ea 100644 --- a/.config/nvim/lua/langs.lua +++ b/.config/nvim/lua/config/langs.lua diff --git a/.config/nvim/lua/config/lazy.lua b/.config/nvim/lua/config/lazy.lua new file mode 100644 index 0000000..64d930a --- /dev/null +++ b/.config/nvim/lua/config/lazy.lua @@ -0,0 +1,117 @@ +local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" +if not (vim.uv or vim.loop).fs_stat(lazypath) then + local lazyrepo = "https://github.com/folke/lazy.nvim.git" + local out = vim.fn.system({ "git", "clone", "--filter=blob:none", "--branch=stable", lazyrepo, lazypath }) + if vim.v.shell_error ~= 0 then + vim.api.nvim_echo({ + { "Failed to clone lazy.nvim:\n", "ErrorMsg" }, + { out, "WarningMsg" }, + { "\nPress any key to exit..." }, + }, true, {}) + vim.fn.getchar() + os.exit(1) + end +end + +vim.opt.rtp:prepend(lazypath) + +-- Make sure to setup `mapleader` and `maplocalleader` before +-- loading lazy.nvim so that mappings are correct. +-- This is also a good place to setup other settings (vim.opt) +vim.g.mapleader = "\\" +vim.g.maplocalleader = "\\" + +require('lazy').setup({ + spec = { + { + 'windwp/nvim-autopairs', + config = function() require('nvim-autopairs').setup {} end + }, + { + 'lewis6991/gitsigns.nvim', + config = function() require('gitsigns').setup {} end + }, + { + 'numToStr/Comment.nvim', + requires = { {'JoosepAlviste/nvim-ts-context-commentstring'} }, + config = function() + require('Comment').setup() + end + }, + { 'mbbill/undotree' }, + { 'chrisbra/csv.vim' }, + { + 'ThePrimeagen/harpoon', + branch = 'harpoon2', + requires = { {'nvim-lua/plenary.nvim'} } + }, + { + 'lukas-reineke/indent-blankline.nvim', + config = function() + local highlight = { + "Whitespace", + } + require('ibl').setup { + debounce = 100, + indent = { highlight = highlight, char = '┊', }, + scope = { show_start = false, show_end = false }, + } + end, + }, + { + 'folke/todo-comments.nvim', + requires = { {'nvim-lua/plenary.nvim'} }, + config = function() + require('todo-comments.config').setup{ + highlight = { + multiline = false, + }, + } + require('todo-comments') + end + }, + { + 'lcheylus/overlength.nvim', + config = function() + require('overlength').setup{ + enabled = true, + colors = { + ctermfg = nil, + ctermbg = 'darkgrey', + fg = nil, + bg = '#8B0000', + }, + textwidth_mode = 0, + default_overlength = 80, + grace_length = 1, + highlight_to_eol = true, + disable_ft = { 'qf', 'help', 'man', 'checkhealth', 'lazy', 'packer', 'NvimTree', 'Telescope', 'WhichKey', 'text', 'csv', 'lua', '' } + } + end + }, + { + 'kylechui/nvim-surround', + version = "^3.0.0", + event = "VeryLazy", + config = function() + require('nvim-surround').setup() + end + }, + { + 'ggandor/leap.nvim', + requires = {'tpope/vim-repeat'}, + config = function() + require('leap').setup({}) + vim.keymap.set({'n', 'x', 'o'}, '<leader>s', '<Plug>(leap-forward-to)') + vim.keymap.set({'n', 'x', 'o'}, '<leader>S', '<Plug>(leap-backward-to)') + vim.keymap.set({'n', 'x', 'o'}, '<C-s>', '<Plug>(leap-forward-till)') + vim.keymap.set({'n', 'x', 'o'}, '<C-S-s>', '<Plug>(leap-backward-till)') + end + }, + { import = "plugins" }, + }, +}) + +-- use 'preservim/tagbar' +-- use 'sainnhe/gruvbox-material' +-- use 'savq/melange-nvim' diff --git a/.config/nvim/lua/settings.lua b/.config/nvim/lua/config/settings.lua index e578062..e578062 100644 --- a/.config/nvim/lua/settings.lua +++ b/.config/nvim/lua/config/settings.lua diff --git a/.config/nvim/lua/lsp/arduino.lua b/.config/nvim/lua/lsp/arduino.lua new file mode 100644 index 0000000..aedfc7d --- /dev/null +++ b/.config/nvim/lua/lsp/arduino.lua @@ -0,0 +1,13 @@ +vim.lsp.config('arduino-language-server', { + cmd = { + 'arduino-language-server', + '-cli-config', '/home/jozan/.arduino15/arduino-cli.yaml', + '-cli', 'arduino-cli', + '-clangd', 'clangd', + '-fqbn', 'esp32:esp32:esp32', + }, + filetypes = {'arduino'}, + root_markers = {'.git'}, +}) + +vim.lsp.enable('arduino-language-server') diff --git a/.config/nvim/lua/lsp/clangd.lua b/.config/nvim/lua/lsp/clangd.lua new file mode 100644 index 0000000..2933b02 --- /dev/null +++ b/.config/nvim/lua/lsp/clangd.lua @@ -0,0 +1,11 @@ +vim.lsp.config('clangd', { + cmd = { 'clangd', '--background-index', '--clang-tidy', '--completion-style=detailed' }, + filetypes = { 'c', 'cpp', 'objc', 'objcpp' }, + root_markers = { '.clangd', 'compile_commands.json', 'compile_flags.txt', '.git' }, + init_options = { + fallbackFlags = { '-std=c17' }, + offsetEncoding = { 'utf-16' }, + }, +}) + +vim.lsp.enable('clangd') diff --git a/.config/nvim/lua/lsp/gopls.lua b/.config/nvim/lua/lsp/gopls.lua new file mode 100644 index 0000000..c37da39 --- /dev/null +++ b/.config/nvim/lua/lsp/gopls.lua @@ -0,0 +1,25 @@ +vim.lsp.config('gopls', { + cmd = {'gopls'}, + filetypes = { 'go', 'gomod', 'gowork', 'gotmpl' }, + root_markers = {'go.mod', 'go.sum', '.git'}, + settings = { + gopls = { + analyses = { + unreachable = true, + unusedparams = true, + }, + codelenses = { + generate = true, + gc_details = true, + }, + annotations = { + bounds = true, + escape = true, + inline = true, + }, + gofumpt = true, + } + } +}) + +vim.lsp.enable('gopls') diff --git a/.config/nvim/lua/lsp/luals.lua b/.config/nvim/lua/lsp/luals.lua new file mode 100644 index 0000000..0b24166 --- /dev/null +++ b/.config/nvim/lua/lsp/luals.lua @@ -0,0 +1,7 @@ +vim.lsp.config('luals', { + cmd = {'lua-language-server'}, + filetypes = {'lua'}, + root_markers = {'.luarc.json', '.luarc.jsonc'} +}) + +vim.lsp.enable('luals') diff --git a/.config/nvim/lua/lsp/perlnavigator.lua b/.config/nvim/lua/lsp/perlnavigator.lua new file mode 100644 index 0000000..1ba0024 --- /dev/null +++ b/.config/nvim/lua/lsp/perlnavigator.lua @@ -0,0 +1,16 @@ +vim.lsp.config('perlnavigator', { + cmd = {'perlnavigator'}, + filetypes = {'perl'}, + root_markers = {'.git'}, + settings = { + perlnavigator = { + perlPath = 'perl', + enableWarnings = true, + perltidyProfile = '', + perlcriticProfile = '', + perlcriticEnabled = true, + } + } +}) + +vim.lsp.enable('perlnavigator') diff --git a/.config/nvim/lua/packs.lua b/.config/nvim/lua/packs.lua deleted file mode 100644 index dbf3e19..0000000 --- a/.config/nvim/lua/packs.lua +++ /dev/null @@ -1,171 +0,0 @@ -vim.cmd.packadd('packer.nvim') - -return require('packer').startup({function(use) - -- Packer can manage itself - use 'wbthomason/packer.nvim' - use { - 'nvim-telescope/telescope.nvim', - branch = '0.1.x', - requires = { {'nvim-lua/plenary.nvim'} } - } - use { - 'windwp/nvim-autopairs', - config = function() require('nvim-autopairs').setup {} end - } - -- use 'jiangmiao/auto-pairs' - -- use 'folke/which-key.nvim' - use 'lewis6991/gitsigns.nvim' - -- use 'mhinz/vim-startify' - -- use 'mg979/vim-visual-multi' - use 'preservim/tagbar' - -- use 'preservim/nerdcommenter' - use { - 'numToStr/Comment.nvim', - requires = { {'JoosepAlviste/nvim-ts-context-commentstring'} }, - config = function() - require('Comment').setup() - end - } - -- use { - -- 'nvim-tree/nvim-tree.lua', - -- requires = {'nvim-tree/nvim-web-devicons'} - -- } - use 'mbbill/undotree' - -- use 'brglng/vim-sidebar-manager' - use 'ellisonleao/gruvbox.nvim' - use 'sainnhe/gruvbox-material' - use 'navarasu/onedark.nvim' - use 'rebelot/kanagawa.nvim' - use 'theniceboy/nvim-deus' - use 'savq/melange-nvim' - use 'tpope/vim-fugitive' - -- use 'tpope/vim-surround' - use 'nvim-lualine/lualine.nvim' - -- use 'voldikss/vim-floaterm' - -- use 'akinsho/toggleterm.nvim' - use 'chrisbra/csv.vim' - use { - 'ThePrimeagen/harpoon', - branch = 'harpoon2', - requires = { {'nvim-lua/plenary.nvim'} } - } - use 'HiPhish/rainbow-delimiters.nvim' - use { - 'nvim-treesitter/nvim-treesitter-textobjects', - requires = { {'nvim-treesitter/nvim-treesitter'} }, - run = function() - local ts_update = require('nvim-treesitter.install').update({ with_sync = true }) - ts_update() - end, - } - use { - 'VonHeikemen/lsp-zero.nvim', - branch = 'v3.x', - requires = { - -- LSP Support - {'neovim/nvim-lspconfig'}, - {'williamboman/mason.nvim'}, - {'williamboman/mason-lspconfig.nvim'}, - - -- Autocompletion - {'hrsh7th/nvim-cmp'}, - {'hrsh7th/cmp-buffer'}, - {'hrsh7th/cmp-path'}, - {'saadparwaiz1/cmp_luasnip'}, - {'hrsh7th/cmp-nvim-lsp'}, - {'hrsh7th/cmp-nvim-lua'}, - - -- Snippets - {'L3MON4D3/LuaSnip'}, - {'rafamadriz/friendly-snippets'}, - } - } - use{ - 'folke/trouble.nvim', - requires = { - {'nvim-tree/nvim-web-devicons'}, - }, - } - use { - 'lukas-reineke/indent-blankline.nvim', - config = function() - local highlight = { - "Whitespace", - } - require('ibl').setup { - debounce = 100, - indent = { highlight = highlight, char = '┊', }, - scope = { show_start = false, show_end = false }, - } - end, - } - use ({ - 'folke/todo-comments.nvim', - requires = { {'nvim-lua/plenary.nvim'} }, - config = function() - require('todo-comments.config').setup{ - highlight = { - multiline = false, - }, - } - require('todo-comments') - end - }) - use 'onsails/lspkind.nvim' - use ({ - 'lcheylus/overlength.nvim', - config = function() - require('overlength').setup({ - enabled = true, - colors = { - ctermfg = nil, - ctermbg = 'darkgrey', - fg = nil, - bg = '#8B0000', - }, - textwidth_mode = 0, - default_overlength = 80, - grace_length = 1, - highlight_to_eol = true, - disable_ft = { 'qf', 'help', 'man', 'checkhealth', 'lazy', 'packer', 'NvimTree', 'Telescope', 'WhichKey', 'text' }, - }) - end - }) --- use({ --- "tadmccorkle/markdown.nvim", --- config = function() --- require("markdown").setup({ --- -- configuration here or empty for defaults --- }) --- end, --- }) - use({ - "kylechui/nvim-surround", - requires = { - {'nvim-treesitter/nvim-treesitter'}, - {'nvim-treesitter/nvim-treesitter-textobjects'}, - }, - tag = "*", -- Use for stability; omit to use `main` branch for the latest features - config = function() - require("nvim-surround").setup({ - -- Configuration here, or leave empty to use defaults - }) - end - }) - use({ - 'ggandor/leap.nvim', - requires = {'tpope/vim-repeat'}, - config = function() - require('leap').setup({}) - vim.keymap.set({'n', 'x', 'o'}, '<leader>s', '<Plug>(leap-forward-to)') - vim.keymap.set({'n', 'x', 'o'}, '<leader>S', '<Plug>(leap-backward-to)') - vim.keymap.set({'n', 'x', 'o'}, '<C-s>', '<Plug>(leap-forward-till)') - vim.keymap.set({'n', 'x', 'o'}, '<C-S-s>', '<Plug>(leap-backward-till)') - end - }) -end, - config = { - display = { - open_fn = require('packer.util').float, - } -}}) diff --git a/.config/nvim/lua/plugins/gruvbox.lua b/.config/nvim/lua/plugins/gruvbox.lua new file mode 100644 index 0000000..bf99776 --- /dev/null +++ b/.config/nvim/lua/plugins/gruvbox.lua @@ -0,0 +1,38 @@ +return { + { + 'ellisonleao/gruvbox.nvim', + lazy = false, + priority = 1000, + opts = { + terminal_colors = false, + undercurl = true, + underline = true, + bold = false, + italic = { + strings = false, + emphasis = true, + comments = true, + operators = false, + folds = true, + }, + strikethrough = true, + invert_selection = false, + invert_signs = false, + invert_tabline = false, + invert_intend_guides = false, + inverse = true, -- invert background for search, diffs, statuslines and errors + contrast = "hard", -- can be "hard", "soft" or empty string + palette_overrides = {}, + overrides = { + ["@punctuation.delimiter"] = { fg = "#928374" }, + String = { fg = "#8ec07c" }, + }, + dim_inactive = false, + transparent_mode = true, + }, + config = function(_, opts) + require('gruvbox').setup(opts) + vim.cmd([[colorscheme gruvbox]]) + end + } +} diff --git a/.config/nvim/lua/plugins/lspkind.lua b/.config/nvim/lua/plugins/lspkind.lua new file mode 100644 index 0000000..b1fc6d1 --- /dev/null +++ b/.config/nvim/lua/plugins/lspkind.lua @@ -0,0 +1,102 @@ +return { + { + 'onsails/lspkind.nvim', + config = function() + require('lspkind').setup({ + mode = 'symbol_text', + preset = 'codicons', + symbol_map = { + Text = "", + Method = "", + Function = "", + Constructor = "", + Field = "", + Variable = "", + Class = "", + Interface = "", + Module = "", + Property = "", + Unit = "", + Value = "", + Enum = "", + Keyword = "", + Snippet = "", + Color = "", + File = "", + Reference = "", + Folder = "", + EnumMember = "", + Constant = "", + Struct = "", + Event = "", + Operator = "", + TypeParameter = "", + }, + }) + end + }, + { + "hrsh7th/nvim-cmp", + dependencies = { + "onsails/lspkind.nvim", + "hrsh7th/cmp-nvim-lsp", + "hrsh7th/cmp-buffer", + "hrsh7th/cmp-path", + "L3MON4D3/LuaSnip", + }, + event = "InsertEnter", + config = function() + local cmp = require('cmp') + local lspkind = require('lspkind') + + cmp.setup({ + snippet = { + expand = function(args) + require('luasnip').lsp_expand(args.body) + end, + }, + formatting = { + format = lspkind.cmp_format({ + mode = 'symbol_text', + maxwidth = { + menu = 50, + abbr = 50, + }, + ellipsis_char = '...', + show_labelDetails = true, + before = function(entry, vim_item) + -- Add source name to menu + vim_item.menu = ({ + nvim_lsp = "[LSP]", + luasnip = "[LuaSnip]", + buffer = "[Buffer]", + path = "[Path]", + })[entry.source.name] + return vim_item + end + }) + }, + mapping = cmp.mapping.preset.insert({ + ['<C-j>'] = cmp.mapping.select_next_item(cmp_select), + ['<C-k>'] = cmp.mapping.select_prev_item(cmp_select), + ['<C-b>'] = cmp.mapping.scroll_docs(-4), + ['<C-f>'] = cmp.mapping.scroll_docs(4), + ['<C-Space>'] = cmp.mapping.complete(), + ['<C-e>'] = cmp.mapping.abort(), + ['<CR>'] = cmp.mapping.confirm({ select = true }), + }), + sources = cmp.config.sources({ + { name = 'nvim_lsp' }, + { name = 'luasnip' }, + }, { + { name = 'buffer' }, + { name = 'path' }, + }), + window = { + completion = cmp.config.window.bordered(), + documentation = cmp.config.window.bordered(), + }, + }) + end, + }, +} diff --git a/.config/nvim/lua/plugins/lualine.lua b/.config/nvim/lua/plugins/lualine.lua new file mode 100644 index 0000000..4c2c6d3 --- /dev/null +++ b/.config/nvim/lua/plugins/lualine.lua @@ -0,0 +1,298 @@ +return { + { + 'nvim-lualine/lualine.nvim', + dependencies = { 'nvim-tree/nvim-web-devicons' }, + config = function() + local colors = { + bg = '#202328', + fg = '#a89984', + yellow = '#ecbe7b', + cyan = '#008080', + darkblue = '#081633', + green = '#98be65', + orange = '#ff8800', + violet = '#a9a1e1', + magenta = '#c678dd', + blue = '#51afef', + red = '#ec5f67', + } + + local conditions = { + buffer_not_empty = function() + return vim.fn.empty(vim.fn.expand('%:t')) ~= 1 + end, + hide_in_width = function() + return vim.fn.winwidth(0) > 80 + end, + check_git_workspace = function() + local filepath = vim.fn.expand('%:p:h') + local gitdir = vim.fn.finddir('.git', filepath .. ';') + return gitdir and #gitdir > 0 and #gitdir < #filepath + end, + } + + local config = { + options = { + -- Disable sections and component separators + component_separators = '', + section_separators = '', + theme = { + -- We are going to use lualine_c an lualine_x as left and + -- right section. Both are highlighted by c theme . So we + -- are just setting default looks o statusline + normal = { c = { fg = colors.fg, bg = colors.bg } }, + inactive = { c = { fg = colors.fg, bg = colors.bg } }, + }, + }, + sections = { + -- these are to remove the defaults + lualine_a = {}, + lualine_b = {}, + lualine_y = {}, + lualine_z = {}, + -- These will be filled later + lualine_c = {}, + lualine_x = {}, + }, + inactive_sections = { + -- these are to remove the defaults + lualine_a = {}, + lualine_b = {}, + lualine_y = {}, + lualine_z = {}, + lualine_c = {}, + lualine_x = {}, + }, + } + + -- Inserts a component in lualine_c at left section + local function ins_left(component) + table.insert(config.sections.lualine_c, component) + end + + -- Inserts a component in lualine_x at right section + local function ins_right(component) + table.insert(config.sections.lualine_x, component) + end + + ins_left { + function() + return '▊' + end, + -- color = { fg = colors.green }, -- Sets highlighting of component + color = function() + -- auto change color according to neovims mode + local mode_color = { + n = colors.green, + i = colors.blue, + v = colors.magenta, + [''] = colors.magenta, + V = colors.magenta, + c = colors.yellow, + no = colors.red, + s = colors.orange, + S = colors.orange, + [''] = colors.orange, + ic = colors.yellow, + R = colors.red, + Rv = colors.violet, + cv = colors.red, + ce = colors.red, + r = colors.cyan, + rm = colors.cyan, + ['r?'] = colors.cyan, + ['!'] = colors.red, + t = colors.red, + } + return { fg = mode_color[vim.fn.mode()] } + end, + padding = { left = 0, right = 1 }, -- We don't need space before this + } + + ins_left { + -- mode component + function() + return '' + end, + color = function() + -- auto change color according to neovims mode + local mode_color = { + n = colors.green, + i = colors.blue, + v = colors.magenta, + [''] = colors.magenta, + V = colors.magenta, + c = colors.yellow, + no = colors.red, + s = colors.orange, + S = colors.orange, + [''] = colors.orange, + ic = colors.yellow, + R = colors.red, + Rv = colors.violet, + cv = colors.red, + ce = colors.red, + r = colors.cyan, + rm = colors.cyan, + ['r?'] = colors.cyan, + ['!'] = colors.red, + t = colors.red, + } + return { fg = mode_color[vim.fn.mode()] } + end, + padding = { right = 1 }, + } + + ins_left { + 'buffers', + show_filename_only = false, + hide_filename_extension = false, + show_modified_status = true, + icons_enabled = true, + symbols = { + modified = ' ●', -- Text to show when the buffer is modified + alternate_file = '', -- Text to show to identify the alternate file + directory = '', -- Text to show when the buffer is a directory + }, + buffers_color = { + -- Same values as the general color option can be used here. + active = function() + -- auto change color according to neovims mode + local mode_color = { + n = colors.green, + i = colors.blue, + v = colors.magenta, + [''] = colors.magenta, + V = colors.magenta, + c = colors.yellow, + no = colors.red, + s = colors.orange, + S = colors.orange, + [''] = colors.orange, + ic = colors.yellow, + R = colors.red, + Rv = colors.violet, + cv = colors.red, + ce = colors.red, + r = colors.cyan, + rm = colors.cyan, + ['r?'] = colors.cyan, + ['!'] = colors.red, + t = colors.red, + } + return { fg = mode_color[vim.fn.mode()], gui = 'bold' } + end, + }, + } + + ins_left { + 'diagnostics', + sources = { 'nvim_diagnostic' }, + symbols = { error = ' ', warn = ' ', info = ' ' }, + diagnostics_color = { + color_error = { fg = colors.red }, + color_warn = { fg = colors.yellow }, + color_info = { fg = colors.cyan }, + }, + } + + -- Insert mid section. You can make any number of sections in neovim :) + -- for lualine it's any number greater then 2 + -- ins_left { + -- function() + -- return '%=' + -- end, + -- } + + ins_right { + 'filetype', + icons_enabled = true, -- I think icons are cool but Eviline doesn't have them. sigh + color = { fg = colors.blue }, + } + + ins_right { + -- Lsp server name . + function() + local msg = 'no lsp' + local buf_ft = vim.api.nvim_buf_get_option(0, 'filetype') + local clients = vim.lsp.get_clients() + if next(clients) == nil then + icon = '' + return '' + end + for _, client in ipairs(clients) do + local filetypes = client.config.filetypes + if filetypes and vim.fn.index(filetypes, buf_ft) ~= -1 then + return client.name + end + end + return msg + end, + icon = ' ', + color = { fg = colors.cyan }, + } + + ins_right { + 'branch', + icon = '', + color = { fg = colors.violet, gui = 'bold' }, + } + + ins_right { + -- filesize component + 'filesize', + cond = conditions.buffer_not_empty, + } + + ins_right { + 'diff', + -- Is it me or the symbol for modified us really weird + symbols = { added = ' ', modified = ' ', removed = ' ' }, + diff_color = { + added = { fg = colors.green }, + modified = { fg = colors.orange }, + removed = { fg = colors.red }, + }, + cond = conditions.hide_in_width, + } + + ins_right { 'location' } + + ins_right { + function() + return '▊' + end, + -- color = { fg = colors.green }, + color = function() + -- auto change color according to neovims mode + local mode_color = { + n = colors.green, + i = colors.blue, + v = colors.magenta, + [''] = colors.magenta, + V = colors.magenta, + c = colors.yellow, + no = colors.red, + s = colors.orange, + S = colors.orange, + [''] = colors.orange, + ic = colors.yellow, + R = colors.red, + Rv = colors.violet, + cv = colors.red, + ce = colors.red, + r = colors.cyan, + rm = colors.cyan, + ['r?'] = colors.cyan, + ['!'] = colors.red, + t = colors.red, + } + return { fg = mode_color[vim.fn.mode()] } + end, + padding = { left = 1 }, + } + + require('lualine').setup(config) + end + } +} diff --git a/.config/nvim/lua/plugins/rainbow.lua b/.config/nvim/lua/plugins/rainbow.lua new file mode 100644 index 0000000..740b712 --- /dev/null +++ b/.config/nvim/lua/plugins/rainbow.lua @@ -0,0 +1,28 @@ +return { + { + 'HiPhish/rainbow-delimiters.nvim', + config = function() + local rainbow_delimiters = require('rainbow-delimiters') + + vim.g.rainbow_delimiters = { + strategy = { + [''] = rainbow_delimiters.strategy['global'], + vim = rainbow_delimiters.strategy['local'], + }, + query = { + [''] = 'rainbow-delimiters', + lua = 'rainbow-blocks', + }, + highlight = { + 'RainbowDelimiterOrange', + 'RainbowDelimiterRed', + 'RainbowDelimiterYellow', + 'RainbowDelimiterBlue', + 'RainbowDelimiterGreen', + 'RainbowDelimiterViolet', + 'RainbowDelimiterCyan', + }, + } + end + } +} diff --git a/.config/nvim/lua/plugins/telescope.lua b/.config/nvim/lua/plugins/telescope.lua new file mode 100644 index 0000000..ca80e16 --- /dev/null +++ b/.config/nvim/lua/plugins/telescope.lua @@ -0,0 +1,25 @@ +return { + { + 'nvim-telescope/telescope.nvim', + branch = '0.1.x', + dependencies = { 'nvim-lua/plenary.nvim' }, + config = function() + local tele = require('telescope') + + tele.setup { + defaults = { + mappings = { + i = { + ['<C-u>'] = false, + ['<C-d>'] = require('telescope.actions').delete_buffer, + ["<C-j>"] = require('telescope.actions').move_selection_next, + ["<C-k>"] = require('telescope.actions').move_selection_previous, + }, + }, + }, + } + + pcall(tele.load_extension, 'fzf') + end, + }, +} diff --git a/.config/nvim/lua/plugins/treesitter.lua b/.config/nvim/lua/plugins/treesitter.lua new file mode 100644 index 0000000..5387ac6 --- /dev/null +++ b/.config/nvim/lua/plugins/treesitter.lua @@ -0,0 +1,53 @@ +return { + { + 'nvim-treesitter/nvim-treesitter', + branch = 'master', + lazy = false, + build = ':TSUpdate', + config = function() + require('nvim-treesitter.configs').setup { + -- A list of parser names, or "all" (the five listed parsers should always be installed) + ensure_installed = { + 'c', + 'cpp', + 'lua', + 'vim', + 'vimdoc', + 'query', + 'go', + 'perl', + 'rust', + 'yaml', + 'regex', + 'markdown', + 'markdown_inline', + 'terraform', + 'comment', + }, + + -- Install parsers synchronously (only applied to `ensure_installed`) + sync_install = false, + + -- Automatically install missing parsers when entering buffer + -- Recommendation: set to false if you don't have `tree-sitter` CLI installed locally + auto_install = true, + + highlight = { + enable = true, + + -- Setting this to true will run `:h syntax` and tree-sitter at the same time. + -- Set this to `true` if you depend on 'syntax' being enabled (like for indentation). + -- Using this option may slow down your editor, and you may see some duplicate highlights. + -- Instead of true it can also be a list of languages + additional_vim_regex_highlighting = false, + }, + incremental_selection = { + enable = true, + }, + indent = { + enable = true, + }, + } + end + } +} diff --git a/.config/nvim/lua/plugins/trouble.lua b/.config/nvim/lua/plugins/trouble.lua new file mode 100644 index 0000000..11c23a3 --- /dev/null +++ b/.config/nvim/lua/plugins/trouble.lua @@ -0,0 +1,27 @@ +return { + { + 'folke/trouble.nvim', + requires = { + {'nvim-tree/nvim-web-devicons'}, + }, + config = function() + require('trouble').setup { + -- icons = true, + } + + -- Diagnostic signs + -- https://github.com/folke/trouble.nvim/issues/52 + 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 = hl}) + end + end + } +} |