(require 'cl) (defun chery-switch-buffers () (interactive) (let* ((frame (selected-frame)) (window (selected-window)) (bcount (if (and (eq last-command 'chery-switch-buffers) (eq chery-last-window window)) chery-buffer-count 1)) (blist (buffer-list frame)) (bslist (nthcdr bcount blist))) (setq chery-last-window (selected-window)) (while (and bslist (string-match "^ " (buffer-name (car bslist)))) (setq bslist (cdr bslist)) (setq bcount (1+ bcount))) (modify-frame-parameters frame (list (cons 'buffer-list (concatenate 'list (subseq blist bcount (1+ bcount)) (subseq blist 1 bcount) (subseq blist 0 1) (subseq blist (1+ bcount)))))) (set-window-buffer window (elt blist bcount)) (setq chery-buffer-count (1+ bcount))))