From 694d60f34a96855c2e7d53ae0c80f8f2baa56de6 Mon Sep 17 00:00:00 2001 From: Hiroaki Otsu Date: Sat, 16 Aug 2014 11:58:59 +0900 Subject: [PATCH] make default e2wm:dp-array-buffers-function smart --- e2wm.el | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/e2wm.el b/e2wm.el index e27bade..b84bcc9 100644 --- a/e2wm.el +++ b/e2wm.el @@ -3514,6 +3514,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) @@ -3613,7 +3615,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) ; この関数を切り替える (defun e2wm:dp-array-init () (let* @@ -3676,6 +3678,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)))