]> git.eshelyaron.com Git - emacs.git/commitdiff
* lisp/minibuffer.el (minibuffer-prompt): Extract from minibuf.c
authorEshel Yaron <me@eshelyaron.com>
Sat, 8 Jun 2024 06:54:32 +0000 (08:54 +0200)
committerEshel Yaron <me@eshelyaron.com>
Sat, 8 Jun 2024 06:54:32 +0000 (08:54 +0200)
lisp/minibuffer.el
src/minibuf.c

index 83bd84861fb7526a14f1a3219f3d04bb089961d3..2579e3712fca3ed2023dc01737923f1419c5217c 100644 (file)
@@ -6278,5 +6278,27 @@ If there are no matching completion candidates, the hint tells you so."
     (remove-hook 'pre-command-hook #'minibuffer-hint-cancel-timer t)
     (minibuffer-hint-cancel-timer)))
 
+(defun minibuffer-prompt ()
+  "Return the current minibuffer prompt."
+  (buffer-substring (point-min) (minibuffer-prompt-end)))
+
+;; (defun minibuffer-set-prompt (prompt)
+;;   "Set the current minibuffer prompt to PROMPT."
+;;   ;; FIXME: Inhibit undo.
+;;   (let ((inhibit-read-only t)
+;;         (buffer-undo-list t)
+;;         (tniop (- (point-max) (point))))
+;;     (delete-region (point-min) (minibuffer-prompt-end))
+;;     (goto-char (point-min))
+;;     (insert prompt)
+;;     (put-text-property (point-min) (point) 'front-sticky t)
+;;     (put-text-property (point-min) (point) 'rear-nonsticky t)
+;;     (put-text-property (point-min) (point) 'field t)
+;;     (cl-loop for (prop val) on minibuffer-prompt-properties by #'cddr
+;;              do (if (eq prop 'face)
+;;                     (add-face-text-property (point-min) (point) val t)
+;;                   (put-text-property (point-min) (point) prop val)))
+;;     (goto-char (- (point-max) tniop))))
+
 (provide 'minibuffer)
 ;;; minibuffer.el ends here
index e731e50b67d7f9b76cc76c4db6b79aa58797d28a..384de0a7b399fd5dd50af4e4d2864540ee32b1e4 100644 (file)
@@ -59,10 +59,6 @@ EMACS_INT minibuf_level;
 
 Lisp_Object last_minibuf_string;
 
-/* Prompt to display in front of the mini-buffer contents.  */
-
-static Lisp_Object minibuf_prompt;
-
 /* The frame containinug the most recently opened Minibuffer.  This is
    used only when `minibuffer-follows-selected-frame' is neither nil
    nor t.  */
@@ -710,11 +706,10 @@ read_minibuf (Lisp_Object map, Lisp_Object initial,
                           Fcons (calling_window,
                                  minibuf_save_list))));
   minibuf_save_list
-    = Fcons (minibuf_prompt,
-            Fcons (Vcurrent_prefix_arg,
-                                 Fcons (Vminibuffer_history_position,
-                                        Fcons (Vminibuffer_history_variable,
-                                               minibuf_save_list))));
+    = Fcons (Vcurrent_prefix_arg,
+            Fcons (Vminibuffer_history_position,
+                   Fcons (Vminibuffer_history_variable,
+                          minibuf_save_list)));
   minibuf_save_list
     = Fcons (Fthis_command_keys_vector (), minibuf_save_list);
 
@@ -728,7 +723,6 @@ read_minibuf (Lisp_Object map, Lisp_Object initial,
 
   /* Now that we can restore all those variables, start changing them.  */
 
-  minibuf_prompt = Fcopy_sequence (prompt);
   Vminibuffer_history_position = histpos;
   Vminibuffer_history_variable = histvar;
 
@@ -815,7 +809,7 @@ read_minibuf (Lisp_Object map, Lisp_Object initial,
                                       : Qt);
 
     /* Insert the prompt, record where it ends.  */
-    Finsert (1, &minibuf_prompt);
+    Finsert (1, &prompt);
     if (PT > BEG)
       {
        Fput_text_property (make_fixnum (BEG), make_fixnum (PT),
@@ -1107,8 +1101,6 @@ read_minibuf_unwind (void)
   this_command_key_count = ASIZE (key_vec);
   this_command_keys = key_vec;
   minibuf_save_list = Fcdr (minibuf_save_list);
-  minibuf_prompt = Fcar (minibuf_save_list);
-  minibuf_save_list = Fcdr (minibuf_save_list);
   Vcurrent_prefix_arg = Fcar (minibuf_save_list);
   minibuf_save_list = Fcdr (minibuf_save_list);
   Vminibuffer_history_position = Fcar (minibuf_save_list);
@@ -2093,14 +2085,6 @@ DEFUN ("minibuffer-depth", Fminibuffer_depth, Sminibuffer_depth, 0, 0, 0,
   return make_fixnum (minibuf_level);
 }
 
-DEFUN ("minibuffer-prompt", Fminibuffer_prompt, Sminibuffer_prompt, 0, 0, 0,
-       doc: /* Return the prompt string of the currently-active minibuffer.
-If no minibuffer is active, return nil.  */)
-  (void)
-{
-  return Fcopy_sequence (minibuf_prompt);
-}
-
 \f
 
 void
@@ -2133,7 +2117,6 @@ init_minibuf_once_for_pdumper (void)
   Vminibuffer_list = Qnil;
   Vcommand_loop_level_list = Qnil;
   minibuf_level = 0;
-  minibuf_prompt = Qnil;
   minibuf_save_list = Qnil;
   last_minibuf_string = Qnil;
 }
@@ -2141,7 +2124,6 @@ init_minibuf_once_for_pdumper (void)
 void
 syms_of_minibuf (void)
 {
-  staticpro (&minibuf_prompt);
   staticpro (&minibuf_save_list);
   staticpro (&MB_frame);
   MB_frame = Qnil;
@@ -2351,7 +2333,6 @@ showing the *Completions* buffer, if any.  */);
   defsubr (&Sread_variable);
   defsubr (&Sread_buffer);
   defsubr (&Sminibuffer_depth);
-  defsubr (&Sminibuffer_prompt);
 
   defsubr (&Sminibufferp);
   defsubr (&Sinnermost_minibuffer_p);