Compare commits

...

11 Commits

Author SHA1 Message Date
63467c1f21 chore(main): release 8.4.1 (#1568)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2023-10-03 15:55:11 +02:00
13e9f6e6b5 fix(ui): check folds of the statuscolumn win instead of current win 2023-10-03 15:53:11 +02:00
6428fc167c chore(main): release 8.4.0 (#1564)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2023-10-03 15:10:22 +02:00
762017dc35 fix(ui): better fallback for foldtext when buffer does not have TreeSitter 2023-10-03 15:05:01 +02:00
afbe2043a7 fix(ui): Neovim < 0.10 2023-10-03 14:59:26 +02:00
f1ce07510d feat(ui): fancy fold text 2023-10-03 14:57:59 +02:00
364bcf325d feat(ui): fancy status column 2023-10-03 14:56:55 +02:00
3f868aa825 feat(keymaps): added toggle for relative line numbers 2023-10-03 14:56:55 +02:00
fecc5faca2 chore(build): auto-generate vimdoc 2023-10-03 06:02:56 +00:00
19926d2848 feat(options): enabled treesitter folding and foldtext when available 2023-10-03 08:02:15 +02:00
450e0c6beb feat(options): enable smoothscroll on nightly 2023-10-03 08:02:15 +02:00
6 changed files with 127 additions and 1 deletions

View File

@ -1,5 +1,29 @@
# Changelog
## [8.4.1](https://github.com/LazyVim/LazyVim/compare/v8.4.0...v8.4.1) (2023-10-03)
### Bug Fixes
* **ui:** check folds of the statuscolumn win instead of current win ([13e9f6e](https://github.com/LazyVim/LazyVim/commit/13e9f6e6b5b085191b0ecf194ddf4c9e2d3ae6d7))
## [8.4.0](https://github.com/LazyVim/LazyVim/compare/v8.3.0...v8.4.0) (2023-10-03)
### Features
* **keymaps:** added toggle for relative line numbers ([3f868aa](https://github.com/LazyVim/LazyVim/commit/3f868aa8254efbd494f6bf100c86a59c5a002c1c))
* **options:** enable smoothscroll on nightly ([450e0c6](https://github.com/LazyVim/LazyVim/commit/450e0c6bebc5bb9a0c513cdffaf9c46d5f62d5fa))
* **options:** enabled treesitter folding and foldtext when available ([19926d2](https://github.com/LazyVim/LazyVim/commit/19926d284862b5e58f29e73b71ec532ac29c54ba))
* **ui:** fancy fold text ([f1ce075](https://github.com/LazyVim/LazyVim/commit/f1ce07510d2048e33fec2b609814d68a7175d591))
* **ui:** fancy status column ([364bcf3](https://github.com/LazyVim/LazyVim/commit/364bcf325d91a06e6bd6516bdfed84399566cdb6))
### Bug Fixes
* **ui:** better fallback for foldtext when buffer does not have TreeSitter ([762017d](https://github.com/LazyVim/LazyVim/commit/762017dc35fc961bdcc7879a5527dbccced27792))
* **ui:** Neovim &lt; 0.10 ([afbe204](https://github.com/LazyVim/LazyVim/commit/afbe2043a73b6c90476812f9cc0ca4759814e5ac))
## [8.3.0](https://github.com/LazyVim/LazyVim/compare/v8.2.0...v8.3.0) (2023-10-02)

View File

@ -1,4 +1,4 @@
*LazyVim.txt* For Neovim >= 0.8.0 Last change: 2023 October 02
*LazyVim.txt* For Neovim >= 0.8.0 Last change: 2023 October 03
==============================================================================
Table of Contents *LazyVim-table-of-contents*

View File

@ -19,6 +19,9 @@ local defaults = {
},
-- icons used by other plugins
icons = {
misc = {
dots = "󰇘",
},
dap = {
Stopped = { "󰁕 ", "DiagnosticWarn", "DapStoppedLine" },
Breakpoint = "",

View File

@ -114,6 +114,7 @@ end, { desc = "Format" })
map("n", "<leader>uf", require("lazyvim.plugins.lsp.format").toggle, { desc = "Toggle format on Save" })
map("n", "<leader>us", function() Util.toggle("spell") end, { desc = "Toggle Spelling" })
map("n", "<leader>uw", function() Util.toggle("wrap") end, { desc = "Toggle Word Wrap" })
map("n", "<leader>uL", function() Util.toggle("relativenumber") end, { desc = "Toggle Relative Line Numbers" })
map("n", "<leader>ul", function() Util.toggle_number() end, { desc = "Toggle Line Numbers" })
map("n", "<leader>ud", Util.toggle_diagnostics, { desc = "Toggle Diagnostics" })
local conceallevel = vim.o.conceallevel > 0 and vim.o.conceallevel or 3

View File

@ -46,6 +46,35 @@ opt.updatetime = 200 -- Save swap file and trigger CursorHold
opt.wildmode = "longest:full,full" -- Command-line completion mode
opt.winminwidth = 5 -- Minimum window width
opt.wrap = false -- Disable line wrap
opt.fillchars = {
foldopen = "",
foldclose = "",
-- fold = "⸱",
fold = " ",
foldsep = " ",
diff = "",
eob = " ",
}
if vim.fn.has("nvim-0.10") == 1 then
opt.smoothscroll = true
end
-- Folding
vim.opt.foldlevel = 99
if vim.treesitter.foldexpr then
vim.opt.foldmethod = "expr"
vim.opt.foldexpr = "v:lua.vim.treesitter.foldexpr()"
else
vim.opt.foldmethod = "indent"
end
if vim.treesitter.foldtext then
vim.opt.foldtext = "v:lua.require'lazyvim.util.ui'.foldtext()"
end
if vim.fn.has("nvim-0.9.0") == 1 then
vim.opt.statuscolumn = [[%!v:lua.require'lazyvim.util.ui'.statuscolumn()]]
end
-- Fix markdown indentation settings
vim.g.markdown_recommended_style = 0

69
lua/lazyvim/util/ui.lua Normal file
View File

@ -0,0 +1,69 @@
local M = {}
---@alias Sign {name:string, text:string, texthl:string}
---@return Sign[]
function M.get_signs(win)
local buf = vim.api.nvim_win_get_buf(win)
---@diagnostic disable-next-line: no-unknown
return vim.tbl_map(function(sign)
return vim.fn.sign_getdefined(sign.name)[1]
end, vim.fn.sign_getplaced(buf, { group = "*", lnum = vim.v.lnum })[1].signs)
end
---@param sign? Sign
---@param len? number
function M.icon(sign, len)
sign = sign or {}
len = len or 1
local text = vim.fn.strcharpart(sign.text or "", 0, len) ---@type string
text = text .. string.rep(" ", len - vim.fn.strchars(text))
return sign.texthl and ("%#" .. sign.texthl .. "#" .. text .. "%*") or text
end
function M.foldtext()
local ok = pcall(vim.treesitter.get_parser, vim.api.nvim_get_current_buf())
local ret = ok and vim.treesitter.foldtext and vim.treesitter.foldtext()
if not ret then
ret = { { vim.api.nvim_buf_get_lines(0, vim.v.lnum - 1, vim.v.lnum, false)[1], {} } }
end
table.insert(ret, { " " .. require("lazyvim.config").icons.misc.dots })
return ret
end
function M.statuscolumn()
local win = vim.g.statusline_winid
if vim.wo[win].signcolumn == "no" then
return ""
end
---@type Sign?,Sign?,Sign?
local left, right, fold
for _, s in ipairs(M.get_signs(win)) do
if s.name:find("GitSign") then
right = s
elseif not left then
left = s
end
end
vim.api.nvim_win_call(win, function()
if vim.fn.foldclosed(vim.v.lnum) >= 0 then
fold = { text = vim.opt.fillchars:get().foldclose or "", texthl = "Folded" }
end
end)
local nu = ""
if vim.wo[win].number and vim.v.virtnum == 0 then
nu = vim.wo[win].relativenumber and vim.v.relnum ~= 0 and vim.v.relnum or vim.v.lnum
end
return table.concat({
M.icon(left),
[[%=]],
nu .. " ",
M.icon(fold or right, 2),
}, "")
end
return M