diff options
Diffstat (limited to '.emacs.d/lisp/init-windows.el')
-rw-r--r-- | .emacs.d/lisp/init-windows.el | 79 |
1 files changed, 43 insertions, 36 deletions
diff --git a/.emacs.d/lisp/init-windows.el b/.emacs.d/lisp/init-windows.el index 2bf54a3..15ec232 100644 --- a/.emacs.d/lisp/init-windows.el +++ b/.emacs.d/lisp/init-windows.el @@ -5,38 +5,30 @@ (use-feature emacs :custom (switch-to-buffer-obey-display-actions t) + (split-height-threshold nil) + (split-width-threshold 200)) + +(use-feature ibuffer :bind - ("C-x C-M-b" . ibuffer) - :config - ;; From EmacsWiki - (defun toggle-window-split () - (interactive) - (if (= (count-windows) 2) - (let* ((this-win-buffer (window-buffer)) - (next-win-buffer (window-buffer (next-window))) - (this-win-edges (window-edges (selected-window))) - (next-win-edges (window-edges (next-window))) - (this-win-2nd (not (and (<= (car this-win-edges) - (car next-win-edges)) - (<= (cadr this-win-edges) - (cadr next-win-edges))))) - (splitter - (if (= (car this-win-edges) - (car (window-edges (next-window)))) - 'split-window-horizontally - 'split-window-vertically))) - (delete-other-windows) - (let ((first-win (selected-window))) - (funcall splitter) - (if this-win-2nd (other-window 1)) - (set-window-buffer (selected-window) this-win-buffer) - (set-window-buffer (next-window) next-win-buffer) - (select-window first-win) - (if this-win-2nd (other-window 1)))))) - (define-key ctl-x-4-map "t" 'toggle-window-split)) + ("C-x M-b" . ibuffer) + (:map ibuffer-mode-map + ("{" . ibuffer-backwards-next-marked) + ("}" . ibuffer-forward-next-marked) + ("[" . ibuffer-backward-filter-group) + ("]" . ibuffer-forward-filter-group) + ("$" . ibuffer-toggle-filter-group)) + :hook (ibuffer-mode . ibuffer-auto-mode)) + +(use-feature casual-ibuffer + :after ibuffer + :bind (:map ibuffer-mode-map + ("C-o" . casual-ibuffer-tmenu) + ("F" . casual-ibuffer-filter-tmenu) + ("s" . casual-ibuffer-sortby-tmenu))) (use-feature winner :defer 5 + :custom (winner-boring-buffers-regexp "\*Minibuf-[0-9]+") :config (winner-mode +1) (defvar winner-repeat-map @@ -49,7 +41,11 @@ (use-feature windmove :defer 5 - :config (windmove-default-keybindings)) + :config (windmove-default-keybindings) + :bind (("C-c M-<up>" . windmove-delete-up) + ("C-c M-<down>" . windmove-delete-down) + ("C-c M-<left>" . windmove-delete-left) + ("C-c M-<right>" . windmove-delete-right))) (use-package buffer-move :bind (("C-S-<up>" . buf-move-up) @@ -68,6 +64,9 @@ (fullframe vc-annotate quit-window) (fullframe elpaca-fetch-all quit-window)) +(use-package transpose-frame + :bind (:map ctl-x-4-map ("t" . transpose-frame))) + (use-package ace-window :diminish :config @@ -91,6 +90,7 @@ ("M-¬" . popper-cycle) ("C-`" . popper-toggle-type)) :custom + (popper-group-function #'popper-group-by-perspective) (popper-reference-buffers '("\\*Messages\\*" "\\*HTTP Response\\*" @@ -142,7 +142,7 @@ ("P" "[project]" frog-jump-buffer-filter-same-project) ("S" "[similar]" frog-jump-buffer-filter-similar-name))) :bind - ("C-," . frog-jump-buffer) + ("C-c C-," . frog-jump-buffer) ("C-x 4 C-," . frog-jump-buffer-other-window)) (use-package buffer-ring @@ -180,9 +180,6 @@ (or (apply orig args) (persp-buffer-filter (car args)))) (advice-add 'buffer-flip-skip-buffer :around 'persp-buffer-flip-skip-buffer) - ;; (defun persp-buffer-flip-skip-buffer (orig-val &rest args) - ;; (or orig-val (persp-buffer-filter (car args)))) - ;; (advice-add 'buffer-flip-skip-buffer :filter-return 'persp-buffer-flip-skip-buffer) :bind (("C-c C-<left>" . buffer-flip) (:map buffer-flip-map ( "C-<left>" . buffer-flip-forward) @@ -194,15 +191,25 @@ (defun iflipb-persp-buffer-list () "Buffer list for iflipb." (seq-filter 'buffer-live-p (persp-current-buffers* t))) - (dolist (cmd '(iflipb-previous-buffer iflipb-next-buffer)) - (put cmd 'repeat-map 'iflipb-repeat-map)) (defun iflibp-abort () "Abort buffer flipping and return to the original buffer." (interactive) (iflipb-restore-buffers)) + (defun iflipb-kill-current-buffer () + "Same as `kill-current-buffer' but keep the iflipb buffer list state. + +Modified from `iflipb-kill-buffer'." + (interactive) + (call-interactively #'kill-current-buffer) + (if (iflipb-first-iflipb-buffer-switch-command) + (setq last-command 'kill-current-buffer) + (if (< iflipb-current-buffer-index (length (iflipb-interesting-buffers))) + (iflipb-select-buffer iflipb-current-buffer-index) + (iflipb-select-buffer (1- iflipb-current-buffer-index))) + (setq last-command 'iflipb-kill-current-buffer))) :custom (iflipb-buffer-list-function 'iflipb-persp-buffer-list) :bind - ("C-x k" . iflipb-kill-buffer) ;; TODO replace with a kill currently selected buffer command + ("C-x k" . iflipb-kill-current-buffer) ("<f12>" . iflipb-previous-buffer) ("<f11>" . iflipb-next-buffer) ("<f10>" . iflibp-abort)) |