retrovim 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.conda/retrovim.yaml +259 -0
- package/.conda/terax.icns +0 -0
- package/.conda/terax.ico +0 -0
- package/.conda/terax.png +0 -0
- package/.github/workflows/release.yml +95 -0
- package/.gitmodules +3 -0
- package/.npm/kanata_touchcursor.js +28 -0
- package/.npm/nvim.js +26 -0
- package/.npm/yazi.js +26 -0
- package/.npm/zsh.js +17 -0
- package/.pip/kanata_touchcursor/__init__.py +28 -0
- package/.pip/nvim/__init__.py +31 -0
- package/.pip/yazi/__init__.py +31 -0
- package/.pip/zsh/__init__.py +22 -0
- package/CHANGELOG.md +26 -0
- package/LICENSE +674 -0
- package/README.md +336 -0
- package/kanata/touchcursor.kbd +164 -0
- package/nvim/init.lua +813 -0
- package/nvim/plugins/mini.nvim/.github/DISCUSSION_TEMPLATE/q-a.yml +72 -0
- package/nvim/plugins/mini.nvim/.github/ISSUE_TEMPLATE/bug-report.yml +136 -0
- package/nvim/plugins/mini.nvim/.github/ISSUE_TEMPLATE/config.yml +5 -0
- package/nvim/plugins/mini.nvim/.github/ISSUE_TEMPLATE/feature-request.yml +75 -0
- package/nvim/plugins/mini.nvim/.github/PULL_REQUEST_TEMPLATE.md +2 -0
- package/nvim/plugins/mini.nvim/.github/workflows/quality-control.yml +150 -0
- package/nvim/plugins/mini.nvim/.pre-commit-config.yaml +20 -0
- package/nvim/plugins/mini.nvim/.stylua.toml +7 -0
- package/nvim/plugins/mini.nvim/.styluaignore +1 -0
- package/nvim/plugins/mini.nvim/CHANGELOG.md +1894 -0
- package/nvim/plugins/mini.nvim/CODE_OF_CONDUCT.md +132 -0
- package/nvim/plugins/mini.nvim/CONTRIBUTING.md +331 -0
- package/nvim/plugins/mini.nvim/LICENSE +21 -0
- package/nvim/plugins/mini.nvim/MAINTAINING.md +330 -0
- package/nvim/plugins/mini.nvim/Makefile +51 -0
- package/nvim/plugins/mini.nvim/README.md +261 -0
- package/nvim/plugins/mini.nvim/TESTING.md +1011 -0
- package/nvim/plugins/mini.nvim/benchmarks/starter/README.md +35 -0
- package/nvim/plugins/mini.nvim/benchmarks/starter/benchmark.sh +56 -0
- package/nvim/plugins/mini.nvim/benchmarks/starter/init-files/init_dashboard-alpha.lua +21 -0
- package/nvim/plugins/mini.nvim/benchmarks/starter/init-files/init_dashboard-original.lua +17 -0
- package/nvim/plugins/mini.nvim/benchmarks/starter/init-files/init_dashboard-starter.lua +18 -0
- package/nvim/plugins/mini.nvim/benchmarks/starter/init-files/init_empty.lua +4 -0
- package/nvim/plugins/mini.nvim/benchmarks/starter/init-files/init_starter-default.lua +7 -0
- package/nvim/plugins/mini.nvim/benchmarks/starter/init-files/init_startify-alpha.lua +10 -0
- package/nvim/plugins/mini.nvim/benchmarks/starter/init-files/init_startify-original.lua +7 -0
- package/nvim/plugins/mini.nvim/benchmarks/starter/init-files/init_startify-starter.lua +20 -0
- package/nvim/plugins/mini.nvim/benchmarks/starter/install.sh +10 -0
- package/nvim/plugins/mini.nvim/benchmarks/starter/make_summary.py +68 -0
- package/nvim/plugins/mini.nvim/benchmarks/starter/startup-summary.md +10 -0
- package/nvim/plugins/mini.nvim/colors/miniautumn.lua +55 -0
- package/nvim/plugins/mini.nvim/colors/minicyan.lua +95 -0
- package/nvim/plugins/mini.nvim/colors/minischeme.lua +95 -0
- package/nvim/plugins/mini.nvim/colors/minispring.lua +53 -0
- package/nvim/plugins/mini.nvim/colors/minisummer.lua +49 -0
- package/nvim/plugins/mini.nvim/colors/miniwinter.lua +51 -0
- package/nvim/plugins/mini.nvim/colors/randomhue.lua +16 -0
- package/nvim/plugins/mini.nvim/doc/mini-ai.txt +889 -0
- package/nvim/plugins/mini.nvim/doc/mini-align.txt +923 -0
- package/nvim/plugins/mini.nvim/doc/mini-animate.txt +937 -0
- package/nvim/plugins/mini.nvim/doc/mini-base16.txt +285 -0
- package/nvim/plugins/mini.nvim/doc/mini-basics.txt +359 -0
- package/nvim/plugins/mini.nvim/doc/mini-bracketed.txt +622 -0
- package/nvim/plugins/mini.nvim/doc/mini-bufremove.txt +123 -0
- package/nvim/plugins/mini.nvim/doc/mini-clue.txt +760 -0
- package/nvim/plugins/mini.nvim/doc/mini-cmdline.txt +392 -0
- package/nvim/plugins/mini.nvim/doc/mini-colors.txt +880 -0
- package/nvim/plugins/mini.nvim/doc/mini-comment.txt +230 -0
- package/nvim/plugins/mini.nvim/doc/mini-completion.txt +477 -0
- package/nvim/plugins/mini.nvim/doc/mini-cursorword.txt +105 -0
- package/nvim/plugins/mini.nvim/doc/mini-deps.txt +590 -0
- package/nvim/plugins/mini.nvim/doc/mini-diff.txt +661 -0
- package/nvim/plugins/mini.nvim/doc/mini-doc.txt +434 -0
- package/nvim/plugins/mini.nvim/doc/mini-extra.txt +856 -0
- package/nvim/plugins/mini.nvim/doc/mini-files.txt +1018 -0
- package/nvim/plugins/mini.nvim/doc/mini-fuzzy.txt +160 -0
- package/nvim/plugins/mini.nvim/doc/mini-git.txt +425 -0
- package/nvim/plugins/mini.nvim/doc/mini-hipatterns.txt +489 -0
- package/nvim/plugins/mini.nvim/doc/mini-hues.txt +420 -0
- package/nvim/plugins/mini.nvim/doc/mini-icons.txt +508 -0
- package/nvim/plugins/mini.nvim/doc/mini-indentscope.txt +485 -0
- package/nvim/plugins/mini.nvim/doc/mini-input.txt +932 -0
- package/nvim/plugins/mini.nvim/doc/mini-jump.txt +202 -0
- package/nvim/plugins/mini.nvim/doc/mini-jump2d.txt +525 -0
- package/nvim/plugins/mini.nvim/doc/mini-keymap.txt +449 -0
- package/nvim/plugins/mini.nvim/doc/mini-map.txt +717 -0
- package/nvim/plugins/mini.nvim/doc/mini-misc.txt +431 -0
- package/nvim/plugins/mini.nvim/doc/mini-move.txt +181 -0
- package/nvim/plugins/mini.nvim/doc/mini-notify.txt +434 -0
- package/nvim/plugins/mini.nvim/doc/mini-nvim.txt +431 -0
- package/nvim/plugins/mini.nvim/doc/mini-operators.txt +472 -0
- package/nvim/plugins/mini.nvim/doc/mini-pairs.txt +346 -0
- package/nvim/plugins/mini.nvim/doc/mini-pick.txt +1535 -0
- package/nvim/plugins/mini.nvim/doc/mini-sessions.txt +239 -0
- package/nvim/plugins/mini.nvim/doc/mini-snippets.txt +1291 -0
- package/nvim/plugins/mini.nvim/doc/mini-splitjoin.txt +536 -0
- package/nvim/plugins/mini.nvim/doc/mini-starter.txt +618 -0
- package/nvim/plugins/mini.nvim/doc/mini-statusline.txt +361 -0
- package/nvim/plugins/mini.nvim/doc/mini-surround.txt +863 -0
- package/nvim/plugins/mini.nvim/doc/mini-tabline.txt +151 -0
- package/nvim/plugins/mini.nvim/doc/mini-test.txt +966 -0
- package/nvim/plugins/mini.nvim/doc/mini-trailspace.txt +91 -0
- package/nvim/plugins/mini.nvim/doc/mini-visits.txt +937 -0
- package/nvim/plugins/mini.nvim/logo.png +0 -0
- package/nvim/plugins/mini.nvim/lua/mini/ai.lua +2244 -0
- package/nvim/plugins/mini.nvim/lua/mini/align.lua +2076 -0
- package/nvim/plugins/mini.nvim/lua/mini/animate.lua +2127 -0
- package/nvim/plugins/mini.nvim/lua/mini/base16.lua +1752 -0
- package/nvim/plugins/mini.nvim/lua/mini/basics.lua +772 -0
- package/nvim/plugins/mini.nvim/lua/mini/bracketed.lua +2013 -0
- package/nvim/plugins/mini.nvim/lua/mini/bufremove.lua +283 -0
- package/nvim/plugins/mini.nvim/lua/mini/clue.lua +2096 -0
- package/nvim/plugins/mini.nvim/lua/mini/cmdline.lua +1182 -0
- package/nvim/plugins/mini.nvim/lua/mini/colors.lua +2483 -0
- package/nvim/plugins/mini.nvim/lua/mini/comment.lua +586 -0
- package/nvim/plugins/mini.nvim/lua/mini/completion.lua +2094 -0
- package/nvim/plugins/mini.nvim/lua/mini/cursorword.lua +311 -0
- package/nvim/plugins/mini.nvim/lua/mini/deps.lua +1660 -0
- package/nvim/plugins/mini.nvim/lua/mini/diff.lua +1938 -0
- package/nvim/plugins/mini.nvim/lua/mini/doc.lua +1371 -0
- package/nvim/plugins/mini.nvim/lua/mini/extra.lua +2290 -0
- package/nvim/plugins/mini.nvim/lua/mini/files.lua +3145 -0
- package/nvim/plugins/mini.nvim/lua/mini/fuzzy.lua +356 -0
- package/nvim/plugins/mini.nvim/lua/mini/git.lua +1737 -0
- package/nvim/plugins/mini.nvim/lua/mini/hipatterns.lua +1042 -0
- package/nvim/plugins/mini.nvim/lua/mini/hues.lua +2088 -0
- package/nvim/plugins/mini.nvim/lua/mini/icons.lua +2254 -0
- package/nvim/plugins/mini.nvim/lua/mini/indentscope.lua +1158 -0
- package/nvim/plugins/mini.nvim/lua/mini/init.lua +427 -0
- package/nvim/plugins/mini.nvim/lua/mini/input.lua +2183 -0
- package/nvim/plugins/mini.nvim/lua/mini/jump.lua +609 -0
- package/nvim/plugins/mini.nvim/lua/mini/jump2d.lua +1244 -0
- package/nvim/plugins/mini.nvim/lua/mini/keymap.lua +880 -0
- package/nvim/plugins/mini.nvim/lua/mini/map.lua +1709 -0
- package/nvim/plugins/mini.nvim/lua/mini/misc.lua +969 -0
- package/nvim/plugins/mini.nvim/lua/mini/move.lua +509 -0
- package/nvim/plugins/mini.nvim/lua/mini/notify.lua +938 -0
- package/nvim/plugins/mini.nvim/lua/mini/operators.lua +1349 -0
- package/nvim/plugins/mini.nvim/lua/mini/pairs.lua +657 -0
- package/nvim/plugins/mini.nvim/lua/mini/pick.lua +3876 -0
- package/nvim/plugins/mini.nvim/lua/mini/sessions.lua +689 -0
- package/nvim/plugins/mini.nvim/lua/mini/snippets.lua +2828 -0
- package/nvim/plugins/mini.nvim/lua/mini/splitjoin.lua +1132 -0
- package/nvim/plugins/mini.nvim/lua/mini/starter.lua +1599 -0
- package/nvim/plugins/mini.nvim/lua/mini/statusline.lua +686 -0
- package/nvim/plugins/mini.nvim/lua/mini/surround.lua +2388 -0
- package/nvim/plugins/mini.nvim/lua/mini/tabline.lua +564 -0
- package/nvim/plugins/mini.nvim/lua/mini/test.lua +2516 -0
- package/nvim/plugins/mini.nvim/lua/mini/trailspace.lua +215 -0
- package/nvim/plugins/mini.nvim/lua/mini/visits.lua +1577 -0
- package/nvim/plugins/mini.nvim/readmes/mini-ai.md +190 -0
- package/nvim/plugins/mini.nvim/readmes/mini-align.md +203 -0
- package/nvim/plugins/mini.nvim/readmes/mini-animate.md +214 -0
- package/nvim/plugins/mini.nvim/readmes/mini-base16.md +198 -0
- package/nvim/plugins/mini.nvim/readmes/mini-basics.md +184 -0
- package/nvim/plugins/mini.nvim/readmes/mini-bracketed.md +193 -0
- package/nvim/plugins/mini.nvim/readmes/mini-bufremove.md +139 -0
- package/nvim/plugins/mini.nvim/readmes/mini-clue.md +260 -0
- package/nvim/plugins/mini.nvim/readmes/mini-cmdline.md +183 -0
- package/nvim/plugins/mini.nvim/readmes/mini-colors.md +169 -0
- package/nvim/plugins/mini.nvim/readmes/mini-comment.md +183 -0
- package/nvim/plugins/mini.nvim/readmes/mini-completion.md +217 -0
- package/nvim/plugins/mini.nvim/readmes/mini-cursorword.md +137 -0
- package/nvim/plugins/mini.nvim/readmes/mini-deps.md +271 -0
- package/nvim/plugins/mini.nvim/readmes/mini-diff.md +289 -0
- package/nvim/plugins/mini.nvim/readmes/mini-doc.md +198 -0
- package/nvim/plugins/mini.nvim/readmes/mini-extra.md +158 -0
- package/nvim/plugins/mini.nvim/readmes/mini-files.md +247 -0
- package/nvim/plugins/mini.nvim/readmes/mini-fuzzy.md +134 -0
- package/nvim/plugins/mini.nvim/readmes/mini-git.md +168 -0
- package/nvim/plugins/mini.nvim/readmes/mini-hipatterns.md +176 -0
- package/nvim/plugins/mini.nvim/readmes/mini-hues.md +285 -0
- package/nvim/plugins/mini.nvim/readmes/mini-icons.md +183 -0
- package/nvim/plugins/mini.nvim/readmes/mini-indentscope.md +191 -0
- package/nvim/plugins/mini.nvim/readmes/mini-input.md +163 -0
- package/nvim/plugins/mini.nvim/readmes/mini-jump.md +161 -0
- package/nvim/plugins/mini.nvim/readmes/mini-jump2d.md +197 -0
- package/nvim/plugins/mini.nvim/readmes/mini-keymap.md +205 -0
- package/nvim/plugins/mini.nvim/readmes/mini-map.md +191 -0
- package/nvim/plugins/mini.nvim/readmes/mini-misc.md +145 -0
- package/nvim/plugins/mini.nvim/readmes/mini-move.md +163 -0
- package/nvim/plugins/mini.nvim/readmes/mini-notify.md +175 -0
- package/nvim/plugins/mini.nvim/readmes/mini-operators.md +193 -0
- package/nvim/plugins/mini.nvim/readmes/mini-pairs.md +158 -0
- package/nvim/plugins/mini.nvim/readmes/mini-pick.md +340 -0
- package/nvim/plugins/mini.nvim/readmes/mini-sessions.md +164 -0
- package/nvim/plugins/mini.nvim/readmes/mini-snippets.md +373 -0
- package/nvim/plugins/mini.nvim/readmes/mini-splitjoin.md +194 -0
- package/nvim/plugins/mini.nvim/readmes/mini-starter.md +176 -0
- package/nvim/plugins/mini.nvim/readmes/mini-statusline.md +155 -0
- package/nvim/plugins/mini.nvim/readmes/mini-surround.md +190 -0
- package/nvim/plugins/mini.nvim/readmes/mini-tabline.md +156 -0
- package/nvim/plugins/mini.nvim/readmes/mini-test.md +175 -0
- package/nvim/plugins/mini.nvim/readmes/mini-trailspace.md +137 -0
- package/nvim/plugins/mini.nvim/readmes/mini-visits.md +243 -0
- package/nvim/plugins/mini.nvim/scripts/dual_log.sh +13 -0
- package/nvim/plugins/mini.nvim/scripts/dual_push.sh +15 -0
- package/nvim/plugins/mini.nvim/scripts/dual_release.sh +102 -0
- package/nvim/plugins/mini.nvim/scripts/dual_sync.sh +115 -0
- package/nvim/plugins/mini.nvim/scripts/init-deps-example.lua +59 -0
- package/nvim/plugins/mini.nvim/scripts/lint-filename-length.sh +16 -0
- package/nvim/plugins/mini.nvim/scripts/lintcommit-ci.sh +18 -0
- package/nvim/plugins/mini.nvim/scripts/lintcommit.lua +393 -0
- package/nvim/plugins/mini.nvim/scripts/minidoc.lua +57 -0
- package/nvim/plugins/mini.nvim/scripts/minimal_init.lua +28 -0
- package/nvim/plugins/mini.nvim/scripts/minitest.lua +4 -0
- package/package.json +16 -0
- package/pyproject.toml +43 -0
- package/yazi/init.lua +12 -0
- package/yazi/keymap.toml +114 -0
- package/yazi/lesskey +5 -0
- package/yazi/plugins/bookmarks.yazi/main.lua +86 -0
- package/yazi/plugins/cd-git-root.yazi/main.lua +31 -0
- package/yazi/plugins/smart-enter.yazi/main.lua +11 -0
- package/yazi/theme.toml +26 -0
- package/yazi/yazi.toml +15 -0
- package/zsh/.zshrc +145 -0
- package/zsh/starship.toml +20 -0
- package/zsh/zsh-patina.toml +2 -0
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
--- *mini.trailspace* Trailspace (highlight and remove)
|
|
2
|
+
---
|
|
3
|
+
--- MIT License Copyright (c) 2021 Evgeni Chasnovski
|
|
4
|
+
|
|
5
|
+
--- Features:
|
|
6
|
+
--- - Highlighting is done only in modifiable buffer by default, only in Normal
|
|
7
|
+
--- mode, and stops in Insert mode and when leaving window.
|
|
8
|
+
---
|
|
9
|
+
--- - Trim all trailing whitespace with |MiniTrailspace.trim()|.
|
|
10
|
+
---
|
|
11
|
+
--- - Trim all trailing empty lines with |MiniTrailspace.trim_last_lines()|.
|
|
12
|
+
---
|
|
13
|
+
--- # Setup ~
|
|
14
|
+
---
|
|
15
|
+
--- This module needs a setup with `require('mini.trailspace').setup({})`
|
|
16
|
+
--- (replace `{}` with your `config` table). It will create global Lua table
|
|
17
|
+
--- `MiniTrailspace` which you can use for scripting or manually (with
|
|
18
|
+
--- `:lua MiniTrailspace.*`).
|
|
19
|
+
---
|
|
20
|
+
--- See |MiniTrailspace.config| for `config` structure and default values.
|
|
21
|
+
---
|
|
22
|
+
--- You can override runtime config settings locally to buffer inside
|
|
23
|
+
--- `vim.b.minitrailspace_config` which should have same structure as
|
|
24
|
+
--- `MiniTrailspace.config`. See |mini.nvim-buffer-local-config| for more details.
|
|
25
|
+
---
|
|
26
|
+
--- # Highlight groups ~
|
|
27
|
+
--- *MiniTrailspace-hl-groups*
|
|
28
|
+
---
|
|
29
|
+
--- - `MiniTrailspace` - highlight group for trailing space.
|
|
30
|
+
---
|
|
31
|
+
--- To change any highlight group, set it directly with |nvim_set_hl()|.
|
|
32
|
+
---
|
|
33
|
+
--- # Disabling ~
|
|
34
|
+
---
|
|
35
|
+
--- To disable, set `vim.g.minitrailspace_disable` (globally) or
|
|
36
|
+
--- `vim.b.minitrailspace_disable` (for a buffer) to `true`. Considering high
|
|
37
|
+
--- number of different scenarios and customization intentions, writing exact
|
|
38
|
+
--- rules for disabling module's functionality is left to user. See
|
|
39
|
+
--- |mini.nvim-disabling-recipes| for common recipes. Note: after disabling
|
|
40
|
+
--- there might be highlighting left; it will be removed after next
|
|
41
|
+
--- highlighting update (see |events| and `MiniTrailspace` |:augroup|).
|
|
42
|
+
---@tag MiniTrailspace
|
|
43
|
+
|
|
44
|
+
-- Module definition ==========================================================
|
|
45
|
+
local MiniTrailspace = {}
|
|
46
|
+
local H = {}
|
|
47
|
+
|
|
48
|
+
--- Module setup
|
|
49
|
+
---
|
|
50
|
+
---@param config table|nil Module config table. See |MiniTrailspace.config|.
|
|
51
|
+
---
|
|
52
|
+
---@usage >lua
|
|
53
|
+
--- require('mini.trailspace').setup() -- use default config
|
|
54
|
+
--- -- OR
|
|
55
|
+
--- require('mini.trailspace').setup({}) -- replace {} with your config table
|
|
56
|
+
--- <
|
|
57
|
+
MiniTrailspace.setup = function(config)
|
|
58
|
+
-- TODO: Remove after Neovim=0.9 support is dropped
|
|
59
|
+
if vim.fn.has('nvim-0.10') == 0 then
|
|
60
|
+
vim.notify(
|
|
61
|
+
'(mini.trailspace) Neovim<0.10 is soft deprecated (module works but is not supported).'
|
|
62
|
+
.. " It will be deprecated after the next 'mini.nvim' release (module might not work)."
|
|
63
|
+
.. ' Please update your Neovim version.'
|
|
64
|
+
)
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
-- Export module
|
|
68
|
+
_G.MiniTrailspace = MiniTrailspace
|
|
69
|
+
|
|
70
|
+
-- Setup config
|
|
71
|
+
config = H.setup_config(config)
|
|
72
|
+
|
|
73
|
+
-- Apply config
|
|
74
|
+
H.apply_config(config)
|
|
75
|
+
|
|
76
|
+
-- Define behavior
|
|
77
|
+
H.create_autocommands(config)
|
|
78
|
+
|
|
79
|
+
-- Create default highlighting
|
|
80
|
+
H.create_default_hl()
|
|
81
|
+
|
|
82
|
+
-- Initialize highlight (usually takes effect during startup)
|
|
83
|
+
vim.defer_fn(MiniTrailspace.highlight, 0)
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
--- Defaults ~
|
|
87
|
+
---@eval return MiniDoc.afterlines_to_code(MiniDoc.current.eval_section)
|
|
88
|
+
MiniTrailspace.config = {
|
|
89
|
+
-- Highlight only in normal buffers (ones with empty 'buftype'). This is
|
|
90
|
+
-- useful to not show trailing whitespace where it usually doesn't matter.
|
|
91
|
+
only_in_normal_buffers = true,
|
|
92
|
+
}
|
|
93
|
+
--minidoc_afterlines_end
|
|
94
|
+
|
|
95
|
+
-- Module functionality =======================================================
|
|
96
|
+
--- Highlight trailing whitespace in current window
|
|
97
|
+
MiniTrailspace.highlight = function()
|
|
98
|
+
-- Highlight only in normal mode
|
|
99
|
+
if H.is_disabled() or vim.fn.mode() ~= 'n' then
|
|
100
|
+
MiniTrailspace.unhighlight()
|
|
101
|
+
return
|
|
102
|
+
end
|
|
103
|
+
|
|
104
|
+
-- Possibly work only in normal buffers
|
|
105
|
+
if H.get_config().only_in_normal_buffers and not H.is_buffer_normal() then return end
|
|
106
|
+
|
|
107
|
+
-- Don't add match id on top of existing one
|
|
108
|
+
if H.get_match_id() ~= nil then return end
|
|
109
|
+
|
|
110
|
+
vim.fn.matchadd('MiniTrailspace', [[\s\+$]])
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
--- Unhighlight trailing whitespace in current window
|
|
114
|
+
MiniTrailspace.unhighlight = function()
|
|
115
|
+
-- Use `pcall` because there is an error if match id is not present. It can
|
|
116
|
+
-- happen if something else called `clearmatches`.
|
|
117
|
+
pcall(vim.fn.matchdelete, H.get_match_id())
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
--- Trim trailing whitespace
|
|
121
|
+
MiniTrailspace.trim = function()
|
|
122
|
+
-- Save cursor position to later restore
|
|
123
|
+
local curpos = vim.api.nvim_win_get_cursor(0)
|
|
124
|
+
-- Search and replace trailing whitespace
|
|
125
|
+
vim.cmd([[keeppatterns %s/\s\+$//e]])
|
|
126
|
+
vim.api.nvim_win_set_cursor(0, curpos)
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
--- Trim last blank lines
|
|
130
|
+
MiniTrailspace.trim_last_lines = function()
|
|
131
|
+
local n_lines = vim.api.nvim_buf_line_count(0)
|
|
132
|
+
local last_nonblank = vim.fn.prevnonblank(n_lines)
|
|
133
|
+
if last_nonblank < n_lines then vim.api.nvim_buf_set_lines(0, last_nonblank, n_lines, true, {}) end
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
-- Helper data ================================================================
|
|
137
|
+
-- Module default config
|
|
138
|
+
H.default_config = vim.deepcopy(MiniTrailspace.config)
|
|
139
|
+
|
|
140
|
+
-- Helper functionality =======================================================
|
|
141
|
+
-- Settings -------------------------------------------------------------------
|
|
142
|
+
H.setup_config = function(config)
|
|
143
|
+
H.check_type('config', config, 'table', true)
|
|
144
|
+
config = vim.tbl_deep_extend('force', vim.deepcopy(H.default_config), config or {})
|
|
145
|
+
|
|
146
|
+
H.check_type('only_in_normal_buffers', config.only_in_normal_buffers, 'boolean')
|
|
147
|
+
|
|
148
|
+
return config
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
H.apply_config = function(config) MiniTrailspace.config = config end
|
|
152
|
+
|
|
153
|
+
H.create_autocommands = function(config)
|
|
154
|
+
local gr = vim.api.nvim_create_augroup('MiniTrailspace', {})
|
|
155
|
+
|
|
156
|
+
local au = function(event, pattern, callback, desc)
|
|
157
|
+
vim.api.nvim_create_autocmd(event, { group = gr, pattern = pattern, callback = callback, desc = desc })
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
-- NOTE: Respecting both `WinEnter` and `BufEnter` seems to be useful to
|
|
161
|
+
-- account of different order of handling buffer opening in new window.
|
|
162
|
+
-- Notable example: 'nvim-tree' at commit a1600e5.
|
|
163
|
+
au({ 'WinEnter', 'BufEnter', 'InsertLeave' }, '*', MiniTrailspace.highlight, 'Highlight')
|
|
164
|
+
au({ 'WinLeave', 'BufLeave', 'InsertEnter' }, '*', MiniTrailspace.unhighlight, 'Unhighlight')
|
|
165
|
+
|
|
166
|
+
if config.only_in_normal_buffers then
|
|
167
|
+
-- Add tracking of 'buftype' changing because it can be set after events on
|
|
168
|
+
-- which highlighting is done. If not done, highlighting appears but
|
|
169
|
+
-- disappears if buffer is reentered.
|
|
170
|
+
au('OptionSet', 'buftype', H.track_normal_buffer, 'Track normal buffer')
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
au('ColorScheme', '*', H.create_default_hl, 'Ensure colors')
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
H.create_default_hl = function() vim.api.nvim_set_hl(0, 'MiniTrailspace', { default = true, link = 'Error' }) end
|
|
177
|
+
|
|
178
|
+
H.is_disabled = function() return vim.g.minitrailspace_disable == true or vim.b.minitrailspace_disable == true end
|
|
179
|
+
|
|
180
|
+
H.get_config = function(config)
|
|
181
|
+
return vim.tbl_deep_extend('force', MiniTrailspace.config, vim.b.minitrailspace_config or {}, config or {})
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
H.track_normal_buffer = function()
|
|
185
|
+
if not H.get_config().only_in_normal_buffers then return end
|
|
186
|
+
|
|
187
|
+
-- This should be used with 'OptionSet' event for 'buftype' option
|
|
188
|
+
-- Empty 'buftype' means "normal buffer"
|
|
189
|
+
if vim.v.option_new == '' then
|
|
190
|
+
MiniTrailspace.highlight()
|
|
191
|
+
else
|
|
192
|
+
MiniTrailspace.unhighlight()
|
|
193
|
+
end
|
|
194
|
+
end
|
|
195
|
+
|
|
196
|
+
H.is_buffer_normal = function(buf_id) return vim.bo[buf_id or 0].buftype == '' end
|
|
197
|
+
|
|
198
|
+
H.get_match_id = function()
|
|
199
|
+
-- NOTE: this can be replaced with more efficient custom tracking of id per
|
|
200
|
+
-- window but it will have more edge cases (like won't update on manual
|
|
201
|
+
-- `clearmatches()`)
|
|
202
|
+
for _, match in ipairs(vim.fn.getmatches()) do
|
|
203
|
+
if match.group == 'MiniTrailspace' then return match.id end
|
|
204
|
+
end
|
|
205
|
+
end
|
|
206
|
+
|
|
207
|
+
-- Utilities ------------------------------------------------------------------
|
|
208
|
+
H.error = function(msg) error('(mini.trailspace) ' .. msg, 0) end
|
|
209
|
+
|
|
210
|
+
H.check_type = function(name, val, ref, allow_nil)
|
|
211
|
+
if type(val) == ref or (ref == 'callable' and vim.is_callable(val)) or (allow_nil and val == nil) then return end
|
|
212
|
+
H.error(string.format('`%s` should be %s, not %s', name, ref, type(val)))
|
|
213
|
+
end
|
|
214
|
+
|
|
215
|
+
return MiniTrailspace
|