nix-community.nixvim/plugins/languages/openscad.nix

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

77 lines
2.3 KiB
Nix
Raw Normal View History

2023-03-30 11:54:54 +02:00
{
lib,
helpers,
2023-03-30 11:54:54 +02:00
config,
pkgs,
2023-03-30 11:54:54 +02:00
...
}:
2023-03-30 11:54:54 +02:00
with lib;
let
defaultFuzzyFinder = "skim";
in
{
options.plugins.openscad = {
enable = mkEnableOption "openscad.nvim, a plugin to manage OpenSCAD files";
package = helpers.mkPluginPackageOption "openscad.nvim" pkgs.vimPlugins.openscad-nvim;
2023-03-30 11:54:54 +02:00
fuzzyFinder = helpers.defaultNullOpts.mkEnum [
"skim"
"fzf"
] defaultFuzzyFinder "fuzzy finder to find documentation";
cheatsheetWindowBlend = helpers.defaultNullOpts.mkNullable (types.ints.between 0 100) 15 "";
2023-03-30 11:54:54 +02:00
loadSnippets = helpers.defaultNullOpts.mkBool false "";
autoOpen = helpers.defaultNullOpts.mkBool false "";
keymaps = {
enable = mkEnableOption "keymaps for openscad";
cheatsheetToggle = helpers.defaultNullOpts.mkStr "<Enter>" "Toggle cheatsheet window";
helpTrigger = helpers.defaultNullOpts.mkStr "<A-h>" "Fuzzy find help resource";
helpManualTrigger = helpers.defaultNullOpts.mkStr "<A-m>" "Open offline openscad manual in pdf via zathura";
execOpenSCADTrigger = helpers.defaultNullOpts.mkStr "<A-o>" "Open file in OpenSCAD";
topToggle = helpers.defaultNullOpts.mkStr "<A-c>" "toggle htop filtered for openscad processes";
};
};
config =
let
cfg = config.plugins.openscad;
2023-05-22 15:45:47 +05:30
fuzzyFinder = if (cfg.fuzzyFinder == null) then defaultFuzzyFinder else cfg.fuzzyFinder;
2023-03-30 11:54:54 +02:00
in
mkIf cfg.enable {
extraPlugins =
with pkgs.vimPlugins;
[ cfg.package ]
++ (optional (fuzzyFinder == "skim") skim-vim)
++ (optional (fuzzyFinder == "fzf") fzf-vim);
extraConfigLua = ''
require('openscad')
'';
globals = mkMerge [
{
openscad_fuzzy_finder = cfg.fuzzyFinder;
openscad_cheatsheet_window_blend = cfg.cheatsheetWindowBlend;
openscad_load_snippets = cfg.loadSnippets;
}
(mkIf cfg.keymaps.enable {
openscad_default_mappings = true;
openscad_cheatsheet_toggle_key = cfg.keymaps.cheatsheetToggle;
openscad_help_trig_key = cfg.keymaps.helpTrigger;
openscad_help_manual_trig_key = cfg.keymaps.helpManualTrigger;
openscad_exec_openscad_trig_key = cfg.keymaps.execOpenSCADTrigger;
openscad_top_toggle = cfg.keymaps.topToggle;
})
];
};
}