ich habe ein seltsames Problem. Eine Funktion soll unter einer bestimmten Bedingung beendet werden und ich weiß genau, dass die Bedingung erfüllt ist. Trotzdem beendet sie sich nicht.
Ich habe die fragliche Funktion mal nach nopaste hochgeladen: 40283 (http://nopaste.debianforum.de/40283)
Es ist ein Ausschnitt aus der Datei "main.c" des Texteditors Microemacs (uEmacs/PK), den ich gerade bearbeite.
Das Originalprojekt wird von Linus Torvalds maintained:
s. hier: https://git.kernel.org/pub/scm/editors/ ... uemacs.git
oder hier: https://github.com/torvalds/uemacs
Ich bin gerade dabei, verschiedene Betriebsmodi zu integrieren (so wie bei vi(m)). Klappt soweit auch schonmal ganz gut (wenn auch noch nicht ganz fertig), es gibt gerade "nur" ein Problem (das ich aber wenigstens ganz klar eingrenzen kann):
Ich bin also nicht im "Insert"-Modus, sondern im Normalmodus. Nun drücke ich im Editor die Pfeiltaste nach unten.
Jetzt kommt Zeile 13 ins Spiel: Die Funktion "getbind" schaut in der Tastenkombinations-Datenbank nach, ob die Taste "Pfeiltaste nach unten" an eine Funktion gebunden ist.
Das ist sie natürlich:
Code: Alles auswählen
{SPEC | 'B', forwline}
,
So, nun funktioniert das auch!
D.h., getbind findet die Funktion und "execfunc" ist nicht (!!!) Null (s. Zeile 13/14), sondern hat den Inhalt "forwline".
Dennoch erscheint die Warnung "key not bound" (Zeile 28). Und das, obwohl die Funktion "forwline" ausgeführt wurde und somit die Funktion "execute" mittels "return status" (Zeile 18) hätte beendet werden müssen.
Möchte mir jemand helfen? Wird wahrscheinlich wieder ein ganz einfaches Problem sein, das ein Profi auf den ersten Blick sieht...