@@ -2494,17 +2494,32 @@ def revert(self):
2494
2494
filename = finfo .filename
2495
2495
if finfo .editor .document ().isModified ():
2496
2496
self .msgbox = QMessageBox (
2497
- QMessageBox .Warning ,
2498
- self .title ,
2499
- _ ("All changes to <b>%s</b> will be lost."
2500
- "<br>Do you want to revert file from disk?"
2501
- ) % osp .basename (filename ),
2502
- QMessageBox .Yes | QMessageBox .No ,
2503
- self )
2497
+ QMessageBox .Warning ,
2498
+ self .title ,
2499
+ _ ("All changes to file <b>%s</b> will be lost.<br>"
2500
+ "Do you want to revert it from disk?" ) %
2501
+ osp .basename (filename ),
2502
+ QMessageBox .Yes | QMessageBox .No ,
2503
+ self
2504
+ )
2505
+
2504
2506
answer = self .msgbox .exec_ ()
2505
2507
if answer != QMessageBox .Yes :
2506
2508
return
2507
- self .reload (index )
2509
+
2510
+ # This is necessary to catch an error when trying to revert the
2511
+ # contents of files not saved on disk (e.g. untitled ones).
2512
+ # Fixes spyder-ide/spyder#20284
2513
+ try :
2514
+ self .reload (index )
2515
+ except FileNotFoundError :
2516
+ QMessageBox .critical (
2517
+ self ,
2518
+ _ ("Error" ),
2519
+ _ ("File <b>%s</b> is not saved on disk, so it can't be "
2520
+ "reverted." ) % osp .basename (filename ),
2521
+ QMessageBox .Ok
2522
+ )
2508
2523
2509
2524
def create_new_editor (self , fname , enc , txt , set_current , new = False ,
2510
2525
cloned_from = None , add_where = 'end' ):
0 commit comments