Repository: spyder-ide/spyder

Issue:
Error when opening files due to a corrupted config file
<!--- **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)
* [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

### What steps reproduce the problem?

1. Clicked on a file from the project list to open it
2. The file opens but the issue reporter window pops up

![bug_opening_file](https://user-images.githubusercontent.com/10239480/235550240-cfe410fd-4ad2-490b-934f-beac3e31eb7d.gif)


### What is the expected output? What do you see instead?

Following what the error message said I realized that the problem occurred when doing `get_conf('bookmarks', default={})`, because it returned None. Maybe my `spyder.ini` file got somehow corrupted and that section was not found.
![image](https://user-images.githubusercontent.com/10239480/235550685-93230c99-0d3f-4dcb-b5ae-25e7b3be9ce2.png)

So then, when the `load_bookmarks` function is called, slots is None and it results in the error saying `NoneType has no attribute keys`
![image](https://user-images.githubusercontent.com/10239480/235550776-63738337-81e6-4fa6-889e-7d8d96b64711.png)

To fix it, I clicked on the `reset to defaults` option inside the preferences page. That generated a new config file and the error stoped occuring.

### Paste Traceback/Error Below (if applicable)
<!--- Copy from error dialog or View > Panes > Internal Console --->
```python-traceback
Traceback (most recent call last):
  File "c:\users\angela\spyder\spyder\plugins\editor\plugin.py", line 2105, in save_bookmarks
    new_slots = update_bookmarks(filename, bookmarks, old_slots)
  File "c:\users\angela\spyder\spyder\plugins\editor\utils\bookmarks.py", line 55, in update_bookmarks
    updated_slots = load_bookmarks_without_file(filename, old_slots)
  File "c:\users\angela\spyder\spyder\plugins\editor\utils\bookmarks.py", line 30, in load_bookmarks_without_file
    bookmarks = _load_all_bookmarks(slots)
  File "c:\users\angela\spyder\spyder\plugins\editor\utils\bookmarks.py", line 16, in _load_all_bookmarks
    for slot_num in list(slots.keys()):
AttributeError: 'NoneType' object has no attribute 'keys'
Traceback (most recent call last):
  File "c:\users\angela\spyder\spyder\app\mainwindow.py", line 1193, in open_file
    editor.load(fname)
  File "c:\users\angela\spyder\spyder\plugins\editor\plugin.py", line 2459, in load
    current_editor.set_bookmarks(load_bookmarks(filename, slots))
  File "c:\users\angela\spyder\spyder\plugins\editor\utils\bookmarks.py", line 24, in load_bookmarks
    bookmarks = _load_all_bookmarks(slots)
  File "c:\users\angela\spyder\spyder\plugins\editor\utils\bookmarks.py", line 16, in _load_all_bookmarks
    for slot_num in list(slots.keys()):
AttributeError: 'NoneType' object has no attribute 'keys'
```

## 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: 6.0.0.dev0 90ce9eed7 (conda)
* Python version: 3.9.16 64-bit
* Qt version: 5.15.6
* PyQt5 version: 5.15.7
* Operating System: Windows-10-10.0.19045-SP0

### 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.1 (OK)
chardet >=2.0.0                                  :  5.1.0 (OK)
cloudpickle >=0.5.0                              :  2.2.1 (OK)
cookiecutter >=1.6.0                             :  2.1.1 (OK)
diff_match_patch >=20181111                      :  20200713 (OK)
intervaltree >=3.0.2                             :  3.0.2 (OK)
IPython >=7.31.1,<9.0.0,!=8.8.0,!=8.9.0,!=8.10.0 :  8.13.1 (OK)
jedi >=0.17.2,<0.19.0                            :  0.18.2 (OK)
jellyfish >=0.7                                  :  0.9.0 (OK)
jsonschema >=3.2.0                               :  4.17.3 (OK)
keyring >=17.0.0                                 :  23.13.1 (OK)
nbconvert >=4.0                                  :  7.3.1 (OK)
numpydoc >=0.6.0                                 :  1.5.0 (OK)
paramiko >=2.4.0                                 :  3.1.0 (OK)
parso >=0.7.0,<0.9.0                             :  0.8.3 (OK)
pexpect >=4.4.0                                  :  4.8.0 (OK)
pickleshare >=0.4                                :  0.7.5 (OK)
psutil >=5.3                                     :  5.9.5 (OK)
pygments >=2.0                                   :  2.15.1 (OK)
pylint >=2.5.0,<3.0                              :  2.17.3 (OK)
pylint_venv >=2.1.1                              :  3.0.1 (OK)
pyls_spyder >=0.4.0                              :  0.4.0 (OK)
pylsp >=1.7.2,<1.8.0                             :  1.7.2 (OK)
pylsp_black >=1.2.0                              :  1.2.1 (OK)
qdarkstyle >=3.0.2,<3.2.0                        :  3.1 (OK)
qstylizer >=0.2.2                                :  0.2.2 (OK)
qtawesome >=1.2.1                                :  1.2.3 (OK)
qtconsole >=5.4.2,<5.5.0                         :  5.5.0.dev0 (OK)
qtpy >=2.1.0                                     :  2.3.1 (OK)
rtree >=0.9.7                                    :  1.0.1 (OK)
setuptools >=49.6.0                              :  67.7.2 (OK)
sphinx >=0.6.6                                   :  7.0.0 (OK)
spyder_kernels >=2.4.3,<2.5.0                    :  3.0.0.dev0 (OK)
textdistance >=4.2.0                             :  4.5.0 (OK)
three_merge >=0.1.1                              :  0.1.1 (OK)
watchdog >=0.10.3                                :  3.0.0 (OK)
zmq >=22.1.0                                     :  25.0.2 (OK)

# Optional:
cython >=0.21                                    :  0.29.34 (OK)
matplotlib >=3.0.0                               :  3.7.1 (OK)
numpy >=1.7                                      :  1.24.3 (OK)
pandas >=1.1.1                                   :  2.0.1 (OK)
scipy >=0.17.0                                   :  1.10.1 (OK)
sympy >=0.7.3                                    :  1.11.1 (OK)

```



Discussion:

Resolving patch:
diff --git a/spyder/plugins/editor/plugin.py b/spyder/plugins/editor/plugin.py
--- a/spyder/plugins/editor/plugin.py
+++ b/spyder/plugins/editor/plugin.py
@@ -2102,7 +2102,8 @@ def save_bookmarks(self, filename, bookmarks):
         bookmarks = eval(bookmarks)
         old_slots = self.get_conf('bookmarks', default={})
         new_slots = update_bookmarks(filename, bookmarks, old_slots)
-        self.set_conf('bookmarks', new_slots)
+        if new_slots:
+            self.set_conf('bookmarks', new_slots)
 
     #------ File I/O
     def __load_temp_file(self):


Test patch: