| 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