2013-02-06 14 views
5

In Elisp questa pace del codice apparentemente facile non sposta il punto.con-current-buffer non sposta il punto

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

AFAIK with-current-buffer non deve ripristinare il punto nel buffer di destinazione. In caso contrario, come faccio a manipolare il punto in un buffer?

+0

Questo è il codice che ha funzionato - '(MAPC (lambda (vittoria) \t (a meno che (eq (selezionato-finestra) vincere) \t \t (con--finestra selezionata vincere \t \t (goto-char (punto -min)) \t \t (forward-line (1-lINE))))) \t (get-tampone-window-list Emms-lyrics-buffer nil t)) ' – navgeet

+1

raccomando' dolist' invece di 'MAPC '(leggermente più veloce, e spesso un po 'più lievemente rientrato). – Stefan

risposta

6

Penso che tu stia confondendo il punto del buffer con il punto della finestra. Se si desidera spostare il cursore in una finestra che mostra "pippo", è necessario selezionare tale finestra mentre si esegue lo goto-char, oppure è necessario utilizzare set-window-point. In generale un buffer ha N + 1 punti (uno è proprio e N sono per le N finestre che visualizzano il buffer).

0

provare a fare:

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

Anche questo non funziona. Btw, foo è un buffer appena creato. – navgeet

1

potrebbe essere necessario utilizzare switch-to-buffer e poi tornare indietro.