all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Stefan Monnier <monnier@iro.umontreal.ca>
To: Jarek Czekalski <jarekczek@poczta.onet.pl>
Cc: emacs-devel@gnu.org
Subject: Re: patch: create default error output function
Date: Tue, 05 Nov 2013 15:48:38 -0500	[thread overview]
Message-ID: <jwv4n7qfw7s.fsf-monnier+emacs@gnu.org> (raw)
In-Reply-To: <52740C91.3000305@poczta.onet.pl> (Jarek Czekalski's message of "Fri, 01 Nov 2013 21:18:25 +0100")

> As suggested by Stefan in [1] I prepared a patch that creates a new elisp
> function which makes a default value for command-error-function.  This makes
> it possible to use this variable by packages. Patch is against r114884.

Thanks.  Installed (after moving the code a bit, to reduce the size of
the patch).  Also, I installed the patch below on top of it to better
follow the conventions.

> Sometimes it's better to have a ticket in the tracker for a patch for easy
> reference to a discussion from a commit log message. But in gnu they say
> about posting a patch to the list, so I post.

That's OK, but M-x report-emacs-bug is also a good way to do that,
indeed, so it gets a bug number.


        Stefan


PS: My email to jarekczek@poczta.onet.pl seems to have trouble
reaching you.  E.g. I get warnings like:

   ... while talking to mx.poczta.onet.pl.:
   >>> DATA
   <<< 450 4.7.1 <jarekczek@poczta.onet.pl>: Recipient address rejected: Spf check: softfail
   <jarekczek@poczta.onet.pl>... Deferred: 450 4.7.1 <jarekczek@poczta.onet.pl>: Recipient address rejected: Spf check: softfail
   <<< 554 5.5.1 Error: no valid recipients
   Warning: message still undelivered after 4 hours
   Will keep trying until message is 2 days old

PPS: I installed your patch as a "tiny change".  We won't be able to
accept many more contributions from you until you sign some
copyright paperwork.  If you want to sign such paperwork to get it out
of the way, then please send me an email.


=== modified file 'src/ChangeLog'
--- src/ChangeLog	2013-11-05 20:12:39 +0000
+++ src/ChangeLog	2013-11-05 20:13:34 +0000
@@ -1,7 +1,8 @@
 2013-11-05  Jarek Czekalski  <jarekczek@poczta.onet.pl>  (tiny change)
 
-	* keyboard.c: new function default-error-output which becomes
-	a default value for command-error-function.
+	* keyboard.c (Fdefault_error_output): New function, extracted from
+	cmd_error_internal.
+	(syms_of_keyboard): Use it for Vcommand_error_function.
 
 2013-11-05  Stefan Monnier  <monnier@iro.umontreal.ca>
 

=== modified file 'src/keyboard.c'
--- src/keyboard.c	2013-11-05 20:12:39 +0000
+++ src/keyboard.c	2013-11-05 20:45:53 +0000
@@ -241,8 +241,6 @@
 
 static Lisp_Object Qecho_area_clear_hook;
 
-static Lisp_Object Qdefault_error_output;
-
 /* Hooks to run before and after each command.  */
 static Lisp_Object Qpre_command_hook;
 static Lisp_Object Qpost_command_hook;
@@ -1074,8 +1072,7 @@
   Vquit_flag = Qnil;
   Vinhibit_quit = Qt;
 
-  /* Use user's specified output function,
-     initially it is our Fdefault_error_output.  */
+  /* Use user's specified output function if any.  */
   if (!NILP (Vcommand_error_function))
     call3 (Vcommand_error_function, data,
 	   context ? build_string (context) : empty_unibyte_string,
@@ -1084,17 +1081,17 @@
   Vsignaling_function = Qnil;
 }
 
-DEFUN ("default-error-output", Fdefault_error_output,
-       Sdefault_error_output, 3, 3, 0,
-       doc: /* Produce default output for the error message,
-into the messages buffer and the echo area.  */)
+DEFUN ("command-error-default-function", Fcommand_error_default_function,
+       Scommand_error_default_function, 3, 3, 0,
+       doc: /* Produce default output for unhandled error message.
+Default value of `command-error-function'.  */)
   (Lisp_Object data, Lisp_Object context, Lisp_Object signal)
 {
   struct frame *sf = SELECTED_FRAME ();
   const char *sz_context;
 
-  CHECK_STRING(context);
-  sz_context = XSTRING(context)->data;
+  CHECK_STRING (context);
+  sz_context = XSTRING (context)->data;
 
   /* If the window system or terminal frame hasn't been initialized
      yet, or we're not interactive, write the message to stderr and exit.  */
@@ -1126,6 +1123,7 @@
 
       print_error_message (data, Qt, sz_context, signal);
     }
+  return Qnil;
 }
 
 static Lisp_Object command_loop_2 (Lisp_Object);
@@ -11123,7 +11121,7 @@
   defsubr (&Sabort_recursive_edit);
   defsubr (&Sexit_recursive_edit);
   defsubr (&Srecursion_depth);
-  defsubr (&Sdefault_error_output);
+  defsubr (&Scommand_error_default_function);
   defsubr (&Stop_level);
   defsubr (&Sdiscard_input);
   defsubr (&Sopen_dribble_file);
@@ -11602,18 +11600,14 @@
 peculiar kind of quitting.  */);
   Vthrow_on_input = Qnil;
 
-  DEFSYM (Qdefault_error_output, "default-error-output");
   DEFVAR_LISP ("command-error-function", Vcommand_error_function,
-	       doc: /* If non-nil, function to output error messages.
-The arguments are the error data, a list of the form
- (SIGNALED-CONDITIONS . SIGNAL-DATA)
-such as just as `condition-case' would bind its variable to,
-the context (a string which normally goes at the start of the message),
-and the Lisp function within which the error was signaled.
-
-This variable is initialized with Emacs default error output function.
-It is suggested that user functions are added using add-function.  */);
-  Vcommand_error_function = Qdefault_error_output;
+	       doc: /* Function to output error messages.
+Called with three arguments:
+- the error data, a list of the form (SIGNALED-CONDITION . SIGNAL-DATA)
+  such as what `condition-case' would bind its variable to,
+- the context (a string which normally goes at the start of the message),
+- the Lisp function within which the error was signaled.  */);
+  Vcommand_error_function = intern ("command-error-default-function");
 
   DEFVAR_LISP ("enable-disabled-menus-and-buttons",
 	       Venable_disabled_menus_and_buttons,




  parent reply	other threads:[~2013-11-05 20:48 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-11-01 20:18 patch: create default error output function Jarek Czekalski
2013-11-02 10:41 ` Xue Fuqiao
2013-11-02 10:49   ` Xue Fuqiao
2013-11-05 20:48 ` Stefan Monnier [this message]
2013-11-05 21:03   ` Jarek Czekalski
2013-11-06  3:13     ` Stefan Monnier

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=jwv4n7qfw7s.fsf-monnier+emacs@gnu.org \
    --to=monnier@iro.umontreal.ca \
    --cc=emacs-devel@gnu.org \
    --cc=jarekczek@poczta.onet.pl \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.