[emacs] C-l eshell clear binding and magit-dispatch-popup on bottom
[~bandali/configs] / init.org
index 87b9f02..a74d8df 100644 (file)
--- a/init.org
+++ b/init.org
@@ -234,6 +234,9 @@ can then be managed with the help of Magit or other tools.
 (require 'borg)
 (borg-initialize)
 
+(require 'borg-nix-shell)
+(setq borg-build-shell-command 'borg-nix-shell-build-command)
+
 (with-eval-after-load 'bind-key
   (bind-keys
    :package borg
@@ -750,6 +753,33 @@ There's no way I could top that, so I won't attempt to.
   (defalias 'locate #'counsel-locate))
 #+end_src
 
+*** eshell
+
+#+begin_src emacs-lisp
+(use-package eshell
+  :commands eshell
+  :config
+  (eval-when-compile (defvar eshell-prompt-regexp))
+  (defun amin/eshell-quit-or-delete-char (arg)
+    (interactive "p")
+    (if (and (eolp) (looking-back eshell-prompt-regexp nil))
+        (eshell-life-is-too-much)
+      (delete-char arg)))
+
+  (defun amin/eshell-clear ()
+    (interactive)
+    (let ((inhibit-read-only t))
+      (erase-buffer))
+    (eshell-send-input))
+
+  (defun amin|eshell-setup ()
+    (bind-keys :map eshell-mode-map
+               ("C-d" . amin/eshell-quit-or-delete-char)
+               ("C-l" . amin/eshell-clear)))
+
+  :hook (eshell-mode . amin|eshell-setup))
+#+end_src
+
 * Borg's =layer/essentials=
 
 TODO: break this giant source block down into individual org sections.
@@ -1154,6 +1184,49 @@ Emacs package that displays available keybindings in popup
                    :after #'my-projectile-invalidate-cache))))
 #+end_src
 
+** [[https://github.com/wasamasa/shackle][shackle]]
+
+#+begin_src emacs-lisp
+(use-package shackle
+  :demand t
+  :commands shackle-mode
+  :config
+  (shackle-mode 1)
+  (setq shackle-rules
+        '(("*Help*" :align right :select t :size 0.5)
+          ("\\`\\*helm.*?\\*\\'" :regexp t :align t)
+          ((compilation-mode "\\`\\*magit-diff: .*?\\'") :regexp t :noselect t)
+          ("*magit-dispatch-popup*" :align bottom)
+          ((inferior-scheme-mode "*shell*" "*eshell*") :popup t))
+        shackle-default-rule '(:select t)
+        shackle-default-size 0.4
+        shackle-inhibit-window-quit-on-same-windows t))
+#+end_src
+
+** [[https://github.com/Wilfred/helpful][helpful]]
+
+#+begin_src emacs-lisp
+(use-package helpful
+  :bind
+  (("C-h f"   . helpful-callable)
+   ("C-h v"   . helpful-variable)
+   ("C-h k"   . helpful-key)
+   ("C-c C-d" . helpful-at-point)
+   ("C-h F"   . helpful-function)
+   ("C-h C"   . helpful-command)))
+#+end_src
+
+** [[https://github.com/kyagi/shell-pop-el][shell-pop]]
+
+#+begin_src emacs-lisp
+(use-package shell-pop
+  :config
+  (add-to-list 'shackle-rules '("\\*eshell\\*" :regexp t :same t))
+  :custom
+  (shell-pop-universal-key "C-c e")
+  (shell-pop-shell-type '("eshell" "*eshell*" (lambda nil (eshell)))))
+#+end_src
+
 * Email
 ** [[https://notmuchmail.org][notmuch]]
 
@@ -1250,8 +1323,6 @@ See [[notmuch:id:87muuqsvci.fsf@fencepost.gnu.org][bug follow-up]].
   ;; (advice-add #'notmuch-bury-or-kill-this-buffer
   ;;             :override #'kill-this-buffer)
   :bind
-  (:map notmuch-common-keymap
-        ("g" . notmuch-poll-and-refresh-this-buffer))
   (:map notmuch-hello-mode-map
         ("u" . (lambda ()
                  "Search for `unread'-tagged messages"