Author terry.reedy
Recipients serhiy.storchaka, terry.reedy
Date 2016-06-07.01:51:15
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1465264277.94.0.411659394078.issue27173@psf.upfronthosting.co.za>
In-reply-to
Content
I looked at _set3 and it looks plausible and possibly complete other than testing.  I added something about testing customizations to #27099.  This applied cleanly to 3.6.  3.6 started, dialog opened, new key set selected, dialog closed, config-main.cfg looks good.  Open dialog, same as custom, close dialog, config-keys and config main changed as expected.  Open 3.5, open dialog, everything looks fine.

Now the problems.

1. To delete, one must select as current.  After deletion, config tries to reread the keyset just deleted.  This prints a warning to console for each item in the set, with message as to default used instead.   The same happens with deleting custom themes.  I may have noted this somewhere, but cannot find.

In any case, the solution for both problems is to either allow deletion of non-selected sets, and only such, or to switch to *something* before re-reading.  I open a new issue, #27245, for this.

2. More serious, the warnigs are followed by
Exception in Tkinter callback
Traceback (most recent call last):
  File "F:\Python\dev\35\lib\tkinter\__init__.py", line 1550, in __call__
    return self.func(*args)
  File "F:\Python\dev\35\lib\idlelib\configDialog.py", line 1182, in Ok
    self.Apply()
  File "F:\Python\dev\35\lib\idlelib\configDialog.py", line 1186, in Apply
    self.DeactivateCurrentConfig()
  File "F:\Python\dev\35\lib\idlelib\configDialog.py", line 1166, in DeactivateCurrentConfig
    instance.RemoveKeybindings()
  File "F:\Python\dev\35\lib\idlelib\EditorWindow.py", line 771, in RemoveKeybindings
    self.text.event_delete(event, *keylist)
  File "F:\Python\dev\35\lib\idlelib\MultiCall.py", line 391, in event_delete
    self.__binders[triplet[1]].unbind(triplet, func)
  File "F:\Python\dev\35\lib\idlelib\MultiCall.py", line 234, in unbind
    doit()
  File "F:\Python\dev\35\lib\idlelib\MultiCall.py", line 232, in <lambda>
    doit = lambda: self.bindedfuncs[triplet[2]][triplet[0]].remove(func)
ValueError: list.remove(x): x not in list

Hitting OK repeats warnings and traceback (the last line might have been a bit different the first time).  Only Cancel would close.
History
Date User Action Args
2016-06-07 01:51:18terry.reedysetrecipients: + terry.reedy, serhiy.storchaka
2016-06-07 01:51:17terry.reedysetmessageid: <1465264277.94.0.411659394078.issue27173@psf.upfronthosting.co.za>
2016-06-07 01:51:17terry.reedylinkissue27173 messages
2016-06-07 01:51:15terry.reedycreate