2013-02-06 77 views
5

在Elisp中,這種看似簡單的代碼和平實際上並沒有改變這一點。帶電流緩衝區不移動點

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

AFAIK with-current-buffer不應該恢復對目標緩衝區的點。 如果不是,那我該如何操作緩衝區中的點?

+0

這是工作的代碼 - '(MAPC(拉姆達(WIN) \t(除非(EQ(選擇窗口)贏) \t \t(與選擇的窗口贏得 \t \t(後藤炭(點-min)) \t \t(forward-line(1- line))))) \t(get-buffer-window-list emms-lyrics-buffer nil t))' – navgeet

+1

我推薦'dolist'而不是'mapc '(稍快一點,並且經常縮進一點)。 – Stefan

回答

6

我覺得你把緩衝區的點與窗口點混淆。如果要在某個顯示「foo」的窗口中移動光標,則需要在執行goto-char時選擇該窗口,否則您需要使用set-window-point。通常,一個緩衝區有N + 1個點(其中一個是它自己的,N是用於顯示緩衝區的N個窗口)。

0

嘗試做:

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

這也行不通。順便說一句,foo是一個新創建的緩衝區。 – navgeet

1

您可能需要使用switch-to-buffer然後再切換回來。