diff --git a/e2wm.el b/e2wm.el index 8b89b11..933ad88 100644 --- a/e2wm.el +++ b/e2wm.el @@ -3516,6 +3516,8 @@ Do not select the buffer." "\\*\\(scratch\\|Messages\\)\\*" bn)))))) +(defvar e2wm:c-array-smart-buffers-functions nil) ; 最初にバッファのリストを返したものが有効 + (defun e2wm:dp-array-make-recipe (cols rows) ;; cols x rows の recipe を作る (let* ((sz-summary 0.12) @@ -3615,7 +3617,7 @@ Do not select the buffer." :leave 'e2wm:dp-array-leave)) (defvar e2wm:dp-array-buffers-function - 'e2wm:dp-array-get-recordable-buffers) ; この関数を切り替える + 'e2wm:dp-array-get-smart-buffers) ; この関数を切り替える (defvar e2wm:dp-array-buffers-function-backup nil) ; toggleする際のバックアップ @@ -3682,6 +3684,22 @@ Do not select the buffer." do (push b ret)) (nreverse ret))) +(defun e2wm:dp-array-get-smart-buffers () + (loop for f in e2wm:c-array-smart-buffers-functions + for ret = (funcall f) + if ret return ret + finally return (e2wm:dp-array-get-recordable-buffers))) + +(defun e2wm:dp-array-get-same-mode-buffers () + (loop with mmode = (buffer-local-value 'major-mode (current-buffer)) + for b in (buffer-list) + if (eq (buffer-local-value 'major-mode b) mmode) + collect b)) + +(defun e2wm:dp-array-get-same-mode-buffers-if-not-recordable () + (when (not (e2wm:history-recordable-p (current-buffer))) + (e2wm:dp-array-get-same-mode-buffers))) + (defun e2wm:dp-array-popup (buf) (e2wm:message "#DP ARRAY popup : %s" buf) (let ((wm (e2wm:pst-get-wm)))