Gerhard Niklasch on Thu, 18 Dec 1997 17:26:39 +0100 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
Re: update 2.0.2.alpha |
In reply to Message-Id: <3750.199712181351@mordell.ex.ac.uk.maths.exeter.ac.uk> from John Cremona (Maths) <cremona@noether.ex.ac.uk>: > Dear Karim, He's away on well-earned Christmas holidays! > I think I have discovered the problem with gp under emacs under linux > which Kevin Buzzard had. I've just reproduced it under Solaris. It may be specific to some versions of emacs, and to some versions of readline, but it's not O/S specific. [...] > The macros RL_PROMPT_START_IGNORE and RL_PROMPT_END_IGNORE are > defined in readline.h. They are inserted before and after the escape > sequences which switch colors. Under emacs (under linux) these > display in the emacs buffer as ^A and ^B (I think they are '\001' and > '\002'). Right. > This stops the code in pari.el from finding the prompt > properly. (Unfortunately, omitting them stops readline from finding the prompt properly.) > I suggest that the color setting is turned > off altogether when gp is called with the -emacs switch, probably by > patching the function setdcolors. I think this was the intention of setting disable_colors = 1 when the -emacs option is seen. Unfortunately, setdcolors seems capable of ondoing this... but I'm not sure whether this is what causes the problem. <digression1> However... when asked nicely, newer (X-)emacses will happily do wonderful things with colours. Presumably this would need (considerable?) support from pari.el to implement. (I'm aware at least of a Perl mode which paints all sorts of things each in its own pastel shade, and gets mightily confused each time a double quote appears inside a comment. ;^) <digression2> Waitaminute, this is weird. When I run a 2.0.2.alpha `gp -emacs' from the command line of a color_xterm (under linux), and do an strace on it for good measure, I notice that *no escape or control codes at all are being output along with the prompt*, and indeed none of the colour settings in my .gprc are taking effect. The prompt _is_ a plain unadorned "? ". When, from emacs with pari.el[c] loaded, I do `C-u M-x gp' and specify `strace -s51 -o /some/suitable/logfile /path/to/gp' as the gp executable, however, I can see that the `\1\2' control thingies *are* being output before and after the "? ". (No colour escape sequences, though.) When I do the same thing but specify `/bin/echo Version 2.0.2' as the gp executable (admittedly it takes a weird imagination to come up with these things ;^), I can see that the -emacs option is being passed correctly to whatever emacs tries to execute as `gp'. Apparently some of the enquire-about-the-terminal-we're-connected-to wizardry in gp is coming up with an inappropriate answer when the `terminal' is an emacs buffer... Changing the gp-prompt-pattern's initialization string (in pari.el[.in]) to "^---- (type return to continue) ----\\|^[\C-a\C-b]*\\?[\C-a\C-b\C-j\t ]*" resolves the deadlock, but causes the ^A^B pairs to be displayed in the *PARI* buffer, which isn't nice either. </digressions> Other than that, try changing line 469 of src/gp/gp.c to read promptbuf = (test_mode || under_emacs) ? prompt: do_prompt(); and again line 505: promptbuf = under_emacs ? prompt : do_prompt(); (Seems to do the trick here, unless I've missed another occurrence outside the main loop.) And probably, unless and until something more appropriate happens, gp's prompt-morphing capabilities should not be used when running under emacs. (M-x gp-set-prompt doesn't work for me anyway; not even its own prompt comes out right.) Joyeuses fetes de Noel a tous, Gerhard