Emacs: Next/Previous User Buffer đ
emacs has commands to switch to prev/next buffer.
next-buffer
ăCtrl+x Ctrl+âă- switch to next buffer.
previous-buffer
ăCtrl+x Ctrl+âă- switch to previous buffer.
One problem is that you cannot hold down the key for the command to repeat.
Another problem is that they will go thru many buffers user are not interested in cycling thru.
Examples of emacs generated buffers:
*scratch*
*Messages*
*shell*
*Shell Command Output*
*Occur*
*Completions*
*Apropos*
*info*
Cycle Thru User Buffers
Here are commands to cycle thru user buffers.
(defun xah-next-user-buffer () "Switch to the next user buffer. âuser bufferâ is determined by `xah-user-buffer-q'. URL `http://xahlee.info/emacs/emacs/elisp_next_prev_user_buffer.html' Version 2016-06-19" (interactive) (next-buffer) (let ((i 0)) (while (< i 20) (if (not (xah-user-buffer-q)) (progn (next-buffer) (setq i (1+ i))) (progn (setq i 100)))))) (defun xah-previous-user-buffer () "Switch to the previous user buffer. âuser bufferâ is determined by `xah-user-buffer-q'. URL `http://xahlee.info/emacs/emacs/elisp_next_prev_user_buffer.html' Version 2016-06-19" (interactive) (previous-buffer) (let ((i 0)) (while (< i 20) (if (not (xah-user-buffer-q)) (progn (previous-buffer) (setq i (1+ i))) (progn (setq i 100))))))
You need the following to determine what's user buffer. For example, do you want to cycle thru dired buffer? How about shell?
Just override this function if you want to customize it.
(defun xah-user-buffer-q () "Return t if current buffer is a user buffer, else nil. Typically, if buffer name starts with *, it's not considered a user buffer. This function is used by buffer switching command and close buffer command, so that next buffer shown is a user buffer. You can override this function to get your idea of âuser bufferâ. version 2016-06-18" (interactive) (if (string-equal "*" (substring (buffer-name) 0 1)) nil (if (string-equal major-mode "dired-mode") nil t )))
Cycle Thru Emacs Buffers
Here's commands to cycle thru emacs's buffers.
(defun xah-next-emacs-buffer () "Switch to the next emacs buffer. âemacs bufferâ here is buffer whose name starts with *. URL `http://xahlee.info/emacs/emacs/elisp_next_prev_user_buffer.html' Version 2016-06-19" (interactive) (next-buffer) (let ((i 0)) (while (and (not (string-equal "*" (substring (buffer-name) 0 1))) (< i 20)) (setq i (1+ i)) (next-buffer)))) (defun xah-previous-emacs-buffer () "Switch to the previous emacs buffer. âemacs bufferâ here is buffer whose name starts with *. URL `http://xahlee.info/emacs/emacs/elisp_next_prev_user_buffer.html' Version 2016-06-19" (interactive) (previous-buffer) (let ((i 0)) (while (and (not (string-equal "*" (substring (buffer-name) 0 1))) (< i 20)) (setq i (1+ i)) (previous-buffer))))
Latest code in Emacs: Xah Fly Keys or ergoemacs-mode.
Be sure to set a easy key for them, such as F11 F12 [see Emacs: Define Keybinding]