[Arcana] Because it just kills me to type C-x b *com TAB RET when I don't really have to.
roland at frob.com
Thu Mar 12 19:03:22 CDT 2009
I don't have one of those. I have this, and C-c c is switch-to-compilation.
(defun really-compilation-buffer-p (buffer)
(and (null (buffer-file-name buffer)) (compilation-buffer-p buffer)))
(if (fboundp 'next-error-find-buffer)
(defun really-compilation-find-buffer (&optional avoid-current)
(next-error-find-buffer avoid-current nil
(lambda () (null (buffer-file-name)))))
(fset 'really-compilation-find-buffer 'compilation-find-buffer))
(defun switch-to-compilation ()
"Switch to a compilation buffer.
If the current buffer is a compilation buffer, switch to a different one."
(let ((buf (current-buffer)))
(switch-to-buffer (really-compilation-find-buffer t))
(if (really-compilation-buffer-p buf)
(if (y-or-n-p "No compilation started! Did you want one? ")
There is also the attached. Between all that, my idiom is:
* C-c c until I see the right one (I guess for some kind of loon who only
works on one program at a time, it would always be the right one).
* C-x c or C-u C-x c <edit> RET
Your style would probably bug me before long because it's not uncommon for
me to be doing two builds from one srcdir in parallel (a -m32 and a -m64,
or different kernel configs, different --enable-foos, etc). I tend to keep
state in two ways: rename a compilation buffer in the right
default-directory, and navigate to that with C-c c or explicitly; use many
shell buffers where I use cd/pushd/etc to match the mental focus that
buffer represents at that time, the local C-x c history is what I want to
do there, and navigate to that with C-c s or explicitly. C-c s is:
(defun switch-to-shell ()
"Switch to a buffer in shell-mode."
(let ((bufs (buffer-list)))
(while (and bufs
(or (not (memq (cdr (assq 'major-mode
(buffer-local-variables (car bufs))))
(get-buffer-window (car bufs) t)))
(setq bufs (cdr bufs)))
(switch-to-buffer (car bufs)))
((eq major-mode 'shell-mode)
(message "This is the only shell buffer."))
(message "Starting new shell.")
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
More information about the Arcana