问题
So I generally have 3 buffers open in Emacs.
- One buffer for the actual code I am writing.
- One buffer for the unit test for said code.
- A third buffer that displays the results of the unit test. This buffer comes into being below the two other buffers when I run my unit test C-x SPACE.
How do I disable this third buffer such that when I press C-x o I am only switching between buffer 1 and buffer 2? Currently, I switch between buffer 1, then buffer 2, then buffer 3, then buffer 1, etc. To be specific, I want C-x o to only switch between buffer 1 and 2.
Thank you.
回答1:
A general solution to this (can look) something like the following:
(defvar ignore-windows-containing-buffers-matching-res '("\\*Help")
"List of regular expressions specifying windows to skip (if window contains buffer that matches, skip)")
(defadvice other-window (before other-window-ignore-windows-containing activate)
"skip over windows containing buffers which match regular expressions in 'ignore-windows-containing-buffers-matching-res"
(if (and (= 1 (ad-get-arg 0)) (interactive-p))
(let* ((win (next-window))
(bname (buffer-name (window-buffer win))))
(when (some 'identity (mapcar '(lambda (re)
(string-match re bname))
ignore-windows-containing-buffers-matching-res))
(ad-set-arg 0 2)))))
Customize the variable to be a regular expression matching the buffer names you want to skip.
回答2:
Trey's answer will do exactly what you want (at least it looks like it will; I haven't tried it). A more generic solution would be to use swbuff
with either swbuff-x
or my own swbuff-advice
. Info about all three can be found on the Emacs Wiki swbuff page.
来源:https://stackoverflow.com/questions/1574922/how-can-i-make-window-movement-commands-ignore-a-certain-window