dev-python/bicyclerepair in the tree do nothing for IDLE included in Python 2.3, 2.4. It is possible to use BicycleRepaiMan from IDLE of such versions, in some sense. Using the following patches, BicycleRepaiMan can be used from IDLE via keybord shortcuts, though the menu doesn't appear (it seems the upstream bug). Reproducible: Always Steps to Reproduce:
Created attachment 67828 [details, diff] patch against bicyclerepair-0.9.ebuild The patch is against the ebuild in the tree but contains the fixes of #92219
Created attachment 67829 [details, diff] patch against BicycleRepairMan_Idle.py Fix for strange character problem of BicycleRepairMan_Idle.py.
Created attachment 116568 [details] bicyclerepair-0.9.ebuild Fixes unicode bug in Matsui's patch, plus an additional unicode bug. Also adds vim support via USE flag.
Created attachment 116569 [details, diff] bicyclerepair-0.9-stripunicode.patch
*** Bug 174940 has been marked as a duplicate of this bug. ***
This patch fixes the unicode problem, and if you follow the instructions from the elog output you will get a BicycleRepairMan menu item in idle, but the menu is empty for me using Python 2.5. I haven't tested it on 2.4. If it doesn't work in 2.4 I'd suggest removing idle support from BRM because it hasn't been updated upstream since 2004.
This lengthy comment is about empty menu. Nowadays, I use rope for python refactoring instead of BRM, but anyway... In /usr/share/lib/python2.4/idlelib/extend.txt: At the moment, extensions cannot define whole new menus; they must define entries in existing menus. Some menus are not present on some windows; such entry definitions are then ignored, but key bindings are still applied. (This should probably be refined in the future.) That's half of the reason why no menu entries appear. The rest half is of course in BicycleRepairMan_Idle.py, but beforehand, let's take a look at the mechanism written in the same file. An extension can define menu entries. This is done with a class or instance variable named menudefs; it should be a list of pairs, where each pair is a menu name (lowercase) and a list of menu entries. Each menu entry is either None (to insert a separator entry) or a pair of strings (menu_label, virtual_event). Here, menu_label is the label of the menu entry, and virtual_event is the virtual event to be generated when the entry is selected. An underscore in the menu label is removed; the character following the underscore is displayed underlined, to indicate the shortcut character (for Windows). The essential part is the 2nd sentence of the paragraph. Ok. Let's go back to BicycleRepairMan. It has the class BicycleRepairMan_Idle in BicycleRepairMan_Idle.py file. The definition looks like: class BicycleRepairMan_Idle: menudefs = [ ('bicycleRepairMan', [ ... Clearly, the name 'bicycleRepairMan' is not IN EXISTING MENUS. A simple fix can be to replace 'bicycleRepairMan' with 'edit', though then the 'edit' menu get ugly.
*** Bug 177317 has been marked as a duplicate of this bug. ***
FYI: A part of this bug to fix syntax errors is done in #232594.
This should go upstream.