coq-nvim: init plugin

still need to add most options, but this is enough to be usable
right now! This also sets up the work needed for other completion
frameworks, notably things like nvim-cmp and compe.
This commit is contained in:
Pedro Alves 2022-01-09 23:00:19 +00:00
parent 6de23559d7
commit f8b70a30ea
4 changed files with 140 additions and 14 deletions

View file

@ -0,0 +1,47 @@
{ pkgs, lib, config, ... }:
with lib;
let
cfg = config.programs.nixvim.plugins.coq-nvim;
helpers = import ../helpers.nix { lib = lib; };
plugins = import ../plugin-defs.nix { inherit pkgs; };
in {
options = {
programs.nixvim.plugins.coq-nvim = {
enable = mkEnableOption "Enable coq-nvim";
installArtifacts = mkEnableOption "Install coq-artifacts";
autoStart = mkOption {
type = with types; nullOr (oneOf [bool (enum ["shut-up"])]);
default = null;
description = "Auto-start or shut up";
};
recommendedKeymaps = mkOption {
type = with types; nullOr bool;
default = null;
description = "Use the recommended keymaps";
};
};
};
config = let
settings = {
auto_start = cfg.autoStart;
"keymap.recommended" = cfg.recommendedKeymaps;
};
in mkIf cfg.enable {
programs.nixvim = {
extraPlugins = [
plugins.coq-nvim
] ++ optional cfg.installArtifacts plugins.coq-artifacts;
plugins.lsp = {
preConfig = ''
vim.g.coq_settings = ${helpers.toLuaObject settings}
local coq = require 'coq'
'';
setupWrappers = [(s: ''coq.lsp_ensure_capabilities(${s})'')];
};
};
};
}