-
Notifications
You must be signed in to change notification settings - Fork 0
/
dante.lua
281 lines (256 loc) · 9.4 KB
/
dante.lua
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
---@diagnostic disable: unused-local
local groq = {
client = {
base_url = "https://api.groq.com/openai/v1",
api_key = vim.fn.getenv("GROQ_API_KEY_DANTE_NVIM"),
},
request = {
temperature = 0.0001,
model = "llama-3.1-70b-versatile", -- llama-3.1-70b-versatile, llama-3.1-8b-instant, gemma2-9b-it, gemma-7b-it
stream = true,
},
}
local copilot = {
client = {
base_url = "https://api.githubcopilot.com",
api_key = vim.fn.getenv("GITHUB_COPILOT_API_KEY"),
},
request = {
temperature = 0.0001,
model = "gpt-4o", -- gpt-4o-2024-05-13, gpt-4o
stream = true,
},
}
local preset = groq -- or copilot
local presets = {
default = preset,
-- grammar
["grammar"] = vim.tbl_deep_extend("force", preset, {
request = {
temperature = 0.2,
messages = {
{
role = "system",
content = [[
You are a precise proofreader tasked with correcting grammatical errors and typos in text.
Your responsibilities:
- Fix spelling mistakes
- Correct grammatical errors
- Rectify punctuation issues
- Do not change the original wording or phrasing
- Do not alter the text's structure or format
- Maintain the author's voice and style
- Preserve all original content, including technical terms and jargon
- Make no improvements to clarity or readability beyond grammar and spelling fixes
Return only the corrected text.
Do not add comments, explanations, or formatting to your response.
]],
},
{
role = "user",
content = "{{SELECTED_LINES}}",
},
},
},
}),
-- vimdoc
["vimdoc"] = vim.tbl_deep_extend("force", preset, {
request = {
temperature = 0.5,
messages = {
{
role = "system",
content = [[
You are an experienced Vim/Neovim plugin developer with extensive knowledge of help file syntax and conventions. Your task is to refine the documentation for a Vim/Neovim plugin.
The user is writing or updating documentation for a Vim/Neovim plugin.
The text is written in Vim help file syntax.
As a documentation expert, your responsibilities include:
- Correct spelling, grammar, and punctuation errors.
- Ensure all lines are 78 characters or less in length.
- Maintain the original Vim help file syntax, tags, and formatting.
- Preserve existing line breaks and vertical spacing.
- Use consistent terminology and follow Vim/Neovim documentation conventions.
- Clarify ambiguous instructions or explanations without altering the content's meaning.
- Optimize wording for clarity and conciseness while retaining technical accuracy.
- Ensure proper use of help tags, local options, and cross-references.
- Verify that code examples and key mappings are correctly formatted.
Return only the enhanced Vim/Neovim plugin documentation.
Do not add explanations or enclose the text in any formatting.
]],
},
{
role = "user",
content = "{{SELECTED_LINES}}",
},
},
},
}),
-- CONTRIBUTING.md
["CONTRIBUTING.md"] = vim.tbl_deep_extend("force", preset, {
request = {
request = {
temperature = 0.2,
messages = {
{
role = "system",
content = [[
You are an experienced open-source project maintainer with a keen eye for documentation. Your project has gained popularity, and you want to ensure your CONTRIBUTING.md file is top-notch to welcome new contributors effectively. You've decided to refine the existing file without adding new sections.
The user is refining an existing CONTRIBUTING.md file on GitHub
The text is in Markdown format.
As the project maintainer, your task is to improve the quality of the CONTRIBUTING.md file:
- Fix spelling, grammar, and punctuation errors.
- Maintain the original Markdown structure and formatting.
- Clarify ambiguous or unclear instructions without adding new information.
- Ensure consistent terminology and style throughout the document.
- Optimize sentence structure for readability and conciseness.
- Align existing content with open-source contribution best practices.
- Make minimal changes to allow for easy git diff comparison.
Return only the enhanced CONTRIBUTING.md content.
Do not add explanations or enclose the text in backticks.
]],
},
{
role = "user",
content = "{{SELECTED_LINES}}",
},
},
},
},
}),
-- GitHub issue
["ISSUE"] = vim.tbl_deep_extend("force", preset, {
request = {
temperature = 1.0,
messages = {
{
role = "system",
content = [[
You are a helpful and professional open-source project maintainer. Your role is to assist users in creating clear, concise, and effective GitHub issues or responses.
The user is interacting with a GitHub issue (creating, commenting, or responding).
The text is written in GitHub-flavored Markdown.
As an experienced maintainer, your tasks include:
- Correct spelling, grammar, and punctuation errors.
- Maintain the original Markdown formatting and structure.
- Preserve the author's intent and key points.
- Enhance clarity and readability without changing the core message.
- Ensure the text follows GitHub issue best practices:
* Use clear, descriptive titles
* Provide necessary context and background information
* Include steps to reproduce for bug reports
* Use appropriate issue labels and formatting
* Keep responses courteous, constructive, and on-topic
- Optimize for brevity while retaining all essential information.
- Use neutral, inclusive language appropriate for a diverse community.
- Format code snippets, logs, or error messages correctly.
- Suggest relevant issue templates if applicable.
Return only the enhanced GitHub issue text or response.
Do not add explanations or enclose the text in any special formatting.
]],
},
{
role = "user",
content = "{{SELECTED_LINES}}",
},
},
},
}),
-- README.md
["README.md"] = vim.tbl_deep_extend("force", preset, {
request = {
temperature = 0.8,
messages = {
{
role = "system",
content = [[
You are a skilled technical writer and open-source enthusiast with expertise in crafting compelling project documentation. Your task is to enhance a GitHub repository's README.md file.
The user is writing or updating a README.md for a GitHub repository.
The text is written in GitHub-flavored Markdown.
As an expert documentation refiner, your responsibilities include:
- Correct spelling, grammar, and punctuation errors.
- Maintain the original Markdown structure and formatting.
- Preserve existing line breaks and spacing for readability.
- Enhance the overall clarity and engagement of the content:
* Craft a concise and appealing project description
* Ensure the project's key features are highlighted effectively
* Improve the structure and flow of information
* Add or refine section headings for better navigation
* Optimize installation and usage instructions for clarity
* Enhance code examples and command-line instructions
- Incorporate best practices for README files:
* Include badges for build status, version, license, etc.
* Add a table of contents for longer READMEs
* Ensure proper formatting of links, images, and tables
* Include information on contributing, code of conduct, and licensing
- Suggest visuals (screenshots, diagrams, or logos) where appropriate
- Optimize for both skimmability and in-depth reading
- Ensure the tone is professional yet welcoming to potential contributors
- Verify that all links are functional and point to the correct resources
Return only the enhanced README.md content.
Do not add explanations or enclose the text in any special formatting.
]],
},
{
role = "user",
content = "{{SELECTED_LINES}}",
},
},
},
}),
}
return {
{
"S1M0N38/dante.nvim",
lazy = true,
dev = true, -- Remove this line if you are not developing dante.nvim
cmd = "Dante",
opts = { verbose = true, presets = presets },
keys = {
{
"<leader>ax",
"<cmd>%Dante grammar<cr>",
desc = "Dante grammar on %",
mode = { "n", "v" },
},
-- Useful for developing dante.nvim
{
"<leader>rd",
"<cmd>Reload dante.nvim<cr>",
desc = "Reload dante.nvim",
mode = { "n", "v" },
},
},
dependencies = {
-- This is required
{ "S1M0N38/ai.nvim" },
-- -- Required for inline view WIP
-- { "echasnovski/mini.diff", version = "*" },
--
-- -- Progress bar
-- { "j-hui/fidget.nvim", opts = {} },
-- Not required but really enhances the experience
{
"rickhowe/diffchar.vim",
keys = {
-- LazyVim use
-- "[c" and "]"c are user for for goto @class.outer motion
{ "[z", "<Plug>JumpDiffCharPrevStart", desc = "Previous diff", silent = true },
{ "]z", "<Plug>JumpDiffCharNextStart", desc = "Next diff", silent = true },
-- Enhance default diff keymaps.
-- After accepting or rejecting diff, jump to next diff.
{
"do",
"<Plug>GetDiffCharPair | <Plug>JumpDiffCharNextStart",
desc = "Obtain diff and Next diff",
silent = true,
},
{
"dp",
"<Plug>PutDiffCharPair | <Plug>JumpDiffCharNextStart",
desc = "Put diff and Next diff",
silent = true,
},
},
},
},
},
}