From: Xah Lee <xahlee@gmail.com>
To: help-gnu-emacs@gnu.org
Subject: Re: Why does buffer list not stay stable?
Date: Fri, 6 Mar 2009 09:00:12 -0800 (PST) [thread overview]
Message-ID: <c52349d2-64ca-44d5-9cfe-bb41c3d77b9f@v35g2000pro.googlegroups.com> (raw)
In-Reply-To: mailman.2474.1236318458.31690.help-gnu-emacs@gnu.org
On Mar 5, 9:47 pm, Samuel Wales <samolog...@gmail.com> wrote:
> I have a vexing problem with buffer ordering.
>
> I very frequently use next-buffer and previous-buffer[1]
> to navigate to buffers. If I am in a buffer and create a
> few more, I want all of them to be next to each other in the
> buffer list.
>
> I treat the list like a ring (or want to) -- I want the two
> commands to go in opposite directions on the ring. I don't
> care where the beginning and end of the buffer list are.
>
> But I want buffers that I create or switch to to be
> *nearby*.
>
> And I want the two commands to be *opposites*. Doing one a
> few times then the other the same number of times should
> return me to the same buffer.
>
> But it doesn't always work like that. Some buffers end up
> far away from where I am, for no apparent reason. And the
> commands are not opposites. This is disconcerting.
>
> If I am in an org mode buffer (say), and do egg-status, this
> brings up a buffer with diffs in it. If I then call a
> function that calls pop-to-buffer or switch-to-buffer, it
> takes me to a new buffer.[2] so far so good.
>
> Yet the egg-status buffer is nowhere to be seen (i.e. very
> far away on the ring).
>
> Any ideas here?
>
> P.S. I have also noticed that w3m buffers cluster together.
> I assume it's unrelated, although it is sometimes annoying.
>
> [1] I also tried a raise-buffer I came across many years
> ago, and bury-buffer.
>
> [2] Please disregard windows here. 99% of the time I
> use a single window. I almost never split them. I have
> pop-up-windows and same-window-* set to try to enforce this
> and most of the time they work (except where commands fail
> to respect pop-up-windows).
Do you have tabbar-mode on? that mode does some reordering as far is i
know, to keep its buffers in a tab group together.
i haven't studied exactly how buffers are ordered, but i do notice it
switch about, but probably in a severity you depict.
I have been using my own code for next/previous buffer for about over
a year. However, they are wrapper to next-buffer and previous-buffer,
and i don't notice ordering problems (unless if i have tabbar-mode
on). You might find it useful.
Here's the code:
(defun next-user-buffer ()
"Switch to the next user buffer in cyclic order.\n
User buffers are those not starting with *."
(interactive)
(next-buffer)
(let ((i 0))
(while (and (string-match "^*" (buffer-name)) (< i 50))
(setq i (1+ i)) (next-buffer) )))
(defun previous-user-buffer ()
"Switch to the previous user buffer in cyclic order.\n
User buffers are those not starting with *."
(interactive)
(previous-buffer)
(let ((i 0))
(while (and (string-match "^*" (buffer-name)) (< i 50))
(setq i (1+ i)) (previous-buffer) )))
(defun next-emacs-buffer ()
"Switch to the next emacs buffer in cyclic order.\n
Emacs buffers are those starting with *."
(interactive)
(next-buffer)
(let ((i 0))
(while (and (not (string-match "^*" (buffer-name))) (< i 50))
(setq i (1+ i)) (next-buffer) )))
(defun previous-emacs-buffer ()
"Switch to the previous emacs buffer in cyclic order.\n
Emacs buffers are those starting with *."
(interactive)
(previous-buffer)
(let ((i 0))
(while (and (not (string-match "^*" (buffer-name))) (< i 50))
(setq i (1+ i)) (previous-buffer) )))
The code is used in my ergoemacs project here:
http://code.google.com/p/ergoemacs/
by default, next-user-buffer has the shortcut key Ctrl+PageDown, and
next-emacs-buffer is Ctrl+Shift+PageDown.
(it was Ctrl + left/right arrows, but i decided those keys should stay
the standard editor behavior across platforms, of moving cursor by
word.)
Xah
∑ http://xahlee.org/
☄
next parent reply other threads:[~2009-03-06 17:00 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <mailman.2474.1236318458.31690.help-gnu-emacs@gnu.org>
2009-03-06 17:00 ` Xah Lee [this message]
2009-03-07 1:40 ` Why does buffer list not stay stable? Samuel Wales
2009-03-07 18:56 martin rudalics
2009-03-16 23:03 ` Samuel Wales
-- strict thread matches above, loose matches on Subject: below --
2009-03-06 5:47 Samuel Wales
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=c52349d2-64ca-44d5-9cfe-bb41c3d77b9f@v35g2000pro.googlegroups.com \
--to=xahlee@gmail.com \
--cc=help-gnu-emacs@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.