2017年11月18日土曜日

複数バッファを右回転に移動する

 左右に表示したバッファを入れ替えるコードはGoogleさんに聞いたら見つけたのだけど、三つだと対応してなかったので自分でつくってみた。うん。動いているみたい。

by GNU Emacs 24.5.1

(require 'cl)

(defun y-switch()
  "bufferの位置を回転させる"
  (interactive)
  (y-switch-windows-or-buffers 'y-roll))

(defun y-roll(list)
  "listをロータリーする"
  (append1 (cdr list)(car list)))

(defun y-switch-windows-or-buffers(func)
  "funcの並び替えロジックでwindowとbufferの組み合わせを変更する"
  (let* ((windows (window-list))
  (bufs (loop for x in windows
       collect
       (window-buffer x))))
    (loop for x in (funcall func windows)
   for y in bufs
   do
   (set-window-buffer x y))))

(defun append1 (list obj)
  "appendの拡張版"
  (append list (list obj)))