Ich arbeite gerade an einer elisp Funktion, die an einen anderen Ort fährt, eine Funktion ausführt und dann zur Position zurückkehrt. Mein einziges Problem ist, dass, wenn die Funktion Text einfügt, die Position, die ich gespeichert habe, nicht mehr dort ist, wo ich sein möchte. Zum Beispiel, sagen, ich habe die folgende Zeichenfolge:Elisp: Speichern einer Position, Einfügen von Text davor und Zurückkehren zum selben Ort
Hello World
Und lassen Sie uns sagen, dass ich auf der ‚W‘ bin an Position 6. Und lassen Sie uns sagen, dass ich ein anderes „Hallo“ am Anfang wie folgt eingefügt werden soll:
Die Art, wie ich es jetzt mache, würde ich 6 in einer Variablen speichern, fügen Sie das Hallo ein, dann zurück zu Position 6. Aber jetzt ist das zweite Hallo auf Position 6 und ich komme zurück falscher Ort!
Im Moment mache ich so etwas wie dieses:
(setq my-retloc (point))
(move-function)
Dann in der Endhaken der Move-Funktion:
(do-stuff)
(goto-char my-retloc)
Leider ist dieser Haken am Ende tun, ist nicht wirklich vermeidbar. Gibt es einen Weg in elisp, um sicherzustellen, dass ich an die richtige Position zurückkehren würde?
Danke für die Antwort! Dies löst jedoch mein Problem nicht ganz, da ich die Rückgabe in einer anderen Funktion durchführen muss. Ich versuche, mit ace-jump den Cursor zu bewegen, aber aus irgendeinem Grund verweigert er die Ausführung in der richtigen Reihenfolge. Als Ergebnis muss ich meine Position in einer Funktion speichern und meine Position in einer anderen Funktion wiederherstellen (Endhaken des As-Jumps). Ich weiß wirklich nicht warum, aber Ace-Jump spielt nicht gut mit Save-Excursion. – user1539179