Implemented folding and some improvements. Moved functions to the utils module

This commit is contained in:
2025-08-29 17:38:23 +02:00
parent d29b2e1012
commit ec9b84ac35
10 changed files with 70 additions and 36 deletions

View File

@@ -1,9 +1,8 @@
-- Save the last file on exit -- Save the last file on exit
vim.api.nvim_create_autocmd("VimLeave", { vim.api.nvim_create_autocmd("VimLeave", {
callback = function() callback = function()
-- Save the last file path to a file
local last_file = vim.fn.expand('%:p') -- Get the absolute path of the current file local last_file = vim.fn.expand('%:p') -- Get the absolute path of the current file
if last_file ~= "" then if last_file ~= "" then -- The operator means not equal in lua
local file = io.open(vim.fn.stdpath('data') .. "/lastfile.txt", "w") local file = io.open(vim.fn.stdpath('data') .. "/lastfile.txt", "w")
if file then if file then
file:write(last_file) file:write(last_file)
@@ -12,3 +11,18 @@ vim.api.nvim_create_autocmd("VimLeave", {
end end
end, end,
}) })
vim.api.nvim_create_augroup("RememberFolds", {
clear = true
})
vim.api.nvim_create_autocmd({"BufWinLeave"}, {
group = "RememberFolds",
pattern = "*",
command = "silent! mkview",
})
vim.api.nvim_create_autocmd({"BufWinEnter"}, {
group = "RememberFolds",
pattern = "*",
command = "silent! loadview",
})

View File

@@ -33,6 +33,20 @@ vim.keymap.set('n', '<leader>ya', 'ggVG"+y<C-o>')
vim.keymap.set('n', '<leader>ss', ':wa<CR>') vim.keymap.set('n', '<leader>ss', ':wa<CR>')
vim.keymap.set("n", "<leader>nn", ":e ~/synced/brainstore/zettelkasten/quick<CR>", { silent = true }) vim.keymap.set("n", "<leader>nn", ":e ~/synced/brainstore/zettelkasten/quick<CR>", { silent = true })
-- Folding
local opts = { noremap = true, silent = true }
local is_all_folded = false
local function toggle_fold()
if is_all_folded then
vim.opt.foldlevel = 99
else
vim.opt.foldlevel = 0
end
is_all_folded = not is_all_folded
end
vim.api.nvim_set_keymap("n", "<leader>ft", "za", opts) -- toggle fold under cursor
vim.keymap.set("n", "<leader>fs", toggle_fold, opts) -- close all folds
-- Quickly open some buffers -- Quickly open some buffers
vim.keymap.set('n', '<leader>occ', ':e ~/.config/nvim/init.lua<CR>`.zz') vim.keymap.set('n', '<leader>occ', ':e ~/.config/nvim/init.lua<CR>`.zz')
vim.keymap.set('n', '<leader>oct', ':e ~/synced/vault/contacts/contacts.txt<CR>`.zz') vim.keymap.set('n', '<leader>oct', ':e ~/synced/vault/contacts/contacts.txt<CR>`.zz')

View File

@@ -16,3 +16,13 @@ vim.g.loaded_netrw = 1
vim.g.loaded_netrwPlugin = 1 vim.g.loaded_netrwPlugin = 1
vim.opt.signcolumn = "yes" vim.opt.signcolumn = "yes"
-- Enable Treesitter-based folding
vim.opt.foldmethod = "expr"
vim.opt.foldexpr = "nvim_treesitter#foldexpr()"
vim.opt.foldlevelstart = 99 -- open all folds by default
vim.opt.fillchars = "fold:╌"
-- 3. Persist folds using mkview/loadview

View File

@@ -1,4 +1,3 @@
local base_zet = "~/synced/brainstore/zettelkasten"
return { return {
{ {
@@ -43,6 +42,8 @@ return {
'Ascyii/telekasten.nvim', 'Ascyii/telekasten.nvim',
dev = true, dev = true,
config = function() config = function()
local base_zet = "~/synced/brainstore/zettelkasten"
-- Again can only use opts when not using config -- Again can only use opts when not using config
require("telekasten").setup({ require("telekasten").setup({
home = vim.fn.expand(base_zet), home = vim.fn.expand(base_zet),
@@ -61,6 +62,7 @@ return {
uuid_separator = "-", uuid_separator = "-",
}) })
-- Telekasten occupies the z namespace
vim.keymap.set("n", "<leader>z", "<cmd>Telekasten panel<CR>") vim.keymap.set("n", "<leader>z", "<cmd>Telekasten panel<CR>")
vim.keymap.set("n", "<leader>zf", "<cmd>Telekasten find_notes<CR>") vim.keymap.set("n", "<leader>zf", "<cmd>Telekasten find_notes<CR>")
vim.keymap.set("n", "<leader>zg", "<cmd>Telekasten search_notes<CR>") vim.keymap.set("n", "<leader>zg", "<cmd>Telekasten search_notes<CR>")

View File

@@ -2,13 +2,16 @@ return {
"nvim-tree/nvim-tree.lua", "nvim-tree/nvim-tree.lua",
keys = { keys = {
{ "<leader>e", function() { "<leader>e", function()
require("nvim-tree.api").tree.toggle({ find_file = true, update_root = true, focus = true, }) require("nvim-tree.api").tree.toggle({
find_file = true,
update_root = true,
focus = true,
})
end end
} }
}, },
opts = { opts = {
sort_by = "case_sensitive", sort_by = "case_sensitive",
view = { view = {
width = 35, width = 35,
side = "right", side = "right",
@@ -19,7 +22,6 @@ return {
update_focused_file = { update_focused_file = {
enable = false, enable = false,
}, },
renderer = { renderer = {
group_empty = true, group_empty = true,
highlight_git = true, highlight_git = true,
@@ -39,25 +41,21 @@ return {
}, },
}, },
}, },
filters = { filters = {
dotfiles = false, dotfiles = false,
git_clean = false, git_clean = false,
no_buffer = false, no_buffer = false,
custom = { ".git" }, custom = { ".git" },
}, },
git = { git = {
enable = true, enable = true,
ignore = false, ignore = false,
}, },
actions = { actions = {
open_file = { open_file = {
quit_on_open = false, quit_on_open = false,
resize_window = true, resize_window = true,
}, },
}, },
} }
} }

View File

@@ -57,7 +57,7 @@ return {
no_ignore = true, -- Also show files in gitignore no_ignore = true, -- Also show files in gitignore
follow = true, follow = true,
disable_devicons = true, disable_devicons = true,
prompt_title = "Find Files - custom", prompt_title = "Find Files",
find_command = { find_command = {
"rg", "--files", "rg", "--files",
"--glob", "!**/.git/*", "--glob", "!**/.git/*",

View File

@@ -10,6 +10,7 @@ return {
ensure_installed = { "typst", "go", "bash", "python", "nix", "lua" }, ensure_installed = { "typst", "go", "bash", "python", "nix", "lua" },
highlight = { enable = true }, highlight = { enable = true },
indent = { enable = true }, indent = { enable = true },
fold = { enable = true },
}) })
end end
}, },

View File

@@ -1,14 +1,4 @@
--- @return string local utils = require("utils.functions")
local function get_cwd()
local cwd = vim.fn.getcwd()
local home = os.getenv("HOME")
if cwd:sub(1, #home) == home then
return "~" .. cwd:sub(#home + 1)
else
return cwd
end
end
return { return {
{ {
@@ -21,15 +11,17 @@ return {
}, },
{ {
'nvim-lualine/lualine.nvim', 'nvim-lualine/lualine.nvim',
dependencies = { 'nvim-tree/nvim-web-devicons' }, dependencies = {
'nvim-tree/nvim-web-devicons'
},
opts = { opts = {
options = { options = {
icons_enabled = false, icons_enabled = true,
theme = 'gruvbox', theme = 'gruvbox',
component_separators = { left = '', right = '' }, component_separators = { left = '', right = '' },
section_separators = { left = '', right = '' }, section_separators = { left = '', right = '' },
always_divide_middle = true, always_divide_middle = true,
always_show_tabline = true, always_show_tabline = false,
globalstatus = false, globalstatus = false,
refresh = { refresh = {
statusline = 300, statusline = 300,
@@ -40,21 +32,12 @@ return {
sections = { sections = {
lualine_a = { 'mode' }, lualine_a = { 'mode' },
lualine_b = { 'branch', 'diff', 'diagnostics' }, lualine_b = { 'branch', 'diff', 'diagnostics' },
lualine_c = { get_cwd, 'filename' }, lualine_c = { utils.get_cwd(), 'filename' },
lualine_x = { 'encoding', 'fileformat', 'filetype' }, lualine_x = { 'encoding', 'fileformat', 'filetype' },
lualine_y = { 'progress' }, lualine_y = { 'progress' },
lualine_z = { 'location' } lualine_z = { 'location' }
}, },
inactive_sections = { extensions = { "nvim-tree" } -- show another line on the tree
lualine_a = {},
lualine_b = {},
lualine_c = { 'filename' },
lualine_x = { 'location' },
lualine_y = {},
lualine_z = {}
},
extensions = { "nvim-tree" }
} }
}, },
{ {

0
lua/utils/after.lua Normal file
View File

View File

@@ -5,6 +5,18 @@ function M.sleep(n)
os.execute("sleep " .. tonumber(n)) os.execute("sleep " .. tonumber(n))
end end
--- @return string
function M.get_cwd()
local cwd = vim.fn.getcwd()
local home = os.getenv("HOME")
if cwd:sub(1, #home) == home then
return "~" .. cwd:sub(#home + 1)
else
return cwd
end
end
--- @return {} --- @return {}
function M.get_lsp_servers() function M.get_lsp_servers()
local servers = { "lua_ls" } local servers = { "lua_ls" }