kakoune popups


Keywords
kakoune, plugin
License
CC0-1.0

Documentation

tabs.kak

View open buffers in status line, like tabs, and navigate between them quickly.

Demo

asciicast

Keybindings

The recommended key bindings can be set by calling tabs-recommended-keys:

define-command tabs-recommended-keys -docstring "set the recommended kak-tabs bindings" %{
  map global normal q b
  map global normal Q B
  map global normal b ': enter-user-mode tabs<ret>' -docstring 'tabs'
  map global normal B ': enter-user-mode -lock tabs<ret>' -docstring 'tabs (lock)'
}

Within the tabs mode, the keybindings are as follows:

a: ↔ (alternate)      return to the previously focused buffer
h: ← (previous)       navigate to the buffer on the left
l: → (next)           navigate to the buffer on the right
s:   (*scratch*)      open the *scratch* buffer
u:   (*debug*)        open the *debug* buffer
H: ← (drag left)      swap this buffer to the left
L: → (drag right)     swap this buffer to the right
d:   (delete current) delete the current buffer

Configuration

Example Configuration

set-option global tabs_modelinefmt '%val{cursor_line}:%val{cursor_char_column} {{mode_info}} '
set-option global tabs_options --minified

Options

  • tabs_modelinefmt: when set to a modelinefmt string, it is placed in the space preceding the tabs

  • tabs_options: a list of switches that affect tabs' appearance.

    • --minified
      • this will cause tabs to show as little of their paths as possible while still being unique. For example, if the currently open buffers are
        projects/1/src/main.rs projects/2/src/main.rs projects/2/Cargo.toml
        
        then the rendered tabs will be
        | 1/src/main.rs | 2/src/main.rs | Cargo.toml |
        
        because these are the smallest unique suffixes of each buffer.

Installation

  1. Install the rc/tabs.kak so your kakoune instance auto-loads it.
  2. Install the kak-tabs rust crate.

TODO

  • tabs should shrink when there's not enough space
  • add more buffer deletion options, see: #3

Originally inspired by Delapouite's kakoune-buffers.

Warning
This plugin is incompatible with powerline.kak, see here for why.