2013-02-06 11 views
5

In Elisp bewegt sich dieser scheinbar einfache Code-Frieden nicht wirklich den Punkt.with-current-buffer bewegt sich nicht Punkt

(with-current-buffer "foo" 
    (goto-char (point-max))) 

AFAIK with-current-buffer sollte den Punkt im Zielpuffer nicht wiederherstellen. Wenn nicht, wie manipuliere ich dann Punkt in einem Puffer?

+0

Dies ist der Code, der arbeitete - '(MAPC (Lambda (win) \t (es sei denn, (eq (selected-Fenster) gewinnen) \t \t (mit ausgewählten Fenstern \t \t (zum-char (Punkt gewinnen -min)) \t \t (forward-line (1- Linie))))) \t (get-Puffer-Fenster-Liste emms-Text-Puffer nil t)) ' – navgeet

+1

ich empfehle' dolist' statt 'MAPC '(marginal schneller und oft Einrückungen ein bisschen besser). – Stefan

Antwort

6

Ich denke, du verwirrst den Punkt des Puffers mit dem Fensterpunkt. Wenn Sie den Cursor in einem Fenster mit "foo" bewegen möchten, müssen Sie dieses Fenster auswählen, während Sie goto-char ausführen, andernfalls müssen Sie set-window-point verwenden. Im Allgemeinen hat ein Puffer N + 1 Punkte (einer ist sein eigener und die N sind für die N Fenster, die den Puffer anzeigen).

0

Try tun:

(set-buffer "foo") 
(goto-char (point-max)) 
+0

Das funktioniert auch nicht. Btw, foo ist ein frisch erstellter Puffer. – navgeet

1

Möglicherweise müssen switch-to-buffer verwenden, und wechseln Sie dann wieder.

Verwandte Themen