Repository: spyder-ide/spyder

Issue:
Slow response when editing files (after some time)
<!--- **PLEASE READ:** When submitting here, please ensure you've completed the following checklist and checked the boxes to confirm. Issue reports without it may be closed. Thanks! --->

### Issue Report Checklist

* [x] Searched the [issues page](https://github.com/spyder-ide/spyder/issues?q=is%3Aissue) for similar reports
* [x] Read the relevant sections of the [Spyder Troubleshooting Guide](https://github.com/spyder-ide/spyder/wiki/Troubleshooting-Guide-and-FAQ) and followed its advice
* [x] Reproduced the issue after updating with ``conda update spyder`` (or ``pip``, if not using Anaconda)
* [ ] Could not reproduce inside ``jupyter qtconsole`` (if console-related)
* [x] Tried basic troubleshooting (if a bug/error)
    * [x] Restarted Spyder
    * [x] Reset preferences with ``spyder --reset``
    * [ ] Reinstalled the latest version of [Anaconda](https://www.anaconda.com/download/)
    * [x] Tried the other applicable steps from the Troubleshooting Guide
* [x] Completed the **Problem Description**, **Steps to Reproduce** and **Version** sections below


## Problem Description

When I start `spyder`, editing works perfect: Letters typed appear immediately, completions are shown almost immediately, etc. After some time the editing becomes cumbersome: Letters don't appear immediately, only after some time (and then you could see them appear one by one), completions need forever to be shown, the GUI reacts very slowly …

This is reproducible if you wait long enough.

There are some other issues referring to a slow response of the editor, but IMHO all of them describe a different behaviour.

### What steps reproduce the problem?

1. Open spyder.
2. Start editing a file.
3. After some time the experience becomes laggy.

### Paste Log Below (if applicable)
<!--- Copy from error dialog or View > Panes > Internal Console --->

I started spyder with `--debug-info verbose` and tried to catch when this behaviour started. Here is one snipplet of the log: Look at time step from 16:58:28,465 to 16:59:15,201 where I had to wait nearly 1 second for a reaction of spyder

```log
2021-05-15 16:58:27,729 [DEBUG] [spyder.plugins.editor.widgets.editorstack_helpers] -> ===>starting: <spyder.plugins.editor.widgets.editorstack_helpers.AnalysisThread object at 0x7f4114698b80>
2021-05-15 16:58:27,958 [DEBUG] [spyder.plugins.editor.plugin] -> Perform request textDocument/didChange for: /home/sph/Software/git/menumodel.git/mopidymenu.py
2021-05-15 16:58:27,958 [DEBUG] [spyder.plugins.completion.providers.languageserver.client] -> Perform request textDocument/didChange with id 2187
2021-05-15 16:58:27,958 [DEBUG] [spyder.plugins.completion.providers.fallback.actor] -> Perform request textDocument/didChange with id 2308
2021-05-15 16:58:27,959 [DEBUG] [spyder.plugins.editor.plugin] -> Perform request textDocument/completion for: /home/sph/Software/git/menumodel.git/mopidymenu.py
2021-05-15 16:58:27,959 [DEBUG] [spyder.plugins.completion.providers.snippets.actor] -> Perform request textDocument/didChange with id 2308
2021-05-15 16:58:27,959 [DEBUG] [spyder.plugins.completion.providers.languageserver.client] -> Perform request textDocument/completion with id 2188
2021-05-15 16:58:27,959 [DEBUG] [spyder.plugins.completion.providers.snippets.actor] -> Perform request textDocument/completion with id 2309
2021-05-15 16:58:27,961 [DEBUG] [spyder.plugins.completion.providers.fallback.actor] -> Perform request textDocument/completion with id 2309
2021-05-15 16:58:28,027 [DEBUG] [spyder.plugins.editor.plugin] -> Perform request textDocument/didChange for: /home/sph/Software/git/menumodel.git/mopidymenu.py
2021-05-15 16:58:28,028 [DEBUG] [spyder.plugins.completion.providers.fallback.actor] -> Perform request textDocument/didChange with id 2310
2021-05-15 16:58:28,028 [DEBUG] [spyder.plugins.completion.providers.languageserver.client] -> Perform request textDocument/didChange with id 2189
2021-05-15 16:58:28,029 [DEBUG] [spyder.plugins.completion.providers.snippets.actor] -> Perform request textDocument/didChange with id 2310
2021-05-15 16:58:28,029 [DEBUG] [spyder.plugins.editor.plugin] -> Perform request textDocument/completion for: /home/sph/Software/git/menumodel.git/mopidymenu.py
2021-05-15 16:58:28,029 [DEBUG] [spyder.plugins.completion.providers.fallback.actor] -> Perform request textDocument/completion with id 2311
2021-05-15 16:58:28,038 [DEBUG] [spyder.plugins.completion.providers.languageserver.client] -> Perform request textDocument/completion with id 2190
2021-05-15 16:58:28,043 [DEBUG] [spyder.plugins.completion.providers.snippets.actor] -> Perform request textDocument/completion with id 2311
2021-05-15 16:58:28,115 [DEBUG] [spyder.plugins.editor.plugin] -> Perform request textDocument/didChange for: /home/sph/Software/git/menumodel.git/mopidymenu.py
2021-05-15 16:58:28,116 [DEBUG] [spyder.plugins.completion.providers.languageserver.client] -> Perform request textDocument/didChange with id 2191
2021-05-15 16:58:28,116 [DEBUG] [spyder.plugins.completion.providers.fallback.actor] -> Perform request textDocument/didChange with id 2312
2021-05-15 16:58:28,116 [DEBUG] [spyder.plugins.completion.providers.snippets.actor] -> Perform request textDocument/didChange with id 2312
2021-05-15 16:58:28,194 [DEBUG] [spyder.plugins.editor.plugin] -> Perform request textDocument/didChange for: /home/sph/Software/git/menumodel.git/mopidymenu.py
2021-05-15 16:58:28,194 [DEBUG] [spyder.plugins.completion.providers.fallback.actor] -> Perform request textDocument/didChange with id 2313
2021-05-15 16:58:28,194 [DEBUG] [spyder.plugins.completion.providers.languageserver.client] -> Perform request textDocument/didChange with id 2192
2021-05-15 16:58:28,195 [DEBUG] [spyder.plugins.completion.providers.snippets.actor] -> Perform request textDocument/didChange with id 2313
2021-05-15 16:58:28,275 [DEBUG] [spyder.plugins.editor.plugin] -> Perform request textDocument/didChange for: /home/sph/Software/git/menumodel.git/mopidymenu.py
2021-05-15 16:58:28,275 [DEBUG] [spyder.plugins.completion.providers.languageserver.client] -> Perform request textDocument/didChange with id 2193
2021-05-15 16:58:28,276 [DEBUG] [spyder.plugins.completion.providers.fallback.actor] -> Perform request textDocument/didChange with id 2314
2021-05-15 16:58:28,277 [DEBUG] [spyder.plugins.completion.providers.snippets.actor] -> Perform request textDocument/didChange with id 2314
2021-05-15 16:58:28,354 [DEBUG] [spyder.plugins.editor.plugin] -> Perform request textDocument/didChange for: /home/sph/Software/git/menumodel.git/mopidymenu.py
2021-05-15 16:58:28,354 [DEBUG] [spyder.plugins.completion.providers.languageserver.client] -> Perform request textDocument/didChange with id 2194
2021-05-15 16:58:28,355 [DEBUG] [spyder.plugins.completion.providers.fallback.actor] -> Perform request textDocument/didChange with id 2315
2021-05-15 16:58:28,356 [DEBUG] [spyder.plugins.completion.providers.snippets.actor] -> Perform request textDocument/didChange with id 2315
2021-05-15 16:58:28,440 [DEBUG] [spyder.plugins.editor.plugin] -> Perform request textDocument/didChange for: /home/sph/Software/git/menumodel.git/mopidymenu.py
2021-05-15 16:58:28,440 [DEBUG] [spyder.plugins.completion.providers.languageserver.client] -> Perform request textDocument/didChange with id 2195
2021-05-15 16:58:28,440 [DEBUG] [spyder.plugins.completion.providers.fallback.actor] -> Perform request textDocument/didChange with id 2316
2021-05-15 16:58:28,445 [DEBUG] [spyder.plugins.completion.providers.snippets.actor] -> Perform request textDocument/didChange with id 2316
2021-05-15 16:58:28,447 [DEBUG] [spyder.plugins.editor.plugin] -> Perform request textDocument/didChange for: /home/sph/Software/git/menumodel.git/mopidymenu.py
2021-05-15 16:58:28,448 [DEBUG] [spyder.plugins.completion.providers.languageserver.client] -> Perform request textDocument/didChange with id 2196
2021-05-15 16:58:28,448 [DEBUG] [spyder.plugins.completion.providers.fallback.actor] -> Perform request textDocument/didChange with id 2317
2021-05-15 16:58:28,450 [DEBUG] [spyder.plugins.editor.plugin] -> Perform request textDocument/signatureHelp for: /home/sph/Software/git/menumodel.git/mopidymenu.py
2021-05-15 16:58:28,450 [DEBUG] [spyder.plugins.completion.providers.snippets.actor] -> Perform request textDocument/didChange with id 2317
2021-05-15 16:58:28,451 [DEBUG] [spyder.plugins.completion.providers.languageserver.client] -> Perform request textDocument/signatureHelp with id 2197
2021-05-15 16:58:28,452 [DEBUG] [spyder.plugins.completion.providers.fallback.actor] -> Perform request textDocument/signatureHelp with id 2318
2021-05-15 16:58:28,453 [DEBUG] [spyder.plugins.editor.plugin] -> Perform request textDocument/didChange for: /home/sph/Software/git/menumodel.git/mopidymenu.py
2021-05-15 16:58:28,454 [DEBUG] [spyder.plugins.completion.providers.languageserver.client] -> Perform request textDocument/didChange with id 2198
2021-05-15 16:58:28,454 [DEBUG] [spyder.plugins.completion.providers.snippets.actor] -> Perform request textDocument/signatureHelp with id 2318
2021-05-15 16:58:28,454 [DEBUG] [spyder.plugins.completion.providers.fallback.actor] -> Perform request textDocument/didChange with id 2319
2021-05-15 16:58:28,459 [DEBUG] [spyder.plugins.completion.providers.snippets.actor] -> Perform request textDocument/didChange with id 2319
2021-05-15 16:58:28,461 [DEBUG] [spyder.plugins.editor.plugin] -> Perform request textDocument/didChange for: /home/sph/Software/git/menumodel.git/mopidymenu.py
2021-05-15 16:58:28,462 [DEBUG] [spyder.plugins.completion.providers.languageserver.client] -> Perform request textDocument/didChange with id 2199
2021-05-15 16:58:28,462 [DEBUG] [spyder.plugins.completion.providers.fallback.actor] -> Perform request textDocument/didChange with id 2320
2021-05-15 16:58:28,465 [DEBUG] [spyder.plugins.completion.providers.snippets.actor] -> Perform request textDocument/didChange with id 2320
2021-05-15 16:59:15,201 [DEBUG] [spyder.plugins.editor.widgets.editorstack_helpers] -> Updating queue:
2021-05-15 16:59:15,201 [DEBUG] [spyder.plugins.editor.widgets.editorstack_helpers] ->     started: 0
2021-05-15 16:59:15,201 [DEBUG] [spyder.plugins.editor.widgets.editorstack_helpers] ->     pending: 0
2021-05-15 16:59:15,202 [DEBUG] [spyder.plugins.editor.widgets.editorstack_helpers] -> Updating queue:
2021-05-15 16:59:15,202 [DEBUG] [spyder.plugins.editor.widgets.editorstack_helpers] ->     started: 0
2021-05-15 16:59:15,203 [DEBUG] [spyder.plugins.editor.widgets.editorstack_helpers] ->     pending: 0
2021-05-15 16:59:15,203 [DEBUG] [spyder.plugins.completion.plugin] -> Completion plugin: Request 2309 Got response from snippets
2021-05-15 16:59:15,203 [DEBUG] [spyder.plugins.completion.plugin] -> Completion plugin: Request 2309 Got response from fallback
2021-05-15 16:59:15,203 [DEBUG] [spyder.plugins.completion.plugin] -> Completion plugin: Request 2311 Got response from fallback
2021-05-15 16:59:15,203 [DEBUG] [spyder.plugins.completion.plugin] -> Completion plugin: Request 2311 Got response from snippets
2021-05-15 16:59:15,235 [DEBUG] [spyder.plugins.completion.providers.languageserver.client] -> python response: textDocument/publishDiagnostics
2021-05-15 16:59:15,507 [DEBUG] [spyder.plugins.completion.plugin] -> Completion plugin: Request 2309 Got response from lsp
2021-05-15 16:59:15,509 [DEBUG] [spyder.plugins.completion.plugin] -> Completion plugin: Request 2309 removed
2021-05-15 16:59:15,509 [DEBUG] [spyder.plugins.completion.plugin] -> Completion plugin: Request 2311 Got response from lsp
2021-05-15 16:59:15,510 [DEBUG] [spyder.plugins.completion.plugin] -> Completion plugin: Request 2311 removed
2021-05-15 16:59:15,510 [DEBUG] [spyder.plugins.completion.plugin] -> Gather responses for textDocument/completion
2021-05-15 16:59:15,510 [DEBUG] [spyder.plugins.completion.plugin] -> Responses statistics: {'fallback': 0, 'snippets': 0, 'lsp': 25}
2021-05-15 16:59:15,510 [DEBUG] [spyder.plugins.completion.plugin] -> Completion plugin: Request 2318 Got response from lsp
2021-05-15 16:59:15,510 [DEBUG] [spyder.plugins.completion.plugin] -> Completion plugin: Request 2318 removed
2021-05-15 16:59:15,510 [DEBUG] [spyder.plugins.completion.plugin] -> Gather responses for textDocument/signatureHelp
2021-05-15 16:59:15,522 [DEBUG] [spyder.plugins.completion.providers.languageserver.client] -> python response: textDocument/publishDiagnostics
2021-05-15 16:59:15,526 [DEBUG] [spyder.plugins.editor.plugin] -> Perform request textDocument/didChange for: /home/sph/Software/git/menumodel.git/mopidymenu.py
2021-05-15 16:59:15,526 [DEBUG] [spyder.plugins.completion.providers.languageserver.client] -> Perform request textDocument/didChange with id 2200
2021-05-15 16:59:15,526 [DEBUG] [spyder.plugins.completion.providers.fallback.actor] -> Perform request textDocument/didChange with id 2321
2021-05-15 16:59:15,527 [DEBUG] [spyder.plugins.completion.providers.snippets.actor] -> Perform request textDocument/didChange with id 2321
2021-05-15 16:59:15,528 [DEBUG] [spyder.plugins.editor.widgets.editorstack_helpers] -> Added thread <spyder.plugins.editor.widgets.editorstack_helpers.AnalysisThread object at 0x7f4115e7e1f0> to queue
2021-05-15 16:59:15,528 [DEBUG] [spyder.plugins.editor.widgets.editorstack_helpers] -> Added thread <spyder.plugins.editor.widgets.editorstack_helpers.AnalysisThread object at 0x7f4115e7e160> to queue
2021-05-15 16:59:15,532 [DEBUG] [spyder.plugins.editor.plugin] -> Perform request textDocument/cursorEvent for: /home/sph/Software/git/menumodel.git/mopidymenu.py
2021-05-15 16:59:15,532 [DEBUG] [spyder.plugins.completion.providers.fallback.actor] -> Perform request textDocument/cursorEvent with id 2322
2021-05-15 16:59:15,533 [DEBUG] [spyder.plugins.completion.providers.snippets.actor] -> Perform request textDocument/cursorEvent with id 2322
2021-05-15 16:59:15,534 [DEBUG] [spyder.plugins.editor.plugin] -> Perform request textDocument/didChange for: /home/sph/Software/git/menumodel.git/mopidymenu.py
2021-05-15 16:59:15,534 [DEBUG] [spyder.plugins.completion.providers.languageserver.client] -> Perform request textDocument/didChange with id 2201
2021-05-15 16:59:15,534 [DEBUG] [spyder.plugins.completion.providers.fallback.actor] -> Perform request textDocument/didChange with id 2323
2021-05-15 16:59:15,535 [DEBUG] [spyder.plugins.completion.providers.snippets.actor] -> Perform request textDocument/didChange with id 2323
2021-05-15 16:59:15,535 [DEBUG] [spyder.plugins.editor.plugin] -> Perform request textDocument/didChange for: /home/sph/Software/git/menumodel.git/mopidymenu.py
2021-05-15 16:59:15,537 [DEBUG] [spyder.plugins.completion.providers.languageserver.client] -> Perform request textDocument/didChange with id 2202
2021-05-15 16:59:15,540 [DEBUG] [spyder.plugins.completion.providers.fallback.actor] -> Perform request textDocument/didChange with id 2324
2021-05-15 16:59:15,540 [DEBUG] [spyder.plugins.completion.providers.snippets.actor] -> Perform request textDocument/didChange with id 2324
2021-05-15 16:59:15,719 [DEBUG] [spyder.plugins.editor.plugin] -> Perform request textDocument/didChange for: /home/sph/Software/git/menumodel.git/mopidymenu.py
2021-05-15 16:59:15,720 [DEBUG] [spyder.plugins.completion.providers.languageserver.client] -> Perform request textDocument/didChange with id 2203
2021-05-15 16:59:15,721 [DEBUG] [spyder.plugins.completion.providers.fallback.actor] -> Perform request textDocument/didChange with id 2325
2021-05-15 16:59:15,722 [DEBUG] [spyder.plugins.completion.providers.snippets.actor] -> Perform request textDocument/didChange with id 2325
2021-05-15 16:59:15,826 [DEBUG] [spyder.plugins.editor.plugin] -> Perform request textDocument/didChange for: /home/sph/Software/git/menumodel.git/mopidymenu.py
2021-05-15 16:59:15,827 [DEBUG] [spyder.plugins.completion.providers.languageserver.client] -> Perform request textDocument/didChange with id 2204
2021-05-15 16:59:15,828 [DEBUG] [spyder.plugins.completion.providers.fallback.actor] -> Perform request textDocument/didChange with id 2326
2021-05-15 16:59:15,829 [DEBUG] [spyder.plugins.completion.providers.snippets.actor] -> Perform request textDocument/didChange with id 2326
2021-05-15 16:59:15,930 [DEBUG] [spyder.plugins.editor.plugin] -> Perform request textDocument/didChange for: /home/sph/Software/git/menumodel.git/mopidymenu.py
2021-05-15 16:59:15,930 [DEBUG] [spyder.plugins.completion.providers.languageserver.client] -> Perform request textDocument/didChange with id 2205
2021-05-15 16:59:15,931 [DEBUG] [spyder.plugins.completion.providers.fallback.actor] -> Perform request textDocument/didChange with id 2327
2021-05-15 16:59:15,932 [DEBUG] [spyder.plugins.completion.providers.snippets.actor] -> Perform request textDocument/didChange with id 2327
2021-05-15 16:59:16,031 [DEBUG] [spyder.plugins.editor.plugin] -> Perform request textDocument/didChange for: /home/sph/Software/git/menumodel.git/mopidymenu.py
2021-05-15 16:59:16,032 [DEBUG] [spyder.plugins.completion.providers.languageserver.client] -> Perform request textDocument/didChange with id 2206
2021-05-15 16:59:16,033 [DEBUG] [spyder.plugins.completion.providers.fallback.actor] -> Perform request textDocument/didChange with id 2328
2021-05-15 16:59:16,034 [DEBUG] [spyder.plugins.completion.providers.snippets.actor] -> Perform request textDocument/didChange with id 2328
2021-05-15 16:59:16,137 [DEBUG] [spyder.plugins.editor.plugin] -> Perform request textDocument/didChange for: /home/sph/Software/git/menumodel.git/mopidymenu.py
2021-05-15 16:59:16,137 [DEBUG] [spyder.plugins.completion.providers.languageserver.client] -> Perform request textDocument/didChange with id 2207
2021-05-15 16:59:16,138 [DEBUG] [spyder.plugins.completion.providers.fallback.actor] -> Perform request textDocument/didChange with id 2329
2021-05-15 16:59:16,140 [DEBUG] [spyder.plugins.completion.providers.snippets.actor] -> Perform request textDocument/didChange with id 2329
2021-05-15 16:59:16,228 [DEBUG] [spyder.plugins.editor.plugin] -> Perform request textDocument/didChange for: /home/sph/Software/git/menumodel.git/mopidymenu.py
2021-05-15 16:59:16,229 [DEBUG] [spyder.plugins.completion.providers.languageserver.client] -> Perform request textDocument/didChange with id 2208
2021-05-15 16:59:16,230 [DEBUG] [spyder.plugins.completion.providers.fallback.actor] -> Perform request textDocument/didChange with id 2330
2021-05-15 16:59:16,233 [DEBUG] [spyder.plugins.editor.plugin] -> Perform request textDocument/didChange for: /home/sph/Software/git/menumodel.git/mopidymenu.py
2021-05-15 16:59:16,233 [DEBUG] [spyder.plugins.completion.providers.snippets.actor] -> Perform request textDocument/didChange with id 2330
2021-05-15 16:59:16,234 [DEBUG] [spyder.plugins.completion.providers.languageserver.client] -> Perform request textDocument/didChange with id 2209
2021-05-15 16:59:16,235 [DEBUG] [spyder.plugins.completion.providers.fallback.actor] -> Perform request textDocument/didChange with id 2331
2021-05-15 16:59:16,237 [DEBUG] [spyder.plugins.completion.providers.snippets.actor] -> Perform request textDocument/didChange with id 2331
2021-05-15 16:59:16,237 [DEBUG] [spyder.plugins.editor.plugin] -> Perform request textDocument/signatureHelp for: /home/sph/Software/git/menumodel.git/mopidymenu.py
2021-05-15 16:59:16,238 [DEBUG] [spyder.plugins.completion.providers.languageserver.client] -> Perform request textDocument/signatureHelp with id 2210
2021-05-15 16:59:16,242 [DEBUG] [spyder.plugins.completion.providers.snippets.actor] -> Perform request textDocument/signatureHelp with id 2332
2021-05-15 16:59:16,238 [DEBUG] [spyder.plugins.completion.providers.fallback.actor] -> Perform request textDocument/signatureHelp with id 2332
2021-05-15 16:59:16,331 [DEBUG] [spyder.plugins.editor.plugin] -> Perform request textDocument/didChange for: /home/sph/Software/git/menumodel.git/mopidymenu.py
2021-05-15 16:59:16,331 [DEBUG] [spyder.plugins.completion.providers.languageserver.client] -> Perform request textDocument/didChange with id 2211
2021-05-15 16:59:16,331 [DEBUG] [spyder.plugins.completion.providers.fallback.actor] -> Perform request textDocument/didChange with id 2333
2021-05-15 16:59:16,332 [DEBUG] [spyder.plugins.completion.providers.snippets.actor] -> Perform request textDocument/didChange with id 2333
2021-05-15 16:59:16,445 [DEBUG] [spyder.plugins.editor.plugin] -> Perform request textDocument/didChange for: /home/sph/Software/git/menumodel.git/mopidymenu.py
2021-05-15 16:59:16,446 [DEBUG] [spyder.plugins.completion.providers.languageserver.client] -> Perform request textDocument/didChange with id 2212
2021-05-15 16:59:16,447 [DEBUG] [spyder.plugins.completion.providers.fallback.actor] -> Perform request textDocument/didChange with id 2334
2021-05-15 16:59:16,447 [DEBUG] [spyder.plugins.completion.providers.snippets.actor] -> Perform request textDocument/didChange with id 2334
2021-05-15 16:59:16,559 [DEBUG] [spyder.plugins.editor.plugin] -> Perform request textDocument/didChange for: /home/sph/Software/git/menumodel.git/mopidymenu.py
2021-05-15 16:59:16,560 [DEBUG] [spyder.plugins.completion.providers.languageserver.client] -> Perform request textDocument/didChange with id 2213
2021-05-15 16:59:16,560 [DEBUG] [spyder.plugins.completion.providers.fallback.actor] -> Perform request textDocument/didChange with id 2335
2021-05-15 16:59:16,560 [DEBUG] [spyder.plugins.completion.providers.snippets.actor] -> Perform request textDocument/didChange with id 2335
2021-05-15 16:59:16,658 [DEBUG] [spyder.plugins.editor.plugin] -> Perform request textDocument/didChange for: /home/sph/Software/git/menumodel.git/mopidymenu.py
2021-05-15 16:59:16,659 [DEBUG] [spyder.plugins.completion.providers.languageserver.client] -> Perform request textDocument/didChange with id 2214
2021-05-15 16:59:16,660 [DEBUG] [spyder.plugins.completion.providers.fallback.actor] -> Perform request textDocument/didChange with id 2336
2021-05-15 16:59:16,661 [DEBUG] [spyder.plugins.completion.providers.snippets.actor] -> Perform request textDocument/didChange with id 2336
2021-05-15 16:59:16,747 [DEBUG] [spyder.plugins.editor.plugin] -> Perform request textDocument/didChange for: /home/sph/Software/git/menumodel.git/mopidymenu.py
2021-05-15 16:59:16,748 [DEBUG] [spyder.plugins.completion.providers.languageserver.client] -> Perform request textDocument/didChange with id 2215
2021-05-15 16:59:16,748 [DEBUG] [spyder.plugins.completion.providers.fallback.actor] -> Perform request textDocument/didChange with id 2337
2021-05-15 16:59:16,749 [DEBUG] [spyder.plugins.completion.providers.snippets.actor] -> Perform request textDocument/didChange with id 2337
2021-05-15 16:59:16,830 [DEBUG] [spyder.plugins.editor.plugin] -> Perform request textDocument/didChange for: /home/sph/Software/git/menumodel.git/mopidymenu.py
2021-05-15 16:59:16,831 [DEBUG] [spyder.plugins.completion.providers.languageserver.client] -> Perform request textDocument/didChange with id 2216
2021-05-15 16:59:16,831 [DEBUG] [spyder.plugins.completion.providers.fallback.actor] -> Perform request textDocument/didChange with id 2338
2021-05-15 16:59:16,832 [DEBUG] [spyder.plugins.editor.plugin] -> Perform request textDocument/completion for: /home/sph/Software/git/menumodel.git/mopidymenu.py
2021-05-15 16:59:16,833 [DEBUG] [spyder.plugins.completion.providers.snippets.actor] -> Perform request textDocument/didChange with id 2338
2021-05-15 16:59:16,833 [DEBUG] [spyder.plugins.completion.providers.fallback.actor] -> Perform request textDocument/completion with id 2339
2021-05-15 16:59:16,834 [DEBUG] [spyder.plugins.completion.providers.languageserver.client] -> Perform request textDocument/completion with id 2217
2021-05-15 16:59:16,846 [DEBUG] [spyder.plugins.completion.providers.snippets.actor] -> Perform request textDocument/completion with id 2339
2021-05-15 16:59:16,927 [DEBUG] [spyder.plugins.editor.plugin] -> Perform request textDocument/didChange for: /home/sph/Software/git/menumodel.git/mopidymenu.py
2021-05-15 16:59:16,928 [DEBUG] [spyder.plugins.completion.providers.languageserver.client] -> Perform request textDocument/didChange with id 2218
2021-05-15 16:59:16,928 [DEBUG] [spyder.plugins.completion.providers.fallback.actor] -> Perform request textDocument/didChange with id 2340
2021-05-15 16:59:16,931 [DEBUG] [spyder.plugins.completion.providers.snippets.actor] -> Perform request textDocument/didChange with id 2340
2021-05-15 16:59:17,015 [DEBUG] [spyder.plugins.editor.plugin] -> Perform request textDocument/didChange for: /home/sph/Software/git/menumodel.git/mopidymenu.py
2021-05-15 16:59:17,015 [DEBUG] [spyder.plugins.completion.providers.languageserver.client] -> Perform request textDocument/didChange with id 2219
2021-05-15 16:59:17,015 [DEBUG] [spyder.plugins.completion.providers.fallback.actor] -> Perform request textDocument/didChange with id 2341
2021-05-15 16:59:17,017 [DEBUG] [spyder.plugins.completion.providers.snippets.actor] -> Perform request textDocument/didChange with id 2341
2021-05-15 16:59:17,129 [DEBUG] [spyder.plugins.editor.plugin] -> Perform request textDocument/didChange for: /home/sph/Software/git/menumodel.git/mopidymenu.py
2021-05-15 16:59:17,130 [DEBUG] [spyder.plugins.completion.providers.languageserver.client] -> Perform request textDocument/didChange with id 2220
2021-05-15 16:59:17,130 [DEBUG] [spyder.plugins.completion.providers.fallback.actor] -> Perform request textDocument/didChange with id 2342
2021-05-15 16:59:17,133 [DEBUG] [spyder.plugins.completion.providers.snippets.actor] -> Perform request textDocument/didChange with id 2342
2021-05-15 16:59:17,220 [DEBUG] [spyder.plugins.editor.plugin] -> Perform request textDocument/didChange for: /home/sph/Software/git/menumodel.git/mopidymenu.py
2021-05-15 16:59:17,221 [DEBUG] [spyder.plugins.completion.providers.languageserver.client] -> Perform request textDocument/didChange with id 2221
2021-05-15 16:59:17,221 [DEBUG] [spyder.plugins.completion.providers.fallback.actor] -> Perform request textDocument/didChange with id 2343
2021-05-15 16:59:17,222 [DEBUG] [spyder.plugins.completion.providers.snippets.actor] -> Perform request textDocument/didChange with id 2343
2021-05-15 16:59:17,312 [DEBUG] [spyder.plugins.editor.plugin] -> Perform request textDocument/didChange for: /home/sph/Software/git/menumodel.git/mopidymenu.py
2021-05-15 16:59:17,312 [DEBUG] [spyder.plugins.completion.providers.languageserver.client] -> Perform request textDocument/didChange with id 2222
2021-05-15 16:59:17,312 [DEBUG] [spyder.plugins.completion.providers.fallback.actor] -> Perform request textDocument/didChange with id 2344
2021-05-15 16:59:17,314 [DEBUG] [spyder.plugins.completion.providers.snippets.actor] -> Perform request textDocument/didChange with id 2344
2021-05-15 16:59:17,394 [DEBUG] [spyder.plugins.editor.plugin] -> Perform request textDocument/didChange for: /home/sph/Software/git/menumodel.git/mopidymenu.py
2021-05-15 16:59:17,394 [DEBUG] [spyder.plugins.completion.providers.languageserver.client] -> Perform request textDocument/didChange with id 2223
2021-05-15 16:59:17,394 [DEBUG] [spyder.plugins.completion.providers.fallback.actor] -> Perform request textDocument/didChange with id 2345
2021-05-15 16:59:17,395 [DEBUG] [spyder.plugins.completion.providers.snippets.actor] -> Perform request textDocument/didChange with id 2345
2021-05-15 16:59:17,503 [DEBUG] [spyder.plugins.editor.plugin] -> Perform request textDocument/didChange for: /home/sph/Software/git/menumodel.git/mopidymenu.py
2021-05-15 16:59:17,504 [DEBUG] [spyder.plugins.completion.providers.languageserver.client] -> Perform request textDocument/didChange with id 2224
2021-05-15 16:59:17,504 [DEBUG] [spyder.plugins.completion.providers.fallback.actor] -> Perform request textDocument/didChange with id 2346
2021-05-15 16:59:17,508 [DEBUG] [spyder.plugins.completion.providers.snippets.actor] -> Perform request textDocument/didChange with id 2346
2021-05-15 16:59:17,510 [DEBUG] [spyder.plugins.editor.plugin] -> Perform request textDocument/didChange for: /home/sph/Software/git/menumodel.git/mopidymenu.py
2021-05-15 16:59:17,511 [DEBUG] [spyder.plugins.completion.providers.languageserver.client] -> Perform request textDocument/didChange with id 2225
2021-05-15 16:59:17,511 [DEBUG] [spyder.plugins.completion.providers.fallback.actor] -> Perform request textDocument/didChange with id 2347
2021-05-15 16:59:17,512 [DEBUG] [spyder.plugins.completion.providers.snippets.actor] -> Perform request textDocument/didChange with id 2347
2021-05-15 16:59:17,512 [DEBUG] [spyder.plugins.editor.plugin] -> Perform request textDocument/signatureHelp for: /home/sph/Software/git/menumodel.git/mopidymenu.py
2021-05-15 16:59:17,513 [DEBUG] [spyder.plugins.completion.providers.languageserver.client] -> Perform request textDocument/signatureHelp with id 2226
2021-05-15 16:59:17,513 [DEBUG] [spyder.plugins.completion.providers.snippets.actor] -> Perform request textDocument/signatureHelp with id 2348
2021-05-15 16:59:17,514 [DEBUG] [spyder.plugins.completion.providers.fallback.actor] -> Perform request textDocument/signatureHelp with id 2348
2021-05-15 16:59:17,514 [DEBUG] [spyder.plugins.editor.plugin] -> Perform request textDocument/didChange for: /home/sph/Software/git/menumodel.git/mopidymenu.py
2021-05-15 16:59:17,515 [DEBUG] [spyder.plugins.completion.providers.languageserver.client] -> Perform request textDocument/didChange with id 2227
2021-05-15 16:59:17,515 [DEBUG] [spyder.plugins.completion.providers.fallback.actor] -> Perform request textDocument/didChange with id 2349
2021-05-15 16:59:17,515 [DEBUG] [spyder.plugins.completion.providers.snippets.actor] -> Perform request textDocument/didChange with id 2349
2021-05-15 16:59:17,523 [DEBUG] [spyder.plugins.editor.plugin] -> Perform request textDocument/didChange for: /home/sph/Software/git/menumodel.git/mopidymenu.py
2021-05-15 16:59:17,523 [DEBUG] [spyder.plugins.completion.providers.languageserver.client] -> Perform request textDocument/didChange with id 2228
2021-05-15 16:59:17,523 [DEBUG] [spyder.plugins.completion.providers.fallback.actor] -> Perform request textDocument/didChange with id 2350
2021-05-15 16:59:17,525 [DEBUG] [spyder.plugins.completion.providers.snippets.actor] -> Perform request textDocument/didChange with id 2350
2021-05-15 17:00:07,696 [DEBUG] [spyder.plugins.completion.plugin] -> Completion plugin: Request 2339 Got response from fallback
2021-05-15 17:00:07,696 [DEBUG] [spyder.plugins.completion.plugin] -> Completion plugin: Request 2339 Got response from snippets
2021-05-15 17:00:07,743 [DEBUG] [spyder.plugins.completion.plugin] -> Completion plugin: Request 2332 Got response from lsp
2021-05-15 17:00:07,743 [DEBUG] [spyder.plugins.completion.plugin] -> Completion plugin: Request 2332 removed
2021-05-15 17:00:07,743 [DEBUG] [spyder.plugins.completion.plugin] -> Gather responses for textDocument/signatureHelp
2021-05-15 17:00:07,744 [DEBUG] [spyder.plugins.completion.plugin] -> Completion plugin: Request 2339 Got response from lsp
2021-05-15 17:00:07,745 [DEBUG] [spyder.plugins.completion.plugin] -> Completion plugin: Request 2339 removed
2021-05-15 17:00:07,746 [DEBUG] [spyder.plugins.completion.plugin] -> Gather responses for textDocument/completion
2021-05-15 17:00:07,746 [DEBUG] [spyder.plugins.completion.plugin] -> Responses statistics: {'fallback': 0, 'snippets': 0, 'lsp': 25}
2021-05-15 17:00:07,748 [DEBUG] [spyder.plugins.completion.plugin] -> Completion plugin: Request 2348 Got response from lsp
2021-05-15 17:00:07,748 [DEBUG] [spyder.plugins.completion.plugin] -> Completion plugin: Request 2348 removed
```
If I haven't captured everything you need, please feel free to ask for it!

<details><summary>My configuration</summary>

```ini
[main]
opengl = automatic
single_instance = True
open_files_port = 21128
mac_open_file = False
normal_screen_resolution = False
high_dpi_scaling = True
high_dpi_custom_scale_factor = False
high_dpi_custom_scale_factors = 1.5
vertical_tabs = False
prompt_on_exit = False
panes_locked = True
window/is_maximized = True
window/is_fullscreen = False
use_custom_margin = True
custom_margin = 0
use_custom_cursor_blinking = False
show_internal_errors = True
check_updates_on_startup = True
cursor/width = 2
report_error/remember_token = False
show_tour_message = False
version = 69.0.0
previous_crash =
interface_language = en
custom_cursor_blinking = 1200
window/statusbar = True

[toolbar]
enable = True
toolbars_visible = True

[statusbar]
show_status_bar = True
memory_usage/enable = False
memory_usage/timeout = 2000
cpu_usage/enable = False
cpu_usage/timeout = 2000
clock/enable = False
clock/timeout = 1000

[internal_console]
max_line_count = 300
working_dir_history = 30
working_dir_adjusttocontents = False
wrap = True
codecompletion/auto = False
external_editor/path = SciTE
external_editor/gotoline = -goto:
message = Spyder Internal Console

	This console is used to report application
	internal errors and to inspect Spyder
	internals with the following commands:
	  spy.app, spy.window, dir(spy)

	Please don't use it to run your code


multithreaded = False
profile = False
commands = []
namespace = {}
show_internal_errors = True
first_time = True

[main_interpreter]
default = True
custom = False
umr/enabled = True
umr/verbose = True
umr/namelist = []

[ipython_console]
show_banner = True
completion_type = 0
show_calltips = True
ask_before_closing = False
show_reset_namespace_warning = True
buffer_size = 500
pylab = True
pylab/autoload = False
pylab/backend = 0
pylab/inline/figure_format = 0
pylab/inline/resolution = 72
pylab/inline/width = 6
pylab/inline/height = 4
pylab/inline/bbox_inches = True
startup/run_lines =
startup/use_run_file = False
startup/run_file =
greedy_completer = False
jedi_completer = False
autocall = 0
symbolic_math = False
in_prompt =
out_prompt =
show_elapsed_time = False
ask_before_restart = True
hide_cmd_windows = True
pdb_prevent_closing = True
pdb_ignore_lib = False
pdb_execute_events = True
pdb_use_exclamation_mark = True
pdb_stop_first_line = True
startup/pdb_run_lines =
first_time = True

[variable_explorer]
check_all = False
dataframe_format = .6g
excluded_names = ['nan', 'inf', 'infty', 'little_endian', 'colorbar_doc', 'typecodes', '__builtins__', '__main__', '__doc__', 'NaN', 'Inf', 'Infinity', 'sctypes', 'rcParams', 'rcParamsDefault', 'sctypeNA', 'typeNA', 'False_', 'True_']
exclude_private = True
exclude_uppercase = True
exclude_capitalized = False
exclude_unsupported = False
exclude_callables_and_modules = True
truncate = True
minmax = False
show_callable_attributes = True
show_special_attributes = False
first_time = True

[plots]
mute_inline_plotting = True
show_plot_outline = False
auto_fit_plotting = True
save_dir = /home/user
first_time = False

[editor]
printer_header/font/family = ['Sans Serif', 'DejaVu Sans', 'Bitstream Vera Sans', 'Bitstream Charter', 'Lucida Grande', 'MS Shell Dlg 2', 'Calibri', 'Verdana', 'Geneva', 'Lucid', 'Arial', 'Helvetica', 'Avant Garde', 'Times', 'sans-serif']
printer_header/font/size = 9
printer_header/font/italic = False
printer_header/font/bold = False
wrap = False
wrapflag = True
todo_list = True
realtime_analysis = True
realtime_analysis/timeout = 2500
outline_explorer = True
line_numbers = True
blank_spaces = False
edge_line = True
edge_line_columns = 79
indent_guides = False
code_folding = False
show_code_folding_warning = True
scroll_past_end = True
toolbox_panel = True
close_parentheses = True
close_quotes = True
add_colons = True
auto_unindent = True
indent_chars = *    *
tab_stop_width_spaces = 4
check_eol_chars = True
convert_eol_on_save = False
convert_eol_on_save_to = LF
tab_always_indent = False
intelligent_backspace = True
automatic_completions = True
automatic_completions_after_chars = 3
automatic_completions_after_ms = 300
completions_hint = True
completions_hint_after_ms = 500
underline_errors = True
highlight_current_line = True
highlight_current_cell = True
occurrence_highlighting = True
occurrence_highlighting/timeout = 1500
always_remove_trailing_spaces = True
add_newline = True
always_remove_trailing_newlines = True
show_tab_bar = True
show_class_func_dropdown = True
max_recent_files = 20
save_all_before_run = True
focus_to_editor = True
run_cell_copy = False
onsave_analysis = False
autosave_enabled = True
autosave_interval = 60
docstring_type = Numpydoc
strip_trailing_spaces_on_modify = False
windows_layout_settings = []
last_working_dir = /home/user
first_time = True

[historylog]
enable = True
wrap = True
go_to_eof = True
line_numbers = False
first_time = False

[help]
enable = True
max_history_entries = 20
wrap = True
connect/editor = False
connect/ipython_console = False
math = True
automatic_import = True
plain_mode = False
rich_mode = True
show_source = False
locked = False
css_path = /usr/local/lib/python3.8/dist-packages/spyder/plugins/help/utils/static/css
first_time = False

[onlinehelp]
enable = True
handle_links = False
max_history_entries = 20
first_time = False

[outline_explorer]
enable = True
show_fullpath = False
show_all_files = False
group_cells = True
sort_files_alphabetically = False
show_comments = True
follow_cursor = True
display_variables = False
first_time = True
visibility = True

[project_explorer]
name_filters = {}
show_all = True
show_hscrollbar = True
visible_if_project_open = False
date_column = False
file_associations = {}
show_hidden = False
single_click_to_open = False
size_column = False
type_column = False
first_time = False

[explorer]
enable = True
name_filters = {}
show_hidden = False
single_click_to_open = False
size_column = False
type_column = False
date_column = True
visible_columns = [0, 3]
first_time = False

[find_in_files]
enable = True
supported_encodings = ['utf-8', 'iso-8859-1', 'cp1252']
exclude = ['']
exclude_regexp = False
search_text_regexp = False
search_text = ['', '(^|#)[ ]*(TODO|FIXME|XXX|HINT|TIP|@todo|HACK|BUG|OPTIMIZE|!!!|\\?\\?\\?)([^#]*)']
search_text_samples = ['(^|#)[ ]*(TODO|FIXME|XXX|HINT|TIP|@todo|HACK|BUG|OPTIMIZE|!!!|\\?\\?\\?)([^#]*)']
more_options = False
case_sensitive = False
exclude_case_sensitive = False
max_results = 1000
text_color = #19232D
hist_limit = 15
path_history = []
exclude_idx = 0
search_in_index = 0
first_time = False

[breakpoints]
enable = True
first_time = False

[completions]
enable = True
kite_call_to_action = False
enable_code_snippets = True
completions_wait_for_ms = 200
enabled_providers = {'kite': False}
provider_configuration = {'fallback': {'version': '0.1.0', 'values': {}, 'defaults': {}}, 'kite': {'version': '0.1.0', 'values': {'spyder_runs': 3, 'show_installation_dialog': False, 'show_onboarding': True, 'show_installation_error_message': True}, 'defaults': {'spyder_runs': 1, 'show_installation_dialog': True, 'show_onboarding': True, 'show_installation_error_message': True}}, 'lsp': {'version': '0.1.0', 'values': {'enable_hover_hints': True, 'show_lsp_down_warning': True, 'code_completion': True, 'jedi_definition': True, 'jedi_definition/follow_imports': True, 'jedi_signature_help': True, 'preload_modules': 'numpy, scipy, sympy, pandas, networkx, statsmodels, matplotlib, sklearn, skimage, mpmath, os, pillow, OpenGL, array, audioop, binascii, cPickle, cStringIO, cmath, collections, datetime, errno, exceptions, gc, importlib, itertools, math, mmap, msvcrt, nt, operator, ast, signal, sys, threading, time, wx, zipimport, zlib, pytest, PyQt4, PyQt5, PySide, PySide2, os.path', 'pyflakes': True, 'mccabe': True, 'formatting': 'autopep8', 'format_on_save': False, 'pycodestyle': True, 'pycodestyle/filename': '', 'pycodestyle/exclude': '', 'pycodestyle/select': '', 'pycodestyle/ignore': '', 'pycodestyle/max_line_length': 79, 'pydocstyle': True, 'pydocstyle/convention': 'numpy', 'pydocstyle/select': '', 'pydocstyle/ignore': '', 'pydocstyle/match': '(?!test_).*\\.py', 'pydocstyle/match_dir': '[^\\.].*', 'advanced/enabled': False, 'advanced/module': 'pyls', 'advanced/host': '127.0.0.1', 'advanced/port': 2087, 'advanced/external': False, 'advanced/stdio': False}, 'defaults': {'enable_hover_hints': True, 'show_lsp_down_warning': True, 'code_completion': True, 'jedi_definition': True, 'jedi_definition/follow_imports': True, 'jedi_signature_help': True, 'preload_modules': 'numpy, scipy, sympy, pandas, networkx, statsmodels, matplotlib, sklearn, skimage, mpmath, os, pillow, OpenGL, array, audioop, binascii, cPickle, cStringIO, cmath, collections, datetime, errno, exceptions, gc, importlib, itertools, math, mmap, msvcrt, nt, operator, ast, signal, sys, threading, time, wx, zipimport, zlib, pytest, PyQt4, PyQt5, PySide, PySide2, os.path', 'pyflakes': True, 'mccabe': False, 'formatting': 'autopep8', 'format_on_save': False, 'pycodestyle': False, 'pycodestyle/filename': '', 'pycodestyle/exclude': '', 'pycodestyle/select': '', 'pycodestyle/ignore': '', 'pycodestyle/max_line_length': 79, 'pydocstyle': False, 'pydocstyle/convention': 'numpy', 'pydocstyle/select': '', 'pydocstyle/ignore': '', 'pydocstyle/match': '(?!test_).*\\.py', 'pydocstyle/match_dir': '[^\\.].*', 'advanced/enabled': False, 'advanced/module': 'pyls', 'advanced/host': '127.0.0.1', 'advanced/port': 2087, 'advanced/external': False, 'advanced/stdio': False}}, 'snippets': {'version': '0.1.0', 'values': {'python': {'class': {'plain': {'text': 'class ${1:ClassName}:\n    def __init__(self, ${2:*args}, ${3:**kwargs}):\n        ${4:pass}$0', 'remove_trigger': False}, 'inheritance': {'text': 'class ${1:ClassName}($2):\n    def __init__(self, ${3:*args}, ${4:**kwargs}):\n        super().__init__(${5:*args}, ${6:**kwargs})$0', 'remove_trigger': False}}, 'def': {'method': {'text': 'def ${1:method_name}(self, ${2:*args}, ${3:**kwargs}):\n    ${4:pass}$0', 'remove_trigger': False}, 'function': {'text': 'def ${1:func_name}(${2:*args}, ${3:**kwargs}):\n    ${4:pass}$0', 'remove_trigger': False}}, 'for': {'range': {'text': 'for ${1:i} in range(${2:0}, ${3:n}):\n    ${4:pass}$0', 'remove_trigger': False}, 'iterator': {'text': 'for ${1:x} in ${2:iterator}:\n    ${3:pass}$0', 'remove_trigger': False}}, 'while': {'condition': {'text': 'while ${1:cond}:\n    ${2:pass}$0', 'remove_trigger': False}, 'infinite': {'text': 'while True:\n    ${1:pass}$0', 'remove_trigger': False}}, 'import': {'package': {'text': 'import ${1:package}$0', 'remove_trigger': False}, 'alias': {'text': 'import ${1:package} as ${2:alias}$0', 'remove_trigger': False}}, 'from': {'import': {'text': 'from ${1:package} import ${2:module}$0', 'remove_trigger': False}, 'alias': {'text': 'from ${1:package} import ${2:module} as ${3:alias}$0', 'remove_trigger': False}}, 'async': {'def': {'text': 'async def ${1:func_name}(${2:*args}, ${3:**kwargs}):\n    ${4:pass}$0', 'remove_trigger': False}, 'method': {'text': 'async def ${1:method_name}(self, ${2:*args}, ${3:**kwargs}):\n    ${4:pass}$0', 'remove_trigger': False}, 'for': {'text': 'async for ${1:x} in ${2:iterator}:\n    ${3:pass}$0', 'remove_trigger': False}}, 'try': {'except': {'text': '\ntry:\n    ${1:pass}\nexcept ${2:Exception}:\n    ${3:pass}$0\n', 'remove_trigger': False}, 'except alias': {'text': 'try:\n    ${1:pass}\nexcept ${2:Exception} as ${3:e}:\n    ${4:pass}$0', 'remove_trigger': False}, 'except/finally': {'text': 'try:\n    ${1:pass}\nexcept ${2:Exception}:\n    ${3:pass}\nfinally:\n    ${4:pass}$0', 'remove_trigger': False}, 'except alias/finally': {'text': 'try:\n    ${1:pass}\nexcept ${2:Exception} as ${3:e}:\n    ${4:pass}\nfinally:\n    ${5:pass}$0', 'remove_trigger': False}}, 'with': {'context': {'text': 'with ${1:context} as ${2:alias}:\n    ${3:pass}$0', 'remove_trigger': False}}, 'list': {'comprehension': {'text': '[${1:x} for ${2:x} in ${3:iterator}]$0', 'remove_trigger': True}, 'comprehension if': {'text': '[${1:x} for ${2:x} in ${3:iterator} if ${4:cond}]$0', 'remove_trigger': True}, 'comprehension if/else': {'text': '[${1:x} if ${2:cond} else ${3:other} for ${4:x} in ${5:iterator}]$0', 'remove_trigger': True}}, 'dict': {'comprehension': {'text': '{${1:key}:${2:value} for ${3:elem} in ${4:iterator}\\}$0', 'remove_trigger': True}, 'comprehension if': {'text': '{${1:key}:${2:value} for ${3:elem} in ${4:iterator} if ${5:cond}\\}$0', 'remove_trigger': True}}, 'set': {'comprehension': {'text': '{${1:elem} for ${2:elem} in ${3:iterator}\\}$0', 'remove_trigger': True}, 'comprehension if': {'text': '{${1:elem} for ${2:elem} in ${3:iterator} if ${4:cond}\\}$0', 'remove_trigger': True}, 'comprehension if/else': {'text': '{${1:elem} if ${2:cond} else ${3:other} for ${4:elem} in ${5:iterator}\\}$0', 'remove_trigger': True}}}}, 'defaults': {'python': {'class': {'plain': {'text': 'class ${1:ClassName}:\n    def __init__(self, ${2:*args}, ${3:**kwargs}):\n        ${4:pass}$0', 'remove_trigger': False}, 'inheritance': {'text': 'class ${1:ClassName}($2):\n    def __init__(self, ${3:*args}, ${4:**kwargs}):\n        super().__init__(${5:*args}, ${6:**kwargs})$0', 'remove_trigger': False}}, 'def': {'method': {'text': 'def ${1:method_name}(self, ${2:*args}, ${3:**kwargs}):\n    ${4:pass}$0', 'remove_trigger': False}, 'function': {'text': 'def ${1:func_name}(${2:*args}, ${3:**kwargs}):\n    ${4:pass}$0', 'remove_trigger': False}}, 'for': {'range': {'text': 'for ${1:i} in range(${2:0}, ${3:n}):\n    ${4:pass}$0', 'remove_trigger': False}, 'iterator': {'text': 'for ${1:x} in ${2:iterator}:\n    ${3:pass}$0', 'remove_trigger': False}}, 'while': {'condition': {'text': 'while ${1:cond}:\n    ${2:pass}$0', 'remove_trigger': False}, 'infinite': {'text': 'while True:\n    ${1:pass}$0', 'remove_trigger': False}}, 'import': {'package': {'text': 'import ${1:package}$0', 'remove_trigger': False}, 'alias': {'text': 'import ${1:package} as ${2:alias}$0', 'remove_trigger': False}}, 'from': {'import': {'text': 'from ${1:package} import ${2:module}$0', 'remove_trigger': False}, 'alias': {'text': 'from ${1:package} import ${2:module} as ${3:alias}$0', 'remove_trigger': False}}, 'async': {'def': {'text': 'async def ${1:func_name}(${2:*args}, ${3:**kwargs}):\n    ${4:pass}$0', 'remove_trigger': False}, 'method': {'text': 'async def ${1:method_name}(self, ${2:*args}, ${3:**kwargs}):\n    ${4:pass}$0', 'remove_trigger': False}, 'for': {'text': 'async for ${1:x} in ${2:iterator}:\n    ${3:pass}$0', 'remove_trigger': False}}, 'try': {'except': {'text': '\ntry:\n    ${1:pass}\nexcept ${2:Exception}:\n    ${3:pass}$0\n', 'remove_trigger': False}, 'except alias': {'text': 'try:\n    ${1:pass}\nexcept ${2:Exception} as ${3:e}:\n    ${4:pass}$0', 'remove_trigger': False}, 'except/finally': {'text': 'try:\n    ${1:pass}\nexcept ${2:Exception}:\n    ${3:pass}\nfinally:\n    ${4:pass}$0', 'remove_trigger': False}, 'except alias/finally': {'text': 'try:\n    ${1:pass}\nexcept ${2:Exception} as ${3:e}:\n    ${4:pass}\nfinally:\n    ${5:pass}$0', 'remove_trigger': False}}, 'with': {'context': {'text': 'with ${1:context} as ${2:alias}:\n    ${3:pass}$0', 'remove_trigger': False}}, 'list': {'comprehension': {'text': '[${1:x} for ${2:x} in ${3:iterator}]$0', 'remove_trigger': True}, 'comprehension if': {'text': '[${1:x} for ${2:x} in ${3:iterator} if ${4:cond}]$0', 'remove_trigger': True}, 'comprehension if/else': {'text': '[${1:x} if ${2:cond} else ${3:other} for ${4:x} in ${5:iterator}]$0', 'remove_trigger': True}}, 'dict': {'comprehension': {'text': '{${1:key}:${2:value} for ${3:elem} in ${4:iterator}\\}$0', 'remove_trigger': True}, 'comprehension if': {'text': '{${1:key}:${2:value} for ${3:elem} in ${4:iterator} if ${5:cond}\\}$0', 'remove_trigger': True}}, 'set': {'comprehension': {'text': '{${1:elem} for ${2:elem} in ${3:iterator}\\}$0', 'remove_trigger': True}, 'comprehension if': {'text': '{${1:elem} for ${2:elem} in ${3:iterator} if ${4:cond}\\}$0', 'remove_trigger': True}, 'comprehension if/else': {'text': '{${1:elem} if ${2:cond} else ${3:other} for ${4:elem} in ${5:iterator}\\}$0', 'remove_trigger': True}}}}}}
request_priorities = {'$/cancelRequest': {'fallback': 1, 'kite': 0, 'lsp': 0, 'snippets': 2}, 'client/registerCapability': {'fallback': 1, 'kite': 0, 'lsp': 0, 'snippets': 2}, 'client/unregisterCapability': {'fallback': 1, 'kite': 0, 'lsp': 0, 'snippets': 2}, 'codeLens/resolve': {'fallback': 1, 'kite': 0, 'lsp': 0, 'snippets': 2}, 'completionItem/resolve': {'fallback': 1, 'kite': 0, 'lsp': 0, 'snippets': 2}, 'textDocument/codeAction': {'fallback': 1, 'kite': 0, 'lsp': 0, 'snippets': 2}, 'textDocument/codeLens': {'fallback': 1, 'kite': 0, 'lsp': 0, 'snippets': 2}, 'textDocument/completion': {'fallback': 1, 'kite': 0, 'lsp': 0, 'snippets': 2}, 'textDocument/cursorEvent': {'fallback': 1, 'kite': 0, 'lsp': 0, 'snippets': 2}, 'textDocument/definition': {'fallback': 1, 'kite': 0, 'lsp': 0, 'snippets': 2}, 'textDocument/didChange': {'fallback': 1, 'kite': 0, 'lsp': 0, 'snippets': 2}, 'textDocument/didClose': {'fallback': 1, 'kite': 0, 'lsp': 0, 'snippets': 2}, 'textDocument/didOpen': {'fallback': 1, 'kite': 0, 'lsp': 0, 'snippets': 2}, 'textDocument/didSave': {'fallback': 1, 'kite': 0, 'lsp': 0, 'snippets': 2}, 'textDocument/foldingRange': {'fallback': 1, 'kite': 0, 'lsp': 0, 'snippets': 2}, 'textDocument/formatting': {'fallback': 1, 'kite': 0, 'lsp': 0, 'snippets': 2}, 'textDocument/documentHighlight': {'fallback': 1, 'kite': 0, 'lsp': 0, 'snippets': 2}, 'textDocument/hover': {'fallback': 1, 'kite': 0, 'lsp': 0, 'snippets': 2}, 'textDocument/documentLink': {'fallback': 1, 'kite': 0, 'lsp': 0, 'snippets': 2}, 'documentLink/resolve': {'fallback': 1, 'kite': 0, 'lsp': 0, 'snippets': 2}, 'textDocument/onTypeFormatting': {'fallback': 1, 'kite': 0, 'lsp': 0, 'snippets': 2}, 'textDocument/publishDiagnostics': {'fallback': 1, 'kite': 0, 'lsp': 0, 'snippets': 2}, 'textDocument/rangeFormatting': {'fallback': 1, 'kite': 0, 'lsp': 0, 'snippets': 2}, ' textDocument/references': {'fallback': 1, 'kite': 0, 'lsp': 0, 'snippets': 2}, 'textDocument/rename': {'fallback': 1, 'kite': 0, 'lsp': 0, 'snippets': 2}, 'textDocument/signatureHelp': {'fallback': 1, 'kite': 0, 'lsp': 0, 'snippets': 2}, 'textDocument/documentSymbol': {'fallback': 1, 'kite': 0, 'lsp': 0, 'snippets': 2}, 'textDocument/willSave': {'fallback': 1, 'kite': 0, 'lsp': 0, 'snippets': 2}, 'textDocument/willSaveWaitUntil': {'fallback': 1, 'kite': 0, 'lsp': 0, 'snippets': 2}, 'exit': {'fallback': 1, 'kite': 0, 'lsp': 0, 'snippets': 2}, 'initialize': {'fallback': 1, 'kite': 0, 'lsp': 0, 'snippets': 2}, 'initialized': {'fallback': 1, 'kite': 0, 'lsp': 0, 'snippets': 2}, 'shutdown': {'fallback': 1, 'kite': 0, 'lsp': 0, 'snippets': 2}, 'telemetry/event': {'fallback': 1, 'kite': 0, 'lsp': 0, 'snippets': 2}, 'window/logMessage': {'fallback': 1, 'kite': 0, 'lsp': 0, 'snippets': 2}, 'window/showMessage': {'fallback': 1, 'kite': 0, 'lsp': 0, 'snippets': 2}, 'window/showMessageRequest': {'fallback': 1, 'kite': 0, 'lsp': 0, 'snippets': 2}, 'workspace/applyEdit': {'fallback': 1, 'kite': 0, 'lsp': 0, 'snippets': 2}, 'workspace/configuration': {'fallback': 1, 'kite': 0, 'lsp': 0, 'snippets': 2}, 'workspace/didChangeConfiguration': {'fallback': 1, 'kite': 0, 'lsp': 0, 'snippets': 2}, 'workspace/executeCommand': {'fallback': 1, 'kite': 0, 'lsp': 0, 'snippets': 2}, 'workspace/workspaceFolders': {'fallback': 1, 'kite': 0, 'lsp': 0, 'snippets': 2}, 'workspace/didChangeWorkspaceFolders': {'fallback': 1, 'kite': 0, 'lsp': 0, 'snippets': 2}, 'workspace/symbol': {'fallback': 1, 'kite': 0, 'lsp': 0, 'snippets': 2}, 'workspace/didChangeWatchedFiles': {'fallback': 1, 'kite': 0, 'lsp': 0, 'snippets': 2}}

[profiler]
enable = True
text_color = #19232D
first_time = False
max_entries = 50

[pylint]
enable = True
max_entries = 30
project_dir = '/home/user/Software/git/menu'
save_before = True
first_time = False

[workingdir]
working_dir_adjusttocontents = False
working_dir_history = 20
console/use_project_or_home_directory = False
console/use_cwd = True
console/use_fixed_directory = False
startup/use_fixed_directory = False
init_workdir = None
history = ['/home/user/Software/git/menu', '/home/user']
workdir = None
startup/use_project_or_home_directory = True

[shortcuts]
_/close pane = Shift+Ctrl+F4
_/lock unlock panes = Shift+Ctrl+F5
_/use next layout = Shift+Alt+PgDown
_/use previous layout = Shift+Alt+PgUp
_/maximize pane = Ctrl+Alt+Shift+M
_/fullscreen mode = F11
_/save current layout = Shift+Alt+S
_/layout preferences = Shift+Alt+P
_/spyder documentation = F1
_/restart = Shift+Alt+R
_/quit = Ctrl+Q
_/file switcher = Ctrl+P
_/symbol finder = Ctrl+Alt+P
_/debug = Ctrl+F5
_/debug step over = Ctrl+F10
_/debug continue = Ctrl+F12
_/debug step into = Ctrl+F11
_/debug step return = Ctrl+Shift+F11
_/debug exit = Ctrl+Shift+F12
_/run = F5
_/configure = Ctrl+F6
_/re-run last script = F6
_/switch to help = Ctrl+Shift+H
_/switch to outline_explorer = Ctrl+Shift+O
_/switch to editor = Ctrl+Shift+E
_/switch to historylog = Ctrl+Shift+L
_/switch to onlinehelp = Ctrl+Shift+D
_/switch to project_explorer = Ctrl+Shift+P
_/switch to ipython_console = Ctrl+Shift+I
_/switch to variable_explorer = Ctrl+Shift+V
_/switch to find_in_files = Ctrl+Shift+F
_/switch to explorer = Ctrl+Shift+X
_/switch to plots = Ctrl+Shift+G
_/switch to pylint = Ctrl+Shift+C
_/switch to profiler = Ctrl+Shift+R
find_replace/find text = Ctrl+F
find_replace/find next = F3
find_replace/find previous = Shift+F3
find_replace/replace text = Ctrl+R
find_replace/hide find and replace = Escape
editor/code completion = Ctrl+Space
editor/duplicate line up = Shift+Alt+Up
editor/duplicate line down = Shift+Alt+Down
editor/delete line = Ctrl+D
editor/transform to uppercase = Ctrl+Shift+U
editor/transform to lowercase = Ctrl+U
editor/indent = Ctrl+]
editor/unindent = Ctrl+[
editor/move line up = Alt+Up
editor/move line down = Alt+Down
editor/go to new line = Ctrl+Shift+Return
editor/go to definition = Ctrl+G
editor/toggle comment = Ctrl+1
editor/blockcomment = Ctrl+4
editor/unblockcomment = Ctrl+5
editor/start of line = Meta+A
editor/end of line = Meta+E
editor/previous line = Meta+P
editor/next line = Meta+N
editor/previous char = Meta+B
editor/next char = Meta+F
editor/previous word = Ctrl+Left
editor/next word = Ctrl+Right
editor/kill to line end = Meta+K
editor/kill to line start = Meta+U
editor/yank = Meta+Y
editor/rotate kill ring = Shift+Meta+Y
editor/kill previous word = Meta+Backspace
editor/kill next word = Meta+D
editor/start of document = Ctrl+Home
editor/end of document = Ctrl+End
editor/undo = Ctrl+Z
editor/redo = Ctrl+Shift+Z
editor/cut = Ctrl+X
editor/copy = Ctrl+C
editor/paste = Ctrl+V
editor/delete = Del
editor/select all = Ctrl+A
editor/inspect current object = Ctrl+I
editor/breakpoint = F12
editor/conditional breakpoint = Shift+F12
editor/run selection = F9
editor/go to line = Ctrl+L
editor/go to previous file = Ctrl+Shift+Tab
editor/go to next file = Ctrl+Tab
editor/cycle to previous file = Ctrl+PgUp
editor/cycle to next file = Ctrl+PgDown
editor/new file = Ctrl+N
editor/open last closed = Ctrl+Shift+T
editor/open file = Ctrl+O
editor/save file = Ctrl+S
editor/save all = Ctrl+Alt+S
editor/save as = Ctrl+Shift+S
editor/close all = Ctrl+Shift+W
editor/last edit location = Ctrl+Alt+Shift+Left
editor/previous cursor position = Alt+Left
editor/next cursor position = Alt+Right
editor/previous warning = Ctrl+Alt+Shift+,
editor/next warning = Ctrl+Alt+Shift+.
editor/zoom in 1 = Ctrl++
editor/zoom in 2 = Ctrl+=
editor/zoom out = Ctrl+-
editor/zoom reset = Ctrl+0
editor/close file 1 = Ctrl+W
editor/close file 2 = Ctrl+F4
editor/run cell = Ctrl+Return
editor/run cell and advance = Shift+Return
editor/debug cell = Alt+Shift+Return
editor/go to next cell = Ctrl+Down
editor/go to previous cell = Ctrl+Up
editor/re-run last cell = Alt+Return
editor/split vertically = Ctrl+{
editor/split horizontally = Ctrl+_
editor/close split panel = Alt+Shift+W
editor/docstring = Ctrl+Alt+D
editor/autoformatting = Ctrl+Alt+I
editor/show in external file explorer =
_/switch to breakpoints = Ctrl+Shift+B
console/inspect current object = Ctrl+I
console/clear shell = Ctrl+L
console/clear line = Shift+Escape
pylint/run analysis = F8
profiler/run profiler = F10
ipython_console/new tab = Ctrl+T
ipython_console/reset namespace = Ctrl+Alt+R
ipython_console/restart kernel = Ctrl+.
array_builder/enter array inline = Ctrl+Alt+M
array_builder/enter array table = Ctrl+M
variable_explorer/copy = Ctrl+C
variable_explorer/search = Ctrl+F
variable_explorer/refresh = Ctrl+R
plots/copy = Ctrl+C
plots/previous figure = Ctrl+PgUp
plots/next figure = Ctrl+PgDown
plots/save = Ctrl+S
plots/save all = Ctrl+Alt+S
plots/close = Ctrl+W
plots/close all = Ctrl+Shift+W
plots/zoom in = Ctrl++
plots/zoom out = Ctrl+-
explorer/copy file = Ctrl+C
explorer/paste file = Ctrl+V
explorer/copy absolute path = Ctrl+Alt+C
explorer/copy relative path = Ctrl+Alt+Shift+C
find_in_files/find in files = Ctrl+Alt+F
shortcuts/show_shortcut_summary_action =
_/switch to internal_console =
profiler/profile_current_filename_action =

[appearance]
icon_theme = spyder 3
font/family = 'Hack'
font/size = 11
font/italic = False
font/bold = False
rich_font/family = ['Sans Serif', 'DejaVu Sans', 'Bitstream Vera Sans', 'Bitstream Charter', 'Lucida Grande', 'MS Shell Dlg 2', 'Calibri', 'Verdana', 'Geneva', 'Lucid', 'Arial', 'Helvetica', 'Avant Garde', 'Times', 'sans-serif']
rich_font/size = 9
rich_font/italic = False
rich_font/bold = False
ui_theme = light
names = ['emacs', 'idle', 'inkpot', 'minimal', 'monokai', 'nightlion', 'notepad++', 'oblivion', 'obsidian', 'pastel', 'pydev', 'retta', 'roboticket', 'scintilla', 'solarized/dark', 'solarized/light', 'spyder', 'spyder/dark', 'sublime-monokai/extended', 'vibrant-ink', 'zenburn']
selected = spyder
emacs/name = Emacs
emacs/background = #000000
emacs/currentline = #2b2b43
emacs/currentcell = #1c1c2d
emacs/occurrence = #1A72BB
emacs/ctrlclick = #0000ff
emacs/sideareas = #555555
emacs/matched_p = #009800
emacs/unmatched_p = #c80000
emacs/normal = ('#ffffff', False, False)
emacs/keyword = ('#3c51e8', False, False)
emacs/magic = ('#3c51e8', False, False)
emacs/builtin = ('#900090', False, False)
emacs/definition = ('#ff8040', True, False)
emacs/comment = ('#005100', False, False)
emacs/string = ('#00aa00', False, True)
emacs/number = ('#800000', False, False)
emacs/instance = ('#ffffff', False, True)
idle/name = IDLE
idle/background = #ffffff
idle/currentline = #f2e6f3
idle/currentcell = #feefff
idle/occurrence = #C2E3FA
idle/ctrlclick = #0000ff
idle/sideareas = #efefef
idle/matched_p = #99ff99
idle/unmatched_p = #ff9999
idle/normal = ('#000000', False, False)
idle/keyword = ('#ff7700', True, False)
idle/magic = ('#ff7700', True, False)
idle/builtin = ('#900090', False, False)
idle/definition = ('#0000ff', False, False)
idle/comment = ('#dd0000', False, True)
idle/string = ('#00aa00', False, False)
idle/number = ('#924900', False, False)
idle/instance = ('#777777', True, True)
monokai/name = Monokai
monokai/background = #2a2b24
monokai/currentline = #484848
monokai/currentcell = #3d3d3d
monokai/occurrence = #1A72BB
monokai/ctrlclick = #0000ff
monokai/sideareas = #2a2b24
monokai/matched_p = #688060
monokai/unmatched_p = #bd6e76
monokai/normal = ('#ddddda', False, False)
monokai/keyword = ('#f92672', False, False)
monokai/magic = ('#f92672', False, False)
monokai/builtin = ('#ae81ff', False, False)
monokai/definition = ('#a6e22e', False, False)
monokai/comment = ('#75715e', False, True)
monokai/string = ('#e6db74', False, False)
monokai/number = ('#ae81ff', False, False)
monokai/instance = ('#ddddda', False, True)
pydev/name = Pydev
pydev/background = #ffffff
pydev/currentline = #e8f2fe
pydev/currentcell = #eff8fe
pydev/occurrence = #C2E3FA
pydev/ctrlclick = #0000ff
pydev/sideareas = #efefef
pydev/matched_p = #99ff99
pydev/unmatched_p = #ff99992
pydev/normal = ('#000000', False, False)
pydev/keyword = ('#0000ff', False, False)
pydev/magic = ('#0000ff', False, False)
pydev/builtin = ('#900090', False, False)
pydev/definition = ('#000000', True, False)
pydev/comment = ('#c0c0c0', False, False)
pydev/string = ('#00aa00', False, True)
pydev/number = ('#800000', False, False)
pydev/instance = ('#000000', False, True)
scintilla/name = Scintilla
scintilla/background = #ffffff
scintilla/currentline = #e1f0d1
scintilla/currentcell = #edfcdc
scintilla/occurrence = #C2E3FA
scintilla/ctrlclick = #0000ff
scintilla/sideareas = #efefef
scintilla/matched_p = #99ff99
scintilla/unmatched_p = #ff9999
scintilla/normal = ('#000000', False, False)
scintilla/keyword = ('#00007f', True, False)
scintilla/magic = ('#00007f', True, False)
scintilla/builtin = ('#000000', False, False)
scintilla/definition = ('#007f7f', True, False)
scintilla/comment = ('#007f00', False, False)
scintilla/string = ('#7f007f', False, False)
scintilla/number = ('#007f7f', False, False)
scintilla/instance = ('#000000', False, True)
spyder/name = Spyder
spyder/background = #ffffff
spyder/currentline = #f7ecf8
spyder/currentcell = #fdfdde
spyder/occurrence = #C2E3FA
spyder/ctrlclick = #0000ff
spyder/sideareas = #efefef
spyder/matched_p = #99ff99
spyder/unmatched_p = #ff9999
spyder/normal = ('#000000', False, False)
spyder/keyword = ('#0000ff', False, False)
spyder/magic = ('#0000ff', False, False)
spyder/builtin = ('#900090', False, False)
spyder/definition = ('#000000', True, False)
spyder/comment = ('#adadad', False, True)
spyder/string = ('#00aa00', False, False)
spyder/number = ('#800000', False, False)
spyder/instance = ('#924900', False, True)
spyder/dark/name = Spyder Dark
spyder/dark/background = #19232D
spyder/dark/currentline = #3a424a
spyder/dark/currentcell = #292d3e
spyder/dark/occurrence = #1A72BB
spyder/dark/ctrlclick = #179ae0
spyder/dark/sideareas = #222b35
spyder/dark/matched_p = #0bbe0b
spyder/dark/unmatched_p = #ff4340
spyder/dark/normal = ('#ffffff', False, False)
spyder/dark/keyword = ('#c670e0', False, False)
spyder/dark/magic = ('#c670e0', False, False)
spyder/dark/builtin = ('#fab16c', False, False)
spyder/dark/definition = ('#57d6e4', True, False)
spyder/dark/comment = ('#999999', False, False)
spyder/dark/string = ('#b0e686', False, True)
spyder/dark/number = ('#faed5c', False, False)
spyder/dark/instance = ('#ee6772', False, True)
zenburn/name = Zenburn
zenburn/background = #3f3f3f
zenburn/currentline = #333333
zenburn/currentcell = #2c2c2c
zenburn/occurrence = #1A72BB
zenburn/ctrlclick = #0000ff
zenburn/sideareas = #3f3f3f
zenburn/matched_p = #688060
zenburn/unmatched_p = #bd6e76
zenburn/normal = ('#dcdccc', False, False)
zenburn/keyword = ('#dfaf8f', True, False)
zenburn/magic = ('#dfaf8f', True, False)
zenburn/builtin = ('#efef8f', False, False)
zenburn/definition = ('#efef8f', False, False)
zenburn/comment = ('#7f9f7f', False, True)
zenburn/string = ('#cc9393', False, False)
zenburn/number = ('#8cd0d3', False, False)
zenburn/instance = ('#dcdccc', False, True)
solarized/light/name = Solarized Light
solarized/light/background = #fdf6e3
solarized/light/currentline = #f5efdB
solarized/light/currentcell = #eee8d5
solarized/light/occurrence = #C2E3FA
solarized/light/ctrlclick = #d33682
solarized/light/sideareas = #eee8d5
solarized/light/matched_p = #d6dabf
solarized/light/unmatched_p = #dc322f
solarized/light/normal = ('#657b83', False, False)
solarized/light/keyword = ('#859900', False, False)
solarized/light/magic = ('#859900', False, False)
solarized/light/builtin = ('#6c71c4', False, False)
solarized/light/definition = ('#268bd2', True, False)
solarized/light/comment = ('#93a1a1', False, True)
solarized/light/string = ('#2aa198', False, False)
solarized/light/number = ('#d33682', False, False)
solarized/light/instance = ('#b58900', False, True)
solarized/dark/name = Solarized Dark
solarized/dark/background = #002b36
solarized/dark/currentline = #083f4d
solarized/dark/currentcell = #073642
solarized/dark/occurrence = #1A72BB
solarized/dark/ctrlclick = #d33682
solarized/dark/sideareas = #073642
solarized/dark/matched_p = #586e75
solarized/dark/unmatched_p = #dc322f
solarized/dark/normal = ('#E1E1E1', False, False)
solarized/dark/keyword = ('#859900', False, False)
solarized/dark/magic = ('#859900', False, False)
solarized/dark/builtin = ('#6c71c4', False, False)
solarized/dark/definition = ('#268bd2', True, False)
solarized/dark/comment = ('#657b83', False, True)
solarized/dark/string = ('#2aa198', False, False)
solarized/dark/number = ('#d33682', False, False)
solarized/dark/instance = ('#b58900', False, True)
inkpot/name = Inkpot
inkpot/background = #1f1f27
inkpot/currentline = #2d2d44
inkpot/currentcell = #33333A
inkpot/occurrence = #1A72BB
inkpot/ctrlclick = #1f1f27
inkpot/sideareas = #2d2d44
inkpot/matched_p = #3672b5
inkpot/unmatched_p = #8b8bff
inkpot/normal = ('#cfbfad', False, False)
inkpot/keyword = ('#808bed', False, False)
inkpot/magic = ('#808bed', False, False)
inkpot/builtin = ('#87cefa', False, False)
inkpot/definition = ('#87cefa', False, False)
inkpot/comment = ('#cd8b00', False, False)
inkpot/string = ('#ffcd8b', False, False)
inkpot/number = ('#ffcd8b', False, False)
inkpot/instance = ('#cfbfad', False, False)
minimal/name = Minimal
minimal/background = #ffffff
minimal/currentline = #aaccff
minimal/currentcell = #E7F1FF
minimal/occurrence = #C2E3FA
minimal/ctrlclick = #05314d
minimal/sideareas = #aaccff
minimal/matched_p = #000000
minimal/unmatched_p = #efefff
minimal/normal = ('#000000', False, False)
minimal/keyword = ('#5c8198', False, False)
minimal/magic = ('#5c8198', False, False)
minimal/builtin = ('#000066', False, False)
minimal/definition = ('#5c8198', False, False)
minimal/comment = ('#334466', False, False)
minimal/string = ('#333333', False, False)
minimal/number = ('#333333', False, False)
minimal/instance = ('#566874', False, False)
nightlion/name = NightLion Aptana Theme
nightlion/background = #1e1e1e
nightlion/currentline = #505050
nightlion/currentcell = #323232
nightlion/occurrence = #1A72BB
nightlion/ctrlclick = #b3b5af
nightlion/sideareas = #505050
nightlion/matched_p = #3672b5
nightlion/unmatched_p = #364656
nightlion/normal = ('#e2e2e2', False, False)
nightlion/keyword = ('#8dcbe2', False, False)
nightlion/magic = ('#8dcbe2', False, False)
nightlion/builtin = ('#cae682', False, False)
nightlion/definition = ('#dfbe95', False, False)
nightlion/comment = ('#7f9f7f', False, False)
nightlion/string = ('#cc9393', False, False)
nightlion/number = ('#eab882', False, False)
nightlion/instance = ('#b3b784', False, False)
notepad++/name = Notepad++
notepad++/background = #ffffff
notepad++/currentline = #eeeeee
notepad++/currentcell = #D9D9D9
notepad++/occurrence = #C2E3FA
notepad++/ctrlclick = #800080
notepad++/sideareas = #eeeeee
notepad++/matched_p = #8000ff
notepad++/unmatched_p = #eeeeee
notepad++/normal = ('#8000ff', False, False)
notepad++/keyword = ('#0000ff', False, False)
notepad++/magic = ('#0000ff', False, False)
notepad++/builtin = ('#000080', False, False)
notepad++/definition = ('#ff00ff', False, False)
notepad++/comment = ('#008000', False, False)
notepad++/string = ('#808080', False, False)
notepad++/number = ('#ff8000', False, False)
notepad++/instance = ('#800080', False, False)
oblivion/name = Oblivion
oblivion/background = #1e1e1e
oblivion/currentline = #2a2a2a
oblivion/currentcell = #323232
oblivion/occurrence = #1A72BB
oblivion/ctrlclick = #ccdf32
oblivion/sideareas = #2a2a2a
oblivion/matched_p = #de7878
oblivion/unmatched_p = #000000
oblivion/normal = ('#d8d8d8', False, False)
oblivion/keyword = ('#ffffff', False, False)
oblivion/magic = ('#ffffff', False, False)
oblivion/builtin = ('#de7878', False, False)
oblivion/definition = ('#ffffff', False, False)
oblivion/comment = ('#c7dd0c', False, False)
oblivion/string = ('#ffc600', False, False)
oblivion/number = ('#7fb347', False, False)
oblivion/instance = ('#bed6ff', False, False)
obsidian/name = Obsidian
obsidian/background = #293134
obsidian/currentline = #2f393c
obsidian/currentcell = #3C4346
obsidian/occurrence = #1A72BB
obsidian/ctrlclick = #7d8c93
obsidian/sideareas = #2f393c
obsidian/matched_p = #3672b5
obsidian/unmatched_p = #804000
obsidian/normal = ('#e0e2e4', False, False)
obsidian/keyword = ('#93c763', False, False)
obsidian/magic = ('#93c763', False, False)
obsidian/builtin = ('#678cb1', False, False)
obsidian/definition = ('#678cb1', False, False)
obsidian/comment = ('#7d8c93', False, False)
obsidian/string = ('#ec7600', False, False)
obsidian/number = ('#ffcd22', False, False)
obsidian/instance = ('#678cb1', False, False)
pastel/name = Pastel
pastel/background = #1f2223
pastel/currentline = #2f393c
pastel/currentcell = #454849
pastel/occurrence = #1A72BB
pastel/ctrlclick = #7d8c93
pastel/sideareas = #2f393c
pastel/matched_p = #3672b5
pastel/unmatched_p = #95bed8
pastel/normal = ('#e0e2e4', False, False)
pastel/keyword = ('#a57b61', False, False)
pastel/magic = ('#a57b61', False, False)
pastel/builtin = ('#678cb1', False, False)
pastel/definition = ('#678cb1', False, False)
pastel/comment = ('#7d8c93', False, False)
pastel/string = ('#c78d9b', False, False)
pastel/number = ('#c78d9b', False, False)
pastel/instance = ('#678cb1', False, False)
retta/name = Retta
retta/background = #000000
retta/currentline = #2a2a2a
retta/currentcell = #171717
retta/occurrence = #1A72BB
retta/ctrlclick = #83786e
retta/sideareas = #2a2a2a
retta/matched_p = #de7878
retta/unmatched_p = #527d5d
retta/normal = ('#f8e1aa', False, False)
retta/keyword = ('#e79e3c', True, False)
retta/magic = ('#e79e3c', True, False)
retta/builtin = ('#de6546', True, False)
retta/definition = ('#a4b0c0', False, False)
retta/comment = ('#83786e', False, False)
retta/string = ('#d6c248', False, False)
retta/number = ('#d6c248', False, False)
retta/instance = ('#de6546', False, False)
roboticket/name = Roboticket
roboticket/background = #f5f5f5
roboticket/currentline = #e0e0ff
roboticket/currentcell = #CCCCE8
roboticket/occurrence = #C2E3FA
roboticket/ctrlclick = #ad95af
roboticket/sideareas = #e0e0ff
roboticket/matched_p = #585858
roboticket/unmatched_p = #bdd8f2
roboticket/normal = ('#585858', False, False)
roboticket/keyword = ('#295f94', False, True)
roboticket/magic = ('#295f94', False, True)
roboticket/builtin = ('#ab2525', False, False)
roboticket/definition = ('#bc5a65', True, False)
roboticket/comment = ('#ad95af', False, True)
roboticket/string = ('#317ecc', False, False)
roboticket/number = ('#af0f91', False, False)
roboticket/instance = ('#566874', False, False)
sublime-monokai/extended/name = Sublime Text Monokai Extended
sublime-monokai/extended/background = #222222
sublime-monokai/extended/currentline = #2f2f2f
sublime-monokai/extended/currentcell = #363636
sublime-monokai/extended/occurrence = #1A72BB
sublime-monokai/extended/ctrlclick = #ffffff
sublime-monokai/extended/sideareas = #2f2f2f
sublime-monokai/extended/matched_p = #679116
sublime-monokai/extended/unmatched_p = #cc9900
sublime-monokai/extended/normal = ('#cfbfad', False, False)
sublime-monokai/extended/keyword = ('#ff007f', False, False)
sublime-monokai/extended/magic = ('#ff007f', False, False)
sublime-monokai/extended/builtin = ('#52e3f6', False, False)
sublime-monokai/extended/definition = ('#a7ec21', False, False)
sublime-monokai/extended/comment = ('#ffffff', False, False)
sublime-monokai/extended/string = ('#ece47e', False, False)
sublime-monokai/extended/number = ('#c48cff', False, False)
sublime-monokai/extended/instance = ('#cfbfad', False, False)
vibrant-ink/name = Vibrant Ink
vibrant-ink/background = #191919
vibrant-ink/currentline = #222220
vibrant-ink/currentcell = #2D2D2D
vibrant-ink/occurrence = #1A72BB
vibrant-ink/ctrlclick = #8c3fc8
vibrant-ink/sideareas = #222220
vibrant-ink/matched_p = #598c19
vibrant-ink/unmatched_p = #414c3b
vibrant-ink/normal = ('#ffffff', False, False)
vibrant-ink/keyword = ('#ec691e', False, False)
vibrant-ink/magic = ('#ec691e', False, False)
vibrant-ink/builtin = ('#9cf828', False, False)
vibrant-ink/definition = ('#f7c527', False, False)
vibrant-ink/comment = ('#8146a2', False, False)
vibrant-ink/string = ('#477488', False, False)
vibrant-ink/number = ('#477488', False, False)
vibrant-ink/instance = ('#357a8f', False, False)
custom_names = []

[snippet-completions]
erlang = {}
swift = {}
json = {}
kotlin = {}
r = {}
fortran = {}
bash = {}
typescript = {}
javascript = {}
scala = {}
haxe = {}
php = {}
cpp = {}
c# = {}
html = {}
go = {}
graphql = {}
julia = {}
java = {}
rust = {}
groovy = {}
ocaml = {}
css/less/sass = {}
elixir = {}

[run]
post_mortem = False
clear_namespace = False
console_namespace = False
interact = False
open_on_firstrun = False
default/interpreter/current = False
default/interpreter/dedicated = True
default/interpreter/systerm = False
default/wdir/use_script_directory = False
default/wdir/use_cwd_directory = True
default/wdir/use_fixed_directory = False
history = 20
open_at_least_once = False
```
</details>

## Versions
<!--- You can get this information from Help > About Spyder...
or (if Spyder won't launch) the "conda list" command
from the Anaconda Prompt/Terminal/command line. --->

* Spyder version: 5.0.2
* Python version: 3.8.5 64-bit
* Qt version: 5.12.9
* PyQt version: 5.12.3
* Operating System name/version: Linux Mint 20.1

### Dependencies
<!--- Please go to the menu entry Help > Dependencies,
press the Copy to clipboard button and paste below --->

```

# Mandatory:
atomicwrites >=1.2.0          :  1.4.0 (OK)
chardet >=2.0.0               :  4.0.0 (OK)
cloudpickle >=0.5.0           :  1.6.0 (OK)
cookiecutter >=1.6.0          :  1.7.2 (OK)
diff_match_patch >=20181111   :  20200713 (OK)
intervaltree >=3.0.2          :  3.1.0 (OK)
IPython >=7.6.0               :  7.23.1 (OK)
jedi =0.17.2                  :  0.17.2 (OK)
jsonschema >=3.2.0            :  3.2.0 (OK)
keyring >=17.0.0              :  23.0.1 (OK)
nbconvert >=4.0               :  6.0.7 (OK)
numpydoc >=0.6.0              :  1.1.0 (OK)
parso =0.7.0                  :  0.7.0 (OK)
pexpect >=4.4.0               :  4.6.0 (OK)
pickleshare >=0.4             :  0.7.5 (OK)
psutil >=5.3                  :  5.5.1 (OK)
pygments >=2.0                :  2.9.0 (OK)
pylint >=1.0                  :  2.8.2 (OK)
pyls >=0.36.2;<1.0.0          :  0.36.2 (OK)
pyls_black >=0.4.6            :  0.4.6 (OK)
pyls_spyder >=0.3.2;<0.4.0    :  0.3.2 (OK)
qdarkstyle =3.0.2             :  3.0.2 (OK)
qstylizer >=0.1.10            :  0.2.0 (OK)
qtawesome >=1.0.2             :  1.0.2 (OK)
qtconsole >=5.1.0             :  5.1.0 (OK)
qtpy >=1.5.0                  :  1.9.0 (OK)
setuptools >=39.0.0           :  56.2.0 (OK)
sphinx >=0.6.6                :  4.0.1 (OK)
spyder_kernels >=2.0.2;<2.1.0 :  2.0.2 (OK)
textdistance >=4.2.0          :  4.2.1 (OK)
three_merge >=0.1.1           :  0.1.1 (OK)
watchdog >=0.10.3;<2.0.0      :  1.0.2 (OK)
xdg >=0.26                    :  0.26 (OK)
zmq >=17                      :  22.0.3 (OK)

# Optional:
cython >=0.21                 :  None (NOK)
matplotlib >=2.0.0            :  3.4.2 (OK)
numpy >=1.7                   :  1.20.3 (OK)
pandas >=1.1.1                :  1.2.4 (OK)
scipy >=0.17.0                :  1.6.3 (OK)
sympy >=0.7.3                 :  1.8 (OK)
```



Discussion:
I forgot to mention, that during the time I wait for spyder to react, the CPU load (of the core running spyder) is 100%.
Hey @sphh, thanks for reporting. Did you check that the CPU load is caused by Spyder?
Yes, it is the `spyder` process, which uses 100% CPU. I checked that, because I initially thought it is the language server. But this process does not show a higher CPU usage than normal.
Ok, are you working with long files in the editor? I mean, files with more than  1000 lines of code? 
I am currently working on a file which has ~650 lines.
Could you check with a smaller file? Just to be sure if the problem is with the file length or it's something else.
It's fine with a 100 or 200 lines file.
It's better with a file with only 120 lines. But still there is a noticeable and irritating lag when typing fast.

At the beginning there is no lag at all (for large and small files). After restarting the LSP (from the statusbar), it is close to the experience after starting spyder, but the feeling becomes ‘laggy’ quite quickly. For the large file, to be unusable and for the small one, so that you can still feel it.
So if you disable the LSP in

    Preferences > Completion and linting > General > Providers > Enable Language Server Protocol (LSP) provider

and restart Spyder, does the sluggishness disappear?
Yes it does (it disappears even without restarting spyder).
I have the same problem and it even occurred on a 35 line file (no other files were open) whereby I noticed one special case:
It occurs to me most strongly (but not only) when you edit code after open brackets that are not yet closed again. When editing code in this situation, it sometimes takes 10s to appear. It does not matter whether it is writing, auto-completing or deleting. The situation is immediately better when the closed bracket is there too.
Disabling the LSP provider helped, simply restarting the LSP server had no effect.
I can confirm @TimBergner findings: It is (noticeable) slower if the corresponding bracket is not closed yet.

My feeling is, that the sluggishness often starts, when the bracket is open or when editing a triple-quoted doc-string or a f-string (but this is just my feeling and in no way an objective finding).
> It is (noticeable) slower if the corresponding bracket is not closed yet.

Ok, this is really interesting and a pretty nice finding. This sluggishness is also present when the LSP is turned off?
Note: this could be related to PR #14376, which was added in our 4.2.2 version.

@hengin, are you able to reproduce these problems?
I am having the same issue with Spyder 5.0.3 and 5.0.2 on MacOS, after a few hours of use the editor becomes extremely slow/frozen for several seconds, and the CPU usage jumps to 100%.

The issues seems to trigger when the code analysis detects errors in the code, and only after a few hours of use.
@remisalmon, do the problems disappear if you restart the language server?
@ccordoba12 no, it seems unrelated.

Disabling "Underline errors and warning" (but not "Enable basic linting") solves the issue entirely - just found out about this.
> Note: this could be related to PR #14376, which was added in our 4.2.2 version.
> 
> @hengin, are you able to reproduce these problems?

I have not seen these problems (but then I have not had any long-running Spyder sessions open recently). If it was related to #14376 then the lag should be the same independently of how long Spyder has been running. It should only depend on the length of the file and the depth of nested brackets. And the lag should be proportional to both. If closing and reopening Spyder changes the amount of lag then it should be unrelated.
Hello, I started using Spyder for the first time yesterday (go me). I enabled the linter, and I was happily programming some stuff.  I left Spyder open over night.   This morning, I noticed the editor was laggy, even after just making a small change and moving the cursor.  I found this thread.  I disabled the LSP server, and the problem went away immediately, but caused Spyder to become unstable. So I restarted Spyder.    At this point the LSP was disabled.  I re-enabled it, and restart Spyder again.  Currently, the interface is back to normal.

This is with Spyder 5.0.3.

Hello,
I experience the same lagging issues when working on files over 500 lines long, after some time. I've been working on Spyder for a few years (currently on 5.0.0), and I think it started happening on Spyder 4.0. I am not always on large files so cannot be sure about the timing. I'm on Ubuntu 20.04.2 LTS.
Following @remisalmon comment on disabling "Underline errors and warning" and other comments before, I tried a few of these things too. "Underline errors and warnings" was already disabled for me, and I was having the lagging happening. So I unchecked "Show code folding" in Preferences > Editor > Display. It improves A LOT my experience since the last few days. Sometimes lagging still happens, in particular when having unmatched parenthesis or brackets open, but that's nothing in comparison to the lag I had when just typing letters and waiting for them to appear on screen before.
Maybe it can help some of you to use Spyder or even to fix whatever is the issue there...
Have a nice day!
I noticed the same kind of issue after upgrading from Spyder 4.1.5 to 4.2.5.

Disabling both code folding and indent guides improve the problem.
same here - deactivating code folding gave a tremendous speed boost in spyder 4.2.5 and 5.0.3

EDIT: helped for 30 seconds, then incredibly slow again when typing more than a few characters. the little refresh wheel in outline keeps turning constantly. I have all code completion deactivated.
@mluerig, if you're using Spyder in macOS Big Sur with Anaconda, you need to switch to our DMG installer because that's the only possible workaround at the moment:

https://github.com/spyder-ide/spyder/releases
@ccordoba12 I'm on windows 10, unfortunately. I now did a complete os/anaconda/spyder reinstall (now 5.0.5), but it didn't change anything. which version could I roll back onto where this is not a problem? almost unusably slow at the moment...
Hey guys, I have good news for you: I was able to reproduce the problem reported initially by @sphh and I think I solved it in PR #16195, which will be part of our next version (5.1.2), to be released in a week or so.

I decided to not close this issue yet because:

1. You could find my fix was not enough.
2. There's good advice here about workarounds for other problems that impact typing in the editor.
3. We still need to address other things reported here (like the issue with folding).
thanks for the follow up! I'll check in September when I am back at work

On Wed, Aug 11, 2021, 04:39 Carlos Cordoba ***@***.***> wrote:

> Hey guys, I have good news for you: I was able to reproduce the problem
> reported initially by @sphh <https://github.com/sphh> and I think I
> solved it in PR #16195 <https://github.com/spyder-ide/spyder/pull/16195>,
> which will be part of our next version (5.1.2), to be released in a week or
> so.
>
> I decided to not close this issue yet because:
>
>    1. You could find my fix was not enough.
>    2. There's good advice here about workarounds for other problems that
>    impact typing in the editor.
>    3. We still need to address other things reported here (like the issue
>    with folding).
>
> —
> You are receiving this because you were mentioned.
> Reply to this email directly, view it on GitHub
> <https://github.com/spyder-ide/spyder/issues/15631#issuecomment-896454818>,
> or unsubscribe
> <https://github.com/notifications/unsubscribe-auth/ADXMKRF3K3D6G7C3Z6UKNGTT4HPEJANCNFSM4457S4PA>
> .
>

I applied the changes from #16195 manually on my installation (Spyder 5.1.1). It improved the experience quite a lot.

Still it is lagging, if I have `Code style linting` and `Docstring style linting` enabled. On a positive side, the memory used by the `pylsp` server does not increase over time, with those two options enabled (as it used to happen – don't know if it is really related).

@ccordoba12: What are the reasons to move it from the v5.1.2 to the v5.2.0 milestone? I would very much like it in the next possible milestone, because it improves the usability a lot! (But I can always apply those 3 patches manually …)
> I applied the changes from #16195 manually on my installation (Spyder 5.1.1). It improved the experience quite a lot.

Great! I'm really glad to hear that.

> I would very much like it in the next possible milestone, because it improves the usability a lot! (But I can always apply those 3 patches manually …)

The changes in PR #16195 will be part of 5.1.2 (as I said above). But there are other issues that still affect typing and we plan to address them in 5.2.0 (basically because we don't know how to solve them yet).

Resolving patch:
diff --git a/spyder/plugins/editor/widgets/codeeditor.py b/spyder/plugins/editor/widgets/codeeditor.py
--- a/spyder/plugins/editor/widgets/codeeditor.py
+++ b/spyder/plugins/editor/widgets/codeeditor.py
@@ -2966,6 +2966,12 @@ def show_hint_for_completion(self, word, documentation, at_point):
     def update_decorations(self):
         """Update decorations on the visible portion of the screen."""
         if self.underline_errors_enabled:
+            # Clear current selections before painting the new ones.
+            # This prevents accumulating them when moving around in the file,
+            # which generated a memory leak and sluggishness in the editor
+            # after some time.
+            self.clear_extra_selections('code_analysis_underline')
+
             self.underline_errors()
             self.update_extra_selections()
         else:


Test patch: