plugins/barbecue: migrate to mkNeovimPlugin

This commit is contained in:
Austin Horstman 2024-09-03 19:43:03 -05:00
parent 279258294b
commit c8bb7880bf
No known key found for this signature in database
2 changed files with 121 additions and 119 deletions

View file

@ -1,35 +1,71 @@
{ {
lib, lib,
helpers,
config,
pkgs, pkgs,
... ...
}: }:
with lib;
let let
cfg = config.plugins.barbecue; inherit (lib.nixvim) defaultNullOpts;
mkListStr = helpers.defaultNullOpts.mkNullable (types.listOf types.str);
in in
{ lib.nixvim.neovim-plugin.mkNeovimPlugin {
options.plugins.barbecue = helpers.neovim-plugin.extraOptionsOptions // { name = "barbecue";
enable = mkEnableOption "barbecue-nvim"; originalName = "barbecue.nvim";
defaultPackage = pkgs.vimPlugins.barbecue-nvim;
package = helpers.mkPluginPackageOption "barbecue-nvim" pkgs.vimPlugins.barbecue-nvim; maintainers = [ lib.maintainers.khaneliman ];
attachNavic = helpers.defaultNullOpts.mkBool true '' # TODO: added 2024-09-03 remove after 24.11
optionsRenamedToSettings = [
"attachNavic"
"createAutocmd"
"includeBuftypes"
"excludeFiletypes"
[
"modifiers"
"dirname"
]
[
"modifiers"
"basename"
]
"showDirname"
"showBasename"
"showModified"
"modified"
"showNavic"
"leadCustomSection"
"customSection"
"theme"
"contextFollowIconColor"
[
"symbols"
"modified"
]
[
"symbols"
"ellipsis"
]
[
"symbols"
"separator"
]
"kinds"
];
settingsOptions = {
attach_navic = defaultNullOpts.mkBool true ''
Whether to attach navic to language servers automatically. Whether to attach navic to language servers automatically.
''; '';
createAutocmd = helpers.defaultNullOpts.mkBool true '' create_autocmd = defaultNullOpts.mkBool true ''
Whether to create winbar updater autocmd. Whether to create winbar updater autocmd.
''; '';
includeBuftypes = mkListStr [ "" ] '' include_buftypes = defaultNullOpts.mkListOf lib.types.str [ "" ] ''
Buftypes to enable winbar in. Buftypes to enable winbar in.
''; '';
excludeFiletypes = exclude_filetypes =
mkListStr defaultNullOpts.mkListOf lib.types.str
[ [
"netrw" "netrw"
"toggleterm" "toggleterm"
@ -39,33 +75,33 @@ in
''; '';
modifiers = { modifiers = {
dirname = helpers.defaultNullOpts.mkStr ":~:." '' dirname = defaultNullOpts.mkStr ":~:." ''
Filename modifiers applied to dirname. Filename modifiers applied to dirname.
See: `:help filename-modifiers` See: `:help filename-modifiers`
''; '';
basename = helpers.defaultNullOpts.mkStr "" '' basename = defaultNullOpts.mkStr "" ''
Filename modifiers applied to basename. Filename modifiers applied to basename.
See: `:help filename-modifiers` See: `:help filename-modifiers`
''; '';
}; };
showDirname = helpers.defaultNullOpts.mkBool true '' show_dirname = defaultNullOpts.mkBool true ''
Whether to display path to file. Whether to display path to file.
''; '';
showBasename = helpers.defaultNullOpts.mkBool true '' show_basename = defaultNullOpts.mkBool true ''
Whether to display file name. Whether to display file name.
''; '';
showModified = helpers.defaultNullOpts.mkBool false '' show_modified = defaultNullOpts.mkBool false ''
Whether to replace file icon with the modified symbol when buffer is modified. Whether to replace file icon with the modified symbol when buffer is modified.
''; '';
modified = modified =
helpers.defaultNullOpts.mkLuaFn defaultNullOpts.mkLuaFn
'' ''
function(bufnr) function(bufnr)
return vim.bo[bufnr].modified return vim.bo[bufnr].modified
@ -76,12 +112,12 @@ in
NOTE: This can be used to get file modified status from SCM (e.g. git) NOTE: This can be used to get file modified status from SCM (e.g. git)
''; '';
showNavic = helpers.defaultNullOpts.mkBool true '' show_navic = defaultNullOpts.mkBool true ''
Whether to show/use navic in the winbar. Whether to show/use navic in the winbar.
''; '';
leadCustomSection = lead_custom_section =
helpers.defaultNullOpts.mkLuaFn defaultNullOpts.mkLuaFn
'' ''
function() function()
return " " return " "
@ -92,8 +128,8 @@ in
NOTE: This function shouldn't do any expensive actions as it is run on each render. NOTE: This function shouldn't do any expensive actions as it is run on each render.
''; '';
customSection = custom_section =
helpers.defaultNullOpts.mkLuaFn defaultNullOpts.mkLuaFn
'' ''
function() function()
return " " return " "
@ -104,29 +140,29 @@ in
NOTE: This function shouldn't do any expensive actions as it is run on each render. NOTE: This function shouldn't do any expensive actions as it is run on each render.
''; '';
theme = helpers.defaultNullOpts.mkStr "auto" '' theme = defaultNullOpts.mkStr "auto" ''
Theme to be used for generating highlight groups dynamically. Theme to be used for generating highlight groups dynamically.
''; '';
contextFollowIconColor = helpers.defaultNullOpts.mkBool false '' context_follow_icon_color = defaultNullOpts.mkBool false ''
Whether context text should follow its icon's color. Whether context text should follow its icon's color.
''; '';
symbols = { symbols = {
modified = helpers.defaultNullOpts.mkStr "" '' modified = defaultNullOpts.mkStr "" ''
Modification indicator. Modification indicator.
''; '';
ellipsis = helpers.defaultNullOpts.mkStr "" '' ellipsis = defaultNullOpts.mkStr "" ''
Truncation indicator. Truncation indicator.
''; '';
separator = helpers.defaultNullOpts.mkStr "" '' separator = defaultNullOpts.mkStr "" ''
Entry separator. Entry separator.
''; '';
}; };
kinds = mapAttrs (name: default: helpers.defaultNullOpts.mkStr default "icon for ${name}.") { kinds = lib.mapAttrs (name: default: defaultNullOpts.mkStr default "icon for ${name}.") {
File = ""; File = "";
Module = ""; Module = "";
Namespace = ""; Namespace = "";
@ -155,40 +191,4 @@ in
TypeParameter = ""; TypeParameter = "";
}; };
}; };
config =
let
setupOptions =
with cfg;
{
attach_navic = attachNavic;
create_autocmd = createAutocmd;
include_buftypes = includeBuftypes;
exclude_filetypes = excludeFiletypes;
modifiers = {
inherit (modifiers) dirname basename;
};
show_dirname = showDirname;
show_basename = showBasename;
show_modified = showModified;
inherit modified;
show_navic = showNavic;
lead_custom_section = leadCustomSection;
custom_section = customSection;
inherit theme;
context_follow_icon_color = contextFollowIconColor;
symbols = {
inherit (symbols) modified ellipsis separator;
};
inherit kinds;
}
// cfg.extraOptions;
in
mkIf cfg.enable {
extraPlugins = [ cfg.package ];
extraConfigLua = ''
require('barbecue').setup(${helpers.toLuaObject setupOptions})
'';
};
} }

View file

@ -7,58 +7,60 @@
plugins.barbecue = { plugins.barbecue = {
enable = true; enable = true;
attachNavic = true; settings = {
createAutocmd = true; attach_navic = true;
includeBuftypes = [ "" ]; create_autocmd = true;
excludeFiletypes = [ include_buftypes = [ "" ];
"netrw" exclude_filetypes = [
"toggleterm" "netrw"
]; "toggleterm"
modifiers = { ];
dirname = ":~:."; modifiers = {
basename = ""; dirname = ":~:.";
}; basename = "";
showDirname = true; };
showBasename = true; show_dirname = true;
showModified = true; show_basename = true;
modified = "function(bufnr) return vim.bo[bufnr].modified end"; show_modified = true;
showNavic = true; modified = "function(bufnr) return vim.bo[bufnr].modified end";
leadCustomSection = ''function() return " " end''; show_navic = true;
customSection = ''function() return " " end''; lead_custom_section = ''function() return " " end'';
theme = "auto"; custom_section = ''function() return " " end'';
contextFollowIconColor = true; theme = "auto";
symbols = { context_follow_icon_color = true;
modified = "M"; symbols = {
ellipsis = "///"; modified = "M";
separator = "{"; ellipsis = "///";
}; separator = "{";
kinds = { };
File = ""; kinds = {
Module = ""; File = "";
Namespace = ""; Module = "";
Package = ""; Namespace = "";
Class = ""; Package = "";
Method = ""; Class = "";
Property = ""; Method = "";
Field = ""; Property = "";
Constructor = ""; Field = "";
Enum = ""; Constructor = "";
Interface = ""; Enum = "";
Function = ""; Interface = "";
Variable = ""; Function = "";
Constant = ""; Variable = "";
String = ""; Constant = "";
Number = ""; String = "";
Boolean = ""; Number = "";
Array = ""; Boolean = "";
Object = ""; Array = "";
Key = ""; Object = "";
Null = ""; Key = "";
EnumMember = ""; Null = "";
Struct = ""; EnumMember = "";
Event = ""; Struct = "";
Operator = ""; Event = "";
TypeParameter = ""; Operator = "";
TypeParameter = "";
};
}; };
}; };
}; };