Yrittäkääpä kirjoittaa ko. Emacsilla C-moodissa seuraavaa tiedostoa:
#include <stdio.h>
int main(void)
{
return 0;
}
Kaikki sujuu hyvin puolipisteeseen (;) asti. Kun sitten painaa sitä
puolipistettä näppäimistöllä, koko Emacs hyytyy siihen paikkaan. Ainoa
keino päästä siitä eroon on tappaa koko prosessi SIGINT-, SIGTERM- tai
SIGKILL-signaalilla.
Koska tuo ylläoleva ohjelma on täysin ANSI C -standardin mukainen, ei
GNU Emacs 20.5.1:n C-moodi toimi ihan oikein.
--
/-- Joona Palaste (pal...@cc.helsinki.fi) ---------------------------\
| Kingpriest of "The Flying Lemon Tree" G++ FR FW+ M- #108 D+ ADA N+++|
| http://www.helsinki.fi/~palaste W++ B OP+ |
\----------------------------------------- Finland rules! ------------/
"As we all know, the hardware for the PC is great, but the software sucks."
- Petro Tyschtschenko
Tämä nyt ei liity mitenkään yksistään linuxiin, mutta kokeilitko
painaa control-g:tä. Ainakin tässä Xemacs 21.1.12:ssa
ja Gnu emacs 20.6.1 se auttaa. Vika on mitä todennäköisimmin
c-modessa, eikä itse (x)emacsissa
-ilkka
> Löysinpä kivan bugin GNU Emacs 20.5.1:stä...
Sama bugi näyttää olevan Xemacs 31.1.9:ssä. Kuten Illka Oksanen totesi
viestissä <m3d7bxg...@c208d.mtalo.ton.tut.fi> kyseessä on varmasti
c-moden ongelma.
> Kaikki sujuu hyvin puolipisteeseen (;) asti. Kun sitten painaa sitä
> puolipistettä näppäimistöllä, koko Emacs hyytyy siihen paikkaan.
Puolipiste suorittaa c-moodissa komennon c-electric-semi&comma.
Nuo .*-electric-.* komennot myös sisentävät rivin käytössä olevien
sisennyssääntöjen mukaisesti. C-moden sisennys on kontekstipohjainen
ja koodi nähtävästi jää ikiloopiin yrittäessään selvittää kyseisen
rivin kontekstia. Ja siitähän pääsee pois C-g:llä.
> Koska tuo ylläoleva ohjelma on täysin ANSI C -standardin mukainen, ei
> GNU Emacs 20.5.1:n C-moodi toimi ihan oikein.
Onko? C-moden sisennysalgoritmille näyttää tuottavan ongelmia se, että
preprosessorin "#include" -komennon alussa on välilyöntejä. Ja käsittääkseni
C-standardi sanoo, että noiden on oltava rivin alussa.
--
Juha Autero
http://www.iki.fi/jautero/
Eschew obscurity!