docs, refactor: update to new aucmd API

• remove vim source code for implementing tidy's autocommands
      and instead use the Lua API from 0.7

    • update README with improved explanation and new installation
      instructions

    Resolves #4
main
McAuley Penney 2 years ago
parent 1f1aa06991
commit 9f906a154d

@ -11,27 +11,22 @@ on every `BufWritePre`.
![tidy](https://user-images.githubusercontent.com/59481467/170846833-40ab4e8c-ebdf-42c4-b1f1-a4d874f27ea8.gif) ![tidy](https://user-images.githubusercontent.com/59481467/170846833-40ab4e8c-ebdf-42c4-b1f1-a4d874f27ea8.gif)
**Notes**: See the `cfg` branch for increased functionality and configuration.
## About ## About
I wrote this as a wrapper around a few vim regex commands used for formatting files before I began using formatters. These commands are not mine, see the `Credits` section below for sources. My contribution is a basic conditional which protects the user from an error when the cursor is in the group of empty lines removed from the end of the buffer. 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. There really isn't a reason to have this in a plugin other than wanting to disseminate this for new users and people who didn't know you could do this. You could (should) instead just yank and put the code right in your config. 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 `Credits` section below for sources. My contribution is a basic conditional which ensures that the user's cursor doesn't migrate during the cleaning operations conducted on the buffer's contents unless the cursor is in the removed white space. 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. There really isn't a reason to have this in a plugin other than wanting to disseminate it for new users or people who didn't know you could do this. You could (should) instead just yank and put the code right in your configuration.
## Installation ## Installation
- Packer - Packer
```lua ```lua
use "mcauley-penney/tidy.nvim" use({
"mcauley-penney/tidy.nvim",
config = function()
require("tidy").setup()
end
})
``` ```
or with lazy-loading
```lua
use{ "mcauley-penney/tidy.nvim", event = "BufWritePre" }
```
## Credits ## Credits
- [Vim Tips Wiki entry for removing unwanted spaces](https://vim.fandom.com/wiki/Remove_unwanted_spaces#Automatically_removing_all_trailing_whitespace) - [Vim Tips Wiki entry for removing unwanted spaces](https://vim.fandom.com/wiki/Remove_unwanted_spaces#Automatically_removing_all_trailing_whitespace)
@ -40,7 +35,3 @@ use{ "mcauley-penney/tidy.nvim", event = "BufWritePre" }
- [This line](https://github.com/gpanders/editorconfig.nvim/blob/ae3586771996b2fb1662eb0c17f5d1f4f5759bb7/lua/editorconfig.lua#L180) - [This line](https://github.com/gpanders/editorconfig.nvim/blob/ae3586771996b2fb1662eb0c17f5d1f4f5759bb7/lua/editorconfig.lua#L180)
in [gpanders/editorconfig.nvim](https://github.com/gpanders/editorconfig.nvim) for exposing me to the `keepjumps` in [gpanders/editorconfig.nvim](https://github.com/gpanders/editorconfig.nvim) for exposing me to the `keepjumps`
and `keeppatterns` modifiers and `keeppatterns` modifiers
## Todo
- [ ] preserve undotree

@ -1,32 +1,37 @@
local M = {} local M = {}
function M.tidy_up() function M.setup()
-- get tuple of cursor position before making changes local tidy_grp = vim.api.nvim_create_augroup("tidy", { clear = true })
local pos = vim.api.nvim_win_get_cursor(0)
vim.api.nvim_create_autocmd("BufWritePre", {
-- delete all whitespace, see source 1 group = tidy_grp,
vim.cmd([[:keepjumps keeppatterns %s/\s\+$//e]]) callback = function()
local pos = vim.api.nvim_win_get_cursor(0)
-- delete all lines at end of buffer, see source 2
vim.cmd([[:keepjumps keeppatterns silent! 0;/^\%(\n*.\)\@!/,$d]]) vim.cmd([[:keepjumps keeppatterns %s/\s\+$//e]])
-- get row count after line deletion -- delete all lines at end of buffer, see source 2
local end_row = vim.api.nvim_buf_line_count(0) vim.cmd([[:keepjumps keeppatterns silent! 0;/^\%(\n*.\)\@!/,$d]])
--[[ -- get row count after line deletion
if the row value in the original cursor local last_row = vim.api.nvim_buf_line_count(0)
position tuple is greater than the
line count after empty line deletion --[[
(meaning that the cursor was inside of if the row value in the original cursor
the group of empty lines at the end of position tuple is greater than the
the file when they were deleted), set line count after empty line deletion
the cursor row to the last line (meaning that the cursor was inside of
]] the group of empty lines at the end of
if pos[1] > end_row then the file when they were deleted), set
pos[1] = end_row the cursor row to the last line.
end ]]
if pos[1] > last_row then
vim.api.nvim_win_set_cursor(0, pos) pos[1] = last_row
end
vim.api.nvim_win_set_cursor(0, pos)
end,
})
end end
return M return M

@ -1,4 +0,0 @@
augroup Tidy
au!
au BufWritePre * lua require( "tidy" ).tidy_up()
augroup END
Loading…
Cancel
Save