From a7d2a70163f7dc56ab7ff2c259a39ac894b0a33c Mon Sep 17 00:00:00 2001 From: Tomas Mirchev Date: Tue, 14 Oct 2025 14:54:05 +0300 Subject: [PATCH] improve active cursor line --- config/linux-dev/nvim/init.lua | 1 + config/linux-dev/nvim/lazy-lock.json | 11 +-- config/linux-dev/nvim/lua/config/autocmds.lua | 12 ++- config/linux-dev/nvim/lua/config/options.lua | 67 +++++++------ .../nvim/lua/plugins/miscellaneous.lua | 31 +++--- .../linux-dev/nvim/lua/plugins/navigation.lua | 96 ++++++++++--------- 6 files changed, 116 insertions(+), 102 deletions(-) diff --git a/config/linux-dev/nvim/init.lua b/config/linux-dev/nvim/init.lua index 61a9cac..38f9d43 100644 --- a/config/linux-dev/nvim/init.lua +++ b/config/linux-dev/nvim/init.lua @@ -20,6 +20,7 @@ require('config.keymaps') require('config.autocmds') require('config.clipboard') require('config.terminal') + require('lazy').setup({ spec = { { import = 'plugins' } }, change_detection = { notify = false }, diff --git a/config/linux-dev/nvim/lazy-lock.json b/config/linux-dev/nvim/lazy-lock.json index 3393459..a0b0854 100644 --- a/config/linux-dev/nvim/lazy-lock.json +++ b/config/linux-dev/nvim/lazy-lock.json @@ -1,15 +1,12 @@ { "conform.nvim": { "branch": "master", "commit": "fbcb4fa7f34bfea9be702ffff481a8e336ebf6ed" }, - "invero.nvim": { "branch": "main", "commit": "60b610dbaf84a9c9305b2f3387f41683f7c9f2f0" }, + "fzf-lua": { "branch": "main", "commit": "58ebb27333bd12cb497f27b7da07a677116bc0ef" }, + "invero.nvim": { "branch": "main", "commit": "ff1b124ef709686965afdf338d989142e5e60602" }, "lazy.nvim": { "branch": "main", "commit": "1ea3c4085785f460fb0e46d2fe1ee895f5f9e7c1" }, "mason.nvim": { "branch": "main", "commit": "ad7146aa61dcaeb54fa900144d768f040090bff0" }, - "nvim-autopairs": { "branch": "master", "commit": "23320e75953ac82e559c610bec5a90d9c6dfa743" }, + "nvim-autopairs": { "branch": "master", "commit": "7a2c97cccd60abc559344042fefb1d5a85b3e33b" }, "nvim-lint": { "branch": "master", "commit": "9da1fb942dd0668d5182f9c8dee801b9c190e2bb" }, "nvim-tree.lua": { "branch": "master", "commit": "321bc61580fd066b76861c32de3319c3a6d089e7" }, "nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" }, - "nvim-ts-autotag": { "branch": "main", "commit": "c4ca798ab95b316a768d51eaaaee48f64a4a46bc" }, - "plenary.nvim": { "branch": "master", "commit": "b9fd5226c2f76c951fc8ed5923d85e4de065e509" }, - "telescope-fzf-native.nvim": { "branch": "main", "commit": "1f08ed60cafc8f6168b72b80be2b2ea149813e55" }, - "telescope-ui-select.nvim": { "branch": "master", "commit": "6e51d7da30bd139a6950adf2a47fda6df9fa06d2" }, - "telescope.nvim": { "branch": "0.1.x", "commit": "a0bbec21143c7bc5f8bb02e0005fa0b982edc026" } + "nvim-ts-autotag": { "branch": "main", "commit": "c4ca798ab95b316a768d51eaaaee48f64a4a46bc" } } diff --git a/config/linux-dev/nvim/lua/config/autocmds.lua b/config/linux-dev/nvim/lua/config/autocmds.lua index d05d053..befeecc 100644 --- a/config/linux-dev/nvim/lua/config/autocmds.lua +++ b/config/linux-dev/nvim/lua/config/autocmds.lua @@ -1,9 +1,9 @@ --- Automatically create a scratch (no-file) buffer if Neovim starts with no files +-- Automatically create a scratch buffer if Neovim starts with no files vim.api.nvim_create_autocmd('VimEnter', { callback = function() -- Only trigger if no file arguments are passed if vim.fn.argc() == 0 then - vim.cmd('enew') -- create new buffer + vim.cmd('enew') vim.bo.buftype = 'nofile' vim.bo.bufhidden = 'wipe' vim.bo.swapfile = false @@ -27,7 +27,7 @@ vim.api.nvim_create_autocmd('FileType', { }) -- Show cursor line only in active window -vim.api.nvim_create_autocmd({ 'InsertLeave', 'WinEnter' }, { +vim.api.nvim_create_autocmd({ 'WinEnter', 'InsertLeave' }, { callback = function() if vim.w.auto_cursorline then vim.wo.cursorline = true @@ -35,8 +35,12 @@ vim.api.nvim_create_autocmd({ 'InsertLeave', 'WinEnter' }, { end end, }) -vim.api.nvim_create_autocmd({ 'InsertEnter', 'WinLeave' }, { + +vim.api.nvim_create_autocmd({ 'WinLeave', 'InsertEnter' }, { callback = function() + if vim.bo.filetype == 'NvimTree' then + return + end if vim.wo.cursorline then vim.w.auto_cursorline = true vim.wo.cursorline = false diff --git a/config/linux-dev/nvim/lua/config/options.lua b/config/linux-dev/nvim/lua/config/options.lua index 74ca036..f91d67a 100644 --- a/config/linux-dev/nvim/lua/config/options.lua +++ b/config/linux-dev/nvim/lua/config/options.lua @@ -2,7 +2,7 @@ vim.g.mapleader = ' ' vim.g.maplocalleader = ' ' --- Disable features +-- Disable built-in plugins vim.loader.enable() vim.g.loaded_gzip = 1 vim.g.loaded_tar = 1 @@ -18,51 +18,60 @@ vim.g.loaded_2html_plugin = 1 vim.g.loaded_rrhelper = 1 vim.g.loaded_netrw = 1 -- use nvim-tree instead vim.g.loaded_netrwPlugin = 1 -vim.g.loaded_matchparen = 1 -- UI +vim.g.health = { style = 'float' } vim.g.have_nerd_font = true -vim.opt.termguicolors = true -- TrueColor -vim.opt.colorcolumn = '100' -- Vertical guide at column 100 -vim.opt.signcolumn = 'no' -- Hide sign column -vim.opt.cursorline = true -- Highlight current line -vim.opt.guicursor = 'n-v-i-c:block' -- Block cursor shape -vim.opt.number = true -- Show absolute line numbers -vim.opt.relativenumber = true -- Show relative numbers -vim.opt.statusline = '%F%m%r%h%w%=%l,%c %P ' -- Custom statusline +vim.opt.termguicolors = false -vim.opt.wrap = false -- Line wrapping -vim.opt.linebreak = true -- Wrap long lines at convenient points -vim.opt.breakindent = true -- Preserve indent when wrapping long lines +vim.opt.textwidth = 100 +vim.opt.colorcolumn = '+0' --- Editing +vim.opt.signcolumn = 'no' +vim.opt.number = true +vim.opt.relativenumber = true + +vim.opt.cursorline = true +vim.opt.guicursor = 'n-v-i-c:block' +vim.opt.statusline = '%F%m%r%h%w%=%l,%c %P ' +vim.opt.winborder = 'rounded' + +-- Wrap +vim.opt.wrap = false +vim.opt.linebreak = true +vim.opt.breakindent = true + +-- Indent vim.opt.shiftwidth = 2 -- Number of spaces to use for (auto)indent vim.opt.tabstop = 2 -- Number of spaces that a in file counts for vim.opt.softtabstop = 2 -- Number of spaces when pressing in insert mode vim.opt.expandtab = true -- Use spaces instead of literal tab characters vim.opt.autoindent = true -- Copy indent from the current line when starting a new one vim.opt.smartindent = true -- Automatically inserts indents in code blocks (for C-like languages) -vim.opt.completeopt = { 'menuone' } -- Scroll and mouse -vim.opt.scrolloff = 10 -- Keep lines visible above/below cursor -vim.opt.mousescroll = 'hor:1,ver:1' -- Scroll lines/columns -vim.opt.mouse = 'a' -- Enable mouse mode +vim.opt.scrolloff = 10 +vim.opt.sidescrolloff = 5 +vim.opt.mousescroll = 'hor:1,ver:5' +vim.opt.mouse = 'a' -- Enable mouse support -- Search -vim.opt.ignorecase = true -- Case-insensitive search -vim.opt.smartcase = true -- Smart-case search +vim.opt.ignorecase = true +vim.opt.smartcase = true -- Override ignorecase if search contains upper case chars vim.opt.inccommand = 'split' -- Live substitution preview +vim.opt.completeopt = { 'menuone' } -- Splits -vim.opt.splitright = true -- Vertical splits to the right -vim.opt.splitbelow = true -- Horizontal splits below +vim.opt.splitright = true +vim.opt.splitbelow = true --- Performance and persistence -vim.opt.undofile = true -- Save undo history -vim.opt.undodir = vim.fn.stdpath('state') .. '/undo' +-- Persistence +vim.opt.undofile = true vim.opt.swapfile = false -vim.opt.backup = false -vim.opt.writebackup = false -vim.opt.updatetime = 250 -- Faster updates -vim.opt.timeoutlen = 300 -- Shorter keymap timeout + +-- Tweaks +vim.opt.updatetime = 1000 +vim.opt.timeout = true +vim.opt.ttimeout = true +vim.opt.timeoutlen = 500 +vim.opt.ttimeoutlen = 10 diff --git a/config/linux-dev/nvim/lua/plugins/miscellaneous.lua b/config/linux-dev/nvim/lua/plugins/miscellaneous.lua index 479efd9..14b762a 100644 --- a/config/linux-dev/nvim/lua/plugins/miscellaneous.lua +++ b/config/linux-dev/nvim/lua/plugins/miscellaneous.lua @@ -1,25 +1,24 @@ return { - -- { - -- 'windwp/nvim-ts-autotag', - -- opts = { - -- autotag = { - -- enable = true, - -- enable_close = true, - -- enable_rename = true, - -- enable_close_on_slash = true, - -- }, - -- }, - -- }, - { - 'windwp/nvim-autopairs', - event = 'InsertEnter', - config = true, - }, + { 'windwp/nvim-ts-autotag', config = true }, + { 'windwp/nvim-autopairs', event = 'InsertEnter', config = true }, { 'triimdev/invero.nvim', lazy = false, priority = 1000, config = function() + vim.api.nvim_create_user_command('ReloadInvero', function() + require('invero').invalidate_cache() + vim.cmd('Lazy reload invero.nvim') + end, {}) + + -- require('invero').setup({ + -- highlights = function(C, tool) + -- return { + -- -- Statement = { fg = C.none, italic = true }, + -- } + -- end, + -- }) + vim.o.background = 'light' vim.cmd.colorscheme('invero') end, diff --git a/config/linux-dev/nvim/lua/plugins/navigation.lua b/config/linux-dev/nvim/lua/plugins/navigation.lua index 3283bbc..8684725 100644 --- a/config/linux-dev/nvim/lua/plugins/navigation.lua +++ b/config/linux-dev/nvim/lua/plugins/navigation.lua @@ -1,48 +1,52 @@ return { - 'nvim-telescope/telescope.nvim', - event = 'VimEnter', - branch = '0.1.x', - dependencies = { - 'nvim-lua/plenary.nvim', - { - 'nvim-telescope/telescope-fzf-native.nvim', - build = 'make', - cond = function() - return vim.fn.executable('make') == 1 - end, - }, - { 'nvim-telescope/telescope-ui-select.nvim' }, - }, - config = function() - require('telescope').setup({ - defaults = { - layout_strategy = 'vertical', - layout_config = { - width = { 0.95, max = 100 }, - height = 0.95, - preview_cutoff = 1, - preview_height = 0.7, - }, - mappings = { - n = { - ['d'] = 'delete_buffer', - }, - }, - }, - }) - - pcall(require('telescope').load_extension, 'fzf') - pcall(require('telescope').load_extension, 'ui-select') - - local builtin = require('telescope.builtin') - vim.keymap.set('n', 'sk', builtin.keymaps) - vim.keymap.set('n', 'sf', builtin.find_files) - vim.keymap.set('n', 'sw', builtin.grep_string) - vim.keymap.set('n', 'ss', builtin.current_buffer_fuzzy_find) - vim.keymap.set('n', 'sg', builtin.live_grep) - vim.keymap.set('n', 'sd', builtin.diagnostics) - vim.keymap.set('n', 'sr', builtin.lsp_references) - vim.keymap.set('n', 's.', builtin.oldfiles) - vim.keymap.set('n', '', builtin.buffers) - end, + 'ibhagwan/fzf-lua', + opts = {}, } +-- return { +-- 'nvim-telescope/telescope.nvim', +-- event = 'VimEnter', +-- branch = '0.1.x', +-- dependencies = { +-- 'nvim-lua/plenary.nvim', +-- { +-- 'nvim-telescope/telescope-fzf-native.nvim', +-- build = 'make', +-- cond = function() +-- return vim.fn.executable('make') == 1 +-- end, +-- }, +-- { 'nvim-telescope/telescope-ui-select.nvim' }, +-- }, +-- config = function() +-- require('telescope').setup({ +-- defaults = { +-- layout_strategy = 'vertical', +-- layout_config = { +-- width = { 0.95, max = 100 }, +-- height = 0.95, +-- preview_cutoff = 1, +-- preview_height = 0.7, +-- }, +-- mappings = { +-- n = { +-- ['d'] = 'delete_buffer', +-- }, +-- }, +-- }, +-- }) +-- +-- pcall(require('telescope').load_extension, 'fzf') +-- pcall(require('telescope').load_extension, 'ui-select') +-- +-- local builtin = require('telescope.builtin') +-- vim.keymap.set('n', 'sk', builtin.keymaps) +-- vim.keymap.set('n', 'sf', builtin.find_files) +-- vim.keymap.set('n', 'sw', builtin.grep_string) +-- vim.keymap.set('n', 'ss', builtin.current_buffer_fuzzy_find) +-- vim.keymap.set('n', 'sg', builtin.live_grep) +-- vim.keymap.set('n', 'sd', builtin.diagnostics) +-- vim.keymap.set('n', 'sr', builtin.lsp_references) +-- vim.keymap.set('n', 's.', builtin.oldfiles) +-- vim.keymap.set('n', '', builtin.buffers) +-- end, +-- }