GitHub
New Features
- Send workspace folders (
rootUri and workspaceFolders) during LSP initialization and dynamically notify the server when new project roots are encountered. This improves suggestion quality for multi-root workspaces.
- Add
copilot-completion-model option and copilot-select-completion-model command for choosing the AI model used for completions. (#382)
- Add
copilot-enable-parentheses-balancer option to control whether Lisp completions are post-processed for balanced delimiters (enabled by default).
- Add
copilot-accept-completion-by-sentence command.
- Add
copilot-accept-completion-up-to-char and copilot-accept-completion-to-char commands, similar to zap-up-to-char and zap-to-char.
- Add
copilot-clear-overlay-on-commands user option to clear the overlay before specific commands (e.g. beginning-of-visual-line).
- Handle
window/showMessageRequest server requests via completing-read and window/showDocument to open URIs in the browser or Emacs.
- Handle
didChangeStatus server notifications to show Copilot status (Normal, Warning, Error, Inactive) in the mode-line.
- Handle
$/progress server notifications to display progress for long-running operations (e.g. indexing) in the mode-line.
- Send
$/cancelRequest when a new completion is requested or the overlay is dismissed, so the server stops working on stale in-flight requests.
- Perform a clean LSP shutdown sequence (
shutdown request + exit notification) instead of just killing the server process.
- Add
copilot-on-request and copilot-on-notification for user-defined handlers on incoming server messages.
- Add buttercup test infrastructure with comprehensive tests for core functionality.
Changes
copilot--lsp-settings-changed now sends workspace/didChangeConfiguration instead of restarting the server.
- Remove unnecessary
:dummy placeholder parameters from JSON-RPC requests.
- Migrate from legacy
getCompletions API to standard textDocument/inlineCompletion for compatibility with newer Copilot language server versions. Adds partial acceptance telemetry via textDocument/didPartiallyAcceptCompletion.
- Rename
copilot-version to copilot-lsp-server-version (copilot-version is now an obsolete alias).
- Replace the
f library dependency with compat.
- Hardcode
universal-argument, digit-argument, negative-argument, and universal-argument-more as commands that should not clear the overlay.
- Honor
copilot-clear-overlay-ignore-commands for remapped commands (e.g. universal-argument-more).
Bug Fixes
- Rewrite
copilot-balancer to use parse-partial-sexp so that parens inside comments and strings are handled correctly. (#440)
- Fix balancer dropping closing delimiters inside comments/strings when the server returns a replacement range covering them. (#449)
- Fix
copilot-complete not working without copilot-mode until copilot-diagnose is run, by sending textDocument/didOpen automatically. (#450)
- Fix partial accept-by-word losing the replacement range tail, which caused suffix text to be deleted prematurely. (#448)
- Send an empty JSON object instead of omitting
params in JSON-RPC requests, fixing signInInitiate and other calls on newer language server versions. (#445)
- Fix
copilot--lsp-pos to use UTF-16 code unit offsets instead of Emacs character counts. Characters above U+FFFF (e.g. emoji) are now correctly reported as 2 UTF-16 code units.
- Fix
textDocument/didFocus and textDocument/didOpen notification names to use plain symbols instead of keyword symbols (which were serialized with a leading colon).
- Fix
PanelSolution handler to use (goto-char (point-min)) instead of (call-interactively #'mark-whole-buffer), which was activating the mark and interfering with user state.
- Fix
copilot--get-relative-path to use fboundp instead of boundp for checking vc-root-dir.
- Use
tab-width instead of standard-indent as the fallback indentation offset for modes not in copilot-indentation-alist. (#312)
- Set priority on the copilot completion overlay to avoid conflicts with Emacs 30's
completion-preview-mode. (#377)
- Filter out minibuffers and internal buffers in
global-copilot-mode. (#337)
- Don't warn about
copilot-max-char in temporary and non-file-visiting buffers. (#313)
- Handle
events-buffer-scrollback-size deprecation in newer jsonrpc versions gracefully. (#329)
- Remove the
company-mode dependency that could cause void-function company--active-p errors. (#243)
- Don't start the Copilot server in
copilot--on-doc-close when the connection is not alive. (#265)
- Add linting CI job and fix checkdoc and indentation lint warnings.
Read the original on github.com ↗