>From 6c6f60c200f8bb2ed873cdc8c8ac8e90e090d65f Mon Sep 17 00:00:00 2001 From: "Peder O. Klingenberg" Date: Sun, 19 Feb 2017 20:59:14 +0100 Subject: [PATCH] New option -u / -quell to emacsclient When evaluating expressions for side-effects with emacsclient, the result returned from the server is often useless. These new options allow the user to skip the printing of non-error results. (Bug#25708) * lib-src/emacsclient.c (print_help_and_exit, longopts) (decode_options, main): Implement new option --quell / -u to suppress printing of eval-results. * doc/emacs/misc.texi (emacsclient Options): Document new --quell / -u options. --- doc/emacs/misc.texi | 6 ++++++ etc/NEWS | 4 ++++ lib-src/emacsclient.c | 37 ++++++++++++++++++++++++++----------- 3 files changed, 36 insertions(+), 11 deletions(-) diff --git a/doc/emacs/misc.texi b/doc/emacs/misc.texi index 091ead1bae..df4c1f717d 100644 --- a/doc/emacs/misc.texi +++ b/doc/emacs/misc.texi @@ -1847,6 +1847,12 @@ emacsclient Options Do not let @command{emacsclient} display messages about waiting for Emacs or connecting to remote server sockets. +@item -u +@itemx --quell +Do not let @command{emacsclient} display results returned from the +server. Mostly useful in combination with @samp{-e} when the +evaluation performed is for side-effect rather than result. + @item -s @var{server-name} @itemx --socket-name=@var{server-name} Connect to the Emacs server named @var{server-name}. The server name diff --git a/etc/NEWS b/etc/NEWS index 143e4655de..394c1e904c 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -321,6 +321,10 @@ substituted by a home directory by writing it as "/foo:/:/~/file". settings of 'scroll-margin' up to half the window size, instead of always restricting the margin to a quarter of the window. ++++ +** Emacsclient has a new option -u/--quell. The option suppresses +display of non-error return values from the server process. + * Editing Changes in Emacs 26.1 diff --git a/lib-src/emacsclient.c b/lib-src/emacsclient.c index 70709ecec0..1bb772be1b 100644 --- a/lib-src/emacsclient.c +++ b/lib-src/emacsclient.c @@ -118,6 +118,9 @@ int nowait = 0; /* Nonzero means don't print messages for successful operations. --quiet. */ int quiet = 0; +/* Nonzero means don't print values returned from emacs. --quell */ +int quell = 0; + /* Nonzero means args are expressions to be evaluated. --eval. */ int eval = 0; @@ -160,6 +163,7 @@ struct option longopts[] = { { "no-wait", no_argument, NULL, 'n' }, { "quiet", no_argument, NULL, 'q' }, + { "quell", no_argument, NULL, 'u' }, { "eval", no_argument, NULL, 'e' }, { "help", no_argument, NULL, 'H' }, { "version", no_argument, NULL, 'V' }, @@ -469,9 +473,9 @@ decode_options (int argc, char **argv) { int opt = getopt_long_only (argc, argv, #ifndef NO_SOCKETS_IN_FILE_SYSTEM - "VHneqa:s:f:d:F:tc", + "VHnequa:s:f:d:F:tc", #else - "VHneqa:f:d:F:tc", + "VHnequa:f:d:F:tc", #endif longopts, 0); @@ -519,6 +523,10 @@ decode_options (int argc, char **argv) quiet = 1; break; + case 'u': + quell = 1; + break; + case 'V': message (false, "emacsclient %s\n", VERSION); exit (EXIT_SUCCESS); @@ -631,6 +639,7 @@ The following OPTIONS are accepted:\n\ -e, --eval Evaluate the FILE arguments as ELisp expressions\n\ -n, --no-wait Don't wait for the server to return\n\ -q, --quiet Don't display messages on success\n\ +-u, --quell Don't display non-error return values from the server\n\ -d DISPLAY, --display=DISPLAY\n\ Visit the file in the given display\n\ ", "\ @@ -1860,19 +1869,25 @@ main (int argc, char **argv) else if (strprefix ("-print ", p)) { /* -print STRING: Print STRING on the terminal. */ - str = unquote_argument (p + strlen ("-print ")); - if (needlf) - printf ("\n"); - printf ("%s", str); - needlf = str[0] == '\0' ? needlf : str[strlen (str) - 1] != '\n'; - } + if (!quell) + { + str = unquote_argument (p + strlen ("-print ")); + if (needlf) + printf ("\n"); + printf ("%s", str); + needlf = str[0] == '\0' ? needlf : str[strlen (str) - 1] != '\n'; + } + } else if (strprefix ("-print-nonl ", p)) { /* -print-nonl STRING: Print STRING on the terminal. Used to continue a preceding -print command. */ - str = unquote_argument (p + strlen ("-print-nonl ")); - printf ("%s", str); - needlf = str[0] == '\0' ? needlf : str[strlen (str) - 1] != '\n'; + if (!quell) + { + str = unquote_argument (p + strlen ("-print-nonl ")); + printf ("%s", str); + needlf = str[0] == '\0' ? needlf : str[strlen (str) - 1] != '\n'; + } } else if (strprefix ("-error ", p)) { -- 2.11.0