branch: externals/beframe
commit 7105c4d0e33cda61fbc3dbbe740bd9a347c0b2ea
Author: Protesilaos Stavrou <i...@protesilaos.com>
Commit: Protesilaos Stavrou <i...@protesilaos.com>

    Define the beframe-prompt-prefix instead of hardcoding it in the prompt
---
 README.org |  8 +++++++-
 beframe.el | 44 +++++++++++++++++++++++++++++++++++++-------
 2 files changed, 44 insertions(+), 8 deletions(-)

diff --git a/README.org b/README.org
index f885281888..8abefe6f65 100644
--- a/README.org
+++ b/README.org
@@ -62,10 +62,16 @@ is achieved in three main ways:
    limited to those that the current frame knows about.
 
 #+findex: beframe-mode
+#+vindex: beframe-prompt-prefix
+#+vindex: beframe-face-prompt-prefix
 2. By enabling the global minor mode ~beframe-mode~.  It sets the
    ~read-buffer-function~ to one that filters buffers per frame.  As
    such, commands like ~switch-to-buffer~, ~next-buffer~, and
-   ~previous-buffer~ automatically work in a beframed way.
+   ~previous-buffer~ automatically work in a beframed way. Buffer
+   prompts affected by this get the ~beframe-prompt-prefix~ text,
+   which is styled with ~beframe-face-prompt-prefix~. [ The
+   ~beframe-prompt-prefix~ and its corresponding face are part of
+   {{{development-version}}}. ]
 
 #+findex: beframe-buffer-menu
 3. The command ~beframe-buffer-menu~ produces a dedicated buffer with
diff --git a/beframe.el b/beframe.el
index 30fc3d29ab..6b2b98b452 100644
--- a/beframe.el
+++ b/beframe.el
@@ -66,6 +66,16 @@ buffers from a frame's buffer list ad-hoc.  The full list of 
commands:
                    (symbol :tag "Symbol to match a buffer's major mode" :value 
"")))
           (const :tag "No global buffers" nil)))
 
+(defcustom beframe-prompt-prefix "[Beframed]"
+  "String prefix for buffer prompts affected by `beframe-mode'.
+Set to nil or an empty string to have no prefix.
+
+The text is styled with the face `beframe-face-prompt-prefix'."
+  :group 'beframe
+  :package-version '(beframe . "1.4.0")
+  :type '(choice (string :tag "Text prefix for buffer prompts")
+                 (const :tag "No prefix" nil)))
+
 (defcustom beframe-create-frame-scratch-buffer t
   "Create a frame-specific scratch buffer for new frames.
 Do it when `beframe-mode' is enabled.
@@ -140,6 +150,16 @@ has a running process, and the like."
   :package-version '(beframe . "1.2.0")
   :type 'boolean)
 
+(defgroup beframe-faces nil
+  "Faces used by Beframe."
+  :group 'beframe
+  :group 'faces)
+
+(defface beframe-face-prompt-prefix '((t :inherit italic))
+  "Face applied to `beframe-prompt-prefix'."
+  :group 'beframe-faces
+  :package-version '(beframe . "1.4.0"))
+
 (defun beframe--remove-internal-buffers (buffers)
   "Remove internal buffers from BUFFERS."
   (seq-remove
@@ -276,19 +296,29 @@ an object that satisfies `framep'."
 (defvar beframe-history nil
   "Minibuffer history of frame specific buffers.")
 
+(defun beframe--propertize-prompt-prefix ()
+  "Return `beframe-prompt-prefix' with face `beframe-face-prompt-prefix'.
+If `beframe-prompt-prefix' is nil or an empty string, then return an
+empty string."
+  (if (and (stringp beframe-prompt-prefix)
+           (not (string-blank-p beframe-prompt-prefix)))
+      (format "​%s " (propertize beframe-prompt-prefix 'face 
'beframe-face-prompt-prefix))
+    ""))
+
 ;;;###autoload
 (defun beframe-read-buffer (prompt &optional def require-match _predicate)
   "The `read-buffer-function' that limits buffers to frames.
 PROMPT, DEF, REQUIRE-MATCH, and PREDICATE are the same as
 `read-buffer'.  The PREDICATE is ignored, however, to apply the
 per-frame filter."
-  (completing-read (format "[Beframed] %s" prompt)
-                   (beframe-buffer-names)
-                   #'beframe--read-buffer-p
-                   require-match
-                   nil
-                   'beframe-history
-                   def))
+  (completing-read
+   (format "%s%s" (beframe--propertize-prompt-prefix) prompt)
+   (beframe-buffer-names)
+   #'beframe--read-buffer-p
+   require-match
+   nil
+   'beframe-history
+   def))
 
 (defun beframe--buffer-prompt (&optional frame)
   "Prompt for buffer among `beframe-buffer-names'.

Reply via email to