improve active cursor line

This commit is contained in:
Tomas Mirchev 2025-10-14 14:54:05 +03:00
parent fabb214a0f
commit 6c73a15f21
6 changed files with 116 additions and 102 deletions

View File

@ -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 },

View File

@ -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" }
}

View File

@ -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

View File

@ -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 <Tab> in file counts for
vim.opt.softtabstop = 2 -- Number of spaces when pressing <Tab> 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

View File

@ -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,

View File

@ -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', '<leader>sk', builtin.keymaps)
vim.keymap.set('n', '<leader>sf', builtin.find_files)
vim.keymap.set('n', '<leader>sw', builtin.grep_string)
vim.keymap.set('n', '<leader>ss', builtin.current_buffer_fuzzy_find)
vim.keymap.set('n', '<leader>sg', builtin.live_grep)
vim.keymap.set('n', '<leader>sd', builtin.diagnostics)
vim.keymap.set('n', '<leader>sr', builtin.lsp_references)
vim.keymap.set('n', '<leader>s.', builtin.oldfiles)
vim.keymap.set('n', '<leader><leader>', 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', '<leader>sk', builtin.keymaps)
-- vim.keymap.set('n', '<leader>sf', builtin.find_files)
-- vim.keymap.set('n', '<leader>sw', builtin.grep_string)
-- vim.keymap.set('n', '<leader>ss', builtin.current_buffer_fuzzy_find)
-- vim.keymap.set('n', '<leader>sg', builtin.live_grep)
-- vim.keymap.set('n', '<leader>sd', builtin.diagnostics)
-- vim.keymap.set('n', '<leader>sr', builtin.lsp_references)
-- vim.keymap.set('n', '<leader>s.', builtin.oldfiles)
-- vim.keymap.set('n', '<leader><leader>', builtin.buffers)
-- end,
-- }