aboutsummaryrefslogtreecommitdiff
path: root/.config/nvim/lsp/copilot.lua
diff options
context:
space:
mode:
Diffstat (limited to '.config/nvim/lsp/copilot.lua')
-rw-r--r--.config/nvim/lsp/copilot.lua135
1 files changed, 0 insertions, 135 deletions
diff --git a/.config/nvim/lsp/copilot.lua b/.config/nvim/lsp/copilot.lua
deleted file mode 100644
index 66c2dd5..0000000
--- a/.config/nvim/lsp/copilot.lua
+++ /dev/null
@@ -1,135 +0,0 @@
----@brief
----
---- https://www.npmjs.com/package/@github/copilot-language-server
----
---- The Copilot Language Server enables any editor or IDE
---- to integrate with GitHub Copilot via
---- [the language server protocol](https://microsoft.github.io/language-server-protocol/).
----
---- **[GitHub Copilot](https://github.com/features/copilot)**
---- is an AI pair programmer tool that helps you write code faster and smarter.
----
---- **Sign up for [GitHub Copilot Free](https://github.com/settings/copilot)!**
----
---- Please see [terms of use for GitHub Copilot](https://docs.github.com/en/site-policy/github-terms/github-terms-for-additional-products-and-features#github-copilot)
----
---- You need to enable `:help lsp-inline-completion` to receive suggestions. For example, you can enable it in the LspAttach event:
----
---- ```lua
---- vim.api.nvim_create_autocmd('LspAttach', {
---- callback = function(args)
---- local bufnr = args.buf
---- local client = assert(vim.lsp.get_client_by_id(args.data.client_id))
----
---- if client:supports_method(vim.lsp.protocol.Methods.textDocument_inlineCompletion, bufnr) then
---- vim.lsp.inline_completion.enable(true, { bufnr = bufnr })
----
---- vim.keymap.set(
---- 'i',
---- '<C-F>',
---- vim.lsp.inline_completion.get,
---- { desc = 'LSP: accept inline completion', buffer = bufnr }
---- )
---- vim.keymap.set(
---- 'i',
---- '<C-G>',
---- vim.lsp.inline_completion.select,
---- { desc = 'LSP: switch inline completion', buffer = bufnr }
---- )
---- end
---- end
---- })
---- ```
-
----@param bufnr integer,
----@param client vim.lsp.Client
-local function sign_in(bufnr, client)
- client:request(
- ---@diagnostic disable-next-line: param-type-mismatch
- 'signIn',
- vim.empty_dict(),
- function(err, result)
- if err then
- vim.notify(err.message, vim.log.levels.ERROR)
- return
- end
- if result.command then
- local code = result.userCode
- local command = result.command
- vim.fn.setreg('+', code)
- vim.fn.setreg('*', code)
- local continue = vim.fn.confirm(
- 'Copied your one-time code to clipboard.\n' .. 'Open the browser to complete the sign-in process?',
- '&Yes\n&No'
- )
- if continue == 1 then
- client:exec_cmd(command, { bufnr = bufnr }, function(cmd_err, cmd_result)
- if cmd_err then
- vim.notify(err.message, vim.log.levels.ERROR)
- return
- end
- if cmd_result.status == 'OK' then
- vim.notify('Signed in as ' .. cmd_result.user .. '.')
- end
- end)
- end
- end
-
- if result.status == 'PromptUserDeviceFlow' then
- vim.notify('Enter your one-time code ' .. result.userCode .. ' in ' .. result.verificationUri)
- elseif result.status == 'AlreadySignedIn' then
- vim.notify('Already signed in as ' .. result.user .. '.')
- end
- end
- )
-end
-
----@param client vim.lsp.Client
-local function sign_out(_, client)
- client:request(
- ---@diagnostic disable-next-line: param-type-mismatch
- 'signOut',
- vim.empty_dict(),
- function(err, result)
- if err then
- vim.notify(err.message, vim.log.levels.ERROR)
- return
- end
- if result.status == 'NotSignedIn' then
- vim.notify('Not signed in.')
- end
- end
- )
-end
-
----@type vim.lsp.Config
-return {
- cmd = {
- 'copilot-language-server',
- '--stdio',
- },
- root_markers = { '.git' },
- init_options = {
- editorInfo = {
- name = 'Neovim',
- version = tostring(vim.version()),
- },
- editorPluginInfo = {
- name = 'Neovim',
- version = tostring(vim.version()),
- },
- },
- settings = {
- telemetry = {
- telemetryLevel = 'all',
- },
- },
- on_attach = function(client, bufnr)
- vim.api.nvim_buf_create_user_command(bufnr, 'LspCopilotSignIn', function()
- sign_in(bufnr, client)
- end, { desc = 'Sign in Copilot with GitHub' })
- vim.api.nvim_buf_create_user_command(bufnr, 'LspCopilotSignOut', function()
- sign_out(bufnr, client)
- end, { desc = 'Sign out Copilot with GitHub' })
- end,
-}