This email was originally to Ian, but he requested I resend it to the list. I'm just replying because when I bounced the email via mutt the "To" and "Reply-To" fields were still to Ian.
-- Erik On Tue, Apr 22, 2008 at 11:08:58AM -0400, Erik Osheim wrote: > Hey Ian, > > So, I have been developing an emacs-like, curses-based editor in python > (Pmacs[1]) for a couple of years now (which I do all my work in at this > point). After much reflection, I realized that I should actually try to > support Unicode so that non-English speakers would have the option to > use it. This may have been a mistake. > > I've seen some emails you sent around 2006 detailing problems you found > with Python's curses bindings. I'm running into some of those same > problems now. However, based on the version of Urwid I have installed > (0.9.7.1) it seems like you have it figured out... my test[2] shows > both the "print" and the "urwid" case working, whereas the "curses" > case falls down. > > I read Urwid's curses_display module, but I didn't see anything > substantially different in your use of curses from mine. Do you have > any advice (other than giving up on curses and using Uriwd[3])? I > noticed you still have disclaimers about UTF-8 on your main page--what > is the state of the curses module in your opinion? > > Thanks, > > -- Erik > > [1] http://www.bearhome.net/pmacs > > [2] Attached script, run under python 2.4.4 and 2.6a2 on xterm (with > UTF8 enabled). curses module linked to ncursesw (for what it's worth). > LANG=en_US.utf8, TERM=xterm. > > [3] After seeing Urwid I feel dumb for having implemented my own > routines for syntax highlighting, search-as-you-type, drawing, > split-window, etc. That said, I also fear reimplementing them *in* > Urwid. > import sys > > # data is accented-e, AE, A-with-circle, o-with-slash, > # a-with-circle, --, two more a-with-circles, o-with-slash > data = u'\xe9\xc6\xc5\xf8\xe5\u2013\xe5\xe5\xf8' > > arg = None > if sys.argv[1:]: arg = sys.argv[1] > > if arg == 'curses': > import curses > stdscr = curses.initscr() > curses.noecho() > stdscr.addstr(data.encode('utf-8')) > stdscr.refresh() > stdscr.getch() > curses.echo() > curses.endwin() > elif arg == 'urwid': > import urwid.curses_display, urwid > ui = urwid.curses_display.Screen() > def run(): > canvas = urwid.Canvas([data.encode('utf-8')]) > ui.draw_screen((20, 1), canvas) > while not ui.get_input(): > pass > ui.run_wrapper(run) > elif arg == 'print': > print data.encode('utf-8') > else: > print "run with 'print', 'urwid', or 'curses' as an argument" > _______________________________________________ > Urwid mailing list > [email protected] > http://lists.excess.org/mailman/listinfo/urwid _______________________________________________ Urwid mailing list [email protected] http://lists.excess.org/mailman/listinfo/urwid
