summaryrefslogtreecommitdiffstats
path: root/.config/nvim/lua
diff options
context:
space:
mode:
authorjoe <rbo@gmx.us>2025-08-25 18:13:21 +0200
committerjoe <rbo@gmx.us>2025-08-25 18:13:21 +0200
commit41682275d321b6b79ee4c07f25e819875519466e (patch)
tree301ee0175c17d2394a950ef7d11bffd0d47597ac /.config/nvim/lua
parentup (diff)
downloaddotfiles-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 '')
-rw-r--r--.config/nvim/lua/config/bindings.lua (renamed from .config/nvim/lua/bindings.lua)3
-rw-r--r--.config/nvim/lua/config/hooks.lua (renamed from .config/nvim/lua/hooks.lua)0
-rw-r--r--.config/nvim/lua/config/langs.lua (renamed from .config/nvim/lua/langs.lua)0
-rw-r--r--.config/nvim/lua/config/lazy.lua117
-rw-r--r--.config/nvim/lua/config/settings.lua (renamed from .config/nvim/lua/settings.lua)0
-rw-r--r--.config/nvim/lua/lsp/arduino.lua13
-rw-r--r--.config/nvim/lua/lsp/clangd.lua11
-rw-r--r--.config/nvim/lua/lsp/gopls.lua25
-rw-r--r--.config/nvim/lua/lsp/luals.lua7
-rw-r--r--.config/nvim/lua/lsp/perlnavigator.lua16
-rw-r--r--.config/nvim/lua/packs.lua171
-rw-r--r--.config/nvim/lua/plugins/gruvbox.lua38
-rw-r--r--.config/nvim/lua/plugins/lspkind.lua102
-rw-r--r--.config/nvim/lua/plugins/lualine.lua298
-rw-r--r--.config/nvim/lua/plugins/rainbow.lua28
-rw-r--r--.config/nvim/lua/plugins/telescope.lua25
-rw-r--r--.config/nvim/lua/plugins/treesitter.lua53
-rw-r--r--.config/nvim/lua/plugins/trouble.lua27
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
+ }
+}