aboutsummaryrefslogtreecommitdiff
path: root/README.md
blob: 5ce7b10da7926703a4caf3acccdd103376ae3294 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
# NVIM Buffer Browse 

`:b#` on steroids. Browse your buffers like you browse history in a browser.

## Motivation

While `:bnext` and `:bprev` allows you to browse between buffers, it is not
very intuitive. Oftentimes I jump to definitions, a different file through
netrw, an org file. `:bprev` would then end up in a completely different file,
because buffers are ordered by when they are opened, not by history. `:b#`,
<Ctrl-I>, <Ctrl-6> and <Ctrl-O> works only assuming you didn't navigate one step further
in the documentation.

I wanted to be able to browse buffers in a way that is similar to how you
browse tabs in a browser. 

## Usage

This plugin implements two functions: `require('buffer-browser').next()` and
`require('buffer-browser').prev()`.

You can easily map these to whatever you want. Here is an example `init.lua`:
```lua
vim.api.nvim_set_keymap('n', '<leader>b[', require("buffer_browser").next(), {desc = "Next [B]uffer [[]"})
vim.api.nvim_set_keymap('n', '<leader>b]', require("buffer_browser").prev(), {desc = "Previous [B]uffer []]"})
```

### Splits

If a split has been performed, the new split will not preserve any of the previous history.

## Insallation

Install through any of your favorite plugin managers. 

### [lazy](https://www.lazyvim.org). 

Make sure to run the setup function. For example with lazy:

```lua 
{
    'https://git.sr.ht/~marcc/BufferBrowser',
}
```

Then run 

```lua
require('buffer_browser').setup()
```


### Configuration 

You can configure the `filetype_filters` by passing a table to the `setup`
function. This is the default config:

```lua
require('buffer-browser').setup({
    -- '' + 'netrw' is used to filter out netrw.
    filetype_filters = ['', 'netrw', 'gitcommit', 'TelescopePrompt']
})
```

This can be used to filter out buffers you do not want in the history.

#### Limitation

To filter out netrw, we need to also filter out `''`, as the filetype
occassionally gets set to that by netrw (not sure why...). This means files
without filetype are filtered out.

## Credits 

The plugin is mostly a copy of
[ton/vim-bufsurf](https://github.com/ton/vim-bufsurf), but rewritten in Lua and
adds the ability to filter unwanted filetypes to get rid of netrw buffers.