olt2でバッファバーの代わりにする(その2)
この前書いたのはキーボードでoutline-treeに移動して上下とかに動かした時までフォーカスがバッファに移動してしまってolt自体の機能が使い難くなってしまったので、キーで移動した時には反応しない用に修正してみた。前の奴の動作の方が好きな人もいそうだけどまあ、自分は微妙だったので、前のは消してコレに変更。
(defvar treeview::*treeview-click-focas* t) (defun outline-tree2::outline-tree-set-buffer-by-node (&optional node) (treeview::with-app (outline-tree2::*outline-tree-app-id*) (unless node (setq node (outline-tree2::outline-tree-get-selected-node))) (setq node (outline-tree2::outline-tree-get-buffer-node-by-node node)) (let ((window-list (mapcar 'car (caddr (current-window-configuration)))) (buffer (outline-tree2::outline-tree-get-buffer-by-node node)) (current-window (selected-window))) (when (and (windowp outline-tree2::*outline-tree-target-window*) (not (eq outline-tree2::*outline-tree-target-window* (selected-window))) (not (minibuffer-window-p outline-tree2::*outline-tree-target-window*)) (member outline-tree2::*outline-tree-target-window* window-list)) (set-window outline-tree2::*outline-tree-target-window*)) (set-buffer buffer) (set-window current-window)) (winapi:InvalidateRect (get-window-handle) 0 1) (winapi:UpdateWindow (get-window-handle)) (and treeview::*treeview-click-focas* (case *this-command* ('outline-tree2::outline-tree-select-down-key-node nil) ('outline-tree2::outline-tree-select-up-key-node nil) (t (treeview::treeview-focus-editor)))) (refresh-title-bar) (refresh-screen 1)))