Commit d76ff1f16c3e

Vincent Demeester <vincent@sbr.pm>
2020-01-31 14:47:02
emacs.org: add setup-buffers.el
Signed-off-by: Vincent Demeester <vincent@sbr.pm>
1 parent 2072729
Changed files (2)
lisp/setup-buffers.el
@@ -1,8 +1,4 @@
-;;; setup-buffers.el --- setup buffer related function and mode
-;;; Commentary:
-;;; Code:
 ;;; -*- lexical-binding: t; -*-
-
 ;; Don't let the cursor go into minibuffer prompt
 (let ((default (eval (car (get 'minibuffer-prompt-properties 'standard-value))))
       (dont-touch-prompt-prop '(cursor-intangible t)))
@@ -147,8 +143,3 @@
                       (ibuffer-do-sort-by-filename/process)))))
 
 (provide 'setup-buffers)
-
-;; Local Variables:
-;; coding: utf-8
-;; indent-tabs-mode: nil
-;; End:
emacs.org
@@ -366,6 +366,159 @@
   (provide 'setup-browser)
 #+end_src
 
+*** ~setup-buffers.el~
+:PROPERTIES:
+:CUSTOM_ID: h:3acb943f-4a00-432a-8f94-7da51a5c757c
+:END:
+
+#+begin_src emacs-lisp :tangle lisp/setup-buffers.el
+  ;;; -*- lexical-binding: t; -*-
+  ;; Don't let the cursor go into minibuffer prompt
+  (let ((default (eval (car (get 'minibuffer-prompt-properties 'standard-value))))
+        (dont-touch-prompt-prop '(cursor-intangible t)))
+    (setq minibuffer-prompt-properties
+          (append default dont-touch-prompt-prop))
+    (add-hook 'minibuffer-setup-hook #'cursor-intangible-mode))
+
+  ;; Allow to read from minibuffer while in minibuffer.
+  (setq enable-recursive-minibuffers t)
+
+  ;; Show the minibuffer depth (when larger than 1)
+  (minibuffer-depth-indicate-mode 1)
+
+  (use-package savehist                   ; Save minibuffer history
+    :init (savehist-mode t)
+    :custom
+    (history-length 1000)
+    (savehist-save-minibuffer-history t)
+    (savehist-autosave-interval 180)
+    :config
+    (savehist-mode 1))
+
+  (use-package emacs
+    :init
+    ;; Configure `display-buffer' behaviour for some special buffers
+    (setq display-buffer-alist
+          '(;; bottom side window
+            ("\\*e?shell.*"
+             (display-buffer-in-side-window)
+             (window-height . 0.25)
+             (side . bottom)
+             (slot . -1))
+            ("\\*v?term.*"
+             (display-buffer-in-side-window)
+             (window-height . 0.25)
+             (side . bottom)
+             (slot . -1))
+            ("\\*\\(Backtrace\\|Warnings\\|Compile-Log\\|[Hh]elp\\|Messages\\)\\*"
+             (display-buffer-in-side-window)
+             (window-height . 0.25)
+             (side . bottom)
+             (slot . 0))
+            ("\\*\\(compilation\\|go test\\).*"
+             (display-buffer-in-side-window)
+             (window-height . 0.25)
+             (side . bottom)
+             (slot . 0))
+            ("\\*\\(ielm\\).*"
+             (display-buffer-in-side-window)
+             (window-height . 0.25)
+             (side . bottom)
+             (slot . 1))
+            ;; right side window
+            ("\\*wclock*"
+             (display-buffer-in-side-window)
+             (window-width . 0.333)
+             (side . right)
+             (slot . -1))
+            ("\\*undo-tree*"
+             (display-buffer-in-side-window)
+             (window-width . 0.333)
+             (side . right)
+             (slot . -1))
+            ("\\*\\(Flycheck\\|Package-Lint\\).*"
+             (display-buffer-in-side-window)
+             (window-width . 0.333)
+             (side . right)
+             (slot . 0)
+             (window-parameters . ((no-other-window . t)
+                                   (mode-line-format . (" "
+                                                        mode-line-buffer-identification)))))
+            ("\\*Faces\\*"
+             (display-buffer-in-side-window)
+             (window-width . 0.333)
+             (side . right)
+             (slot . 1)
+             (window-parameters . ((no-other-window . t)
+                                   (mode-line-format . (" "
+                                                        mode-line-buffer-identification)))))
+            ("\\*Custom.*"
+             (display-buffer-in-side-window)
+             (window-width . 0.333)
+             (side . right)
+             (slot . 2))))
+    :bind (("<f7>" . window-toggle-side-windows)))
+
+  (use-package uniquify                   ; Unique buffer names
+    :custom
+    (uniquify-buffer-name-style 'post-forward)
+    (uniquify-separator ":")
+    (uniquify-ignore-buffers-re "^\\*")
+    (uniquify-after-kill-buffer-p t))
+
+  (use-package ibuf-ext                   ; Extensions for Ibuffer
+    :config
+    ;; Do not show empty groups
+    (setq ibuffer-show-empty-filter-groups nil))
+
+  (use-package ibuffer                    ; Buffer management
+    :custom
+    (ibuffer-expert t)
+    (ibuffer-filter-group-name-face 'font-lock-doc-face)
+    (ibuffer-default-sorting-mode 'filename/process)
+    (ibuffer-use-header-line t)
+    :bind (("C-x C-b" . ibuffer)
+           ([remap list-buffers] . ibuffer))
+    :config
+    ;; Use human readable Size column instead of original one
+    (define-ibuffer-column size-h
+      (:name "Size" :inline t)
+      (cond
+       ((> (buffer-size) 1000000) (format "%7.1fM" (/ (buffer-size) 1000000.0)))
+       ((> (buffer-size) 1000) (format "%7.1fk" (/ (buffer-size) 1000.0)))
+       (t (format "%8d" (buffer-size)))))
+
+    (setq ibuffer-formats
+          '((mark modified read-only " "
+                  (name 18 18 :left :elide)
+                  " "
+                  (size-h 9 -1 :right)
+                  " "
+                  (mode 16 16 :left :elide)
+                  " "
+                  filename-and-process)
+            (mark modified read-only " "
+                  (name 18 18 :left :elide)
+                  " "
+                  (size 9 -1 :right)
+                  " "
+                  (mode 16 16 :left :elide)
+                  " "
+                  (vc-status 16 16 :left)
+                  " "
+                  filename-and-process))))
+
+  (use-package ibuffer-vc                 ; Group buffers by VC project and status
+    :defer 2
+    :init (add-hook 'ibuffer-hook
+                    (lambda ()
+                      (ibuffer-vc-set-filter-groups-by-vc-root)
+                      (unless (eq ibuffer-sorting-mode 'filename/process)
+                        (ibuffer-do-sort-by-filename/process)))))
+
+  (provide 'setup-buffers)
+#+end_src
+
 *** ~setup-dired.el~
 :PROPERTIES:
 :CUSTOM_ID: h:66b435e6-b66c-4d39-9414-d13ce9ae5dd9