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