在Elisp中,這種看似簡單的代碼和平實際上並沒有改變這一點。帶電流緩衝區不移動點
(with-current-buffer "foo"
(goto-char (point-max)))
AFAIK with-current-buffer
不應該恢復對目標緩衝區的點。 如果不是,那我該如何操作緩衝區中的點?
在Elisp中,這種看似簡單的代碼和平實際上並沒有改變這一點。帶電流緩衝區不移動點
(with-current-buffer "foo"
(goto-char (point-max)))
AFAIK with-current-buffer
不應該恢復對目標緩衝區的點。 如果不是,那我該如何操作緩衝區中的點?
我覺得你把緩衝區的點與窗口點混淆。如果要在某個顯示「foo」的窗口中移動光標,則需要在執行goto-char
時選擇該窗口,否則您需要使用set-window-point
。通常,一個緩衝區有N + 1個點(其中一個是它自己的,N是用於顯示緩衝區的N個窗口)。
您可能需要使用switch-to-buffer
然後再切換回來。
這是工作的代碼 - '(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
我推薦'dolist'而不是'mapc '(稍快一點,並且經常縮進一點)。 – Stefan