summaryrefslogtreecommitdiffstatshomepage
path: root/nvim/lua/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'nvim/lua/plugins')
-rw-r--r--nvim/lua/plugins/alpha.lua56
-rw-r--r--nvim/lua/plugins/blankline.lua7
-rw-r--r--nvim/lua/plugins/bufferline.lua142
-rw-r--r--nvim/lua/plugins/cmp.lua127
-rw-r--r--nvim/lua/plugins/dap.lua28
-rw-r--r--nvim/lua/plugins/git-blame.lua3
-rw-r--r--nvim/lua/plugins/git-worktree.lua12
-rw-r--r--nvim/lua/plugins/gitsigns.lua48
-rw-r--r--nvim/lua/plugins/lsp-installer.lua5
-rw-r--r--nvim/lua/plugins/lsp-signature.lua59
-rw-r--r--nvim/lua/plugins/lspconfig.lua26
-rw-r--r--nvim/lua/plugins/lspkind.lua7
-rw-r--r--nvim/lua/plugins/lspstatus.lua17
-rw-r--r--nvim/lua/plugins/lualine.lua116
-rw-r--r--nvim/lua/plugins/luasnip.lua19
-rw-r--r--nvim/lua/plugins/neogit.lua7
-rw-r--r--nvim/lua/plugins/null-ls.lua51
-rw-r--r--nvim/lua/plugins/nvim-tree.lua112
-rw-r--r--nvim/lua/plugins/project.lua13
-rw-r--r--nvim/lua/plugins/renamer.lua46
-rw-r--r--nvim/lua/plugins/session_manager.lua25
-rw-r--r--nvim/lua/plugins/telescope.lua12
-rw-r--r--nvim/lua/plugins/treesitter.lua7
-rw-r--r--nvim/lua/plugins/which-key.lua34
24 files changed, 714 insertions, 265 deletions
diff --git a/nvim/lua/plugins/alpha.lua b/nvim/lua/plugins/alpha.lua
new file mode 100644
index 0000000..87ae48a
--- /dev/null
+++ b/nvim/lua/plugins/alpha.lua
@@ -0,0 +1,56 @@
+local status_ok, alpha = pcall(require, "alpha")
+if not status_ok then
+ return
+end
+
+local status_ok, dashboard = pcall(require, "alpha.themes.dashboard")
+if not status_ok then
+ return
+end
+
+
+-- alpha.setup(dashboard.config)
+
+local icons = require "icons"
+
+local dashboard = require "alpha.themes.dashboard"
+dashboard.section.header.val = {
+ [[ __ ]],
+ [[ ___ ___ ___ __ __ /\_\ ___ ___ ]],
+ [[ / _ `\ / __`\ / __`\/\ \/\ \\/\ \ / __` __`\ ]],
+ [[/\ \/\ \/\ __//\ \_\ \ \ \_/ |\ \ \/\ \/\ \/\ \ ]],
+ [[\ \_\ \_\ \____\ \____/\ \___/ \ \_\ \_\ \_\ \_\]],
+ [[ \/_/\/_/\/____/\/___/ \/__/ \/_/\/_/\/_/\/_/]],
+}
+dashboard.section.buttons.val = {
+ dashboard.button("f", icons.documents.Files .. " Find file", ":Telescope find_files <CR>"),
+ dashboard.button("e", icons.ui.NewFile .. " New file", ":ene <BAR> startinsert <CR>"),
+ dashboard.button(
+ "p",
+ icons.git.Repo .. " Find project",
+ ":lua require('telescope').extensions.projects.projects()<CR>"
+ ),
+ dashboard.button("r", icons.ui.History .. " Recent files", ":Telescope oldfiles <CR>"),
+ dashboard.button("t", icons.ui.List .. " Find text", ":Telescope live_grep <CR>"),
+ dashboard.button("s", icons.ui.SignIn .. " Find Session", ":Telescope sessions save_current=false <CR>"),
+ dashboard.button("c", icons.ui.Gear .. " Config", ":e ~/.config/nvim/init.lua <CR>"),
+ dashboard.button("q", icons.diagnostics.Error .. " Quit", ":qa<CR>"),
+}
+local function footer()
+ -- NOTE: requires the fortune-mod package to work
+ -- local handle = io.popen("fortune")
+ -- local fortune = handle:read("*a")
+ -- handle:close()
+ -- return fortune
+ return "tobyvin.com"
+end
+
+dashboard.section.footer.val = footer()
+
+dashboard.section.footer.opts.hl = "Type"
+dashboard.section.header.opts.hl = "Include"
+dashboard.section.buttons.opts.hl = "Keyword"
+
+dashboard.opts.opts.noautocmd = true
+-- vim.cmd([[autocmd User AlphaReady echo 'ready']])
+alpha.setup(dashboard.opts) \ No newline at end of file
diff --git a/nvim/lua/plugins/blankline.lua b/nvim/lua/plugins/blankline.lua
index d68ccf9..44f90c8 100644
--- a/nvim/lua/plugins/blankline.lua
+++ b/nvim/lua/plugins/blankline.lua
@@ -1,4 +1,9 @@
-require("indent_blankline").setup {
+local status_ok, indent_blankline = pcall(require, "indent_blankline")
+if not status_ok then
+ return
+end
+
+indent_blankline.setup {
-- for example, context is off by default, use this to turn it on
show_current_context = true,
show_current_context_start = true,
diff --git a/nvim/lua/plugins/bufferline.lua b/nvim/lua/plugins/bufferline.lua
index bd3192d..105df66 100644
--- a/nvim/lua/plugins/bufferline.lua
+++ b/nvim/lua/plugins/bufferline.lua
@@ -1,3 +1,10 @@
+local status_ok, bufferline = pcall(require, "bufferline")
+if not status_ok then
+ return
+end
+
+-- https://github.com/Mofiqul/vscode.nvim#-usage
+
local diagnostics_signs = {
['error'] = '',
warning = '',
@@ -5,7 +12,13 @@ local diagnostics_signs = {
}
require('bufferline').setup{
- options = {
+ options = {
+ indicator_icon = ' ',
+ buffer_close_icon = '',
+ modified_icon = '●',
+ close_icon = '',
+ close_command = "Bdelete! %d",
+ right_mouse_command = "Bdelete! %d",
always_show_bufferline = false,
diagnostics = 'nvim_lsp',
diagnostics_indicator = function(count, level, diagnostics_dict, context)
@@ -16,19 +29,11 @@ require('bufferline').setup{
end
return s
end,
- separator_style = 'slant',
- indicator_icon = ' ',
- buffer_close_icon = '',
- modified_icon = '●',
- close_icon = '',
- close_command = "Bdelete %d",
- right_mouse_command = "Bdelete! %d",
- left_trunc_marker = '',
- right_trunc_marker = '',
+ -- separator_style = 'slant',
offsets = {{filetype = "NvimTree", text = "EXPLORER", text_align = "center"}},
show_tab_indicators = true,
show_close_icon = false
- },
+ },
highlights = {
fill = {
guifg = {attribute = "fg", highlight = "Normal"},
@@ -40,12 +45,12 @@ require('bufferline').setup{
},
buffer_visible = {
gui = "",
- guifg = {attribute = "fg", highlight = "Normal"},
+ guifg = {attribute = "fg", highlight="Normal"},
guibg = {attribute = "bg", highlight = "Normal"}
},
buffer_selected = {
gui = "",
- guifg = {attribute = "fg", highlight = "Normal"},
+ guifg = {attribute = "fg", highlight="Normal"},
guibg = {attribute = "bg", highlight = "Normal"}
},
separator = {
@@ -53,7 +58,7 @@ require('bufferline').setup{
guibg = {attribute = "bg", highlight = "StatusLine"},
},
separator_selected = {
- guifg = {attribute = "fg", highlight = "Special"},
+ guifg = {attribute = "fg", highlight="Special"},
guibg = {attribute = "bg", highlight = "Normal"}
},
separator_visible = {
@@ -65,118 +70,13 @@ require('bufferline').setup{
guibg = {attribute = "bg", highlight = "StatusLine"}
},
close_button_selected = {
- guifg = {attribute = "fg", highlight = "normal"},
+ guifg = {attribute = "fg", highlight="normal"},
guibg = {attribute = "bg", highlight = "normal"}
},
close_button_visible = {
- guifg = {attribute = "fg", highlight = "normal"},
+ guifg = {attribute = "fg", highlight="normal"},
guibg = {attribute = "bg", highlight = "normal"}
},
}
}
-
--- local map = require('utils').map
--- local bufferline = require 'bufferline'
-
--- local bar_bg = '#1f1f1f'
--- local bar_fg = '#c9c9c9'
--- local elem_bg = '#2d2d2d'
--- local elem_fg = '#8c8c8c'
--- local selected_bg = '#444444'
--- local selected_fg = '#efefef'
--- local error_fg = '#ca241a'
--- local warning_fg = '#fabd2f'
--- local info_fg = '#83a5cb'
--- local pick_fg = '#870000'
-
--- local colors = {
--- bar = { guifg = bar_fg, guibg = bar_bg },
--- elem = { guifg = elem_fg, guibg = elem_bg },
--- elem_inactive = { guifg = elem_fg, guibg = elem_bg },
--- elem_selected = { guifg = selected_fg, guibg = selected_bg },
--- separator = { guifg = bar_bg, guibg = elem_bg },
--- separator_selected = { guifg = bar_bg, guibg = selected_bg },
--- error = { guifg = error_fg, guibg = elem_bg, guisp = error_fg },
--- error_selected = { guifg = error_fg, guibg = selected_bg, gui = '' },
--- warning = { guifg = warning_fg, guibg = elem_bg, guisp = warning_fg },
--- warning_selected = { guifg = warning_fg, guibg = selected_bg, gui = '' },
--- info = { guifg = info_fg, guibg = elem_bg, guisp = info_fg },
--- info_selected = { guifg = info_fg, guibg = selected_bg, gui = '' },
--- pick = { guifg = pick_fg, guibg = elem_bg },
--- pick_selected = { guifg = pick_fg, guibg = selected_bg },
--- }
-
--- local diagnostics_signs = {
--- ['error'] = '',
--- warning = '',
--- default = '',
--- }
-
--- require('bufferline').setup{
--- options = {
--- always_show_bufferline = false,
--- diagnostics = 'nvim_lsp',
--- diagnostics_indicator = function(count, level, diagnostics_dict, context)
--- local s = ' '
--- for e, n in pairs(diagnostics_dict) do
--- local sym = diagnostics_signs[e] or diagnostics_signs.default
--- s = s .. (#s > 1 and ' ' or '') .. sym .. ' ' .. n
--- end
--- return s
--- end,
--- separator_style = 'slant',
--- },
--- highlights = {
--- background = colors.elem_inactive,
--- buffer_selected = colors.elem_selected,
--- buffer_visible = colors.elem_inactive,
--- close_button = colors.elem,
--- close_button_selected = colors.elem_selected,
--- close_button_visible = colors.elem,
--- diagnostic = colors.info,
--- diagnostic_selected = colors.info_selected,
--- diagnostic_visible = colors.info,
--- duplicate = colors.elem,
--- duplicate_selected = colors.elem_selected,
--- duplicate_visible = colors.elem,
--- error = colors.error,
--- error_diagnostic = colors.error,
--- error_diagnostic_selected = colors.error_selected,
--- error_selected = colors.error_selected,
--- fill = colors.bar,
--- hint = colors.info,
--- hint_diagnostic = colors.info,
--- hint_diagnostic_selected = colors.info_selected,
--- hint_diagnostic_visible = colors.info,
--- hint_selected = colors.info_selected,
--- hint_visible = colors.info,
--- info = colors.info,
--- info_diagnostic = colors.info,
--- info_diagnostic_selected = colors.info_selected,
--- info_diagnostic_visible = colors.info,
--- info_selected = colors.info_selected,
--- info_visible = colors.info,
--- modified = colors.elem,
--- modified_selected = colors.elem_selected,
--- modified_visible = colors.elem,
--- pick = colors.pick,
--- pick_selected = colors.pick_selected,
--- separator = colors.separator,
--- separator_selected = colors.separator_selected,
--- separator_visible = colors.separator,
--- tab = colors.elem,
--- tab_close = colors.bar,
--- tab_selected = colors.elem_selected,
--- warning = colors.warning,
--- warning_diagnostic = colors.warning,
--- warning_diagnostic_selected = colors.warning_selected,
--- warning_diagnostic_visible = colors.warning,
--- warning_selected = colors.warning_selected,
--- warning_visible = colors.warning,
--- },
--- }
-
--- local opts = { silent = true, nowait = true }
--- map('n', 'gb', '<cmd>BufferLinePick<cr>', opts)
--- map('n', '<leader>d', '<cmd>bdelete!<cr>', opts)
diff --git a/nvim/lua/plugins/cmp.lua b/nvim/lua/plugins/cmp.lua
index 2729b0e..1a13863 100644
--- a/nvim/lua/plugins/cmp.lua
+++ b/nvim/lua/plugins/cmp.lua
@@ -1,87 +1,68 @@
--- Set completeopt to have a better completion experience
-vim.o.completeopt = 'menuone,noselect'
-local cmp = require 'cmp'
-
-cmp.setup({
- completion = {
- -- completeopt = 'menu,menuone,noinsert',
- },
- snippet = {
- expand = function(args) require('luasnip').lsp_expand(args.body) end
- },
- formatting = {
- format = function(entry, vim_item)
- -- fancy icons and a name of kind
- vim_item.kind = require("lspkind").presets.default[vim_item.kind]
- -- set a name for each source
- vim_item.menu = ({
- buffer = "[Buff]",
- nvim_lsp = "[LSP]",
- luasnip = "[LuaSnip]",
- nvim_lua = "[Lua]",
- latex_symbols = "[Latex]"
- })[entry.source.name]
- return vim_item
- end
- },
- sources = {
- {name = 'nvim_lsp'},
- {name = 'nvim_lua'},
- {name = 'path'},
- {name = 'luasnip'},
- {name = 'buffer', keyword_length = 1},
- {name = 'calc'}
- },
- experimental = {
- -- ghost_text = true,
- }
-
-})
+local status_ok, cmp = pcall(require, "cmp")
+if not status_ok then
+ return
+end
-- Require function for tab to work with LUA-SNIP
local has_words_before = function()
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)
+ vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col)
:match("%s") == nil
end
cmp.setup({
- mapping = {
- ['<C-Space>'] = cmp.mapping.complete(),
- ['<C-e>'] = cmp.mapping.close(),
- ['<C-u>'] = cmp.mapping.scroll_docs(-4),
- ['<C-d>'] = cmp.mapping.scroll_docs(4),
- ['<CR>'] = cmp.mapping.confirm({
- behavior = cmp.ConfirmBehavior.Replace,
- select = false
- }),
+ completion = {
+ completeopt = 'menu,menuone,noinsert',
+ },
+ snippet = {
+ expand = function(args) require('luasnip').lsp_expand(args.body) end
+ },
+ mapping = {
+ ['<C-p>'] = cmp.mapping.select_prev_item(),
+ ['<C-n>'] = cmp.mapping.select_next_item(),
+ -- Add tab support
+ ['<S-Tab>'] = cmp.mapping.select_prev_item(),
+ ['<Tab>'] = cmp.mapping.select_next_item(),
+ ['<C-d>'] = cmp.mapping.scroll_docs(-4),
+ ['<C-u>'] = cmp.mapping.scroll_docs(4),
+ ['<C-Space>'] = cmp.mapping.complete(),
+ ['<C-e>'] = cmp.mapping.close(),
+ ['<CR>'] = cmp.mapping.confirm({
+ behavior = cmp.ConfirmBehavior.Replace,
+ select = true,
+ })
+ },
+ formatting = {
+ format = function(entry, vim_item)
+ -- fancy icons and a name of kind
+ vim_item.kind = require("lspkind").presets.default[vim_item.kind]
+ -- set a name for each source
+ vim_item.menu = ({
+ buffer = "[Buff]",
+ nvim_lsp = "[LSP]",
+ luasnip = "[LuaSnip]",
+ nvim_lua = "[Lua]",
+ latex_symbols = "[Latex]"
+ })[entry.source.name]
+ return vim_item
+ end
+ },
+ sources = {
+ {name = 'nvim_lsp'},
+ {name = 'nvim_lua'},
+ {name = 'path'},
+ {name = 'luasnip'},
+ {name = 'buffer', keyword_length = 1},
+ {name = 'calc' }
+ },
+ experimental = {
+ -- ghost_text = true,
+ }
- ["<Tab>"] = cmp.mapping(function(fallback)
- if cmp.visible() then
- cmp.select_next_item()
- elseif luasnip.expand_or_jumpable() then
- luasnip.expand_or_jump()
- elseif has_words_before() then
- cmp.complete()
- else
- fallback()
- end
- end, {"i", "s"}),
+})
- ["<S-Tab>"] = 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"})
- }
-})
-- local luasnip = require("luasnip")
@@ -135,4 +116,4 @@ cmp.setup({
-- { name = 'nvim_lsp_signature_help' },
-- { name = 'calc' },
-- },
--- }) \ No newline at end of file
+-- })
diff --git a/nvim/lua/plugins/dap.lua b/nvim/lua/plugins/dap.lua
index 065cead..f49590e 100644
--- a/nvim/lua/plugins/dap.lua
+++ b/nvim/lua/plugins/dap.lua
@@ -1,20 +1,7 @@
-
-local dap = require("dap");
-
-dap.configurations.typescriptreact = { -- change to typescript if needed
- {
- type = "chrome",
- request = "attach",
- program = "${file}",
- cwd = vim.fn.getcwd(),
- sourceMaps = true,
- protocol = "inspector",
- port = 9222,
- webRoot = "${workspaceFolder}"
- }
-}
-
-require('dap.ext.vscode').load_launchjs()
+local status_ok, dap = pcall(require, "dap")
+if not status_ok then
+ return
+end
-- Debugpy
dap.adapters.python = {
@@ -93,3 +80,10 @@ dap.configurations.rust = dap.configurations.cpp
vim.cmd [[command! BreakpointToggle lua require('dap').toggle_breakpoint()]]
vim.cmd [[command! Debug lua require('dap').continue()]]
vim.cmd [[command! DapREPL lua require('dap').repl.open()]]
+
+local tele_status_ok, telescope = pcall(require, "telescope")
+if not tele_status_ok then
+ return
+end
+
+telescope.load_extension('dap') \ No newline at end of file
diff --git a/nvim/lua/plugins/git-blame.lua b/nvim/lua/plugins/git-blame.lua
new file mode 100644
index 0000000..f0bb678
--- /dev/null
+++ b/nvim/lua/plugins/git-blame.lua
@@ -0,0 +1,3 @@
+vim.g.gitblame_enabled = 0
+vim.g.gitblame_message_template = "<summary> • <date> • <author>"
+vim.g.gitblame_highlight_group = "LineNr" \ No newline at end of file
diff --git a/nvim/lua/plugins/git-worktree.lua b/nvim/lua/plugins/git-worktree.lua
index d34e41c..2bc8892 100644
--- a/nvim/lua/plugins/git-worktree.lua
+++ b/nvim/lua/plugins/git-worktree.lua
@@ -1,4 +1,14 @@
-require("git-worktree").setup({
+local status_ok, git_worktree = pcall(require, "git-worktree")
+if not status_ok then
+ return
+end
+
+git_worktree.setup({
})
+local status_ok, telescope = pcall(require, "telescope")
+if not status_ok then
+ return
+end
+
require("telescope").load_extension("git_worktree") \ No newline at end of file
diff --git a/nvim/lua/plugins/gitsigns.lua b/nvim/lua/plugins/gitsigns.lua
new file mode 100644
index 0000000..b3c944a
--- /dev/null
+++ b/nvim/lua/plugins/gitsigns.lua
@@ -0,0 +1,48 @@
+local status_ok, gitsigns = pcall(require, "gitsigns")
+if not status_ok then
+ return
+end
+
+gitsigns.setup {
+ signs = {
+ add = { hl = "GitSignsAdd", text = "▎", numhl = "GitSignsAddNr", linehl = "GitSignsAddLn" },
+ change = { hl = "GitSignsChange", text = "▎", numhl = "GitSignsChangeNr", linehl = "GitSignsChangeLn" },
+ delete = { hl = "GitSignsDelete", text = "契", numhl = "GitSignsDeleteNr", linehl = "GitSignsDeleteLn" },
+ topdelete = { hl = "GitSignsDelete", text = "契", numhl = "GitSignsDeleteNr", linehl = "GitSignsDeleteLn" },
+ changedelete = { hl = "GitSignsChange", text = "▎", numhl = "GitSignsChangeNr", linehl = "GitSignsChangeLn" },
+ },
+ signcolumn = true, -- Toggle with `:Gitsigns toggle_signs`
+ numhl = false, -- Toggle with `:Gitsigns toggle_numhl`
+ linehl = false, -- Toggle with `:Gitsigns toggle_linehl`
+ word_diff = false, -- Toggle with `:Gitsigns toggle_word_diff`
+ watch_gitdir = {
+ interval = 1000,
+ follow_files = true,
+ },
+ attach_to_untracked = true,
+ current_line_blame = false, -- Toggle with `:Gitsigns toggle_current_line_blame`
+ current_line_blame_opts = {
+ virt_text = true,
+ virt_text_pos = "eol", -- 'eol' | 'overlay' | 'right_align'
+ delay = 1000,
+ ignore_whitespace = false,
+ },
+ current_line_blame_formatter_opts = {
+ relative_time = false,
+ },
+ sign_priority = 6,
+ update_debounce = 100,
+ status_formatter = nil, -- Use default
+ max_file_length = 40000,
+ preview_config = {
+ -- Options passed to nvim_open_win
+ border = "rounded",
+ style = "minimal",
+ relative = "cursor",
+ row = 0,
+ col = 1,
+ },
+ yadm = {
+ enable = false,
+ },
+} \ No newline at end of file
diff --git a/nvim/lua/plugins/lsp-installer.lua b/nvim/lua/plugins/lsp-installer.lua
index da61bbc..199fd37 100644
--- a/nvim/lua/plugins/lsp-installer.lua
+++ b/nvim/lua/plugins/lsp-installer.lua
@@ -1,4 +1,7 @@
-local lsp_installer = require("nvim-lsp-installer")
+local status_ok, lsp_installer = pcall(require, "nvim-lsp-installer")
+if not status_ok then
+ print("Failed to require nvim-lsp-installer")
+end
-- Provide settings first!
lsp_installer.settings {
diff --git a/nvim/lua/plugins/lsp-signature.lua b/nvim/lua/plugins/lsp-signature.lua
new file mode 100644
index 0000000..084913c
--- /dev/null
+++ b/nvim/lua/plugins/lsp-signature.lua
@@ -0,0 +1,59 @@
+local status_ok, signature = pcall(require, "lsp_signature")
+if not status_ok then
+ return
+end
+
+local icons = require "icons"
+
+local cfg = {
+ debug = false, -- set to true to enable debug logging
+ log_path = "debug_log_file_path", -- debug log path
+ verbose = false, -- show debug line number
+
+ bind = true, -- This is mandatory, otherwise border config won't get registered.
+ -- If you want to hook lspsaga or other signature handler, pls set to false
+ doc_lines = 0, -- will show two lines of comment/doc(if there are more than two lines in doc, will be truncated);
+ -- set to 0 if you DO NOT want any API comments be shown
+ -- This setting only take effect in insert mode, it does not affect signature help in normal
+ -- mode, 10 by default
+
+ floating_window = false, -- show hint in a floating window, set to false for virtual text only mode
+
+ floating_window_above_cur_line = true, -- try to place the floating above the current line when possible Note:
+ -- will set to true when fully tested, set to false will use whichever side has more space
+ -- this setting will be helpful if you do not want the PUM and floating win overlap
+ fix_pos = false, -- set to true, the floating window will not auto-close until finish all parameters
+ hint_enable = true, -- virtual hint enable
+ hint_prefix = icons.misc.Squirrel .. " ", -- Panda for parameter
+ hint_scheme = "Comment",
+ use_lspsaga = false, -- set to true if you want to use lspsaga popup
+ hi_parameter = "LspSignatureActiveParameter", -- how your parameter will be highlight
+ max_height = 12, -- max height of signature floating_window, if content is more than max_height, you can scroll down
+ -- to view the hiding contents
+ max_width = 120, -- max_width of signature floating_window, line will be wrapped if exceed max_width
+ handler_opts = {
+ border = "rounded", -- double, rounded, single, shadow, none
+ },
+
+ always_trigger = false, -- sometime show signature on new line or in middle of parameter can be confusing, set it to false for #58
+
+ auto_close_after = nil, -- autoclose signature float win after x sec, disabled if nil.
+ extra_trigger_chars = {}, -- Array of extra characters that will trigger signature completion, e.g., {"(", ","}
+ zindex = 200, -- by default it will be on top of all floating windows, set to <= 50 send it to bottom
+
+ padding = "", -- character to pad on left and right of signature can be ' ', or '|' etc
+
+ transparency = nil, -- disabled by default, allow floating win transparent value 1~100
+ shadow_blend = 36, -- if you using shadow as border use this set the opacity
+ shadow_guibg = "Black", -- if you using shadow as border use this set the color e.g. 'Green' or '#121315'
+ timer_interval = 200, -- default timer check interval set to lower value if you want to reduce latency
+ toggle_key = nil, -- toggle signature on and off in insert mode, e.g. toggle_key = '<M-x>'
+}
+
+-- recommanded:
+signature.setup(cfg) -- no need to specify bufnr if you don't use toggle_key
+
+-- You can also do this inside lsp on_attach
+-- note: on_attach deprecated
+-- require("lsp_signature").on_attach(cfg, bufnr) -- no need to specify bufnr if you don't use toggle_key
+signature.on_attach(cfg) -- no need to specify bufnr if you don't use toggle_key \ No newline at end of file
diff --git a/nvim/lua/plugins/lspconfig.lua b/nvim/lua/plugins/lspconfig.lua
index c10e1dc..0635ee8 100644
--- a/nvim/lua/plugins/lspconfig.lua
+++ b/nvim/lua/plugins/lspconfig.lua
@@ -1,3 +1,8 @@
+local status_ok, lspconfig = pcall(require, "lspconfig")
+if not status_ok then
+ return
+end
+
local capabilities = vim.lsp.protocol.make_client_capabilities()
capabilities.textDocument.completion.completionItem.snippetSupport = true
@@ -9,7 +14,7 @@ vim.lsp.handlers["textDocument/publishDiagnostics"] = vim.lsp.with(
virtual_text = {
true,
spacing = 6,
- --severity_limit='Error' -- Only show virtual text on error
+ severity_limit='Error' -- Only show virtual text on error
},
}
)
@@ -32,19 +37,11 @@ local function config(_config)
}, _config or {})
end
-require("lspconfig").tsserver.setup(config())
-
-require("lspconfig").ccls.setup(config())
-
-require("lspconfig").jedi_language_server.setup(config())
+lspconfig.tsserver.setup(config())
-require("lspconfig").svelte.setup(config())
+lspconfig.ccls.setup(config())
-require("lspconfig").solang.setup(config())
-
-require("lspconfig").cssls.setup(config())
-
-require("lspconfig").gopls.setup(config({
+lspconfig.gopls.setup(config({
cmd = { "gopls", "serve" },
settings = {
gopls = {
@@ -72,8 +69,11 @@ local rustopts = {
server = {
settings = {
["rust-analyzer"] = {
+ cargo = {
+ allFeatures = "true",
+ },
checkOnSave = {
- command = "clippy"
+ command = "clippy",
},
}
}
diff --git a/nvim/lua/plugins/lspkind.lua b/nvim/lua/plugins/lspkind.lua
index d2b437a..b33a24a 100644
--- a/nvim/lua/plugins/lspkind.lua
+++ b/nvim/lua/plugins/lspkind.lua
@@ -1,4 +1,9 @@
-require('lspkind').init({
+local status_ok, lspkind = pcall(require, "lspkind")
+if not status_ok then
+ return
+end
+
+lspkind.init({
-- enables text annotations (default: 'default')
-- default symbol map can be either 'default' or 'codicons' for codicon preset (requires vscode-codicons font installed)
preset = 'codicons',
diff --git a/nvim/lua/plugins/lspstatus.lua b/nvim/lua/plugins/lspstatus.lua
index ce34ab7..923209b 100644
--- a/nvim/lua/plugins/lspstatus.lua
+++ b/nvim/lua/plugins/lspstatus.lua
@@ -1,11 +1,12 @@
-require('lsp-status').status()
-require('lsp-status').register_progress()
-require('lsp-status').config({
- indicator_errors = '✗',
- indicator_warnings = '⚠',
- indicator_info = '',
- indicator_hint = '',
- indicator_ok = '✔',
+local lsp_status = require 'lsp-status'
+lsp_status.status()
+lsp_status.register_progress()
+lsp_status.config({
+ indicator_errors = "",
+ indicator_warnings = "",
+ indicator_info = "",
+ indicator_hint = "",
+ indicator_ok = "",
current_function = true,
update_interval = 100,
status_symbol = ' 🇻',
diff --git a/nvim/lua/plugins/lualine.lua b/nvim/lua/plugins/lualine.lua
index 825ae08..74db5b8 100644
--- a/nvim/lua/plugins/lualine.lua
+++ b/nvim/lua/plugins/lualine.lua
@@ -1,5 +1,113 @@
-require('lualine').setup {
- options = {
- theme = 'vscode'
- }
+local status_ok, lualine = pcall(require, "lualine")
+if not status_ok then
+ return
+end
+
+local status_gps_ok, gps = pcall(require, "nvim-gps")
+if not status_gps_ok then
+ return
+end
+
+local hide_in_width = function()
+ return vim.fn.winwidth(0) > 80
+end
+
+local icons = require 'icons'
+
+local diagnostics = {
+ "diagnostics",
+ sources = { "nvim_diagnostic" },
+ sections = { "error", "warn" },
+ symbols = { error = icons.diagnostics.Error .. " ", warn = icons.diagnostics.Warning .. " " },
+ colored = false,
+ update_in_insert = false,
+ always_visible = true,
+}
+
+local diff = {
+ "diff",
+ colored = false,
+ symbols = { added = icons.git.Add .. " ", modified = icons.git.Mod .. " ", removed = icons.git.Remove .. " " }, -- changes diff symbols
+ cond = hide_in_width,
+}
+
+local mode = {
+ "mode",
+ fmt = function(str)
+ return "-- " .. str .. " --"
+ end,
+}
+
+local filetype = {
+ "filetype",
+ icons_enabled = false,
+ icon = nil,
}
+
+local branch = {
+ "branch",
+ icons_enabled = true,
+ icon = "",
+}
+
+local location = {
+ "location",
+ padding = 0,
+}
+
+-- cool function for progress
+local progress = function()
+ local current_line = vim.fn.line "."
+ local total_lines = vim.fn.line "$"
+ local chars = { "__", "▁▁", "▂▂", "▃▃", "▄▄", "▅▅", "▆▆", "▇▇", "██" }
+ local line_ratio = current_line / total_lines
+ local index = math.ceil(line_ratio * #chars)
+ return chars[index]
+end
+
+local spaces = function()
+ return "spaces: " .. vim.api.nvim_buf_get_option(0, "shiftwidth")
+end
+
+local nvim_gps = function()
+ local gps_location = gps.get_location()
+ if gps_location == "error" then
+ return ""
+ else
+ return gps.get_location()
+ end
+end
+
+lualine.setup {
+ options = {
+ icons_enabled = true,
+ theme = "vscode",
+ component_separators = { left = "", right = "" },
+ section_separators = { left = "", right = "" },
+ disabled_filetypes = { "alpha", "dashboard", "NvimTree", "Outline", "toggleterm" },
+ always_divide_middle = true,
+ },
+ sections = {
+ -- lualine_a = { branch, diagnostics },
+ lualine_a = { branch },
+ lualine_b = { diagnostics },
+ -- lualine_c = { _gps },
+ lualine_c = {
+ { nvim_gps, cond = hide_in_width },
+ },
+ -- lualine_x = { "encoding", "fileformat", "filetype" },
+ lualine_x = { diff, spaces, "encoding", filetype },
+ lualine_y = { location },
+ lualine_z = { progress },
+ },
+ inactive_sections = {
+ lualine_a = {},
+ lualine_b = {},
+ lualine_c = {},
+ lualine_x = { "location" },
+ lualine_y = {},
+ lualine_z = {},
+ },
+ tabline = {},
+ extensions = {},
+} \ No newline at end of file
diff --git a/nvim/lua/plugins/luasnip.lua b/nvim/lua/plugins/luasnip.lua
index 50c5457..962dc24 100644
--- a/nvim/lua/plugins/luasnip.lua
+++ b/nvim/lua/plugins/luasnip.lua
@@ -1,13 +1,18 @@
-require("luasnip").config.set_config({
+local status_ok, luasnip = pcall(require, "luasnip")
+if not status_ok then
+ return
+end
+
+luasnip.config.set_config({
history = true,
updateevents = "TextChanged,TextChangedI"
})
-require("luasnip").snippets = {all = {}, html = {}}
+luasnip.snippets = {all = {}, html = {}}
-require("luasnip").snippets.javascript = require("luasnip").snippets.html
-require("luasnip").snippets.javascriptreact = require("luasnip").snippets.html
-require("luasnip").snippets.typescriptreact = require("luasnip").snippets.html
-require("luasnip/loaders/from_vscode").load({include = {"html"}})
+luasnip.snippets.javascript = luasnip.snippets.html
+luasnip.snippets.javascriptreact = luasnip.snippets.html
+luasnip.snippets.typescriptreact = luasnip.snippets.html
+require("luasnip.loaders.from_vscode").load({include = {"html"}})
-require('luasnip/loaders/from_vscode').lazy_load() \ No newline at end of file
+require('luasnip.loaders.from_vscode').lazy_load() \ No newline at end of file
diff --git a/nvim/lua/plugins/neogit.lua b/nvim/lua/plugins/neogit.lua
index 5d2e47b..ad1f275 100644
--- a/nvim/lua/plugins/neogit.lua
+++ b/nvim/lua/plugins/neogit.lua
@@ -1 +1,6 @@
-require('neogit').setup {} \ No newline at end of file
+local status_ok, neogit = pcall(require, "neogit")
+if not status_ok then
+ return
+end
+
+neogit.setup {} \ No newline at end of file
diff --git a/nvim/lua/plugins/null-ls.lua b/nvim/lua/plugins/null-ls.lua
index 44ee62c..e3aa45f 100644
--- a/nvim/lua/plugins/null-ls.lua
+++ b/nvim/lua/plugins/null-ls.lua
@@ -1,12 +1,47 @@
-local null_ls = require("null-ls")
+local status_ok, null_ls = pcall(require, "null-ls")
+if not status_ok then
+ return
+end
+local code_actions = null_ls.builtins.code_actions
+local diagnostics = null_ls.builtins.diagnostics
local formatting = null_ls.builtins.formatting
null_ls.setup({
- sources = {
- formatting.prettier,
- formatting.black,
- formatting.stylua,
- formatting.rustfmt,
- },
-}) \ No newline at end of file
+ sources = {
+ -- Code Actions
+ code_actions.gitsigns,
+ -- code_actions.shellcheck,
+
+ -- Diagnostics
+ -- diagnostics.codespell,
+ -- diagnostics.luacheck,
+ -- diagnostics.markdownlint,
+ -- diagnostics.shellcheck,
+
+ -- Formatting
+ formatting.prettier,
+ formatting.black,
+ formatting.latexindent,
+ formatting.markdownlint,
+ formatting.stylua,
+ formatting.rustfmt.with({
+ extra_args = function(params)
+ local Path = require("plenary.path")
+ local cargo_toml = Path:new(params.root .. "/" .. "Cargo.toml")
+
+ if cargo_toml:exists() and cargo_toml:is_file() then
+ for _, line in ipairs(cargo_toml:readlines()) do
+ local edition = line:match([[^edition%s*=%s*%"(%d+)%"]])
+ if edition then
+ return { "--edition=" .. edition }
+ end
+ end
+ end
+ -- default edition when we don't find `Cargo.toml` or the `edition` in it.
+ return { "--edition=2021" }
+ end,
+ }),
+ formatting.shfmt,
+ },
+})
diff --git a/nvim/lua/plugins/nvim-tree.lua b/nvim/lua/plugins/nvim-tree.lua
index c2499d8..2bab234 100644
--- a/nvim/lua/plugins/nvim-tree.lua
+++ b/nvim/lua/plugins/nvim-tree.lua
@@ -1,7 +1,111 @@
-require("nvim-tree").setup {
+local status_ok, nvim_tree = pcall(require, "nvim-tree")
+if not status_ok then
+ return
+end
+
+local config_status_ok, nvim_tree_config = pcall(require, "nvim-tree.config")
+if not config_status_ok then
+ return
+end
+
+local tree_cb = nvim_tree_config.nvim_tree_callback
+
+vim.g.nvim_tree_respect_buf_cwd = 1
+vim.g.nvim_tree_icons = {
+ default = "",
+ symlink = "",
git = {
+ unstaged = "",
+ staged = "S",
+ unmerged = "",
+ renamed = "➜",
+ deleted = "",
+ untracked = "U",
+ ignored = "◌",
+ },
+ folder = {
+ default = "",
+ open = "",
+ empty = "",
+ empty_open = "",
+ symlink = "",
+ },
+}
+
+nvim_tree.setup {
+ disable_netrw = true,
+ hijack_netrw = true,
+ open_on_setup = false,
+ ignore_ft_on_setup = {
+ "startify",
+ "dashboard",
+ "alpha",
+ },
+ auto_close = true,
+ open_on_tab = false,
+ hijack_cursor = false,
+ update_cwd = true,
+ update_to_buf_dir = {
enable = true,
- ignore = false,
- timeout = 500
- }
+ auto_open = true,
+ },
+ diagnostics = {
+ enable = true,
+ icons = {
+ hint = "",
+ info = "",
+ warning = "",
+ error = "",
+ },
+ },
+ update_focused_file = {
+ enable = true,
+ update_cwd = true,
+ ignore_list = {},
+ },
+ system_open = {
+ cmd = nil,
+ args = {},
+ },
+ filters = {
+ dotfiles = false,
+ custom = {},
+ },
+ git = {
+ enable = true,
+ ignore = true,
+ timeout = 500,
+ },
+ view = {
+ width = 30,
+ height = 30,
+ hide_root_folder = false,
+ side = "left",
+ auto_resize = true,
+ mappings = {
+ custom_only = false,
+ list = {
+ { key = { "l", "<CR>", "o" }, cb = tree_cb "edit" },
+ { key = "h", cb = tree_cb "close_node" },
+ { key = "v", cb = tree_cb "vsplit" },
+ },
+ },
+ number = false,
+ relativenumber = false,
+ },
+ trash = {
+ cmd = "trash",
+ require_confirm = true,
+ },
+ quit_on_open = 0,
+ git_hl = 1,
+ disable_window_picker = 0,
+ root_folder_modifier = ":t",
+ show_icons = {
+ git = 1,
+ folders = 1,
+ files = 1,
+ folder_arrows = 1,
+ tree_width = 30,
+ },
} \ No newline at end of file
diff --git a/nvim/lua/plugins/project.lua b/nvim/lua/plugins/project.lua
new file mode 100644
index 0000000..810d2bd
--- /dev/null
+++ b/nvim/lua/plugins/project.lua
@@ -0,0 +1,13 @@
+local status_ok, project = pcall(require, "project_nvim")
+if not status_ok then
+ return
+end
+
+project.setup {}
+
+local tele_status_ok, telescope = pcall(require, "telescope")
+if not tele_status_ok then
+ return
+end
+
+telescope.load_extension('projects') \ No newline at end of file
diff --git a/nvim/lua/plugins/renamer.lua b/nvim/lua/plugins/renamer.lua
new file mode 100644
index 0000000..2db1899
--- /dev/null
+++ b/nvim/lua/plugins/renamer.lua
@@ -0,0 +1,46 @@
+local status_ok, renamer = pcall(require, "renamer")
+if not status_ok then
+ return
+end
+
+vim.api.nvim_set_keymap(
+ "i",
+ "<F2>",
+ '<cmd>lua require("renamer").rename({empty = true})<cr>',
+ { noremap = true, silent = true }
+)
+vim.api.nvim_set_keymap(
+ "n",
+ "<F2>",
+ '<cmd>lua require("renamer").rename({empty = true})<cr>',
+ { noremap = true, silent = true }
+)
+local mappings_utils = require("renamer.mappings.utils")
+renamer.setup({
+ -- The popup title, shown if `border` is true
+ title = "Rename",
+ -- The padding around the popup content
+ padding = {
+ top = 0,
+ left = 0,
+ bottom = 0,
+ right = 0,
+ },
+ -- Whether or not to shown a border around the popup
+ border = true,
+ -- The characters which make up the border
+ border_chars = { "─", "│", "─", "│", "╭", "╮", "╯", "╰" },
+ -- Whether or not to highlight the current word references through LSP
+ show_refs = true,
+ -- The keymaps available while in the `renamer` buffer. The example below
+ -- overrides the default values, but you can add others as well.
+ mappings = {
+ ["<c-i>"] = mappings_utils.set_cursor_to_start,
+ ["<c-a>"] = mappings_utils.set_cursor_to_end,
+ ["<c-e>"] = mappings_utils.set_cursor_to_word_end,
+ ["<c-b>"] = mappings_utils.set_cursor_to_word_start,
+ ["<c-c>"] = mappings_utils.clear_line,
+ ["<c-u>"] = mappings_utils.undo,
+ ["<c-r>"] = mappings_utils.redo,
+ },
+}) \ No newline at end of file
diff --git a/nvim/lua/plugins/session_manager.lua b/nvim/lua/plugins/session_manager.lua
new file mode 100644
index 0000000..736e69a
--- /dev/null
+++ b/nvim/lua/plugins/session_manager.lua
@@ -0,0 +1,25 @@
+local status_ok, session_manager = pcall(require, "session_manager")
+if not status_ok then
+ return
+end
+
+local status_ok, config = pcall(require, "session_manager.config")
+if not status_ok then
+ return
+end
+
+-- local Path = require('plenary.path')
+session_manager.setup({
+ autoload_mode = config.AutoloadMode.CurrentDir, -- Define what to do when Neovim is started without arguments. Possible values: Disabled, CurrentDir, LastSession
+ autosave_last_session = false, -- Automatically save last session on exit.
+})
+
+local tele_status_ok, telescope = pcall(require, "telescope")
+if not tele_status_ok then
+ return
+end
+
+local tele_session_status_ok, telescope = pcall(telescope.load_extension, "sessions")
+if not tele_session_status_ok then
+ return
+end \ No newline at end of file
diff --git a/nvim/lua/plugins/telescope.lua b/nvim/lua/plugins/telescope.lua
index d26a4c7..4376f76 100644
--- a/nvim/lua/plugins/telescope.lua
+++ b/nvim/lua/plugins/telescope.lua
@@ -1,4 +1,9 @@
-require('telescope').setup {
+local status_ok, telescope = pcall(require, "telescope")
+if not status_ok then
+ return
+end
+
+telescope.setup {
defaults = {
file_ignore_patterns = {"node_modules", ".git", "dist"},
vimgrep_arguments = {
@@ -46,6 +51,5 @@ require('telescope').setup {
}
-- Extensions
-require('telescope').load_extension('frecency')
-require('telescope').load_extension('fzf')
-require('telescope').load_extension('dap')
+telescope.load_extension('frecency')
+telescope.load_extension('fzf')
diff --git a/nvim/lua/plugins/treesitter.lua b/nvim/lua/plugins/treesitter.lua
index 826693a..95c1aea 100644
--- a/nvim/lua/plugins/treesitter.lua
+++ b/nvim/lua/plugins/treesitter.lua
@@ -1,4 +1,9 @@
-require("nvim-treesitter.configs").setup {
+local status_ok, treesitter = pcall(require, "nvim-treesitter.configs")
+if not status_ok then
+ return
+end
+
+treesitter.setup {
indent = {
enable = true
},
diff --git a/nvim/lua/plugins/which-key.lua b/nvim/lua/plugins/which-key.lua
new file mode 100644
index 0000000..b30fd4d
--- /dev/null
+++ b/nvim/lua/plugins/which-key.lua
@@ -0,0 +1,34 @@
+local status_ok, which_key = pcall(require, "which-key")
+if not status_ok then
+ return
+end
+
+local setup = {
+ plugins = {
+ spelling = {
+ enabled = true, -- enabling this will show WhichKey when pressing z= to select spelling suggestions
+ suggestions = 20, -- how many suggestions should be shown in the list?
+ },
+ },
+ window = {
+ border = "rounded", -- none, single, double, shadow
+ position = "bottom", -- bottom, top
+ margin = { 1, 0, 1, 0 }, -- extra window margin [top, right, bottom, left]
+ padding = { 2, 2, 2, 2 }, -- extra window padding [top, right, bottom, left]
+ winblend = 0,
+ },
+ layout = {
+ height = { min = 4, max = 25 }, -- min and max height of the columns
+ width = { min = 20, max = 50 }, -- min and max width of the columns
+ spacing = 3, -- spacing between columns
+ align = "center", -- align columns left, center or right
+ },
+}
+local opts = {
+ buffer = nil, -- Global mappings. Specify a buffer number for buffer local mappings
+ silent = true, -- use `silent` when creating keymaps
+ noremap = true, -- use `noremap` when creating keymaps
+ nowait = true, -- use `nowait` when creating keymaps
+}
+
+which_key.setup(setup) \ No newline at end of file