From 028ceca3e2e959e98ce4e401826253ca575551a4 Mon Sep 17 00:00:00 2001
From: Vedang Manerikar <ved.manerikar@gmail.com>
Date: Sun, 17 Nov 2024 16:04:30 +0530
Subject: [PATCH] Add the minibuffer-default-values section from Prot

---
 unravel-emacs.org                     | 30 +++++++++++++++++++++++++++
 unravel-modules/unravel-completion.el | 16 ++++++++++++--
 2 files changed, 44 insertions(+), 2 deletions(-)

diff --git a/unravel-emacs.org b/unravel-emacs.org
index a180646..b5f9fdf 100644
--- a/unravel-emacs.org
+++ b/unravel-emacs.org
@@ -1449,6 +1449,36 @@ minibuffer. Let's have everything ignore casing by default.
   (setq read-minibuffer-restore-windows nil) ; Emacs 28
   (setq enable-recursive-minibuffers t))
 #+end_src
+
+** The =unravel-completion.el= settings for default values
+:PROPERTIES:
+:CUSTOM_ID: h:aebbdd4c-6e5b-4773-9f0a-c69f0d3c7158
+:END:
+
+#+begin_quote
+Minibuffer prompts often have a default value. This is used when the
+user types =RET= without inputting anything. The out-of-the-box
+behaviour of Emacs is to append informative text to the prompt like
+=(default some-default-value)=. With the tweak to ~minibuffer-default-prompt-format~
+we get a more compact style of =[some-default-value]=, which looks
+better to me.
+
+The ~minibuffer-electric-default-mode~ displays the default value next
+to the prompt only if =RET= will actually use the default in that
+situation. This means that while you start typing in the minibuffer,
+the =[some-default-value]= indicator disappears, since it is no longer
+applicable. Without this mode, the indicator stays there at all times,
+which can be confusing or distracting.
+#+end_quote
+
+#+begin_src emacs-lisp :tangle "unravel-modules/unravel-completion.el"
+(use-package minibuf-eldef
+  :ensure nil
+  :hook (after-init . minibuffer-electric-default-mode)
+  :config
+  (setq minibuffer-default-prompt-format " [%s]")) ; Emacs 29
+#+end_src
+
 ** The =unravel-completion.el= settings for common interactions
 :PROPERTIES:
 :CUSTOM_ID: h:b640f032-ad11-413e-ad8f-63408671d500
diff --git a/unravel-modules/unravel-completion.el b/unravel-modules/unravel-completion.el
index 0e94b78..f671549 100644
--- a/unravel-modules/unravel-completion.el
+++ b/unravel-modules/unravel-completion.el
@@ -87,6 +87,19 @@
 (setq-default case-fold-search t)   ; For general regexp
 (setq read-file-name-completion-ignore-case t)
 
+(use-package mb-depth
+  :ensure nil
+  :hook (after-init . minibuffer-depth-indicate-mode)
+  :config
+  (setq read-minibuffer-restore-windows nil) ; Emacs 28
+  (setq enable-recursive-minibuffers t))
+
+(use-package minibuf-eldef
+  :ensure nil
+  :hook (after-init . minibuffer-electric-default-mode)
+  :config
+  (setq minibuffer-default-prompt-format " [%s]")) ; Emacs 29
+
 (use-package rfn-eshadow
   :ensure nil
   :hook (minibuffer-setup . cursor-intangible-mode)
@@ -362,8 +375,7 @@
 
 (use-package vertico-suspend
   :after vertico
-  :init
-  (setq enable-recursive-minibuffers t)
+  ;; Note: `enable-recursive-minibuffers' must be t
   :bind ( :map global-map
           ("M-S" . vertico-suspend)
           ("C-x c b" . vertico-suspend)))