Some interesting thoughts here; hopefully Ben will make issues for these on the
tracker. Some things we've already discussed, some things are a lot of work,
and some things are new. I hope you don't mind me forwarding this to the ML,
Ben.

----- Forwarded message from Ben Papworth <[email protected]> -----

Authentication-Results: mx.google.com; spf=neutral (google.com: 212.82.104.172 
is neither permitted nor denied by domain of [email protected]) 
[email protected]; dkim=pass (test mode) [email protected]
X-YMail-OSG:
        
cIMPdo4VM1mdZkE7EgT1LgafduE37qVwFwLQcryEw5QX2VezQh5jJpBAK7Zb5PB5fI61Qz812UDFPipXqlBkdD8dVHS_U3hwMZLoVNDpqLbpLXWfBzN_AOStT6MY1TtL3xEK.ihl6K99rUMKK5eL4rXhUPyPR3SPPhO1IeV97ahzTiQae3PawBTXRyio25U_ezVAL2jI4buAuk.pfOoHVeyuCopEagspwkyV3jQy
        LFUx5ODFsBO2Pg890QQYHD0w3qYmNvUxsxkEP7favQv3f_NScKywZikL3caJJg--
From: Ben Papworth <[email protected]>
Subject: Thanks for bpython! (and some suggestions)
To: [email protected]

Hi Bob,

Thanks for developing bpython - I've been incrementally developing something 
similar myself over the last year, so it's great to find someone who's already 
got there with the whole curses thang. I'd like to use this as a base for 
developing a console component in IronPython.

Can I make a few suggestions? I've got the source, so I'll see whether I can 
come up with some patches for you to evaluate.

1) Don't show internal/private (__ prefixed) attributes first.
>>> a=""
>>> a.
┌──────────────────────────────────────────────────────────────┐
│__add__                     __class__                         │
│__contains__                __delattr__                       │
│__doc__                     __eq__                            │
│__format__                  __ge__                            │
│__getattribute__            __getitem__                       │
│__getnewargs__              __getslice__                      │
│__gt__                      __hash__                          │
│__init__                    __le__                            │
│__len__                     __lt__                            │
│__mod__                     __mul__                           │
│__ne__                      __new__                           │
│__reduce__                  __reduce_ex__                     │
│__repr__                    __rmod__                          │
│__rmul__                    __setattr__                       │
│__sizeof__                  __str__                           │
│__subclasshook__            _formatter_field_name_split       │
│_formatter_parser           capitalize                        │
│center                      count                             │
│decode                      encode                            │
│endswith                    ...                               │
└──────────────────────────────────────────────────────────────┘

I would suggest either changing the sorting order, or even provide an option to 
not display these by default (i.e., if you did want to see them, then writing 
'a._' should still expose them all.)

2) I like the rewind function. I don't understand why all Python shells, after 
you enter a multi-line input, don't treat that whole block as a unit, rather 
than scrolling through each line as if it was independent. The rewind is much 
closer to what we really need, but I'd like to have a complete editor for the 
block.

3) Use a key combination (I like ctrl-space) to change the list of possible 
completions displayed, if they fit onto more than one screen, i.e., suggestion 
1) has a ... and this should indicate that the user can press ctrl-space to see 
the next screen.

4) I think I might have found a bug with completion of filenames. On my Mac, if 
I type
>>> a = "/
then press tab, I get
>>> a="/Applications/
┌──────────────────────────────────────────────────────────────┐
│/Applications/                /bin/                           │
│/cores/                       /dev/                           │
│/Developer/                   /etc/                           │
│/home/                        /Library/                       │
│/mach_kernel                  /net/                           │
│/Network/                     /opt/                           │
│/private/                     /sbin/                          │
│/System/                      /tmp/                           │
│/User Guides And Information/ /Users/                         │
│/usr/                         /var/                           │
│/Volumes/                                                     │
└──────────────────────────────────────────────────────────────┘
If I then delete the leading '/', and press tab again, I get
>>> a=/bin/
┌──────────────────────────────────────────────────────────────┐
│/Applications/                /bin/                           │
│/cores/                       /dev/                           │
│/Developer/                   /etc/                           │
│/home/                        /Library/                       │
│/mach_kernel                  /net/                           │
│/Network/                     /opt/                           │
│/private/                     /sbin/                          │
│/System/                      /tmp/                           │
│/User Guides And Information/ /Users/                         │
│/usr/                         /var/                           │
│/Volumes/                                                     │
└──────────────────────────────────────────────────────────────┘
It looks like the editor still thinks it's in the mode of cycling over the '/' 
completion, rather than identifying the completions of '/Applications', and has 
managed to delete the " before the completion.

4) Also, it looks like there is an issue with filenames that contain a '.' - 
i.e., expanding /Applications/ gives
>>> a="/Applications/Address Book.app/
┌──────────────────────────────────────────────────────────────┐
│app/                       /Applications/AppleScript/         │
│app/                       app/                               │
│app/                       app/                               │
│app/                       /Applications/DivX/                │
│app/                       app/                               │
│app/                       app/                               │
│app/                       app/                               │
│/Applications/Games/       app/                               │
│/Applications/Google/      app/                               │
│app/                       app/                               │
│app/                       app/                               │
│app/                       app/                               │
│app/                       app/                               │
│/Applications/MacPorts/    app/                               │
│/Applications/Parallels/   app/                               │
│app/                       app/                               │
│app/                       app/                               │
│app/                       app/                               │
│app/                       app/                               │
│/Applications/Utilities/   app/                               │
└──────────────────────────────────────────────────────────────┘
(i.e., it's stripped all the completions that finish with .app/ to app/)

Anyway, thanks for all your hardwork, and I'll see how I can help out myself.

Thanks,
Ben


----- End forwarded message -----

-- 
Bob Farrell

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"bpython" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/bpython?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to