diff --git a/init.lua b/init.lua index 87a1bdf..467fb0f 100644 --- a/init.lua +++ b/init.lua @@ -1,5 +1,4 @@ require "core" -require "core.utils" require "core.options" vim.defer_fn(function() diff --git a/lua/core/init.lua b/lua/core/init.lua index d26d3f2..12f0782 100644 --- a/lua/core/init.lua +++ b/lua/core/init.lua @@ -1,8 +1,10 @@ +-- commands vim.cmd "silent! command! NvChadUpdate lua require('nvchad').update_nvchad()" vim.cmd "silent! command! NvChadSnapshotCreate lua require('nvchad').snap_create()" vim.cmd "silent! command! NvChadSnapshotDelete lua require('nvchad').snap_delete()" vim.cmd "silent! command! NvChadSnapshotCheckout lua require('nvchad').snap_checkout()" +-- autocmds local autocmd = vim.api.nvim_create_autocmd -- Disable statusline in dashboard diff --git a/lua/core/lazy_load.lua b/lua/core/lazy_load.lua index 0a43fea..1be8d0f 100644 --- a/lua/core/lazy_load.lua +++ b/lua/core/lazy_load.lua @@ -1,5 +1,7 @@ --- https://github.com/max397574/omega-nvim/blob/master/lua/omega/modules/ui/bufferline.lua -local lazy_load = function(tb) +-- thx to https://github.com/max397574/omega-nvim/blob/master/lua/omega/modules/ui/bufferline.lua +local M = {} + +M.lazy_load = function(tb) vim.api.nvim_create_autocmd(tb.events, { pattern = "*", group = vim.api.nvim_create_augroup(tb.augroup_name, {}), @@ -21,12 +23,8 @@ local lazy_load = function(tb) }) end -local M = {} - -M.lazy_load = lazy_load - M.bufferline = function() - lazy_load { + M.lazy_load { events = { "BufNewFile", "BufRead", "TabEnter" }, augroup_name = "BufferLineLazy", plugins = "bufferline.nvim", @@ -38,13 +36,13 @@ M.bufferline = function() end M.colorizer = function() - lazy_load { + M.lazy_load { events = { "BufRead", "BufNewFile" }, augroup_name = "ColorizerLazy", plugins = "nvim-colorizer.lua", condition = function() - local items = { "#", "rgb", "hsl" } + local items = { "#", "rgb", "hsl", "rgba", "hsla" } for _, val in ipairs(items) do if vim.fn.search(val) ~= 0 then @@ -56,28 +54,14 @@ M.colorizer = function() end -- load certain plugins only when there's a file opened in the buffer --- if "nvim-file" is executed -> load the plugin after nvim gui loads +-- if "nvim filename" is executed -> load the plugin after nvim gui loads -- This gives an instant preview of nvim with the file opened -M.on_file_open = function() - lazy_load { +M.on_file_open = function(plugin_name) + M.lazy_load { events = { "BufRead", "BufWinEnter", "BufNewFile" }, - augroup_name = "BeLazyOnFileOpen", - plugins = "nvim-lsp-installer indent-blankline.nvim", - - condition = function() - local file = vim.fn.expand "%" - return file ~= "NvimTree_1" and file ~= "[packer]" and file ~= "" - end, - } -end - -M.treesitter = function() - lazy_load { - events = { "BufRead", "BufWinEnter", "BufNewFile" }, - augroup_name = "Treesitter_lazy", - plugins = "nvim-treesitter", - + augroup_name = "BeLazyOnFileOpen" .. plugin_name, + plugins = plugin_name, condition = function() local file = vim.fn.expand "%" return file ~= "NvimTree_1" and file ~= "[packer]" and file ~= "" diff --git a/lua/core/mappings.lua b/lua/core/mappings.lua index ac3eb10..b9fd81d 100644 --- a/lua/core/mappings.lua +++ b/lua/core/mappings.lua @@ -1,4 +1,4 @@ --- n, v, i are mode names +-- n, v, i, tare mode names local function termcodes(str) return vim.api.nvim_replace_termcodes(str, true, true, true) @@ -147,7 +147,7 @@ M.lspconfig = { ["ra"] = { function() - require("ui.renamer").open() + require("nvchad.ui.renamer").open() end, " lsp rename", }, @@ -342,4 +342,24 @@ M.whichkey = { }, } +M.blankline = { + n = { + ["bc"] = { + function() + local ok, start = require("indent_blankline.utils").get_current_context( + vim.g.indent_blankline_context_patterns, + vim.g.indent_blankline_use_treesitter_scope + ) + + if ok then + vim.api.nvim_win_set_cursor(vim.api.nvim_get_current_win(), { start, 0 }) + vim.cmd [[normal! _]] + end + end, + + " Jump to current_context", + }, + }, +} + return M diff --git a/lua/core/options.lua b/lua/core/options.lua index c39d2c9..e171a8d 100644 --- a/lua/core/options.lua +++ b/lua/core/options.lua @@ -19,14 +19,12 @@ opt.title = true opt.clipboard = "unnamedplus" opt.cul = true -- cursor line --- Indentline +-- Indenting opt.expandtab = true opt.shiftwidth = 2 opt.smartindent = true --- disable tilde on end of buffer: https://github.com/neovim/neovim/pull/8546#issuecomment-643643758 opt.fillchars = { eob = " " } - opt.ignorecase = true opt.smartcase = true opt.mouse = "a" @@ -53,10 +51,10 @@ opt.updatetime = 250 -- go to previous/next line with h,l,left arrow and right arrow -- when cursor reaches end/beginning of line opt.whichwrap:append "<>[]hl" + g.mapleader = " " -- disable some builtin vim plugins - local default_plugins = { "2html_plugin", "getscript", @@ -101,5 +99,5 @@ vim.schedule(function() vim.cmd [[ silent! rsh ]] end) --- load user options if the file exists +-- load user options config.options.user() diff --git a/lua/core/packer.lua b/lua/core/packer.lua index 1e8332f..575cefc 100644 --- a/lua/core/packer.lua +++ b/lua/core/packer.lua @@ -8,7 +8,6 @@ M.bootstrap = function() if fn.empty(fn.glob(install_path)) > 0 then print "Cloning packer .." - fn.system { "git", "clone", "--depth", "1", "https://github.com/wbthomason/packer.nvim", install_path } -- install plugins + compile their configs @@ -23,7 +22,7 @@ M.options = { compile_on_sync = true, git = { clone_timeout = 6000 }, display = { - working_sym = " ﲊ", + working_sym = "ﲊ", error_sym = "✗ ", done_sym = " ", removed_sym = " ", diff --git a/lua/core/utils.lua b/lua/core/utils.lua index 9cc8611..7090e7e 100644 --- a/lua/core/utils.lua +++ b/lua/core/utils.lua @@ -21,6 +21,7 @@ M.close_buffer = function(force) end force = force or not vim.bo.buflisted or vim.bo.buftype == "nofile" + -- if not force, change to prev buf and then close current local close_cmd = force and ":bd!" or ":bp | bd" .. fn.bufnr() vim.cmd(close_cmd) @@ -150,9 +151,7 @@ M.load_override = function(default_table, plugin_name) if type(user_table) == "function" then user_table = user_table() - end - - if type(user_table) == "table" then + elseif type(user_table) == "table" then default_table = merge_tb("force", default_table, user_table) else default_table = default_table diff --git a/lua/plugins/configs/bufferline.lua b/lua/plugins/configs/bufferline.lua index 67d258a..cb55bd5 100644 --- a/lua/plugins/configs/bufferline.lua +++ b/lua/plugins/configs/bufferline.lua @@ -7,6 +7,7 @@ end require("base46").load_highlight "bufferline" vim.cmd [[ + function! Toggle_theme(a,b,c,d) lua require('base46').toggle_theme() endfunction @@ -25,18 +26,16 @@ local options = { show_close_icon = false, left_trunc_marker = " ", right_trunc_marker = " ", - max_name_length = 14, + max_name_length = 20, max_prefix_length = 13, tab_size = 20, show_tab_indicators = true, enforce_regular_tabs = false, - view = "multiwindow", show_buffer_close_icons = true, separator_style = "thin", - always_show_bufferline = true, - diagnostics = false, themable = true, + -- top right buttons in bufferline custom_areas = { right = function() return { @@ -45,24 +44,6 @@ local options = { } end, }, - - custom_filter = function(buf_number) - -- Func to filter out our managed/persistent split terms - local present_type, type = pcall(function() - return vim.api.nvim_buf_get_var(buf_number, "term_type") - end) - - if present_type then - if type == "vert" then - return false - elseif type == "hori" then - return false - end - return true - end - - return true - end, }, } diff --git a/lua/plugins/configs/lsp_installer.lua b/lua/plugins/configs/lsp_installer.lua index 2e0cef9..4a78c3d 100644 --- a/lua/plugins/configs/lsp_installer.lua +++ b/lua/plugins/configs/lsp_installer.lua @@ -28,7 +28,7 @@ local options = { }, }, - max_concurrent_installers = 20, + max_concurrent_installers = 10, } options = require("core.utils").load_override(options, "williamboman/nvim-lsp-installer") diff --git a/lua/plugins/configs/lspconfig.lua b/lua/plugins/configs/lspconfig.lua index f149456..9a62a3e 100644 --- a/lua/plugins/configs/lspconfig.lua +++ b/lua/plugins/configs/lspconfig.lua @@ -12,20 +12,14 @@ local utils = require "core.utils" require "ui.lsp" M.on_attach = function(client, bufnr) - client.server_capabilities.documentFormattingProvider = false - client.server_capabilities.documentRangeFormattingProvider = false + client.resolved_capabilities.document_formatting = false + client.resolved_capabilities.document_range_formatting = false local lsp_mappings = utils.load_config().mappings.lspconfig utils.load_mappings({ lsp_mappings }, { buffer = bufnr }) - if client.supports_method "textDocument/signatureHelp" then - vim.api.nvim_create_autocmd({ "CursorHoldI" }, { - pattern = "*", - group = vim.api.nvim_create_augroup("LspSignature", {}), - callback = function() - vim.lsp.buf.signature_help() - end, - }) + if client.server_capabilities.signatureHelpProvider then + require("nvchad.ui.signature").setup(client) end end diff --git a/lua/plugins/configs/nvimtree.lua b/lua/plugins/configs/nvimtree.lua index 646e06b..1bea58a 100644 --- a/lua/plugins/configs/nvimtree.lua +++ b/lua/plugins/configs/nvimtree.lua @@ -9,12 +9,11 @@ require("base46").load_highlight "nvimtree" local options = { filters = { dotfiles = false, - exclude = { "custom" }, }, disable_netrw = true, hijack_netrw = true, + open_on_setup = false, ignore_ft_on_setup = { "alpha" }, - open_on_tab = false, hijack_cursor = true, hijack_unnamed_buffer_when_opening = false, update_cwd = true, @@ -43,15 +42,15 @@ local options = { indent_markers = { enable = false, }, + icons = { - padding = " ", - symlink_arrow = " ➛ ", show = { file = true, folder = true, folder_arrow = true, git = false, }, + glyphs = { default = "", symlink = "", diff --git a/lua/plugins/configs/others.lua b/lua/plugins/configs/others.lua index 56955e1..730e8e2 100644 --- a/lua/plugins/configs/others.lua +++ b/lua/plugins/configs/others.lua @@ -48,6 +48,8 @@ M.blankline = function() buftype_exclude = { "terminal" }, show_trailing_blankline_indent = false, show_first_indent_level = false, + show_current_context = true, + show_current_context_start = true, } options = load_override(options, "lukas-reineke/indent-blankline.nvim") @@ -74,8 +76,6 @@ M.colorizer = function() hsl_fn = false, -- CSS hsl() and hsla() functions css = false, -- Enable all CSS features: rgb_fn, hsl_fn, names, RGB, RRGGBB css_fn = false, -- Enable all CSS *functions*: rgb_fn, hsl_fn - - -- Available modes: foreground, background mode = "background", -- Set the display mode. }, } @@ -146,6 +146,7 @@ M.devicons = function() local options = { override = require("ui.icons").devicons } options = require("core.utils").load_override(options, "kyazdani42/nvim-web-devicons") + devicons.setup(options) end end diff --git a/lua/plugins/init.lua b/lua/plugins/init.lua index 7be9744..4262fbb 100644 --- a/lua/plugins/init.lua +++ b/lua/plugins/init.lua @@ -44,6 +44,9 @@ local plugins = { ["lukas-reineke/indent-blankline.nvim"] = { opt = true, + setup = function() + require("core.lazy_load").on_file_open "indent-blankline.nvim" + end, config = function() require("plugins.configs.others").blankline() end, @@ -61,9 +64,8 @@ local plugins = { ["nvim-treesitter/nvim-treesitter"] = { module = "nvim-treesitter", - cmd = { "TSInstall", "TSUninstall" }, setup = function() - require("core.lazy_load").treesitter() + require("core.lazy_load").on_file_open "nvim-treesitter" end, run = ":TSUpdate", config = function() @@ -87,7 +89,7 @@ local plugins = { ["williamboman/nvim-lsp-installer"] = { opt = true, setup = function() - require("core.lazy_load").on_file_open() + require("core.lazy_load").on_file_open "nvim-lsp-installer" end, }, diff --git a/lua/ui/lsp.lua b/lua/ui/lsp.lua index 17e874b..798b051 100644 --- a/lua/ui/lsp.lua +++ b/lua/ui/lsp.lua @@ -45,13 +45,3 @@ win.default_opts = function(options) opts.border = "single" return opts end - -vim.lsp.handlers["textDocument/signatureHelp"] = vim.lsp.with(vim.lsp.handlers.signature_help, { - border = "single", - silent = true, - focusable = false, - close_events = { "InsertCharPre", "CursorMoved" }, - anchor = "SW", - relative = "cursor", - row = -1, -}) diff --git a/lua/ui/renamer.lua b/lua/ui/renamer.lua deleted file mode 100644 index dcad896..0000000 --- a/lua/ui/renamer.lua +++ /dev/null @@ -1,60 +0,0 @@ --- credits to @Malace : https://www.reddit.com/r/neovim/comments/ql4iuj/rename_hover_including_window_title_and/ --- This is modified version of the above snippet - -local M = {} - -M.open = function() - local currName = vim.fn.expand "" .. " " - - local win = require("plenary.popup").create(currName, { - title = "Renamer", - style = "minimal", - borderchars = { "─", "│", "─", "│", "╭", "╮", "╯", "╰" }, - relative = "cursor", - borderhighlight = "RenamerBorder", - titlehighlight = "RenamerTitle", - focusable = true, - width = 25, - height = 1, - line = "cursor+2", - col = "cursor-1", - }) - - local map_opts = { noremap = true, silent = true } - - vim.cmd "normal w" - vim.cmd "startinsert" - - vim.api.nvim_buf_set_keymap(0, "i", "", "stopinsert | q!", map_opts) - vim.api.nvim_buf_set_keymap(0, "n", "", "stopinsert | q!", map_opts) - - vim.api.nvim_buf_set_keymap( - 0, - "i", - "", - "stopinsert | lua require'ui.renamer'.apply(" .. currName .. "," .. win .. ")", - map_opts - ) - - vim.api.nvim_buf_set_keymap( - 0, - "n", - "", - "stopinsert | lua require'ui.renamer'.apply(" .. currName .. "," .. win .. ")", - map_opts - ) -end - -M.apply = function(curr, win) - local newName = vim.trim(vim.fn.getline ".") - vim.api.nvim_win_close(win, true) - - if #newName > 0 and newName ~= curr then - local params = vim.lsp.util.make_position_params() - params.newName = newName - - vim.lsp.buf_request(0, "textDocument/rename", params) - end -end - -return M diff --git a/lua/ui/statusline.lua b/lua/ui/statusline.lua index 7dd9ad8..ddeb2c1 100644 --- a/lua/ui/statusline.lua +++ b/lua/ui/statusline.lua @@ -149,18 +149,14 @@ end M.LSP_status = function() local clients = vim.lsp.get_active_clients() - local names = {} + local name = false for _, client in ipairs(clients) do if client.attached_buffers[vim.api.nvim_get_current_buf()] then - table.insert(names, client.name) + name = client.name + break end end - - local name = false - if next(names) then - name = table.concat(names, '|') - end - + local content = name and "  LSP ~ " .. name .. " " or false return content and ("%#St_LspStatus#" .. content) or "" end @@ -174,19 +170,19 @@ end M.cursor_position = function() local left_sep = "%#St_pos_sep#" .. sep_l - local icon = "%#St_pos_icon#" .. " " + local icon = "%#St_pos_icon#" .. " " local current_line = fn.line "." local total_line = fn.line "$" local text = math.modf((current_line / total_line) * 100) .. tostring "%%" if current_line == 1 then - text = "Top " + text = "Top" elseif current_line == total_line then - text = "Bot " + text = "Bot" end - return left_sep .. icon .. "%#St_pos_text#" .. " " .. text + return left_sep .. icon .. "%#St_pos_text#" .. " " .. text .. " " end M.run = function()