]> git.eshelyaron.com Git - emacs.git/commitdiff
Remove internal_with_output_to_temp_buffer, replacing sole user with Lisp.
authorChong Yidong <cyd@stupidchicken.com>
Fri, 8 Apr 2011 15:37:15 +0000 (11:37 -0400)
committerChong Yidong <cyd@stupidchicken.com>
Fri, 8 Apr 2011 15:37:15 +0000 (11:37 -0400)
* lisp/help.el (help-form-show): New function, to be called from C.
Put help-form output in a buffer named differently than *Help*.

* src/keyboard.c (read_char): Call Lisp function help-form-show,
instead of using internal_with_output_to_temp_buffer.
(Qhelp_form_show): New var.

* src/lisp.h (internal_with_output_to_temp_buffer): Remove prototype.

* src/print.c (internal_with_output_to_temp_buffer): Function deleted.

lisp/ChangeLog
lisp/help.el
src/ChangeLog
src/keyboard.c
src/lisp.h
src/print.c
src/window.c

index 6dfcbdbcdc7bbe5761cab598083b5808274f04cc..d17c98103a0f37334b471a18837d395a69af1305 100644 (file)
@@ -1,3 +1,8 @@
+2011-04-08  Chong Yidong  <cyd@stupidchicken.com>
+
+       * help.el (help-form-show): New function, to be called from C.
+       Put help-form output in a buffer named differently than *Help*.
+
 2011-04-08  Eli Zaretskii  <eliz@gnu.org>
 
        * files.el (file-size-human-readable): New function.
index e148e5ef6abba5be4edbfff0218259f3bb3befb4..b7f46a02155df2feb1e1b8fa5d377ba91897d385 100644 (file)
@@ -1256,6 +1256,15 @@ Select help window if the actual value of the user option
        ;; Reset `help-window' to nil to avoid confusing future calls of
        ;; `help-mode-finish' with plain `with-output-to-temp-buffer'.
        (setq help-window nil))))
+
+;; Called from C, on encountering `help-char' when reading a char.
+;; Don't print to *Help*; that would clobber Help history.
+(defun help-form-show ()
+  "Display the output of a non-nil `help-form'."
+  (let ((msg (eval help-form)))
+    (if (stringp msg)
+       (with-output-to-temp-buffer " *Char Help*"
+         (princ msg)))))
 \f
 (provide 'help)
 
index 3e4100878c4d046ecf617466285e3ff05512cdf1..e74643be30a866c151ede26754e25af93d4f3622 100644 (file)
@@ -1,3 +1,13 @@
+2011-04-08  Chong Yidong  <cyd@stupidchicken.com>
+
+       * keyboard.c (read_char): Call Lisp function help-form-show,
+       instead of using internal_with_output_to_temp_buffer.
+       (Qhelp_form_show): New var.
+
+       * print.c (internal_with_output_to_temp_buffer): Function deleted.
+
+       * lisp.h (internal_with_output_to_temp_buffer): Remove prototype.
+
 2011-04-06  Chong Yidong  <cyd@stupidchicken.com>
 
        * process.c (Flist_processes): Removed to Lisp.
index ae4fddb2c89bdff4fb648f701c731d0aca78dfe4..70bd47181b1c744fc5cd0b17cc62127a1e2acd2f 100644 (file)
@@ -260,6 +260,8 @@ Lisp_Object Qdeferred_action_function;
 Lisp_Object Qinput_method_exit_on_first_char;
 Lisp_Object Qinput_method_use_echo_area;
 
+Lisp_Object Qhelp_form_show;
+
 /* File in which we write all commands we read.  */
 FILE *dribble;
 
@@ -3095,10 +3097,7 @@ read_char (int commandflag, int nmaps, Lisp_Object *maps, Lisp_Object prev_event
        = Fcons (Fcurrent_window_configuration (Qnil),
                 help_form_saved_window_configs);
       record_unwind_protect (read_char_help_form_unwind, Qnil);
-
-      tem0 = Feval (Vhelp_form, Qnil);
-      if (STRINGP (tem0))
-       internal_with_output_to_temp_buffer ("*Help*", print_help, tem0);
+      call0 (Qhelp_form_show);
 
       cancel_echoing ();
       do
@@ -11602,6 +11601,9 @@ syms_of_keyboard (void)
   Qinput_method_use_echo_area = intern_c_string ("input-method-use-echo-area");
   staticpro (&Qinput_method_use_echo_area);
 
+  Qhelp_form_show = intern_c_string ("help-form-show");
+  staticpro (&Qhelp_form_show);
+
   Fset (Qinput_method_exit_on_first_char, Qnil);
   Fset (Qinput_method_use_echo_area, Qnil);
 
index f3016d521d19f13de42719bc048de6e33744d0ac..250c0d807acf3b5128df43a30817784fd3a51425 100644 (file)
@@ -2775,8 +2775,6 @@ extern Lisp_Object Qprint_escape_newlines;
 extern void write_string (const char *, int);
 extern void print_error_message (Lisp_Object, Lisp_Object, const char *,
                                 Lisp_Object);
-extern Lisp_Object internal_with_output_to_temp_buffer
-        (const char *, Lisp_Object (*) (Lisp_Object), Lisp_Object);
 #define FLOAT_TO_STRING_BUFSIZE 350
 extern void float_to_string (char *, double);
 extern void syms_of_print (void);
index c076e1ec973f72946bb3e9702df578aa1634af75..f68f04ac5fa2cee3173e0f6c5ad7b94c0a131415 100644 (file)
@@ -520,29 +520,6 @@ temp_output_buffer_setup (const char *bufname)
 
   specbind (Qstandard_output, buf);
 }
-
-/* FIXME: Use Lisp's with-output-to-temp-buffer instead!  */
-Lisp_Object
-internal_with_output_to_temp_buffer (const char *bufname, Lisp_Object (*function) (Lisp_Object), Lisp_Object args)
-{
-  int count = SPECPDL_INDEX ();
-  Lisp_Object buf, val;
-  struct gcpro gcpro1;
-
-  GCPRO1 (args);
-  record_unwind_protect (Fset_buffer, Fcurrent_buffer ());
-  temp_output_buffer_setup (bufname);
-  buf = Vstandard_output;
-  UNGCPRO;
-
-  val = (*function) (args);
-
-  GCPRO1 (val);
-  temp_output_buffer_show (buf);
-  UNGCPRO;
-
-  return unbind_to (count, val);
-}
 \f
 static void print (Lisp_Object obj, register Lisp_Object printcharfun, int escapeflag);
 static void print_preprocess (Lisp_Object obj);
index 5ca46dd3316f3b28befb88c84450317e67d0d2c9..d023f9a29cd098c8a20db4f94a13e1f179cacf11 100644 (file)
@@ -3664,9 +3664,6 @@ temp_output_buffer_show (register Lisp_Object buf)
   BEGV = BEG;
   ZV = Z;
   SET_PT (BEG);
-#if 0  /* rms: there should be no reason for this.  */
-  XBUFFER (buf)->prevent_redisplay_optimizations_p = 1;
-#endif
   set_buffer_internal (old);
 
   if (!NILP (Vtemp_buffer_show_function))