X-Git-Url: https://cgit.sxemacs.org/?p=riece;a=blobdiff_plain;f=lisp%2Friece-display.el;h=9a2400eb5b7e9d9caf920e5b101605e61c8bf728;hp=64ac02b32bc88d35a999b1aba2741dccda821b78;hb=20da61a91da192ea5f55b807a9501d2dbf397204;hpb=005a2a7642c9f43d699922799801124a77d56f5d diff --git a/lisp/riece-display.el b/lisp/riece-display.el index 64ac02b..9a2400e 100644 --- a/lisp/riece-display.el +++ b/lisp/riece-display.el @@ -27,17 +27,7 @@ (require 'riece-options) (require 'riece-channel) (require 'riece-misc) - -(defcustom riece-configure-windows-function #'riece-configure-windows - "Function to configure windows." - :type 'function - :group 'riece-looks) - -(defcustom riece-configure-windows-predicate - #'riece-configure-windows-predicate - "Function to check whether window reconfiguration is needed." - :type 'function - :group 'riece-looks) +(require 'riece-layout) (defvar riece-update-buffer-functions '(riece-update-user-list-buffer @@ -51,68 +41,6 @@ "Non-nil means the buffer needs to be updated. Local to the buffers.") -(defun riece-configure-windows () - (let ((buffer (window-buffer)) - (show-user-list - (and riece-user-list-buffer-mode - riece-current-channel - ;; User list buffer is nuisance for private conversation. - (riece-channel-p (riece-identity-prefix - riece-current-channel))))) - ;; Can't expand minibuffer to full frame. - (if (eq (selected-window) (minibuffer-window)) - (other-window 1)) - (delete-other-windows) - (if (and riece-current-channel - (or show-user-list riece-channel-list-buffer-mode)) - (let ((rest-window (split-window (selected-window) - (/ (window-width) 5) t))) - (if (and show-user-list riece-channel-list-buffer-mode) - (progn - (set-window-buffer (split-window) - riece-channel-list-buffer) - (set-window-buffer (selected-window) - riece-user-list-buffer)) - (if show-user-list - (set-window-buffer (selected-window) - riece-user-list-buffer) - (if riece-channel-list-buffer-mode - (set-window-buffer (selected-window) - riece-channel-list-buffer)))) - (select-window rest-window))) - (if (and riece-current-channel - riece-channel-buffer-mode) - (let ((rest-window (split-window))) - (set-window-buffer (selected-window) - riece-channel-buffer) - (set-window-buffer (split-window rest-window 4) - riece-others-buffer) - (with-current-buffer riece-channel-buffer - (setq truncate-partial-width-windows nil)) - (with-current-buffer riece-others-buffer - (setq truncate-partial-width-windows nil)) - (set-window-buffer rest-window - riece-command-buffer)) - (set-window-buffer (split-window (selected-window) 4) - riece-dialogue-buffer) - (set-window-buffer (selected-window) - riece-command-buffer)) - (riece-set-window-points) - (select-window (or (get-buffer-window buffer) - (get-buffer-window riece-command-buffer))))) - -(defun riece-set-window-points () - (if (get-buffer-window riece-user-list-buffer) - (with-current-buffer riece-user-list-buffer - (unless (riece-frozen riece-user-list-buffer) - (set-window-start (get-buffer-window riece-user-list-buffer) - (point-min))))) - (if (get-buffer-window riece-channel-list-buffer) - (with-current-buffer riece-channel-list-buffer - (unless (riece-frozen riece-channel-list-buffer) - (set-window-start (get-buffer-window riece-channel-list-buffer) - (point-min)))))) - (defun riece-update-user-list-buffer () (save-excursion (set-buffer riece-user-list-buffer) @@ -295,22 +223,9 @@ Local to the buffers.") (with-current-buffer riece-channel-list-buffer (setq riece-redisplay-buffer t)))) -(defun riece-configure-windows-predicate () - ;; The current channel is changed, and some buffers are visible. - (unless (equal riece-last-channel riece-current-channel) - (let ((buffers riece-buffer-list)) - (catch 'found - (while buffers - (if (and (buffer-live-p (car buffers)) - (get-buffer-window (car buffers))) - (throw 'found t) - (setq buffers (cdr buffers)))))))) - (defun riece-redisplay-buffers (&optional force) (riece-update-buffers) - (if (or force - (funcall riece-configure-windows-predicate)) - (funcall riece-configure-windows-function)) + (riece-redraw-layout force) (run-hooks 'riece-redisplay-buffers-hook)) (provide 'riece-display)