diff --git a/doc/DOCUMENTATION.org b/doc/DOCUMENTATION.org index 39e9e8cb1..fa82e46fb 100644 --- a/doc/DOCUMENTATION.org +++ b/doc/DOCUMENTATION.org @@ -1825,8 +1825,12 @@ Windows manipulation commands (start with ~w~): |------------------------+-----------------------------------------------------------------------------| | ~SPC w =~ | balance split windows | | ~SPC w b~ | force the focus back to the minibuffer (usefull with =helm= popups) | +| ~SPC w c~ | maximize/minimize a window and center it | +| ~SPC w C~ | maximize/minimize a window and center it using [[https://github.com/abo-abo/ace-window][ace-window]] | | ~SPC w d~ | delete a window | -| ~SPC w D~ | delete another window using [[https://github.com/abo-abo/ace-window][ace-delete-window]] | +| ~SPC u SPC w d~ | delete a window and its current buffer (does not delete the file) | +| ~SPC w D~ | delete another window using [[https://github.com/abo-abo/ace-window][ace-window]] | +| ~SPC u SPC w D~ | delete another window and its current buffer using [[https://github.com/abo-abo/ace-window][ace-window]] | | ~SPC w t~ | toggle window dedication (dedicated window cannot be reused by a mode) | | ~SPC w f~ | toggle follow mode | | ~SPC w F~ | create new frame | @@ -1839,7 +1843,7 @@ Windows manipulation commands (start with ~w~): | ~SPC w l~ | move to window on the right | | ~SPC w L~ | move window to the right | | ~SPC w m~ | maximize/minimize a window (maximize is equivalent to delete other windows) | -| ~SPC w M~ | maximize/minimize a window, when maximized the buffer is centered | +| ~SPC w M~ | swap windows using [[https://github.com/abo-abo/ace-window][ace-window]] | | ~SPC w o~ | cycle and focus between frames | | ~SPC w p m~ | open messages buffer in a popup window | | ~SPC w p p~ | close the current sticky popup window | @@ -1851,7 +1855,7 @@ Windows manipulation commands (start with ~w~): | ~SPC w v~ or ~SPC w /~ | vertical split | | ~SPC w V~ | vertical split and focus new window | | ~SPC w w~ | cycle and focus between windows | -| ~SPC w SPC~ | select window using [[https://github.com/abo-abo/ace-window][ace-window]] | +| ~SPC w W~ | select window using [[https://github.com/abo-abo/ace-window][ace-window]] | **** Window manipulation transient state A convenient window manipulation transient state allows performing most of the @@ -1914,30 +1918,27 @@ By default Spacemacs uses =helm= to open files. **** Buffers manipulation key bindings Buffer manipulation commands (start with ~b~): -| Key Binding | Description | -|-------------+--------------------------------------------------------------------------| -| ~SPC TAB~ | switch to alternate buffer in the current window (switch back and forth) | -| ~SPC b b~ | switch to a buffer using =helm= | -| ~SPC b d~ | kill the current buffer (does not delete the visited file) | -| ~SPC b D~ | kill the current buffer and its window | -| ~SPC b e~ | erase the content of the buffer (ask for confirmation) | -| ~SPC b h~ | open =*spacemacs*= home buffer | -| ~SPC b k~ | kill a buffer | -| ~SPC b K~ | kill all buffers except the current one | -| ~SPC b C-k~ | kill all buffers matching the regexp | -| ~SPC b m h~ | move a buffer to the left | -| ~SPC b m j~ | move a buffer to the bottom | -| ~SPC b m k~ | move a buffer to the top | -| ~SPC b m l~ | move a buffer to the right | -| ~SPC b M~ | swap windows using [[https://github.com/abo-abo/ace-window][ace-swap-window]] | -| ~SPC b n~ | switch to next buffer avoiding special buffers | -| ~SPC b p~ | switch to previous buffer avoiding special buffers | -| ~SPC b P~ | copy clipboard and replace buffer (useful when pasting from a browser) | -| ~SPC b R~ | revert the current buffer (reload from disk) | -| ~SPC b s~ | switch to the =*scratch*= buffer (create it if needed) | -| ~SPC b w~ | toggle read-only (writable state) | -| ~SPC b Y~ | copy whole buffer to clipboard (useful when copying to a browser) | -| ~z f~ | Make current function or comments visible in buffer as much as possible | +| Key Binding | Description | +|-----------------+--------------------------------------------------------------------------| +| ~SPC TAB~ | switch to alternate buffer in the current window (switch back and forth) | +| ~SPC b b~ | switch to a buffer using [[https://github.com/emacs-helm/helm][helm]] | +| ~SPC b d~ | kill the current buffer (does not delete the visited file) | +| ~SPC u SPC b d~ | kill the current buffer and window (does not delete the visited file) | +| ~SPC b D~ | kill a visible buffer using [[https://github.com/abo-abo/ace-window][ace-window]] | +| ~SPC u SPC b D~ | kill a visible buffer and its window using [[https://github.com/abo-abo/ace-window][ace-window]] | +| ~SPC b e~ | erase the content of the buffer (ask for confirmation) | +| ~SPC b h~ | open =*spacemacs*= home buffer | +| ~SPC b n~ | switch to next buffer avoiding special buffers | +| ~SPC b m~ | kill all buffers except the current one | +| ~SPC u SPC b m~ | kill all buffers and windows except the current one | +| ~SPC b M~ | kill all buffers matching the regexp | +| ~SPC b p~ | switch to previous buffer avoiding special buffers | +| ~SPC b P~ | copy clipboard and replace buffer (useful when pasting from a browser) | +| ~SPC b R~ | revert the current buffer (reload from disk) | +| ~SPC b s~ | switch to the =*scratch*= buffer (create it if needed) | +| ~SPC b w~ | toggle read-only (writable state) | +| ~SPC b Y~ | copy whole buffer to clipboard (useful when copying to a browser) | +| ~z f~ | Make current function or comments visible in buffer as much as possible | **** Buffers manipulation transient state A convenient buffer manipulation transient state allows to quickly cycles through diff --git a/layers/+distributions/spacemacs-base/funcs.el b/layers/+distributions/spacemacs-base/funcs.el index 48530b7b7..ca66216ce 100644 --- a/layers/+distributions/spacemacs-base/funcs.el +++ b/layers/+distributions/spacemacs-base/funcs.el @@ -206,6 +206,16 @@ automatically applied to." (when (assoc ?_ register-alist) (jump-to-register ?_)))) +(defun spacemacs/ace-center-window () + "Ace center window." + (interactive) + (require 'ace-window) + (aw-select + " Ace - Center Window" + (lambda (window) + (aw-switch-to-window window) + (spacemacs-centered-buffer-mode)))) + (defun spacemacs/useless-buffer-p (buffer) "Determines if a buffer is useful." (let ((buf-paren-major-mode (get (with-current-buffer buffer @@ -374,7 +384,9 @@ removal." ;; from magnars (defun spacemacs/sudo-edit (&optional arg) (interactive "p") - (let ((fname (if (or arg (not buffer-file-name)) (read-file-name "File: ") buffer-file-name))) + (let ((fname (if (or arg (not buffer-file-name)) + (read-file-name "File: ") + buffer-file-name))) (find-file (cond ((string-match-p "^/ssh:" fname) (with-temp-buffer @@ -383,7 +395,8 @@ removal." (let ((last-match-end nil) (last-ssh-hostname nil)) (while (string-match "@\\\([^:|]+\\\)" fname last-match-end) - (setq last-ssh-hostname (or (match-string 1 fname) last-ssh-hostname)) + (setq last-ssh-hostname (or (match-string 1 fname) + last-ssh-hostname)) (setq last-match-end (match-end 0))) (insert (format "|sudo:%s" (or last-ssh-hostname "localhost")))) (buffer-string))) @@ -396,26 +409,66 @@ removal." (when (and (not (memq major-mode spacemacs-large-file-modes-list)) size (> size (* 1024 1024 dotspacemacs-large-file-size)) - (y-or-n-p (format "%s is a large file, open literally to avoid performance issues?" + (y-or-n-p (format (concat "%s is a large file, open literally to " + "avoid performance issues?") filename))) (setq buffer-read-only t) (buffer-disable-undo) (fundamental-mode)))) +(defun spacemacs/delete-window (&optional arg) + "Delete the current window. +If the universal prefix argument is used then kill the buffer too." + (interactive "P") + (if (equal '(4) arg) + (kill-buffer-and-window) + (delete-window))) + +(defun spacemacs/ace-delete-window (&optional arg) + "Ace delete window. +If the universal prefix argument is used then kill the buffer too." + (interactive "P") + (require 'ace-window) + (aw-select + " Ace - Delete Window" + (lambda (window) + (when (equal '(4) arg) + (with-selected-window window + (spacemacs/kill-this-buffer arg))) + (aw-delete-window window)))) + ;; our own implementation of kill-this-buffer from menu-bar.el -(defun spacemacs/kill-this-buffer () - "Kill the current buffer." - (interactive) +(defun spacemacs/kill-this-buffer (&optional arg) + "Kill the current buffer. +If the universal prefix argument is used then kill also the window." + (interactive "P") (if (window-minibuffer-p) (abort-recursive-edit) - (kill-buffer (current-buffer)))) + (if (equal '(4) arg) + (kill-buffer-and-window) + (kill-buffer)))) + +(defun spacemacs/ace-kill-this-buffer (&optional arg) + "Ace kill visible buffer in a window. +If the universal prefix argument is used then kill also the window." + (interactive "P") + (require 'ace-window) + (let (golden-ratio-mode) + (aw-select + " Ace - Kill buffer in Window" + (lambda (window) + (with-selected-window window + (spacemacs/kill-this-buffer arg)))))) ;; found at http://emacswiki.org/emacs/KillingBuffers -(defun spacemacs/kill-other-buffers () - "Kill all other buffers." - (interactive) - (when (yes-or-no-p (format "Killing all buffers except \"%s\"? " (buffer-name))) +(defun spacemacs/kill-other-buffers (&optional arg) + "Kill all other buffers. +If the universal prefix argument is used then will the windows too." + (interactive "P") + (when (yes-or-no-p (format "Killing all buffers except \"%s\"? " + (buffer-name))) (mapc 'kill-buffer (delq (current-buffer) (buffer-list))) + (when (equal '(4) arg) (delete-other-windows)) (message "Buffers deleted!"))) ;; from http://dfan.org/blog/2009/02/19/emacs-dedicated-windows/ diff --git a/layers/+distributions/spacemacs-base/keybindings.el b/layers/+distributions/spacemacs-base/keybindings.el index e57f99d35..62c5d1df6 100644 --- a/layers/+distributions/spacemacs-base/keybindings.el +++ b/layers/+distributions/spacemacs-base/keybindings.el @@ -18,7 +18,6 @@ ("ai" "irc") ("as" "shells") ("b" "buffers") - ("bm" "move") ("c" "compile/comments") ("C" "capture/colors") ("e" "errors") @@ -117,17 +116,15 @@ "au" 'undo-tree-visualize) ;; buffers -------------------------------------------------------------------- (spacemacs/set-leader-keys - "bd" 'spacemacs/kill-this-buffer - "bD" 'kill-buffer-and-window "TAB" 'spacemacs/alternate-buffer - "bh" 'spacemacs/home + "bd" 'spacemacs/kill-this-buffer "be" 'spacemacs/safe-erase-buffer - "bK" 'spacemacs/kill-other-buffers - "bk" 'ido-kill-buffer - "b C-k" 'spacemacs/kill-matching-buffers-rudely - "bP" 'spacemacs/copy-clipboard-to-whole-buffer + "bh" 'spacemacs/home + "bk" 'spacemacs/kill-matching-buffers-rudely "bn" 'spacemacs/next-useful-buffer + "bm" 'spacemacs/kill-other-buffers "bN" 'spacemacs/new-empty-buffer + "bP" 'spacemacs/copy-clipboard-to-whole-buffer "bp" 'spacemacs/previous-useful-buffer "bR" 'spacemacs/safe-revert-buffer "bs" 'spacemacs/switch-to-scratch-buffer @@ -360,7 +357,7 @@ "w2" 'spacemacs/layout-double-columns "w3" 'spacemacs/layout-triple-columns "wb" 'spacemacs/switch-to-minibuffer-window - "wd" 'delete-window + "wd" 'spacemacs/delete-window "wt" 'spacemacs/toggle-current-window-dedication "wf" 'follow-mode "wF" 'make-frame @@ -381,7 +378,7 @@ "wl" 'evil-window-right "w " 'evil-window-right "wm" 'spacemacs/toggle-maximize-buffer - "wM" 'spacemacs-centered-buffer-mode + "wc" 'spacemacs-centered-buffer-mode "wo" 'other-frame "wr" 'spacemacs/rotate-windows "wR" 'spacemacs/rotate-windows-backward diff --git a/layers/+distributions/spacemacs-base/packages.el b/layers/+distributions/spacemacs-base/packages.el index 13dfcfcb1..01e66571f 100644 --- a/layers/+distributions/spacemacs-base/packages.el +++ b/layers/+distributions/spacemacs-base/packages.el @@ -12,6 +12,7 @@ (setq spacemacs-base-packages '( (abbrev :location built-in) + ace-window (bookmark :location built-in) (dired :location built-in) (dired-x :location built-in) @@ -52,6 +53,20 @@ (defun spacemacs-base/init-abbrev () (spacemacs|hide-lighter abbrev-mode)) +(defun spacemacs-base/init-ace-window () + (use-package ace-window + :defer t + :init + (progn + (spacemacs/set-leader-keys + "bD" 'spacemacs/ace-kill-this-buffer + "wC" 'spacemacs/ace-center-window + "wD" 'spacemacs/ace-delete-window + "wM" 'ace-swap-window + "wW" 'ace-window) + ;; set ace-window keys to home-row + (setq aw-keys '(?a ?s ?d ?f ?g ?h ?j ?k ?l))))) + (defun spacemacs-base/init-bookmark () (use-package bookmark :defer t diff --git a/layers/+intl/keyboard-layout/README.org b/layers/+intl/keyboard-layout/README.org index ef1f84260..4db0e61ab 100644 --- a/layers/+intl/keyboard-layout/README.org +++ b/layers/+intl/keyboard-layout/README.org @@ -153,7 +153,6 @@ The available configurations are: - ace-window - avy -- buffer-move - comint - company - elfeed diff --git a/layers/+intl/keyboard-layout/packages.el b/layers/+intl/keyboard-layout/packages.el index c133cee6f..793fa919f 100644 --- a/layers/+intl/keyboard-layout/packages.el +++ b/layers/+intl/keyboard-layout/packages.el @@ -13,7 +13,6 @@ '( ace-window avy - buffer-move comint company elfeed @@ -57,19 +56,6 @@ :dvorak (setq-default avy-keys '(?a ?o ?e ?u ?h ?t ?n ?s)))) -(defun keyboard-layout/pre-init-buffer-move () - (kl|config buffer-move - :description - "Remap `buffer-move' bindings." - :loader - (spacemacs|use-package-add-hook buffer-move :post-init BODY) - :common - (kl/leader-correct-keys - "bmh" - "bmj" - "bmk" - "bml"))) - (defun keyboard-layout/pre-init-comint () (kl|config comint-mode :description diff --git a/layers/+spacemacs/spacemacs-ui/packages.el b/layers/+spacemacs/spacemacs-ui/packages.el index 95fc8b9fd..fdc78c9ef 100644 --- a/layers/+spacemacs/spacemacs-ui/packages.el +++ b/layers/+spacemacs/spacemacs-ui/packages.el @@ -11,8 +11,6 @@ (setq spacemacs-ui-packages '(ace-link - ace-window - buffer-move (centered-cursor :location local) desktop (doc-view :location built-in) @@ -60,28 +58,6 @@ (goto-char (1+ res)) (widget-button-press (point)))))))) -(defun spacemacs-ui/init-ace-window () - (use-package ace-window - :defer t - :init - (progn - (spacemacs/set-leader-keys - "bM" 'ace-swap-window - "wD" 'ace-delete-window - "w SPC" 'ace-window) - ;; set ace-window keys to home-row - (setq aw-keys '(?a ?s ?d ?f ?g ?h ?j ?k ?l))))) - -(defun spacemacs-ui/init-buffer-move () - (use-package buffer-move - :defer t - :init - (spacemacs/set-leader-keys - "bmh" 'buf-move-left - "bmj" 'buf-move-down - "bmk" 'buf-move-up - "bml" 'buf-move-right))) - (defun spacemacs-ui/init-centered-cursor () (use-package centered-cursor-mode :commands (centered-cursor-mode