From 73c9509720e59aec059e206506c0cf461d635c9f Mon Sep 17 00:00:00 2001 From: "Avi Halachmi (:avih)" Date: Wed, 28 Jul 2021 11:09:30 +0300 Subject: input: argument custom quotes: use ` instead of ! Custom quotes were added in 4f129a3e and began with !, however, this required quoting "!reverse" (used for the cycle-values command), which is inconvenient, and was not taken into account when ! was chosen for custom quotes. Also, ` is more natural for quoting than !. This does break backward compatibility with the earlier form of custom quotes, but at least we didn't make a release yet since custom quotes were added (the last release - 0.33[.1] doesn't support it). --- DOCS/man/input.rst | 10 +++++----- input/cmd.c | 4 ++-- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/DOCS/man/input.rst b/DOCS/man/input.rst index b8eef24d24..12cb75afde 100644 --- a/DOCS/man/input.rst +++ b/DOCS/man/input.rst @@ -162,7 +162,7 @@ a number of other places. | | `` ::= [] ()*`` -| `` ::= ( | " " | !X X!)`` +| `` ::= ( | " " | `X X`)`` ``command_name`` is an unquoted string with the command name itself. See `List of Input Commands`_ for a list. @@ -171,10 +171,10 @@ Arguments are separated by whitespaces even if the command expects only one argument. Arguments with whitespaces or other special characters must be quoted, or the command cannot be parsed correctly. -Double quoted arguments start and end with ``"``. Custom quotes start with ``!`` -(exclamation mark) followed by any ASCII character, and end in the same pair in -reverse order, e.g. ``!'foo'!`` or ``!-bar-!``. The final pair sequence is not -allowed inside the string - in these examples ``'!`` and ``-!`` respectively. +Double quoted arguments start and end with ``"``. Custom quotes start with ````` +(back-quote) followed by any ASCII character, and end in the same pair in +reverse order, e.g. ```-foo-``` or ````bar````. The final pair sequence is not +allowed inside the string - in these examples ``-``` and `````` respectively. Custom quotes take their content literally, while inside double quotes JSON/C-style escaping can be used. JSON escapes according to RFC 8259, minus diff --git a/input/cmd.c b/input/cmd.c index 3d3b7c6587..9f0c758b0c 100644 --- a/input/cmd.c +++ b/input/cmd.c @@ -341,8 +341,8 @@ static int pctx_read_token(struct parse_ctx *ctx, bstr *out) } return 1; } - if (ctx->start.len > 1 && bstr_eatstart0(&ctx->str, "!")) { - char endquote[2] = {ctx->str.start[0], '!'}; + if (ctx->start.len > 1 && bstr_eatstart0(&ctx->str, "`")) { + char endquote[2] = {ctx->str.start[0], '`'}; ctx->str = bstr_cut(ctx->str, 1); int next = bstr_find(ctx->str, (bstr){endquote, 2}); if (next < 0) { -- cgit v1.2.3