aboutsummaryrefslogtreecommitdiff
path: root/lua/buffer-browser.lua
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--lua/buffer-browser.lua94
1 files changed, 0 insertions, 94 deletions
diff --git a/lua/buffer-browser.lua b/lua/buffer-browser.lua
deleted file mode 100644
index c6a41a8..0000000
--- a/lua/buffer-browser.lua
+++ /dev/null
@@ -1,94 +0,0 @@
--- BUFFER BROWSER
--- Author: Marc Coquand
--- See readme for explanation on what it does.
--- This code contains examples that can be used to test the code.
--- Run them in `lua %`
--- or with a code runner, like sniprun.
-local api = vim.api
-
-local function StateAppend(bufName, state, filters)
- -- State has three fields, current = current buffer, previous = previous buffer, and future = future buffers
- -- This function clears the future, and appends the current to the previous, and sets the current to the next
-
- -- If filters matches the bufName, skip the buffer
- if filters ~= nil then
- for _, filter in ipairs(filters) do
- if string.match(bufName, filter) then
- return state
- end
- end
- end
-
- -- Clear the future
- state.future = {}
- -- Append the current to the previous
- table.insert(state.previous, state.current)
- -- Set the current to the next
- state.current = bufName
-
- return state
-end
--- Test StateAppend
--- local state = { current = 1, previous = { 2, 3 }, future = { 4, 5 } }
--- print(StateAppend(6, state, {})['current'])
--- -- > 6
--- state = { current = 1, previous = { 2, 3 }, future = { 4, 5 } }
--- print(StateAppend(6, state, {})['previous'][1])
--- -- > 2
--- state = { current = 1, previous = { 2, 3 }, future = { 4, 5 } }
--- print(StateAppend(6, state, { 6 })['current'])
--- -- > 1
-
-local function StateGoBack(state)
- -- Go back in the state by setting current to the first element of previous, and appending the current to the future
- -- Check if past is empty, if so return state as is
- if #state.previous == 0 then
- return state
- end
-
- table.insert(state.future, state.current)
- state.current = table.remove(state.previous, 1)
- return state
-end
--- Test StateGoBack
--- local state = { current = 1, previous = { 2, 3 }, future = { 4, 5 } }
--- print(StateGoBack(StateGoBack(StateGoBack(state)))['current'])
--- > 3
-
-local function StateGoForward(state)
- -- Go forward in the state by setting current to the first element of future, and appending the current to the previous
-
- -- Check if future is empty, if so return state as is
- if #state.future == 0 then
- return state
- end
-
- table.insert(state.previous, state.current)
- state.current = table.remove(state.future, 1)
-
- return state
-end
--- Test StateGoForward
--- local state = { current = 1, previous = { 2, 3 }, future = { 4, 5 } }
--- print(StateGoForward(StateGoForward(StateGoForward(state)))['current'])
--- > 5
-
-function BufferEnter()
- local bufName = api.nvim_buf_get_name(0)
- local state = vim.g.buffer_browser_state
- local filters = vim.g.buffer_browser_filters
- vim.g.buffer_browser_state = StateAppend(bufName, state, filters)
-end
-
-local BufferBrowserGroup = api.nvim_create_augroup('BufferBrowser')
-
-api.nvim_create_autocmd('WinEnter', {
- '*',
- 'lua BufferEnter()',
- { group = BufferBrowserGroup }
-})
-api.nvim_create_autocmd('BufEnter', {
- '*',
- 'lua BufferEnter()',
- { group = BufferBrowserGroup }
-})