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'.