when i get time i think we might want to do the same in the STRING_ESCAPE state too, and it will need miod's ok
On Fri, Jul 29, 2011 at 09:41:55AM +0200, David Coppa wrote: > Hi Nicholas, > > What about this? > > On Tue, Jul 26, 2011 at 7:05 PM, David Coppa <dco...@gmail.com> wrote: > > On Tue, Jul 26, 2011 at 9:23 AM, Nicholas Marriott > > <nicholas.marri...@gmail.com> wrote: > >> Yes it is trying to set the window title (three times in fact for some > >> reason): > >> > >> ^[]0;Paolo Fresu & Uri Caine - Darn That Dream^G > >> > >> IIRC this will make wscons freeze. This is because it expects OSC to be > >> terminated by ST (\033\) not by ^G (\007). So it sits waiting for the > >> end that will never arrive. > >> > >> I can't try it right now but you will probably be able to see the same > >> with eg: > >> > >> $ printf "\033]0;abc\007" > >> > >> If that does reproduce the behaviour then that's the problem. > >> > >> I think wscons actually technically does the right thing here - C0 are > >> supposed to operate as normal inside escape sequences. I'm not sure > >> where this idea that BEL should terminate OSC came from. However, it is > >> pretty much the de facto standard now (ie, xterm supports it). Something > >> like this might do it but not tested: > >> > >> Index: wsemul_vt100.c > >> =================================================================== > >> RCS file: /cvs/src/sys/dev/wscons/wsemul_vt100.c,v > >> retrieving revision 1.27 > >> diff -u -p -r1.27 wsemul_vt100.c > >> --- wsemul_vt100.c ? ? ?1 Sep 2010 21:17:16 -0000 ? ? ? 1.27 > >> +++ wsemul_vt100.c ? ? ?26 Jul 2011 07:19:20 -0000 > >> @@ -386,7 +386,10 @@ wsemul_vt100_output_c0c1(struct wsemul_v > >> ? ? ? ? ? ? ? ?/* ignore */ > >> ? ? ? ? ? ? ? ?break; > >> ? ? ? ?case ASCII_BEL: > >> - ? ? ? ? ? ? ? wsdisplay_emulbell(edp->cbcookie); > >> + ? ? ? ? ? ? ? if (edp->state == VT100_EMUL_STATE_STRING) > >> + ? ? ? ? ? ? ? ? ? ? ? edp->state = VT100_EMUL_STATE_NORMAL; > >> + ? ? ? ? ? ? ? else > >> + ? ? ? ? ? ? ? ? ? ? ? wsdisplay_emulbell(edp->cbcookie); > >> ? ? ? ? ? ? ? ?break; > >> ? ? ? ?case ASCII_BS: > >> ? ? ? ? ? ? ? ?if (edp->ccol > 0) { > > > > Your patch works. > > > > ncmpcpp no longer hangs on console *with enable_window_title set to yes*. > > > > Can it be committed? > > > > cheers, > > David > >