diff --git a/init.lua b/init.lua index ea86b792..2aed2c59 100644 --- a/init.lua +++ b/init.lua @@ -922,6 +922,8 @@ require('lazy').setup({ -- require 'kickstart.plugins.lint', -- require 'kickstart.plugins.autopairs', -- require 'kickstart.plugins.neo-tree', + -- require 'kickstart.plugins.statuscol', + -- require 'kickstart.plugins.nvim-ufo', -- require 'kickstart.plugins.gitsigns', -- adds gitsigns recommend keymaps -- NOTE: The import below can automatically add your own plugins, configuration, etc from `lua/custom/plugins/*.lua` diff --git a/lua/kickstart/plugins/nvim-ufo.lua b/lua/kickstart/plugins/nvim-ufo.lua new file mode 100644 index 00000000..393934fb --- /dev/null +++ b/lua/kickstart/plugins/nvim-ufo.lua @@ -0,0 +1,19 @@ +-- Makes folding look modern and keep high performance +return { + 'kevinhwang91/nvim-ufo', + dependencies = { 'kevinhwang91/promise-async' }, + config = function() + vim.opt.foldlevel = 99 -- Using ufo provider need a large value, feel free to decrease the value + vim.opt.foldlevelstart = 99 + + -- treesitter as a main provider instead + -- (Note: the `nvim-treesitter` plugin is *not* needed.) + -- ufo uses the same query files for folding (queries//folds.scm) + -- performance and stability are better than `foldmethod=nvim_treesitter#foldexpr()` + require('ufo').setup { + provider_selector = function(bufnr, filetype, buftype) + return { 'treesitter', 'indent' } + end, + } + end, +} diff --git a/lua/kickstart/plugins/statuscol.lua b/lua/kickstart/plugins/statuscol.lua new file mode 100644 index 00000000..b864d0b4 --- /dev/null +++ b/lua/kickstart/plugins/statuscol.lua @@ -0,0 +1,31 @@ +-- Provide a configurable 'statuscolumn' and click handlers +return { + 'luukvbaal/statuscol.nvim', + config = function() + vim.opt.fillchars = vim.g.have_nerd_font and { foldclose = '', foldopen = '', foldsep = ' ' } or { foldclose = '˃', foldopen = '˅', foldsep = ' ' } + vim.opt.foldcolumn = '1' + + local builtin = require 'statuscol.builtin' + require('statuscol').setup { + -- configuration goes here, for example: + relculright = true, -- whether to right-align the cursor line number with 'relativenumber' set + segments = { + { + sign = { namespace = { 'diagnostic/signs' } }, + click = 'v:lua.ScSa', + }, + { + sign = { name = { '.*' }, colwidth = 1 }, -- signs like breakpoints, etc. + click = 'v:lua.ScSa', + }, + { text = { builtin.lnumfunc }, click = 'v:lua.ScLa' }, -- line number that can be configured through a few options + { + sign = { namespace = { 'gitsigns' }, colwidth = 1 }, + click = 'v:lua.ScSa', + }, + { text = { builtin.foldfunc }, click = 'v:lua.ScFa' }, -- fold column that does not print the fold depth digits + { text = { ' ' } }, -- whitespace padding + }, + } + end, +}