akinsho / akinsho/bufferline.nvim

[Feature Request]: Per-window buffer scoping (Split-local buffers via Winbar)

オープン
#1,042 コメント 2 件 リアクション 3 件 担当者 0 名 GitHub で見る
enhancement
主要言語
Lua
スター
4.4k
フォーク
240
PR マージ指標
30日以内にマージされた PR はありません

説明

### What?

I would like to propose adding support for **per-window buffer scoping** by allowing `bufferline.nvim` to render inside Neovim's `winbar`.

Currently, `bufferline.nvim` renders to the global `tabline`. This feature would allow users to have a dedicated buffer line for each split (window), containing only the buffers relevant to that specific split.

**Proposed Functionality:**
1. **Rendering Target:** Add an option to render the bufferline component in the native `winbar` instead of (or in addition to) the `tabline`.
2. **Per-Window Scope:** When in `winbar` mode, the plugin would maintain a list of buffers specific to that window ID, rather than showing all globally open buffers.
* *Behavior:* When a user opens a file in Split A, it is added to Split A's buffer list.
* *Navigation:* Commands like `:BufferLineCycleNext` would operate within the context of the current window's buffer list only.
3. **Visuals:** Each split would effectively have its own "tab bar" at the top, showing only the files being worked on in that context.

**Example Scenario:**
* **Left Split (Feature Work):** Shows `feature.lua`, `utils.lua`, `types.lua`.
* **Right Split (Tests):** Shows `feature_spec.lua`, `helpers_spec.lua`.
* Cycling buffers in the right split only rotates through the test files, leaving the left split's context irrelevant.

### Why?

**1. Solves the "Global Buffer Soup" Problem:**
Neovim's default buffer system is global. When working with multiple splits (e.g., code on the left, tests on the right), the buffer list becomes a mix of unrelated files. Switching buffers often accidentally pulls a test file into the code split, breaking layout and mental context.

**2. Improved Context Tracking:**
Users often use splits to separate concerns (Frontend vs Backend, Code vs Tests). A global bufferline does not reflect this workflow. Per-window scoping allows the UI to match the user's mental model: "These are the files I am using *here*."

**3. Native 'Winbar' Utilization:**
Since Neovim 0.8+, the `winbar` option allows for window-local status lines. This is the perfect architectural place for this feature, as it is inherently scoped to the window, whereas the `tabline` is global.

**4. Alternatives are Lacking:**
While plugins like `scope.nvim` offer tab-scoped buffers, there is currently no robust solution for *split-scoped* buffers with visual indication. Implementing this in `bufferline.nvim` would make it the definitive tool for complex window layouts.

コントリビューションガイド

このリポジトリのコントリビューションガイドは索引されていません

評価

この issue はまだ評価されていません。

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。