I've been a heavy Copilot user for over a year, mostly in Go and Python. Like many of you, I kept hitting a weird wall: the inline suggestions felt... off. They'd conflict with my LSP's IntelliSense, causing flickering or just plain wrong completions. I was about to write it off as a gimmick for frontend work.
Last week, I decided on a drastic experiment. I disabled **all** other IntelliSense providers in VS Code, leaving Copilot as the sole suggestion engine. My hypothesis was that the noise was ruining the signal.
Here's the config I used in `settings.json`:
```json
{
"editor.suggest.showClasses": false,
"editor.suggest.showColors": false,
"editor.suggest.showConstants": false,
"editor.suggest.showConstructors": false,
"editor.suggest.showDeprecated": false,
"editor.suggest.showEnumMembers": false,
"editor.suggest.showEnums": false,
"editor.suggest.showEvents": false,
"editor.suggest.showFields": false,
"editor.suggest.showFiles": false,
"editor.suggest.showFolders": false,
"editor.suggest.showFunctions": false,
"editor.suggest.showIcons": false,
"editor.suggest.showInterfaces": false,
"editor.suggest.showIssues": false,
"editor.suggest.showKeywords": false,
"editor.suggest.showMethods": false,
"editor.suggest.showModules": false,
"editor.suggest.showOperators": false,
"editor.suggest.showProperties": false,
"editor.suggest.showReferences": false,
"editor.suggest.showSnippets": false,
"editor.suggest.showStructs": false,
"editor.suggest.showTypeParameters": false,
"editor.suggest.showUnits": false,
"editor.suggest.showUsers": false,
"editor.suggest.showValues": false,
"editor.suggest.showVariables": false,
"editor.wordBasedSuggestions": "off"
}
```
The results were mixed, but revealing:
* **The good:** No more flickering. Completions were consistent and often surprisingly context-aware, especially for boilerplate (think `docker-compose` blocks, middleware patterns, or repetitive API route definitions).
* **The bad:** Copilot alone **was not enough** for serious backend work. I missed:
* Accurate function signatures from my LSP.
* Go-to-definition and real-time type checking integration in the suggestions.
* Project-specific variable and function names. Copilot guesses, but the LSP *knows*.
My takeaway? Copilot is an amazing **autocomplete on steroids**, but it's a terrible replacement for a proper language server. It's fantastic for:
- Generating common code patterns (SQL queries, error handling blocks).
- Filling in framework-specific boilerplate.
- Suggesting whole lines based on comments.
But for navigating a large, typed codebase? You still need your Go `gopls` or Python `pyright` running the show.
Has anyone else tried a similar setup? I'm curious if tweaking the `editor.quickSuggestions` or `editor.suggestOnTriggerCharacters` settings could strike a better balance. Right now, I've re-enabled my LSP but heavily throttled its suggestion triggers to give Copilot the first shot.
--builder
Latency is the enemy, but consistency is the goal.
Interesting idea! I just started using Copilot with our internal Go services, and I've noticed the flickering too. I always assumed it was a bug in the extension.
When you say "the noise was ruining the signal," do you mean Copilot was trying to correct or compete with LSP suggestions mid-type? Did you lose any critical context, like function signatures, that you actually miss now?
I had the same flickering problem when I first tried Copilot with Python! It felt like two people were trying to finish my sentence at once.
Your experiment makes sense, but don't you lose the exact type hints from the LSP? I feel like I'd miss that for catching dumb mistakes. Or is Copilot's context good enough to always get function signatures right?