mirror of
https://github.com/nix-community/nixvim.git
synced 2025-07-21 11:14:40 +02:00
plugins/copilot-chat: helpers
-> lib.nixvim
This commit is contained in:
parent
68dd111eb3
commit
928fc1a16f
1 changed files with 44 additions and 51 deletions
|
@ -1,10 +1,7 @@
|
|||
{
|
||||
lib,
|
||||
helpers,
|
||||
...
|
||||
}:
|
||||
{ lib, ... }:
|
||||
let
|
||||
inherit (lib) types;
|
||||
inherit (lib.nixvim) defaultNullOpts;
|
||||
in
|
||||
lib.nixvim.plugins.mkNeovimPlugin {
|
||||
name = "copilot-chat";
|
||||
|
@ -15,72 +12,72 @@ lib.nixvim.plugins.mkNeovimPlugin {
|
|||
maintainers = [ lib.maintainers.GaetanLepage ];
|
||||
|
||||
settingsOptions = {
|
||||
debug = helpers.defaultNullOpts.mkBool false ''
|
||||
debug = defaultNullOpts.mkBool false ''
|
||||
Enable debug logging.
|
||||
'';
|
||||
|
||||
proxy = helpers.defaultNullOpts.mkStr null ''
|
||||
proxy = defaultNullOpts.mkStr null ''
|
||||
Custom proxy to use, formatted as `[protocol://]host[:port]`.
|
||||
'';
|
||||
|
||||
allow_insecure = helpers.defaultNullOpts.mkBool false ''
|
||||
allow_insecure = defaultNullOpts.mkBool false ''
|
||||
Allow insecure server connections.
|
||||
'';
|
||||
|
||||
system_prompt = helpers.defaultNullOpts.mkLua "require('CopilotChat.prompts').COPILOT_INSTRUCTIONS" ''
|
||||
system_prompt = defaultNullOpts.mkLua "require('CopilotChat.prompts').COPILOT_INSTRUCTIONS" ''
|
||||
System prompt to use.
|
||||
'';
|
||||
|
||||
model = helpers.defaultNullOpts.mkStr "gpt-4" ''
|
||||
model = defaultNullOpts.mkStr "gpt-4" ''
|
||||
GPT model to use, 'gpt-3.5-turbo' or 'gpt-4'.
|
||||
'';
|
||||
|
||||
temperature = helpers.defaultNullOpts.mkProportion 0.1 ''
|
||||
temperature = defaultNullOpts.mkProportion 0.1 ''
|
||||
GPT temperature.
|
||||
'';
|
||||
|
||||
question_header = helpers.defaultNullOpts.mkStr "## User " ''
|
||||
question_header = defaultNullOpts.mkStr "## User " ''
|
||||
Header to use for user questions.
|
||||
'';
|
||||
|
||||
answer_header = helpers.defaultNullOpts.mkStr "## Copilot " ''
|
||||
answer_header = defaultNullOpts.mkStr "## Copilot " ''
|
||||
Header to use for AI answers.
|
||||
'';
|
||||
|
||||
error_header = helpers.defaultNullOpts.mkStr "## Error " ''
|
||||
error_header = defaultNullOpts.mkStr "## Error " ''
|
||||
Header to use for errors.
|
||||
'';
|
||||
|
||||
separator = helpers.defaultNullOpts.mkStr "───" ''
|
||||
separator = defaultNullOpts.mkStr "───" ''
|
||||
Separator to use in chat.
|
||||
'';
|
||||
|
||||
show_folds = helpers.defaultNullOpts.mkBool true ''
|
||||
show_folds = defaultNullOpts.mkBool true ''
|
||||
Shows folds for sections in chat.
|
||||
'';
|
||||
|
||||
show_help = helpers.defaultNullOpts.mkBool true ''
|
||||
show_help = defaultNullOpts.mkBool true ''
|
||||
Shows help message as virtual lines when waiting for user input.
|
||||
'';
|
||||
|
||||
auto_follow_cursor = helpers.defaultNullOpts.mkBool true ''
|
||||
auto_follow_cursor = defaultNullOpts.mkBool true ''
|
||||
Auto-follow cursor in chat.
|
||||
'';
|
||||
|
||||
auto_insert_mode = helpers.defaultNullOpts.mkBool false ''
|
||||
auto_insert_mode = defaultNullOpts.mkBool false ''
|
||||
Automatically enter insert mode when opening window and if auto follow cursor is enabled on new prompt.
|
||||
'';
|
||||
|
||||
clear_chat_on_new_prompt = helpers.defaultNullOpts.mkBool false ''
|
||||
clear_chat_on_new_prompt = defaultNullOpts.mkBool false ''
|
||||
Clears chat on every new prompt.
|
||||
'';
|
||||
|
||||
highlight_selection = helpers.defaultNullOpts.mkBool true ''
|
||||
highlight_selection = defaultNullOpts.mkBool true ''
|
||||
Highlight selection.
|
||||
'';
|
||||
|
||||
context =
|
||||
helpers.defaultNullOpts.mkEnum
|
||||
defaultNullOpts.mkEnum
|
||||
[
|
||||
"buffers"
|
||||
"buffer"
|
||||
|
@ -90,18 +87,18 @@ lib.nixvim.plugins.mkNeovimPlugin {
|
|||
Default context to use, `"buffers"`, `"buffer"` or `null` (can be specified manually in prompt via @).
|
||||
'';
|
||||
|
||||
history_path = helpers.defaultNullOpts.mkStr (helpers.mkRaw "vim.fn.stdpath('data') .. '/copilotchat_history'") ''
|
||||
history_path = defaultNullOpts.mkStr (lib.nixvim.mkRaw "vim.fn.stdpath('data') .. '/copilotchat_history'") ''
|
||||
Default path to stored history.
|
||||
'';
|
||||
|
||||
callback = helpers.defaultNullOpts.mkLuaFn null ''
|
||||
callback = defaultNullOpts.mkLuaFn null ''
|
||||
Callback to use when ask response is received.
|
||||
|
||||
`fun(response: string, source: CopilotChat.config.source)`
|
||||
'';
|
||||
|
||||
selection =
|
||||
helpers.defaultNullOpts.mkLuaFn
|
||||
defaultNullOpts.mkLuaFn
|
||||
''
|
||||
function(source)
|
||||
local select = require('CopilotChat.select')
|
||||
|
@ -118,22 +115,22 @@ lib.nixvim.plugins.mkNeovimPlugin {
|
|||
promptType = types.submodule {
|
||||
freeformType = with types; attrsOf anything;
|
||||
options = {
|
||||
prompt = helpers.mkNullOrStr "Prompt text.";
|
||||
prompt = lib.nixvim.mkNullOrStr "Prompt text.";
|
||||
|
||||
description = helpers.mkNullOrStr "Description for this prompt.";
|
||||
description = lib.nixvim.mkNullOrStr "Description for this prompt.";
|
||||
|
||||
kind = helpers.mkNullOrStr "Kind of this prompt.";
|
||||
kind = lib.nixvim.mkNullOrStr "Kind of this prompt.";
|
||||
|
||||
mapping = helpers.mkNullOrStr "A key to bind to this prompt.";
|
||||
mapping = lib.nixvim.mkNullOrStr "A key to bind to this prompt.";
|
||||
|
||||
system_prompt = helpers.mkNullOrStr "System prompt to use.";
|
||||
system_prompt = lib.nixvim.mkNullOrStr "System prompt to use.";
|
||||
|
||||
callback = helpers.mkNullOrLuaFn ''
|
||||
callback = lib.nixvim.mkNullOrLuaFn ''
|
||||
Callback to trigger when this prompt is executed.
|
||||
`fun(response: string, source: CopilotChat.config.source)`
|
||||
'';
|
||||
|
||||
selection = helpers.mkNullOrLuaFn ''
|
||||
selection = lib.nixvim.mkNullOrLuaFn ''
|
||||
Selection for this prompt.
|
||||
`fun(source: CopilotChat.config.source):CopilotChat.config.selection`
|
||||
'';
|
||||
|
@ -172,13 +169,13 @@ lib.nixvim.plugins.mkNeovimPlugin {
|
|||
};
|
||||
};
|
||||
in
|
||||
helpers.defaultNullOpts.mkAttrsOf (with types; either str promptType) default ''
|
||||
defaultNullOpts.mkAttrsOf (with types; either str promptType) default ''
|
||||
Default prompts.
|
||||
'';
|
||||
|
||||
window = {
|
||||
layout =
|
||||
helpers.defaultNullOpts.mkEnumFirstDefault
|
||||
defaultNullOpts.mkEnumFirstDefault
|
||||
[
|
||||
"vertical"
|
||||
"horizontal"
|
||||
|
@ -190,23 +187,19 @@ lib.nixvim.plugins.mkNeovimPlugin {
|
|||
'';
|
||||
|
||||
width =
|
||||
helpers.defaultNullOpts.mkNullableWithRaw
|
||||
(with types; either (numbers.between 0.0 1.0) ints.positive)
|
||||
0.5
|
||||
defaultNullOpts.mkNullableWithRaw (with types; either (numbers.between 0.0 1.0) ints.positive) 0.5
|
||||
''
|
||||
Fractional width of parent, or absolute width in columns when > 1.
|
||||
'';
|
||||
|
||||
height =
|
||||
helpers.defaultNullOpts.mkNullableWithRaw
|
||||
(with types; either (numbers.between 0.0 1.0) ints.positive)
|
||||
0.5
|
||||
defaultNullOpts.mkNullableWithRaw (with types; either (numbers.between 0.0 1.0) ints.positive) 0.5
|
||||
''
|
||||
Fractional height of parent, or absolute height in rows when > 1.
|
||||
'';
|
||||
|
||||
relative =
|
||||
helpers.defaultNullOpts.mkEnumFirstDefault
|
||||
defaultNullOpts.mkEnumFirstDefault
|
||||
[
|
||||
"editor"
|
||||
"win"
|
||||
|
@ -219,7 +212,7 @@ lib.nixvim.plugins.mkNeovimPlugin {
|
|||
'';
|
||||
|
||||
border =
|
||||
helpers.defaultNullOpts.mkEnum
|
||||
defaultNullOpts.mkEnum
|
||||
[
|
||||
"none"
|
||||
"single"
|
||||
|
@ -234,39 +227,39 @@ lib.nixvim.plugins.mkNeovimPlugin {
|
|||
(Only for floating windows.)
|
||||
'';
|
||||
|
||||
row = helpers.defaultNullOpts.mkUnsignedInt null ''
|
||||
row = defaultNullOpts.mkUnsignedInt null ''
|
||||
Row position of the window, default is centered.
|
||||
(Only for floating windows.)
|
||||
'';
|
||||
|
||||
col = helpers.defaultNullOpts.mkUnsignedInt null ''
|
||||
col = defaultNullOpts.mkUnsignedInt null ''
|
||||
Column position of the window, default is centered.
|
||||
(Only for floating windows.)
|
||||
'';
|
||||
|
||||
title = helpers.defaultNullOpts.mkStr "Copilot Chat" ''
|
||||
title = defaultNullOpts.mkStr "Copilot Chat" ''
|
||||
Title of chat window.
|
||||
'';
|
||||
|
||||
footer = helpers.defaultNullOpts.mkStr null ''
|
||||
footer = defaultNullOpts.mkStr null ''
|
||||
Footer of chat window.
|
||||
'';
|
||||
|
||||
zindex = helpers.defaultNullOpts.mkUnsignedInt 1 ''
|
||||
zindex = defaultNullOpts.mkUnsignedInt 1 ''
|
||||
Determines if window is on top or below other floating windows.
|
||||
'';
|
||||
};
|
||||
|
||||
mappings =
|
||||
helpers.defaultNullOpts.mkAttrsOf
|
||||
defaultNullOpts.mkAttrsOf
|
||||
(types.submodule {
|
||||
freeformType = with types; attrsOf anything;
|
||||
options = {
|
||||
normal = helpers.mkNullOrStr "Key for normal mode.";
|
||||
normal = lib.nixvim.mkNullOrStr "Key for normal mode.";
|
||||
|
||||
insert = helpers.mkNullOrStr "Key for insert mode.";
|
||||
insert = lib.nixvim.mkNullOrStr "Key for insert mode.";
|
||||
|
||||
detail = helpers.mkNullOrStr "A description for this binding.";
|
||||
detail = lib.nixvim.mkNullOrStr "A description for this binding.";
|
||||
};
|
||||
})
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue