Skip to content

Commit

Permalink
ui/breadcrumbs: allow lualine winbar component to be disabled (#371)
Browse files Browse the repository at this point in the history
  • Loading branch information
NotAShelf authored Sep 13, 2024
1 parent b9dcbec commit eb037b7
Show file tree
Hide file tree
Showing 3 changed files with 52 additions and 12 deletions.
14 changes: 13 additions & 1 deletion docs/release-notes/rl-0.7.md
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,8 @@ configuration formats.

- Fix "Emac" typo

- Add [new-file-template.nvim] to automatically fill new file contents using templates.
- Add [new-file-template.nvim] to automatically fill new file contents using
templates.

[diniamo](https://github.com/diniamo):

Expand Down Expand Up @@ -147,11 +148,22 @@ configuration formats.
- Add `nvf-print-config` & `nvf-print-config-path` helper scripts to Neovim
closure. Both of those scripts have been automatically added to your PATH upon
using neovimConfig or `programs.nvf.enable`.

- `nvf-print-config` will display your `init.lua`, in full.
- `nvf-print-config-path` will display the path to _a clone_ of your
`init.lua`. This is not the path used by the Neovim wrapper, but an
identical clone.

- Add `vim.ui.breadcrumbs.lualine` to allow fine-tuning breadcrumbs behaviour on
Lualine. Only `vim.ui.breadcrumbs.lualine.winbar` is supported for the time
being.
- [](#opt-vim.ui.breadcrumbs.lualine.winbar.enable) has been added to allow
controlling the default behaviour of the `nvim-navic` component on Lualine,
which used to occupy `winbar.lualine_c` as long as breadcrumbs are enabled.
- `vim.ui.breadcrumbs.alwaysRender` has been renamed to
[](#opt-vim.ui.breadcrumbs.lualine.winbar.alwaysRender) to be conform to the
new format.

[ppenguin](https://github.com/ppenguin):

- Telescope:
Expand Down
8 changes: 4 additions & 4 deletions modules/plugins/statusline/lualine/config.nix
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
inherit (lib.generators) mkLuaInline;

cfg = config.vim.statusline.lualine;
breadcrumbsCfg = config.vim.ui.breadcrumbs;
bCfg = config.vim.ui.breadcrumbs;
in {
config = mkMerge [
# TODO: move into nvim-tree file
Expand All @@ -20,21 +20,21 @@ in {
extensions = ["nvim-tree"];
};
})
(mkIf (breadcrumbsCfg.enable && breadcrumbsCfg.source == "nvim-navic") {

(mkIf (bCfg.enable && bCfg.lualine.winbar.enable && bCfg.source == "nvim-navic") {
vim.statusline.lualine.setupOpts = {
# TODO: rewrite in new syntax
winbar.lualine_c = mkDefault [
[
"navic"
(mkLuaInline "draw_empty = ${boolToString config.vim.ui.breadcrumbs.alwaysRender}")
(mkLuaInline "draw_empty = ${boolToString bCfg.lualine.winbar.alwaysRender}")
]
];
};
})
(mkIf cfg.enable {
vim = {
startPlugins = ["lualine"];

pluginRC.lualine = entryAnywhere ''
local lualine = require('lualine')
lualine.setup ${toLuaObject cfg.setupOpts}
Expand Down
42 changes: 35 additions & 7 deletions modules/plugins/ui/breadcrumbs/breadcrumbs.nix
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,8 @@ in {
(renameSetupOpt ["sourceBuffer" "scrolloff"] ["source_buffer" "scrolloff"])
# TODO: every option under icon is renamed to first letter capitalized
(renameSetupOpt ["icon"] ["icon"])

(mkRenamedOptionModule ["vim" "ui" "breadcrumbs" "alwaysRender"] ["vim" "ui" "breadcrumbs" "lualine" "winbar" "alwaysRender"])
];

options.vim.ui.breadcrumbs = {
Expand All @@ -43,17 +45,43 @@ in {
'';
};

# maybe this should be an option to *disable* alwaysRender optionally but oh well
# too late
alwaysRender = mkOption {
type = bool;
default = true;
description = "Whether to always display the breadcrumbs component on winbar (always renders winbar)";
# Options for configuring Lualine integration of nvim-navic
lualine.winbar = {
enable = mkOption {
type = bool;
default = true; # for retaining previous behaviour
example = false;
description = ''
Whether to automatically configure a winbar component for
Lualine on the Winbar section.
::: {.note}
This is **set to `true` by default**, which means nvim-navic
will occupy `winbar.lualine_c` for the breadcrumbs feature
unless this option is set to `false`.
:::
'';
};

alwaysRender = mkOption {
type = bool;
default = true;
example = false;
description = ''
Whether to always display the breadcrumbs component
on winbar.
::: {.note}
This will pass `draw_empty` to the `nvim_navic` winbar
component, which causes the component to be drawn even
if it's empty
:::
'';
};
};

navbuddy = {
enable = mkEnableOption "navbuddy LSP helper UI. Enabling this option automatically loads and enables nvim-navic";

mappings = {
close = mkOption {
type = str;
Expand Down

0 comments on commit eb037b7

Please sign in to comment.