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,283 @@
|
|
|
1
|
+
--- *mini.bufremove* Remove buffers
|
|
2
|
+
---
|
|
3
|
+
--- MIT License Copyright (c) 2021 Evgeni Chasnovski
|
|
4
|
+
|
|
5
|
+
--- Features:
|
|
6
|
+
--- - Unshow, delete, and wipeout buffer while saving window layout
|
|
7
|
+
--- (opposite to builtin Neovim's commands).
|
|
8
|
+
---
|
|
9
|
+
--- # Setup ~
|
|
10
|
+
---
|
|
11
|
+
--- This module doesn't need setup, but it can be done to improve usability.
|
|
12
|
+
--- Setup with `require('mini.bufremove').setup({})` (replace `{}` with your
|
|
13
|
+
--- `config` table). It will create global Lua table `MiniBufremove` which you
|
|
14
|
+
--- can use for scripting or manually (with `:lua MiniBufremove.*`).
|
|
15
|
+
---
|
|
16
|
+
--- See |MiniBufremove.config| for `config` structure and default values.
|
|
17
|
+
---
|
|
18
|
+
--- This module doesn't have runtime options, so using `vim.b.minibufremove_config`
|
|
19
|
+
--- will have no effect here.
|
|
20
|
+
---
|
|
21
|
+
--- To stop module from showing non-error feedback, set `config.silent = true`.
|
|
22
|
+
---
|
|
23
|
+
--- # Notes ~
|
|
24
|
+
---
|
|
25
|
+
--- 1. Which buffer to show in window(s) after its current buffer is removed is
|
|
26
|
+
--- decided by the algorithm:
|
|
27
|
+
--- - If alternate buffer (see |CTRL-^|) is listed (see |buflisted()|), use it.
|
|
28
|
+
--- - If previous listed buffer (see |:bprevious|) is different, use it.
|
|
29
|
+
--- - Otherwise create a new one with `nvim_create_buf(true, false)` and use it.
|
|
30
|
+
---
|
|
31
|
+
--- # Disabling ~
|
|
32
|
+
---
|
|
33
|
+
--- To disable core functionality, set `vim.g.minibufremove_disable` (globally) or
|
|
34
|
+
--- `vim.b.minibufremove_disable` (for a buffer) to `true`. Considering high
|
|
35
|
+
--- number of different scenarios and customization intentions, writing exact
|
|
36
|
+
--- rules for disabling module's functionality is left to user. See
|
|
37
|
+
--- |mini.nvim-disabling-recipes| for common recipes.
|
|
38
|
+
---@tag MiniBufremove
|
|
39
|
+
|
|
40
|
+
---@alias __bufremove_return boolean|nil Whether operation was successful. If `nil`, no operation was done.
|
|
41
|
+
---@alias __bufremove_buf_id number|nil Buffer identifier (see |bufnr()|) to use.
|
|
42
|
+
--- Default: 0 for current.
|
|
43
|
+
---@alias __bufremove_force boolean|nil Whether to ignore unsaved changes (using `!` version of
|
|
44
|
+
--- command). If `false`, calling with unsaved changes will prompt confirm dialog.
|
|
45
|
+
--- Default: `false`.
|
|
46
|
+
|
|
47
|
+
-- Module definition ==========================================================
|
|
48
|
+
local MiniBufremove = {}
|
|
49
|
+
local H = {}
|
|
50
|
+
|
|
51
|
+
--- Module setup
|
|
52
|
+
---
|
|
53
|
+
---@param config table|nil Module config table. See |MiniBufremove.config|.
|
|
54
|
+
---
|
|
55
|
+
---@usage >lua
|
|
56
|
+
--- require('mini.bufremove').setup() -- use default config
|
|
57
|
+
--- -- OR
|
|
58
|
+
--- require('mini.bufremove').setup({}) -- replace {} with your config table
|
|
59
|
+
--- <
|
|
60
|
+
MiniBufremove.setup = function(config)
|
|
61
|
+
-- TODO: Remove after Neovim=0.9 support is dropped
|
|
62
|
+
if vim.fn.has('nvim-0.10') == 0 then
|
|
63
|
+
vim.notify(
|
|
64
|
+
'(mini.bufremove) Neovim<0.10 is soft deprecated (module works but is not supported).'
|
|
65
|
+
.. " It will be deprecated after the next 'mini.nvim' release (module might not work)."
|
|
66
|
+
.. ' Please update your Neovim version.'
|
|
67
|
+
)
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
-- Export module
|
|
71
|
+
_G.MiniBufremove = MiniBufremove
|
|
72
|
+
|
|
73
|
+
-- Setup config
|
|
74
|
+
config = H.setup_config(config)
|
|
75
|
+
|
|
76
|
+
-- Apply config
|
|
77
|
+
H.apply_config(config)
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
--- Defaults ~
|
|
81
|
+
---@eval return MiniDoc.afterlines_to_code(MiniDoc.current.eval_section)
|
|
82
|
+
MiniBufremove.config = {
|
|
83
|
+
-- Whether to disable showing non-error feedback
|
|
84
|
+
silent = false,
|
|
85
|
+
}
|
|
86
|
+
--minidoc_afterlines_end
|
|
87
|
+
|
|
88
|
+
-- Module functionality =======================================================
|
|
89
|
+
--- Delete buffer `buf_id` with |:bdelete| after unshowing it
|
|
90
|
+
---
|
|
91
|
+
---@param buf_id __bufremove_buf_id
|
|
92
|
+
---@param force __bufremove_force
|
|
93
|
+
---
|
|
94
|
+
---@return __bufremove_return
|
|
95
|
+
MiniBufremove.delete = function(buf_id, force)
|
|
96
|
+
if H.is_disabled() then return end
|
|
97
|
+
|
|
98
|
+
return H.unshow_and_cmd(buf_id, force, 'bdelete')
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
--- Wipeout buffer `buf_id` with |:bwipeout| after unshowing it
|
|
102
|
+
---
|
|
103
|
+
---@param buf_id __bufremove_buf_id
|
|
104
|
+
---@param force __bufremove_force
|
|
105
|
+
---
|
|
106
|
+
---@return __bufremove_return
|
|
107
|
+
MiniBufremove.wipeout = function(buf_id, force)
|
|
108
|
+
if H.is_disabled() then return end
|
|
109
|
+
|
|
110
|
+
return H.unshow_and_cmd(buf_id, force, 'bwipeout')
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
--- Stop showing buffer `buf_id` in all windows
|
|
114
|
+
---
|
|
115
|
+
---@param buf_id __bufremove_buf_id
|
|
116
|
+
---
|
|
117
|
+
---@return __bufremove_return
|
|
118
|
+
MiniBufremove.unshow = function(buf_id)
|
|
119
|
+
if H.is_disabled() then return end
|
|
120
|
+
|
|
121
|
+
buf_id = H.normalize_buf_id(buf_id)
|
|
122
|
+
|
|
123
|
+
if not H.is_valid_id(buf_id, 'buffer') then return false end
|
|
124
|
+
|
|
125
|
+
vim.tbl_map(MiniBufremove.unshow_in_window, vim.fn.win_findbuf(buf_id))
|
|
126
|
+
|
|
127
|
+
return true
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
--- Stop showing current buffer of window `win_id`
|
|
131
|
+
---
|
|
132
|
+
--- Notes:
|
|
133
|
+
--- - If `win_id` represents |cmdline-window|, this function will close it.
|
|
134
|
+
---
|
|
135
|
+
---@param win_id number|nil Window identifier (see |win_getid()|) to use.
|
|
136
|
+
--- Default: 0 for current.
|
|
137
|
+
---
|
|
138
|
+
---@return __bufremove_return
|
|
139
|
+
MiniBufremove.unshow_in_window = function(win_id)
|
|
140
|
+
if H.is_disabled() then return nil end
|
|
141
|
+
|
|
142
|
+
win_id = (win_id == nil) and 0 or win_id
|
|
143
|
+
|
|
144
|
+
if not H.is_valid_id(win_id, 'window') then return false end
|
|
145
|
+
|
|
146
|
+
local cur_buf = vim.api.nvim_win_get_buf(win_id)
|
|
147
|
+
|
|
148
|
+
-- Temporary use window `win_id` as current to have Vim's functions working
|
|
149
|
+
vim.api.nvim_win_call(win_id, function()
|
|
150
|
+
if vim.fn.getcmdwintype() ~= '' then
|
|
151
|
+
vim.cmd('close!')
|
|
152
|
+
return
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
-- Try using alternate buffer
|
|
156
|
+
local alt_buf = vim.fn.bufnr('#')
|
|
157
|
+
if alt_buf ~= cur_buf and vim.fn.buflisted(alt_buf) == 1 then
|
|
158
|
+
vim.api.nvim_win_set_buf(win_id, alt_buf)
|
|
159
|
+
return
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
-- Try using previous buffer
|
|
163
|
+
local has_previous = pcall(vim.cmd, 'bprevious')
|
|
164
|
+
if has_previous and cur_buf ~= vim.api.nvim_win_get_buf(win_id) then return end
|
|
165
|
+
|
|
166
|
+
-- Create new listed scratch buffer
|
|
167
|
+
-- NOTE: leave it unnamed to allow `:h buffer-reuse`
|
|
168
|
+
local new_buf = vim.api.nvim_create_buf(true, false)
|
|
169
|
+
vim.api.nvim_win_set_buf(win_id, new_buf)
|
|
170
|
+
end)
|
|
171
|
+
|
|
172
|
+
return true
|
|
173
|
+
end
|
|
174
|
+
|
|
175
|
+
-- Helper data ================================================================
|
|
176
|
+
-- Module default config
|
|
177
|
+
H.default_config = vim.deepcopy(MiniBufremove.config)
|
|
178
|
+
|
|
179
|
+
-- Helper functionality =======================================================
|
|
180
|
+
-- Settings -------------------------------------------------------------------
|
|
181
|
+
H.setup_config = function(config)
|
|
182
|
+
H.check_type('config', config, 'table', true)
|
|
183
|
+
config = vim.tbl_deep_extend('force', vim.deepcopy(H.default_config), config or {})
|
|
184
|
+
|
|
185
|
+
H.check_type('silent', config.silent, 'boolean')
|
|
186
|
+
|
|
187
|
+
return config
|
|
188
|
+
end
|
|
189
|
+
|
|
190
|
+
H.apply_config = function(config) MiniBufremove.config = config end
|
|
191
|
+
|
|
192
|
+
H.is_disabled = function() return vim.g.minibufremove_disable == true or vim.b.minibufremove_disable == true end
|
|
193
|
+
|
|
194
|
+
-- Removing implementation ----------------------------------------------------
|
|
195
|
+
H.unshow_and_cmd = function(buf_id, force, cmd)
|
|
196
|
+
buf_id = H.normalize_buf_id(buf_id)
|
|
197
|
+
if not H.is_valid_id(buf_id, 'buffer') then
|
|
198
|
+
H.message(buf_id .. ' is not a valid buffer id.')
|
|
199
|
+
return false
|
|
200
|
+
end
|
|
201
|
+
|
|
202
|
+
if force == nil then force = false end
|
|
203
|
+
if type(force) ~= 'boolean' then
|
|
204
|
+
H.message('`force` should be boolean.')
|
|
205
|
+
return false
|
|
206
|
+
end
|
|
207
|
+
|
|
208
|
+
local fun_name = ({ ['bdelete'] = 'delete', ['bwipeout'] = 'wipeout' })[cmd]
|
|
209
|
+
if not H.can_remove(buf_id, force, fun_name) then return false end
|
|
210
|
+
|
|
211
|
+
-- Unshow buffer from all windows
|
|
212
|
+
MiniBufremove.unshow(buf_id)
|
|
213
|
+
|
|
214
|
+
-- Execute command
|
|
215
|
+
local command = string.format('%s! %d', cmd, buf_id)
|
|
216
|
+
-- Use `pcall` here to take care of case where `unshow()` was enough. This
|
|
217
|
+
-- can happen with 'bufhidden' option values:
|
|
218
|
+
-- - If `delete` then `unshow()` already `bdelete`d buffer. Without `pcall`
|
|
219
|
+
-- it gives E516 for `MiniBufremove.delete()` (`wipeout` works).
|
|
220
|
+
-- - If `wipe` then `unshow()` already `bwipeout`ed buffer. Without `pcall`
|
|
221
|
+
-- it gives E517 for module's `wipeout()` (still E516 for `delete()`).
|
|
222
|
+
--
|
|
223
|
+
-- Also account for executing command in command-line window.
|
|
224
|
+
-- It gives E11 if trying to execute command. The `unshow()` call should
|
|
225
|
+
-- close such window but somehow it doesn't seem to happen immediately.
|
|
226
|
+
local ok, result = pcall(vim.cmd, command)
|
|
227
|
+
if not (ok or result:find('E516%D') or result:find('E517%D') or result:find('E11%D')) then
|
|
228
|
+
H.message(result)
|
|
229
|
+
return false
|
|
230
|
+
end
|
|
231
|
+
|
|
232
|
+
return true
|
|
233
|
+
end
|
|
234
|
+
|
|
235
|
+
-- Utilities ------------------------------------------------------------------
|
|
236
|
+
H.error = function(msg) error('(mini.bufremove) ' .. msg, 0) end
|
|
237
|
+
|
|
238
|
+
H.check_type = function(name, val, ref, allow_nil)
|
|
239
|
+
if type(val) == ref or (ref == 'callable' and vim.is_callable(val)) or (allow_nil and val == nil) then return end
|
|
240
|
+
H.error(string.format('`%s` should be %s, not %s', name, ref, type(val)))
|
|
241
|
+
end
|
|
242
|
+
|
|
243
|
+
H.echo = function(msg, is_important)
|
|
244
|
+
if MiniBufremove.config.silent then return end
|
|
245
|
+
|
|
246
|
+
-- Construct message chunks
|
|
247
|
+
msg = type(msg) == 'string' and { { msg } } or msg
|
|
248
|
+
table.insert(msg, 1, { '(mini.bufremove) ', 'WarningMsg' })
|
|
249
|
+
|
|
250
|
+
-- Echo. Force redraw to ensure that it is effective (`:h echo-redraw`)
|
|
251
|
+
vim.cmd([[echo '' | redraw]])
|
|
252
|
+
vim.api.nvim_echo(msg, is_important, {})
|
|
253
|
+
end
|
|
254
|
+
|
|
255
|
+
H.message = function(msg) H.echo(msg, true) end
|
|
256
|
+
|
|
257
|
+
H.is_valid_id = function(x, type)
|
|
258
|
+
local is_valid = false
|
|
259
|
+
if type == 'buffer' then
|
|
260
|
+
is_valid = vim.api.nvim_buf_is_valid(x)
|
|
261
|
+
elseif type == 'window' then
|
|
262
|
+
is_valid = vim.api.nvim_win_is_valid(x)
|
|
263
|
+
end
|
|
264
|
+
|
|
265
|
+
if not is_valid then H.message(string.format('%s is not a valid %s id.', tostring(x), type)) end
|
|
266
|
+
return is_valid
|
|
267
|
+
end
|
|
268
|
+
|
|
269
|
+
-- Check if buffer can be removed with `MiniBufremove.fun_name` function
|
|
270
|
+
H.can_remove = function(buf_id, force, fun_name)
|
|
271
|
+
if force or not vim.bo[buf_id].modified then return true end
|
|
272
|
+
local msg = string.format('Buffer %d has unsaved changes. Do you want to force %s?', buf_id, fun_name)
|
|
273
|
+
return vim.fn.confirm(msg, '&No\n&Yes', 1, 'Question') == 2
|
|
274
|
+
end
|
|
275
|
+
|
|
276
|
+
-- Compute 'true' buffer id (strictly positive integer). Treat `nil` and 0 as
|
|
277
|
+
-- current buffer.
|
|
278
|
+
H.normalize_buf_id = function(buf_id)
|
|
279
|
+
if buf_id == nil or buf_id == 0 then return vim.api.nvim_get_current_buf() end
|
|
280
|
+
return buf_id
|
|
281
|
+
end
|
|
282
|
+
|
|
283
|
+
return MiniBufremove
|