aboutsummaryrefslogtreecommitdiff
path: root/.config
diff options
context:
space:
mode:
Diffstat (limited to '.config')
-rw-r--r--.config/nvim/init.lua1
-rw-r--r--.config/nvim/lua/config/autocmd.lua43
-rw-r--r--.config/nvim/lua/config/globals.lua2
-rw-r--r--.config/nvim/lua/config/init.lua44
-rw-r--r--.config/nvim/lua/config/keymaps.lua37
-rw-r--r--.config/nvim/lua/config/options.lua51
-rw-r--r--.config/nvim/lua/plugins/alpha.lua125
-rw-r--r--.config/nvim/lua/plugins/colorizer.lua10
-rw-r--r--.config/nvim/lua/plugins/comment.lua7
-rw-r--r--.config/nvim/lua/plugins/gruvbox.lua32
-rw-r--r--.config/nvim/lua/plugins/indent-blankline.lua8
-rw-r--r--.config/nvim/lua/plugins/init.lua4
-rw-r--r--.config/nvim/lua/plugins/lualine-nvim.lua62
-rw-r--r--.config/nvim/lua/plugins/mason-lspconfig.lua13
-rw-r--r--.config/nvim/lua/plugins/mason.lua14
-rw-r--r--.config/nvim/lua/plugins/noice.lua19
-rw-r--r--.config/nvim/lua/plugins/nvim-cmp.lua54
-rw-r--r--.config/nvim/lua/plugins/nvim-lspconfig.lua45
-rw-r--r--.config/nvim/lua/plugins/nvim-tree.lua23
-rw-r--r--.config/nvim/lua/plugins/nvim-treesitter.lua52
-rw-r--r--.config/nvim/lua/plugins/nvim-web-devicons.lua3
-rw-r--r--.config/nvim/lua/plugins/telescope.lua45
-rw-r--r--.config/nvim/lua/plugins/vim-illuminate.lua7
-rw-r--r--.config/nvim/lua/plugins/whichkey.lua18
24 files changed, 719 insertions, 0 deletions
diff --git a/.config/nvim/init.lua b/.config/nvim/init.lua
new file mode 100644
index 0000000..c2f3a7b
--- /dev/null
+++ b/.config/nvim/init.lua
@@ -0,0 +1 @@
+lua=require('config')
diff --git a/.config/nvim/lua/config/autocmd.lua b/.config/nvim/lua/config/autocmd.lua
new file mode 100644
index 0000000..6f90977
--- /dev/null
+++ b/.config/nvim/lua/config/autocmd.lua
@@ -0,0 +1,43 @@
+local autocmd = vim.api.nvim_create_autocmd -- Create autocommand
+
+-- Remove end of buffer ~ on buffer enter
+autocmd('BufEnter', {
+ pattern = '*',
+ command = "let &fcs='eob: '"
+})
+
+-- Turn off line numbers and signcolumn on entering terminal
+autocmd("TermOpen", {
+ callback = function()
+ vim.opt_local.number = false
+ vim.opt_local.relativenumber = false
+ vim.opt_local.signcolumn = 'no'
+ end,
+ desc = "Disable line numbers and signcolumnn in terminal",
+})
+
+-- Insert mode on entering terminal
+autocmd('TermOpen', {
+ pattern = '*',
+ command = 'startinsert'
+})
+
+-- Insert mode off on Terminal exit
+autocmd('BufLeave', {
+ pattern = 'term://*',
+ command = 'stopinsert'
+})
+
+-- Close terminal buffer on process exit
+autocmd('TermClose', {
+ pattern = 'term://*',
+ command = 'call nvim_input("<CR>")'
+})
+
+-- Replacement for vim-highlightedyank
+autocmd("TextYankPost", {
+ desc = "Highlight selection on yanked text",
+ callback = function()
+ vim.highlight.on_yank({ higroup = 'IncSearch', timeout = 500 })
+ end,
+})
diff --git a/.config/nvim/lua/config/globals.lua b/.config/nvim/lua/config/globals.lua
new file mode 100644
index 0000000..2e2e702
--- /dev/null
+++ b/.config/nvim/lua/config/globals.lua
@@ -0,0 +1,2 @@
+vim.g.mapleader = " "
+vim.g.maplocalleader = " "
diff --git a/.config/nvim/lua/config/init.lua b/.config/nvim/lua/config/init.lua
new file mode 100644
index 0000000..2b6e039
--- /dev/null
+++ b/.config/nvim/lua/config/init.lua
@@ -0,0 +1,44 @@
+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('config.globals')
+require('config.options')
+require('config.keymaps')
+require('config.autocmd')
+
+local opts = {
+ defaults = {
+ lazy = true,
+ },
+ install = {
+ colorscheme = { "gruvbox" }
+ },
+ rtp = {
+ disabled_plugins = {
+ "gzip",
+ "matchit",
+ "matchparen",
+ "netrw",
+ "netrwPlugin",
+ "tarPlugin",
+ "tohtml",
+ "tutor",
+ "zipPlugin",
+ }
+ },
+ change_detection = {
+ notify = true
+ },
+}
+
+require("lazy").setup('plugins', opts)
diff --git a/.config/nvim/lua/config/keymaps.lua b/.config/nvim/lua/config/keymaps.lua
new file mode 100644
index 0000000..81436ff
--- /dev/null
+++ b/.config/nvim/lua/config/keymaps.lua
@@ -0,0 +1,37 @@
+local keymap = vim.keymap
+
+local opts = { noremap = true, silent = true }
+
+-- DIRECTORY NAVIGATION ------------------------------------------------------
+keymap.set("n", "<leader>m", ":NvimTreeFocus<CR>", opts)
+keymap.set("n", "<leader>f", ":NvimTreeToggle<CR> :NvimTreeRefresh<CR>", { silent = true })
+keymap.set("n", "<C-k>", "<C-w>k", opts) -- NAVIGATE [^] UP
+keymap.set("n", "<C-h>", "<C-w>h", opts) -- NAVIGATE [<] LEFT
+keymap.set("n", "<C-l>", "<C-w>l", opts) -- NAVIGATE [>] RIGHT
+keymap.set("n", "<C-j>", "<C-w>j", opts) -- NAVIGATE [v] DOWN
+
+-- WINDOW MANAGEMENT ---------------------------------------------------------
+keymap.set("n", "<leader>sv", ":vsplit<CR>", opts) -- SPLIT VERTICALLY
+keymap.set("n", "<leader>sh", ":split<CR>", opts) -- SPLIT HORIZONTALLY
+
+-- INDENT --------------------------------------------------------------------
+keymap.set("v", "<", "<gv")
+keymap.set("v", ">", ">gv")
+
+-- COMMENTS ------------------------------------------------------------------
+keymap.set("n", "<C-c>", "gcc", { noremap = false })
+keymap.set("v", "<C-c>", "gcc", { noremap = false })
+
+-- MOVE SELECTED LINES ---------------------------------------------------------
+keymap.set("v", "J", ":m '>+1<CR>gv=gv")
+keymap.set("v", "K", ":m '<-2<CR>gv=gv")
+
+-- Open a terminal in nvim
+keymap.set("n", "<leader>vt", ":vert term<CR>", opts) -- Terminal vertically
+keymap.set("n", "<leader>ht", ":term<CR>", opts) -- Terminal Horizontally
+
+-- Toggle Nvim Tree
+keymap.set("n", "<F7>", ":NvimTreeToggle<CR>", {})
+
+-- Toggle Indent Blank Line
+keymap.set("n", "<F8>", ":IBLToggle<CR>", {})
diff --git a/.config/nvim/lua/config/options.lua b/.config/nvim/lua/config/options.lua
new file mode 100644
index 0000000..bd00264
--- /dev/null
+++ b/.config/nvim/lua/config/options.lua
@@ -0,0 +1,51 @@
+-- disable netrw at the very start of your init.lua --------------------------
+vim.g.loaded_netrw = 1
+vim.g.loaded_netrwPlugin = 1
+
+local opt = vim.opt
+
+-- TAB/INDENT ----------------------------------------------------------------
+opt.tabstop = 2
+opt.shiftwidth = 2
+opt.softtabstop = 2
+opt.expandtab = true
+opt.smartindent = true
+opt.wrap = false
+
+-- SEARCH --------------------------------------------------------------------
+opt.incsearch = true
+opt.ignorecase = true
+opt.smartcase = true
+opt.hlsearch = false
+
+-- APPEARANCE ----------------------------------------------------------------
+opt.number = true
+opt.relativenumber = false
+opt.termguicolors = true
+--opt.colorcolumn = "100"
+opt.signcolumn = "auto"
+opt.cmdheight = 1
+opt.scrolloff = 10
+opt.completeopt = "menuone,noinsert,noselect"
+opt.cursorline = true -- Highlight the active cursor line
+
+-- MISC ----------------------------------------------------------------------
+opt.hidden = true
+opt.errorbells = false
+opt.swapfile = false
+opt.backup = false
+opt.undodir = vim.fn.expand("~/.config/nvim/undodir//")
+opt.undofile = true
+opt.backspace = "indent,eol,start"
+opt.splitright = true
+opt.splitbelow = true
+opt.autochdir = false
+opt.modifiable = true
+opt.encoding = "UTF-8"
+opt.guicursor = "n-v-c:block,i-ci-ve:block,r-cr:hor20,o:hor50,a:blinkwait700-blinkoff400-blinkon250-Cursor/lCursor,sm:block-blinkwait175-blinkoff150-blinkon175"
+opt.termguicolors = true
+
+-- APPEND --------------------------------------------------------------------
+opt.mouse:append('a')
+opt.iskeyword:append("-")
+opt.clipboard:append("unnamedplus")
diff --git a/.config/nvim/lua/plugins/alpha.lua b/.config/nvim/lua/plugins/alpha.lua
new file mode 100644
index 0000000..dc1a2c1
--- /dev/null
+++ b/.config/nvim/lua/plugins/alpha.lua
@@ -0,0 +1,125 @@
+return {
+ "goolord/alpha-nvim",
+ event = "VimEnter",
+ config = function()
+local dashboard = require('alpha.themes.dashboard')
+local fortune = require('alpha.fortune')
+
+local logo = {
+ type = 'text',
+ val = {
+ ' ',
+ ' ███╗ ██╗███████╗ ██████╗ ██╗ ██╗██╗███╗ ███╗ ',
+ ' ████╗ ██║██╔════╝██╔═══██╗██║ ██║██║████╗ ████║ ',
+ ' ██╔██╗ ██║█████╗ ██║ ██║██║ ██║██║██╔████╔██║ ',
+ ' ██║╚██╗██║██╔══╝ ██║ ██║╚██╗ ██╔╝██║██║╚██╔╝██║ ',
+ ' ██║ ╚████║███████╗╚██████╔╝ ╚████╔╝ ██║██║ ╚═╝ ██║ ',
+ ' ╚═╝ ╚═══╝╚══════╝ ╚═════╝ ╚═══╝ ╚═╝╚═╝ ╚═╝ ',
+ },
+ opts = {
+ position = 'center',
+ hl = 'DevIconDart',
+ },
+}
+
+local function info_value()
+ local total_plugins = " Total plugins " .. #vim.tbl_keys(require("lazy").plugins())
+ local datetime = os.date(' %d-%m-%Y')
+ local version = vim.version()
+ local nvim_version_info = '  v' .. version.major .. '.' .. version.minor .. '.' .. version.patch
+
+ return datetime .. nvim_version_info .. ' ' .. total_plugins
+end
+
+local info = {
+ type = 'text',
+ val = info_value(),
+ opts = {
+ hl = 'DevIconVimrc',
+ position = 'center',
+ },
+}
+
+local message = {
+ type = 'text',
+ val = fortune({ max_width = 60 }),
+ opts = {
+ position = 'center',
+ hl = 'SpecialComment',
+ },
+}
+
+local header = {
+ type = 'group',
+ val = {
+ logo,
+ info,
+ },
+}
+
+local buttons = {
+ type = 'group',
+ val = {
+ {
+ type = 'text',
+ val = 'Actions',
+ opts = {
+ hl = 'String',
+ shrink_margin = false,
+ position = 'center',
+ },
+ },
+ { type = 'padding', val = 1 },
+ dashboard.button("f", " " .. " Find file", ":Telescope find_files hidden=true no_ignore=true <CR>"),
+ dashboard.button("e", " " .. " New file", ":ene <BAR> startinsert <CR>"),
+ dashboard.button("r", " " .. " Recent files", ":Telescope oldfiles <CR>"),
+ dashboard.button("t", " " .. " Find text", "<cmd>lua require('telescope.builtin').live_grep({shorten_path=true})<CR>"),
+ dashboard.button(
+ 'd',
+ ' Dotfiles',
+ "<cmd>lua require('telescope.builtin').find_files({ search_dirs = { os.getenv('HOME') .. '/.config' } })<CR>"
+ ),
+ dashboard.button("l", " " .. " Lazy plugins", ":Lazy<CR>"),
+ dashboard.button("q", " " .. " Quit", ":qa<CR>"),
+ },
+ opts = {
+ position = 'center',
+ },
+}
+
+local config = {
+ layout = {
+ { type = 'padding', val = 5 },
+ header,
+ { type = 'padding', val = 2 },
+ buttons,
+ { type = 'padding', val = 1 },
+ message,
+ },
+ opts = {
+ setup = function()
+ vim.api.nvim_create_autocmd('User', {
+ pattern = 'AlphaReady',
+ desc = 'disable status, tabline and cmdline for alpha',
+ callback = function()
+ vim.go.laststatus = 0
+ vim.opt.showtabline = 0
+ vim.opt.cmdheight = 0
+ end,
+ })
+ vim.api.nvim_create_autocmd('BufUnload', {
+ buffer = 0,
+ desc = 'enable status, tabline and cmdline after alpha',
+ callback = function()
+ vim.go.laststatus = 2
+ vim.opt.showtabline = 2
+ vim.opt.cmdheight = 1
+ end,
+ })
+ end,
+ margin = 5,
+ },
+}
+ require("alpha").setup(config)
+ end,
+}
diff --git a/.config/nvim/lua/plugins/colorizer.lua b/.config/nvim/lua/plugins/colorizer.lua
new file mode 100644
index 0000000..38d8c62
--- /dev/null
+++ b/.config/nvim/lua/plugins/colorizer.lua
@@ -0,0 +1,10 @@
+return {
+ "norcalli/nvim-colorizer.lua",
+ event = { "BufNewFile", "BufReadPost", "BufWritePost" },
+ opts = {
+ css = { css = true },
+ "javascript",
+ "html",
+ "lua",
+ },
+}
diff --git a/.config/nvim/lua/plugins/comment.lua b/.config/nvim/lua/plugins/comment.lua
new file mode 100644
index 0000000..e6b597d
--- /dev/null
+++ b/.config/nvim/lua/plugins/comment.lua
@@ -0,0 +1,7 @@
+return {
+ 'numToStr/Comment.nvim',
+ opts = {
+ -- add any options here
+ },
+ lazy = false,
+}
diff --git a/.config/nvim/lua/plugins/gruvbox.lua b/.config/nvim/lua/plugins/gruvbox.lua
new file mode 100644
index 0000000..5779f5e
--- /dev/null
+++ b/.config/nvim/lua/plugins/gruvbox.lua
@@ -0,0 +1,32 @@
+return {
+ "ellisonleao/gruvbox.nvim",
+ lazy = false,
+ priority = 999,
+ config = function()
+ require("gruvbox").setup({
+ undercurl = true,
+ underline = true,
+ bold = true,
+ italic = {
+ strings = true,
+ 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 = "", -- can be "hard", "soft" or empty string
+ palette_overrides = {},
+ overrides = {},
+ dim_inactive = false,
+ transparent_mode = false,
+ })
+ vim.cmd('colorscheme gruvbox')
+ vim.api.nvim_set_hl(0, "Normal", {guibg = NONE, ctermbg = NONE})
+ end
+}
diff --git a/.config/nvim/lua/plugins/indent-blankline.lua b/.config/nvim/lua/plugins/indent-blankline.lua
new file mode 100644
index 0000000..572e0bd
--- /dev/null
+++ b/.config/nvim/lua/plugins/indent-blankline.lua
@@ -0,0 +1,8 @@
+return {
+ "lukas-reineke/indent-blankline.nvim",
+ event = { "BufReadPre", "BufNewFile" },
+ main = "ibl",
+ opts = {
+ indent = { char = "┊" },
+ },
+}
diff --git a/.config/nvim/lua/plugins/init.lua b/.config/nvim/lua/plugins/init.lua
new file mode 100644
index 0000000..cfbdc56
--- /dev/null
+++ b/.config/nvim/lua/plugins/init.lua
@@ -0,0 +1,4 @@
+return {
+ { "folke/neoconf.nvim", cmd = "Neoconf" },
+ "folke/neodev.nvim",
+}
diff --git a/.config/nvim/lua/plugins/lualine-nvim.lua b/.config/nvim/lua/plugins/lualine-nvim.lua
new file mode 100644
index 0000000..9db3026
--- /dev/null
+++ b/.config/nvim/lua/plugins/lualine-nvim.lua
@@ -0,0 +1,62 @@
+local config = function()
+ require("lualine").setup({
+ options = {
+ icons_enabled = true,
+ theme = 'powerline',
+ component_separators = { left = '', right = ''},
+ section_separators = { left = '', right = ''},
+ disabled_filetypes = { 'Lazy', 'NvimTree', 'alpha',
+ statusline = {},
+ winbar = {},
+ },
+ ignore_focus = {},
+ always_divide_middle = true,
+ -- always_show_tabline = false,
+ globalstatus = false,
+ refresh = {
+ statusline = 1000,
+ tabline = 1000,
+ winbar = 1000,
+ }
+ },
+ sections = {
+ lualine_a = {'mode'},
+ lualine_b = {'branch', 'diff', 'diagnostics'},
+ lualine_c = {'filename'},
+ lualine_x = {'encoding', 'fileformat', 'filetype'},
+ lualine_y = {'progress'},
+ lualine_z = {'location'}
+ },
+ inactive_sections = {
+ lualine_a = {},
+ lualine_b = {},
+ lualine_c = {'filename'},
+ lualine_x = {'location'},
+ lualine_y = {},
+ lualine_z = {}
+ },
+ tabline = {
+ lualine_a = {
+ { 'buffers',
+ symbols = {
+ modified = ' ●', -- Text to show when the buffer is modified
+ alternate_file = '', -- Text to show to identify the alternate filename
+ directory = '', -- Text to show when the buffer is a directory
+ },
+ filetype_names = {
+ NvimTree = 'NvimTree',
+ }, -- Shows specific buffer name for that filetype ( { `filetype` = `buffer_name`, ... } )
+ },
+ },
+},
+ winbar = {},
+ inactive_winbar = {},
+ extensions = {},
+ })
+end
+
+return {
+ "nvim-lualine/lualine.nvim",
+ event = 'VimEnter',
+ config = config,
+}
diff --git a/.config/nvim/lua/plugins/mason-lspconfig.lua b/.config/nvim/lua/plugins/mason-lspconfig.lua
new file mode 100644
index 0000000..55d3a7e
--- /dev/null
+++ b/.config/nvim/lua/plugins/mason-lspconfig.lua
@@ -0,0 +1,13 @@
+local opts = {
+ ensure_installed = {
+ "pyright",
+ },
+ automatic_installation = true,
+}
+
+return {
+ "williamboman/mason-lspconfig.nvim",
+ opts = opts,
+ event = "BufReadPre",
+ dependencies = "williamboman/mason.nvim",
+}
diff --git a/.config/nvim/lua/plugins/mason.lua b/.config/nvim/lua/plugins/mason.lua
new file mode 100644
index 0000000..73a3004
--- /dev/null
+++ b/.config/nvim/lua/plugins/mason.lua
@@ -0,0 +1,14 @@
+return {
+ "williamboman/mason.nvim",
+ cmd = "Mason",
+ event = "BufReadPre",
+ opts = {
+ ui = {
+ icons = {
+ package_installed = "✓",
+ package_pending = "➜",
+ package_uninstalled = "✗",
+ }
+ }
+ }
+}
diff --git a/.config/nvim/lua/plugins/noice.lua b/.config/nvim/lua/plugins/noice.lua
new file mode 100644
index 0000000..52cf93b
--- /dev/null
+++ b/.config/nvim/lua/plugins/noice.lua
@@ -0,0 +1,19 @@
+return {
+ "folke/noice.nvim",
+ event = "VeryLazy",
+ opts = {
+ routes = {
+ {
+ view = "notify",
+ filter = { event = "msg_showmode" },
+ },
+ },
+ },
+ dependencies = {
+ -- if you lazy-load any plugin below, make sure to add proper `module="..."` entries
+ "MunifTanjim/nui.nvim",
+ -- OPTIONAL:
+ -- `nvim-notify` is only needed, if you want to use the notification view.
+ -- If not available, we use `mini` as the fallback
+ },
+}
diff --git a/.config/nvim/lua/plugins/nvim-cmp.lua b/.config/nvim/lua/plugins/nvim-cmp.lua
new file mode 100644
index 0000000..dc06f47
--- /dev/null
+++ b/.config/nvim/lua/plugins/nvim-cmp.lua
@@ -0,0 +1,54 @@
+ return {
+ "hrsh7th/nvim-cmp",
+ config = function()
+ local cmp = require("cmp")
+ local luasnip = require("luasnip")
+ local lspkind = require("lspkind")
+
+ require("luasnip/loaders/from_vscode").lazy_load()
+
+ vim.opt.completeopt = "menu,menuone,noselect"
+
+ cmp.setup({
+ snippet = {
+ expand = function(args)
+ luasnip.lsp_expand(args.body)
+ end,
+ },
+ mapping = cmp.mapping.preset.insert({
+ ["<C-k>"] = cmp.mapping.select_prev_item(), -- previous suggestion
+ ["<C-j>"] = cmp.mapping.select_next_item(), -- next suggestion
+ ["<C-b>"] = cmp.mapping.scroll_docs(-4),
+ ["<C-f>"] = cmp.mapping.scroll_docs(4),
+ ["<C-Space>"] = cmp.mapping.complete(), -- show completion suggestions
+ ["<C-e>"] = cmp.mapping.abort(), -- close completion window
+ ["<CR>"] = cmp.mapping.confirm({ select = false }),
+ }),
+ -- sources for autocompletion
+ sources = cmp.config.sources({
+ { name = "nvim_lsp" }, -- lsp
+ { name = "luasnip" }, -- snippets
+ { name = "buffer" }, -- text within current buffer
+ { name = "path" }, -- file system paths
+ }),
+ -- configure lspkind for vs-code like icons
+ formatting = {
+ format = lspkind.cmp_format({
+ maxwidth = 50,
+ ellipsis_char = "...",
+ }),
+ },
+ })
+ end,
+ dependencies = {
+ "onsails/lspkind.nvim",
+ {
+
+ "L3MON4D3/LuaSnip",
+ -- follow latest release.
+ version = "2.*", -- Replace <CurrentMajor> by the latest released major (first number of latest release)
+ -- install jsregexp (optional!).
+ build = "make install_jsregexp",
+ },
+ },
+}
diff --git a/.config/nvim/lua/plugins/nvim-lspconfig.lua b/.config/nvim/lua/plugins/nvim-lspconfig.lua
new file mode 100644
index 0000000..c139acb
--- /dev/null
+++ b/.config/nvim/lua/plugins/nvim-lspconfig.lua
@@ -0,0 +1,45 @@
+local config = function()
+ require("neoconf").setup({})
+ local cmp_nvim_lsp = require("cmp_nvim_lsp")
+ -- vim.lsp.enable({ “pyright”, “bashls” })
+ -- local lspconfig = require("lspconfig")
+ local capabilities = cmp_nvim_lsp.default_capabilities()
+
+ -- python
+ -- lspconfig.pyright.setup({
+ -- capabilities = capabilities,
+ -- on_attach = on_attach,
+ -- settings = {
+ -- pyright = {
+ -- disableOrganizeImports = false,
+ -- analysis = {
+ -- useLibraryCodeForTypes = true,
+ -- autoSearchPaths = true,
+ -- diagnosticMode = "workspace",
+ -- autoImportCompletions = true,
+ -- },
+ -- },
+ -- },
+ -- })
+
+ -- bash
+ -- lspconfig.bashls.setup({
+ -- capabilities = capabilities,
+ -- on_attach = on_attach,
+ -- filetypes = { "sh" },
+ -- })
+
+end
+
+return {
+ "neovim/nvim-lspconfig",
+ config = config,
+ lazy = false,
+ dependencies = {
+ "windwp/nvim-autopairs",
+ "williamboman/mason.nvim",
+ "hrsh7th/nvim-cmp",
+ "hrsh7th/cmp-buffer",
+ "hrsh7th/cmp-nvim-lsp",
+ },
+}
diff --git a/.config/nvim/lua/plugins/nvim-tree.lua b/.config/nvim/lua/plugins/nvim-tree.lua
new file mode 100644
index 0000000..af2f4a6
--- /dev/null
+++ b/.config/nvim/lua/plugins/nvim-tree.lua
@@ -0,0 +1,23 @@
+return {
+ "nvim-tree/nvim-tree.lua",
+ lazy = false,
+ dependencies = {
+ "nvim-tree/nvim-web-devicons",
+ },
+ config = function()
+ local autocmd = vim.api.nvim_create_autocmd -- Create autocommand
+
+ -- Close nvim-tree if last window remaining
+ autocmd('BufEnter', {
+ pattern = '*',
+ command = 'if (winnr("$") ==1 && &filetype == "nvimtree") | q | endif'
+ })
+ vim.cmd([[hi NvimTreeNormal guibg=NONE ctermbg=None]])
+ -- vim.keymap.set("n", "<leader>nt", ":NvimTreeToggle<CR>", {})
+ require("nvim-tree").setup({
+ filters = {
+ dotfiles = false,
+ },
+ })
+ end,
+}
diff --git a/.config/nvim/lua/plugins/nvim-treesitter.lua b/.config/nvim/lua/plugins/nvim-treesitter.lua
new file mode 100644
index 0000000..d6b09b6
--- /dev/null
+++ b/.config/nvim/lua/plugins/nvim-treesitter.lua
@@ -0,0 +1,52 @@
+local config = function()
+ require("nvim-treesitter.configs").setup({
+ build = ":TSUpdate",
+ indent = {
+ enable = true,
+ },
+ autotag = {
+ enable = true,
+ },
+ event = {
+ "BufReadPre",
+ "BufNewFile",
+ },
+ ensure_installed = {
+ "markdown",
+ "json",
+ "javascript",
+ "typescript",
+ "yaml",
+ "html",
+ "css",
+ "markdown",
+ "bash",
+ "lua",
+ "dockerfile",
+ "solidity",
+ "gitignore",
+ "python",
+ "vue",
+ },
+ auto_install = true,
+ highlight = {
+ enable = true,
+ additional_vim_regex_highlighting = true,
+ },
+ incremental_selection = {
+ enable = true,
+ keymaps = {
+ init_selection = "<C-s>",
+ node_incremental = "<C-s>",
+ scope_incremental = false,
+ node_decremental = "<BS>",
+ },
+ },
+ })
+end
+
+return {
+ "nvim-treesitter/nvim-treesitter",
+ lazy = false,
+ config = config,
+}
diff --git a/.config/nvim/lua/plugins/nvim-web-devicons.lua b/.config/nvim/lua/plugins/nvim-web-devicons.lua
new file mode 100644
index 0000000..537b4f5
--- /dev/null
+++ b/.config/nvim/lua/plugins/nvim-web-devicons.lua
@@ -0,0 +1,3 @@
+return {
+ 'nvim-tree/nvim-web-devicons'
+}
diff --git a/.config/nvim/lua/plugins/telescope.lua b/.config/nvim/lua/plugins/telescope.lua
new file mode 100644
index 0000000..6922599
--- /dev/null
+++ b/.config/nvim/lua/plugins/telescope.lua
@@ -0,0 +1,45 @@
+local keymap = vim.keymap
+
+local config = function()
+ local telescope = require("telescope")
+ telescope.setup({
+ defaults = {
+ mappings = {
+ i = {
+ ["<C-j>"] = "move_selection_next",
+ ["<C-k>"] = "move_selection_previous",
+ },
+ },
+ },
+ pickers = {
+ find_files = {
+ theme = "dropdown",
+ previewer = false,
+ hidden = true,
+ },
+ live_grep = {
+ theme = "dropdown",
+ previewer = false,
+ },
+ buffers = {
+ theme = "dropdown",
+ previewer = false,
+ },
+ },
+ })
+end
+
+return {
+ "nvim-telescope/telescope.nvim",
+ tag = "0.1.8",
+ lazy = false,
+ dependencies = { "nvim-lua/plenary.nvim" },
+ config = config,
+ keys = {
+ keymap.set("n", "<leader>fk", ":Telescope keymaps<CR>"),
+ keymap.set("n", "<leader>fh", ":Telescope help_tags<CR>"),
+ keymap.set("n", "<leader>ff", ":Telescope find_files<CR>"),
+ keymap.set("n", "<leader>fg", ":Telescope live_grep<CR>"),
+ keymap.set("n", "<leader>fb", ":Telescope buffers<CR>"),
+ },
+}
diff --git a/.config/nvim/lua/plugins/vim-illuminate.lua b/.config/nvim/lua/plugins/vim-illuminate.lua
new file mode 100644
index 0000000..7b34f92
--- /dev/null
+++ b/.config/nvim/lua/plugins/vim-illuminate.lua
@@ -0,0 +1,7 @@
+return {
+ "RRethy/vim-illuminate",
+ lazy = false,
+ config = function()
+ require('illuminate').configure({})
+ end
+}
diff --git a/.config/nvim/lua/plugins/whichkey.lua b/.config/nvim/lua/plugins/whichkey.lua
new file mode 100644
index 0000000..9fadb97
--- /dev/null
+++ b/.config/nvim/lua/plugins/whichkey.lua
@@ -0,0 +1,18 @@
+return {
+ "folke/which-key.nvim",
+ event = "VeryLazy",
+ opts = {
+ -- your configuration comes here
+ -- or leave it empty to use the default settings
+ -- refer to the configuration section below
+ },
+ keys = {
+ {
+ "<leader>?",
+ function()
+ require("which-key").show({ global = false })
+ end,
+ desc = "Buffer Local Keymaps (which-key)",
+ },
+ },
+}