[emacs] update 13 drones
[~bandali/configs] / init.org
index 2173871..b7679a7 100644 (file)
--- a/init.org
+++ b/init.org
@@ -635,8 +635,8 @@ Enable =winner-mode=.
 
 #+begin_src emacs-lisp
 (bind-keys
 
 #+begin_src emacs-lisp
 (bind-keys
- ("C-c b B" . ibuffer-list-buffers)
  ("C-c b k" . kill-this-buffer)
  ("C-c b k" . kill-this-buffer)
+ ("C-c s s" . save-buffer)
  ("C-c b s" . save-buffer)
  ("C-c S"   . save-buffer)
  ("C-c o"   . other-window)
  ("C-c b s" . save-buffer)
  ("C-c S"   . save-buffer)
  ("C-c o"   . other-window)
@@ -682,7 +682,8 @@ In short, my favourite way of life.
   :config
   (setq org-src-tab-acts-natively t
         org-src-preserve-indentation nil
   :config
   (setq org-src-tab-acts-natively t
         org-src-preserve-indentation nil
-        org-edit-src-content-indentation 0)
+        org-edit-src-content-indentation 0
+        org-log-done 'time)
   :hook (org-mode . org-indent-mode))
 
 (use-package org-notmuch
   :hook (org-mode . org-indent-mode))
 
 (use-package org-notmuch
@@ -852,6 +853,66 @@ There's no way I could top that, so I won't attempt to.
   :hook (eshell-mode . amin|eshell-setup))
 #+end_src
 
   :hook (eshell-mode . amin|eshell-setup))
 #+end_src
 
+*** Ibuffer
+
+#+begin_src emacs-lisp
+(use-package ibuffer
+  :bind
+  (("C-x C-b" . ibuffer-other-window)
+   ("C-c b B" . ibuffer-other-window)
+   :map ibuffer-mode-map
+   ("P"   . ibuffer-backward-filter-group)
+   ("N"   . ibuffer-forward-filter-group)
+   ("M-p" . ibuffer-do-print)
+   ("M-n" . ibuffer-do-shell-command-pipe-replace))
+  :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) 100000) (format "%7.0fk" (/ (buffer-size) 1000.0)))
+     ((> (buffer-size) 1000) (format "%7.1fk" (/ (buffer-size) 1000.0)))
+     (t (format "%8d" (buffer-size)))))
+  :custom
+  (ibuffer-saved-filter-groups
+   '(("default"
+      ("dired" (mode . dired-mode))
+      ("org"   (name . "^.*org$"))
+      ("web"
+       (or
+        (mode . web-mode)
+        (mode . css-mode)
+        (mode . scss-mode)
+        (mode . js2-mode)))
+      ("shell"
+       (or
+        (mode . eshell-mode)
+        (mode . shell-mode)))
+      ("notmuch" (name . "\*notmuch\*"))
+      ("programming"
+       (or
+        (mode . python-mode)
+        (mode . c++-mode)
+        (mode . emacs-lisp-mode)))
+      ("emacs"
+       (or
+        (name . "^\\*scratch\\*$")
+        (name . "^\\*Messages\\*$"))))))
+  (ibuffer-formats
+   '((mark modified read-only locked " "
+           (name 18 18 :left :elide)
+           " "
+           (size-h 9 -1 :right)
+           " "
+           (mode 16 16 :left :elide)
+           " " filename-and-process)
+     (mark " "
+           (name 16 -1)
+           " " filename)))
+  :hook (ibuffer . (lambda () (ibuffer-switch-to-saved-filter-groups "default"))))
+#+end_src
+
 * Borg's =layer/essentials=
 
 TODO: break this giant source block down into individual org sections.
 * Borg's =layer/essentials=
 
 TODO: break this giant source block down into individual org sections.
@@ -951,6 +1012,8 @@ TODO: break this giant source block down into individual org sections.
   (company-minimum-prefix-length 1)
   (company-selection-wrap-around t)
   (company-dabbrev-char-regexp "\\sw\\|\\s_\\|[-_]")
   (company-minimum-prefix-length 1)
   (company-selection-wrap-around t)
   (company-dabbrev-char-regexp "\\sw\\|\\s_\\|[-_]")
+  (company-dabbrev-downcase nil)
+  (company-dabbrev-ignore-case nil)
   :config
   (global-company-mode t))
 #+end_src
   :config
   (global-company-mode t))
 #+end_src
@@ -1213,7 +1276,8 @@ instead.
 (use-package emmet-mode
   :bind* (("C-)" . emmet-next-edit-point)
           ("C-(" . emmet-prev-edit-point))
 (use-package emmet-mode
   :bind* (("C-)" . emmet-next-edit-point)
           ("C-(" . emmet-prev-edit-point))
-  :init
+  :config
+  (unbind-key "C-j" emmet-mode-keymap)
   (setq emmet-move-cursor-between-quotes t)
   :hook (web-mode css-mode html-mode sgml-mode))
 #+end_src
   (setq emmet-move-cursor-between-quotes t)
   :hook (web-mode css-mode html-mode sgml-mode))
 #+end_src
@@ -1371,6 +1435,22 @@ Make =*scratch*= and =*Messages*= unkillable.
 
 Also see [[https://www.emacswiki.org/emacs/rebox2][rebox2]].
 
 
 Also see [[https://www.emacswiki.org/emacs/rebox2][rebox2]].
 
+** [[https://github.com/DarthFennec/highlight-indent-guides][highlight-indent-guides]]
+
+#+begin_src emacs-lisp
+(use-package highlight-indent-guides
+  :demand t
+  :hook ((prog-mode . highlight-indent-guides-mode)
+         (org-mode  . highlight-indent-guides-mode))
+  :config
+  (setq highlight-indent-guides-character ?\|)
+  (setq highlight-indent-guides-auto-enabled nil)
+  (setq highlight-indent-guides-method 'character)
+  (setq highlight-indent-guides-responsive 'top)
+  (set-face-foreground 'highlight-indent-guides-character-face "gainsboro")
+  (set-face-foreground 'highlight-indent-guides-top-character-face "grey40")) ; grey13 is nice too
+#+end_src
+
 * Email
 ** [[https://notmuchmail.org][notmuch]]
 
 * Email
 ** [[https://notmuchmail.org][notmuch]]
 
@@ -1596,6 +1676,9 @@ nil))
 #+begin_src emacs-lisp
 (use-package ox-hugo
   :after ox)
 #+begin_src emacs-lisp
 (use-package ox-hugo
   :after ox)
+
+(use-package ox-hugo-auto-export
+  :load-path "lib/ox-hugo")
 #+end_src
 
 * Post initialization
 #+end_src
 
 * Post initialization