mirror of
https://github.com/NotAShelf/neovim-flake.git
synced 2024-12-22 10:59:49 +01:00
54 lines
1.4 KiB
Nix
54 lines
1.4 KiB
Nix
{
|
|
config,
|
|
lib,
|
|
...
|
|
}: let
|
|
inherit (builtins) toJSON;
|
|
inherit (lib) mkIf mkMerge mkExprBinding boolToString nvim;
|
|
|
|
cfg = config.vim.assistant.tabnine;
|
|
in {
|
|
config = mkIf cfg.enable {
|
|
vim.startPlugins = ["tabnine-nvim"];
|
|
|
|
vim.maps.insert = mkMerge [
|
|
(mkExprBinding cfg.mappings.accept ''
|
|
function()
|
|
local state = require("tabnine.state")
|
|
local completion = require("tabnine.completion")
|
|
|
|
if not state.completions_cache then
|
|
return "${toJSON cfg.mappings.accept}"
|
|
end
|
|
|
|
vim.schedule(completion.accept)
|
|
end
|
|
'' "orzel")
|
|
(mkExprBinding cfg.mappings.dismiss ''
|
|
function()
|
|
local state = require("tabnine.state")
|
|
local completion = require("tabnine.completion")
|
|
|
|
if not state.completions_cache then
|
|
return "${toJSON cfg.mappings.dismiss}"
|
|
end
|
|
|
|
vim.schedule(function()
|
|
completion.clear()
|
|
state.completions_cache = nil
|
|
end)
|
|
end
|
|
'' "orzel")
|
|
];
|
|
|
|
vim.luaConfigRC.tabnine-nvim = nvim.dag.entryAnywhere ''
|
|
require('tabnine').setup({
|
|
disable_auto_comment = ${boolToString cfg.disable_auto_comment},
|
|
accept_keymap = null,
|
|
dismiss_keymap = null,
|
|
debounce_ms = ${cfg.debounce_ms},
|
|
exclude_filetypes = ${cfg.exclude_filetypes},
|
|
})
|
|
'';
|
|
};
|
|
}
|