例如,在编辑Emacs lisp文件test.el
时,我想在当前缓冲区中标记文本(例如函数的名称)(我使用单个窗口的单个框架)然后按键盘快捷键将当前窗口分成两部分,一部分在另一部分之上。顶部窗口应该按原样显示我的原始缓冲区,底部窗口应该在定义函数的位置显示缓冲区(如(defun test-fun ...
)。
我试过这段代码:
(defun test-split ()
(interactive)
(split-window-below 28)
(let (( w (next-window)))
(let ((buf (window-buffer w)))
(with-current-buffer buf
(beginning-of-buffer)
(re-search-forward "defun test-fun ")))))
但它不起作用..(它搜索顶部窗口,而不是底部窗口)
答案 0 :(得分:3)
两个窗口显示相同的缓冲区,因此with-current-buffer
对原始窗口有效,因此Emacs无需切换到另一个窗口。
您可以像这样修改代码:
(defun test-split ()
(interactive)
(split-window-below 28)
(save-selected-window
(select-window (next-window))
(beginning-of-buffer)
(re-search-forward "defun test-fun ")))