summaryrefslogtreecommitdiffstats
path: root/modules/plugins/assistant/chatgpt/chatgpt.nix
blob: 2d644b5cb337fcbdf917d724f1e76cf71d79065d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
{
  config,
  lib,
  ...
}: let
  inherit (lib.options) mkEnableOption;
  inherit (lib.nvim.types) mkPluginSetupOption;
  inherit (config.vim.lib) mkMappingOption;
in {
  options.vim.assistant.chatgpt = {
    enable = mkEnableOption "ChatGPT AI assistant. Requires the environment variable OPENAI_API_KEY to be set";
    setupOpts = mkPluginSetupOption "chatgpt" {};
    mappings = {
      chatGpt = mkMappingOption "ChatGPT" "<leader>ac";
      editWithInstructions = mkMappingOption "[ChatGPT] Edit with instructions" "<leader>ae";
      grammarCorrection = mkMappingOption "[ChatGPT] Grammar correction" "<leader>ag";
      translate = mkMappingOption "[ChatGPT] Translate" "<leader>at";
      keyword = mkMappingOption "[ChatGPT] Keywords" "<leader>ak";
      docstring = mkMappingOption "[ChatGPT] Docstring" "<leader>ad";
      addTests = mkMappingOption "[ChatGPT] Add tests" "<leader>aa";
      optimize = mkMappingOption "[ChatGPT] Optimize code" "<leader>ao";
      summarize = mkMappingOption "[ChatGPT] Summarize" "<leader>as";
      fixBugs = mkMappingOption "[ChatGPT] Fix bugs" "<leader>af";
      explain = mkMappingOption "[ChatGPT] Explain code" "<leader>ax";
      roxygenEdit = mkMappingOption "[ChatGPT] Roxygen edit" "<leader>ar";
      readabilityanalysis = mkMappingOption "[ChatGPT] Code reability analysis" "<leader>al";
    };
  };
}