From 7fd6fa4a8b71615fa21dc990503736d4405193c6 Mon Sep 17 00:00:00 2001 From: Sean Whitton Date: Sun, 8 Feb 2026 16:52:12 +0000 Subject: [PATCH] Revert "Extend emacs server protocol for empty arguments" This reverts this change: Author: Andreas Schwab AuthorDate: Sun Feb 8 12:34:02 2026 +0100 Extend emacs server protocol for empty arguments An empty argument is represented by &0. On the receiving side, &0 is replaced by nothing. * lisp/server.el (server-unquote-arg): Replace "&0" by nothing. (server-quote-arg): Produce "&0" for an empty string. * lib-src/emacsclient.c (quote_argument): Produce "&0" for an empty string. (unquote_argument): Replace "&0" by nothing. (Bug#80356) The bug in question was already fixed by this change: Author: Sean Whitton AuthorDate: Fri Nov 7 12:33:21 2025 +0000 Don't discard empty string arguments from emacsclient * lisp/server.el (server--process-filter-1): Don't discard empty string arguments from emacsclient. (server-eval-args-left): * doc/emacs/misc.texi (emacsclient Options): * etc/NEWS: Document the change. --- lib-src/emacsclient.c | 6 +----- lisp/server.el | 20 ++++++++------------ 2 files changed, 9 insertions(+), 17 deletions(-) diff --git a/lib-src/emacsclient.c b/lib-src/emacsclient.c index ba08d7dd6d3..4f3215ea6b1 100644 --- a/lib-src/emacsclient.c +++ b/lib-src/emacsclient.c @@ -867,10 +867,8 @@ send_to_emacs (HSOCKET s, const char *data) static void quote_argument (HSOCKET s, const char *str) { - char *copy = xmalloc (strlen (str) * 2 + 3); + char *copy = xmalloc (strlen (str) * 2 + 1); char *q = copy; - if (*str == '\0') - *q++ = '&', *q++ = '0'; if (*str == '-') *q++ = '&', *q++ = *str++; for (; *str; str++) @@ -912,8 +910,6 @@ unquote_argument (char *str) c = ' '; else if (c == 'n') c = '\n'; - else if (c == '0') - continue; } *q++ = c; } diff --git a/lisp/server.el b/lisp/server.el index 88b370d15a2..fcfc6c01972 100644 --- a/lisp/server.el +++ b/lisp/server.el @@ -531,7 +531,6 @@ See `server-quote-arg' and `server-process-filter'." (?& "&") (?- "-") (?n "\n") - (?0 "") (_ " "))) arg t t)) @@ -539,19 +538,16 @@ See `server-quote-arg' and `server-process-filter'." "In ARG, insert a & before each &, each space, each newline, and -. Change spaces to underscores, too, so that the return value never contains a space. -An empty ARG is represented by &0. See `server-unquote-arg' and `server-process-filter'." - (if (equal arg "") - "&0" - (replace-regexp-in-string - "[-&\n ]" (lambda (s) - (pcase (aref s 0) - (?& "&&") - (?- "&-") - (?\n "&n") - (?\s "&_"))) - arg t t))) + (replace-regexp-in-string + "[-&\n ]" (lambda (s) + (pcase (aref s 0) + (?& "&&") + (?- "&-") + (?\n "&n") + (?\s "&_"))) + arg t t)) (defun server-send-string (proc string) "A wrapper around `process-send-string' for logging."