diff options
author | Squibid <me@zacharyscheiman.com> | 2025-04-17 11:41:32 -0500 |
---|---|---|
committer | Squibid <me@zacharyscheiman.com> | 2025-04-17 11:41:32 -0500 |
commit | 3094bf2a3983b375f4adeccd25c3b12bbbded2aa (patch) | |
tree | 860f0a9cfd3d83bf73837e2f3a0ccc1b0c75cf5b /lua/conf/opts.lua | |
parent | 8eaa615596be321a3be12378c5e7d65cc7e482b6 (diff) | |
download | nvim-3094bf2a3983b375f4adeccd25c3b12bbbded2aa.tar.gz nvim-3094bf2a3983b375f4adeccd25c3b12bbbded2aa.tar.bz2 nvim-3094bf2a3983b375f4adeccd25c3b12bbbded2aa.zip |
a lot more stuff
Diffstat (limited to '')
-rw-r--r-- | lua/conf/opts.lua | 82 |
1 files changed, 81 insertions, 1 deletions
diff --git a/lua/conf/opts.lua b/lua/conf/opts.lua index db75358..5d8a24f 100644 --- a/lua/conf/opts.lua +++ b/lua/conf/opts.lua @@ -1,3 +1,6 @@ +local misc = require('core.misc') +local auto = misc.auto + -- color stuff if vim.fn.has("termguicolors") then vim.opt.termguicolors = true @@ -5,6 +8,10 @@ end vim.opt.laststatus = 3 +-- numbers +vim.opt.number = true +vim.opt.relativenumber = true + -- buffer vim.opt.scrolloff = 5 vim.opt.wrap = true -- wraping lines @@ -21,7 +28,12 @@ vim.opt.tabstop = tabwidth vim.opt.shiftwidth = tabwidth vim.opt.softtabstop = tabwidth -vim.opt.clipboard = 'unnamedplus' -- system clipboard +-- Schedule the setting after `UiEnter` because it can increase startup-time. +-- (yoinked from kickstart.nvim) +vim.schedule(function() + vim.opt.clipboard = 'unnamedplus' -- system clipboard +end) + vim.opt.updatetime = 200 -- file saving @@ -50,3 +62,71 @@ vim.g.netrw_winsize = 30 vim.g.netrw_liststyle = 1 vim.g.netrw_sizestyle = "H" vim.g.netrw_hide = 1 + +-- folding +auto("FileType", { + callback = function() + -- support lsp folding + if vim.fn.has("nvim-0.11") then + auto('LspAttach', { + callback = function(args) + local client = vim.lsp.get_client_by_id(args.data.client_id) + if not client then + return + end + + if client:supports_method('textDocument/foldingRange') then + local win = vim.api.nvim_get_current_win() + vim.wo[win][0].foldmethod = "expr" + vim.wo[win][0].foldexpr = 'v:lua.vim.lsp.foldexpr()' + end + end, + }) + end + + -- or just rely on treesitter + if require("nvim-treesitter.parsers").has_parser() then + vim.opt.foldmethod = "expr" + vim.opt.foldexpr = "nvim_treesitter#foldexpr()" + else + vim.opt.foldmethod = "syntax" + end + end +}) + +-- lsp folding: vim.o.foldexpr = "v:lua.vim.lsp.foldexpr()" +-- waiting on https://github.com/neovim/neovim/pull/31311 to hit a release +require('core.lsp.functions').add_capabilities({ + textDocument = { + foldingRange = { + dynamicRegistration = false, + lineFoldingOnly = true + } + } +}) + +vim.opt.foldlevelstart = 99 +vim.opt.foldlevel = 99 +vim.opt.foldenable = true +vim.o.fillchars = 'fold: ' + +_G.Fold_text = require('core.folding') +vim.opt.foldtext = 'v:lua.Fold_text()' + +-- statusline +function _G.Status() + return table.concat { + "%t", -- file name + " %h", -- help buffer tag + "%m", -- modify tag + "%r", -- readonly flag + "%=", -- seperate left and right side + + -- print out the number of lsp clients attached + "λ"..#vim.lsp.get_clients({ bufnr = 0 }).." ", + + "%l,%c%V", -- line, column-virtual column + " %P" -- percentage through display window + } +end +vim.o.statusline="%!v:lua.Status()" |