tidy.nvim removes trailing white space and empty lines at EOF on save.
It may work on lower versions, but is tested and updated using nightly.
To install tidy.nvim with the default configuration using lazy.nvim, do:
{
"mcauley-penney/tidy.nvim",
config = true,
}
tidy.nvim comes with the following defaults:
{
enabled_on_save = true
filetype_exclude = {} -- Tidy will not be enabled for any filetype, e.g. "diff", in this table
only_modified_lines = false,
provide_undefined_editorconfig_behavior = false,
}
If your project uses .editorconfig
, tidy.nvim
will respect the trim_trailing_whitespace
setting. When this option is explicitly set, the plugin will defer to it and skip trimming.
However, if .editorconfig
is present but the option is not defined, tidy.nvim
will not trim whitespace by default. This is done because we expect that you do not want trailing whitespace trimmed if you have not defined this setting in your existing .editorconfig
file. This can make it seem like the plugin has stopped working, but it has not. To override this behavior, set provide_undefined_editorconfig_behavior = true
in your config. This setting will make tidy trim whitespace even if .editorconfig
exists and does not hae the trim_trailing_whitespace
setting.
tidy.nvim also comes with the following functions, which may be mapped:
Lua | Description |
---|---|
require("tidy").toggle() |
Turn tidy.nvim off for the current buffer |
require("tidy").run() |
Run the formatting functionality of tidy.nvim off without saving |
A more full example configuration for lazy.nvim would be:
{
"mcauley-penney/tidy.nvim",
opts = {
enabled_on_save = false
filetype_exclude = { "markdown", "diff" }
},
init = function()
vim.keymap.set('n', "<leader>tt", require("tidy").toggle, {})
vim.keymap.set('n', "<leader>tr", require("tidy").run, {})
end
}
I originally wrote this as a wrapper around a couple of vim regex commands used for formatting files before I began using formatters. These commands are not mine, please see the sources below. Even with real formatters in my setup now, I still like and use this because I like these specific formats to be applied to every buffer and don't want to have a formatting tool installed for them.
ib.
, the author of this Stack Overflow answer
This line in gpanders/editorconfig.nvim for exposing me to the keepjumps
and keeppatterns
modifiers