From 409fc9805b2c9e0e841a5bb4b85c7edd268499da Mon Sep 17 00:00:00 2001 From: Sam Vendittelli Date: Wed, 13 May 2026 15:05:35 +0100 Subject: [PATCH 1/2] feat: allow disabling the plugin Enable disabling the plugin either globally, or locally for a buffer by setting an option. --- README.md | 7 +++++++ plugin/numbertoggle.lua | 10 ++++++++++ 2 files changed, 17 insertions(+) diff --git a/README.md b/README.md index a64ced0..69e609a 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,13 @@ Use your favorite package manager. Example config with [packer.nvim](https://git use { "sitiom/nvim-numbertoggle" } ``` +## Disabling + +This plugin can be disabled in two ways: + +- Globally: set `vim.g.numbertoggle_disable` to `true`. +- Locally for a buffer: set `vim.b.numbertoggle_disable` to `true`. + ## Acknowledgment https://github.com/jeffkreeftmeijer/vim-numbertoggle diff --git a/plugin/numbertoggle.lua b/plugin/numbertoggle.lua index 5c38dbf..d91768d 100644 --- a/plugin/numbertoggle.lua +++ b/plugin/numbertoggle.lua @@ -1,9 +1,16 @@ local augroup = vim.api.nvim_create_augroup("numbertoggle", {}) +local function is_disabled() + return vim.g.numbertoggle_disable or vim.b.numbertoggle_disable +end + vim.api.nvim_create_autocmd({ "BufEnter", "FocusGained", "InsertLeave", "CmdlineLeave", "WinEnter" }, { pattern = "*", group = augroup, callback = function() + if is_disabled() then + return + end if vim.o.nu and vim.api.nvim_get_mode().mode ~= "i" then vim.opt.relativenumber = true end @@ -14,6 +21,9 @@ vim.api.nvim_create_autocmd({ "BufLeave", "FocusLost", "InsertEnter", "CmdlineEn pattern = "*", group = augroup, callback = function() + if is_disabled() then + return + end if vim.o.nu then vim.opt.relativenumber = false -- Conditional taken from https://github.com/rockyzhang24/dotfiles/commit/03dd14b5d43f812661b88c4660c03d714132abcf From a55659b492bd9f2520ab79ea4a6998b5a3a71885 Mon Sep 17 00:00:00 2001 From: Sam Vendittelli Date: Wed, 13 May 2026 15:37:50 +0100 Subject: [PATCH 2/2] fix: read buffer variable correctly It wasn't picking up the buffer previously. --- plugin/numbertoggle.lua | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/plugin/numbertoggle.lua b/plugin/numbertoggle.lua index d91768d..bf5fbf8 100644 --- a/plugin/numbertoggle.lua +++ b/plugin/numbertoggle.lua @@ -1,14 +1,20 @@ local augroup = vim.api.nvim_create_augroup("numbertoggle", {}) -local function is_disabled() - return vim.g.numbertoggle_disable or vim.b.numbertoggle_disable +local function is_disabled(buf) + if vim.g.numbertoggle_disable then + return true + end + if not vim.api.nvim_buf_is_valid(buf) then + return nil + end + return vim.b[buf or 0].numbertoggle_disable end vim.api.nvim_create_autocmd({ "BufEnter", "FocusGained", "InsertLeave", "CmdlineLeave", "WinEnter" }, { pattern = "*", group = augroup, - callback = function() - if is_disabled() then + callback = function(args) + if is_disabled(args.buf) then return end if vim.o.nu and vim.api.nvim_get_mode().mode ~= "i" then @@ -20,15 +26,15 @@ vim.api.nvim_create_autocmd({ "BufEnter", "FocusGained", "InsertLeave", "Cmdline vim.api.nvim_create_autocmd({ "BufLeave", "FocusLost", "InsertEnter", "CmdlineEnter", "WinLeave" }, { pattern = "*", group = augroup, - callback = function() - if is_disabled() then + callback = function(args) + if is_disabled(args.buf) then return end if vim.o.nu then vim.opt.relativenumber = false -- Conditional taken from https://github.com/rockyzhang24/dotfiles/commit/03dd14b5d43f812661b88c4660c03d714132abcf -- Workaround for https://github.com/neovim/neovim/issues/32068 - if not vim.tbl_contains({"@", "-"}, vim.v.event.cmdtype) then + if not vim.tbl_contains({ "@", "-" }, vim.v.event.cmdtype) then vim.cmd "redraw" end end