[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#25082: [PATCH] Add support to emacsclient for command-lline options
From: |
Eli Zaretskii |
Subject: |
bug#25082: [PATCH] Add support to emacsclient for command-lline options in ALTERNATE_EDITOR/--alternate-editor |
Date: |
Tue, 29 Aug 2017 18:43:48 +0300 |
> From: Reuben Thomas <rrt@sc3d.org>
> Date: Mon, 28 Aug 2017 11:15:55 +0100
> Cc: Glenn Morris <rgm@gnu.org>, 25082@debbugs.gnu.org
>
> >> Is this sufficient?
> >
> > It could be, but I'm not sure I understand clearly what is supported
> > and what isn't. Could you please add this information to the NEWS
> > entry and in more detail to the user manual? I think having these
> > details in the manual is important regardless.
>
> I've added detail to NEWS. I am wary of adding more detail to the
> manual, because it could prevent future improvements (for example,
> implementation of quote escaping): we don't want users to rely on the
> lack of quote escaping.
We don't want them to rely on the lack of the escaping, but we also
want to tell them what is supported and how.
> @table @samp
> @item -a @var{command}
> @itemx --alternate-editor=@var{command}
> Specify a command to run if @code{emacsclient} fails to contact Emacs.
> This is useful when running @code{emacsclient} in a script.
>
> Note that this does not document the current situation precisely (a
> user could be forgiven for thinking that "emacs -Q -nw" would already
> work.
Only if we say "shell command", not just "command".
> +Arguments may be quoted, so that for example an absolute path
> +containing a space may be specified; quote escaping is not supported.
I would say `quoted "like this"', since otherwise it isn't clear what
kind of quoting is supported. And I think something similar needs to
be said in the manual.
> + /* Unpack alternate_editor's space-separated tokens into new_argv. */
> + for (char *tok = s; tok != NULL && *tok != '\0';)
> + {
> + /* Allocate new token. */
> + ++toks;
> + new_argv = xrealloc (new_argv, new_argv_size + toks * sizeof (char
> *));
> +
> + /* Skip leading delimiters, and set separator, skipping any
> + opening quote. */
> + size_t skip = strspn (tok, " \"");
> + tok += skip;
> + char sep = (skip > 0 && tok[-1] == '"') ? '"' : ' ';
> +
> + /* Record start of token. */
> + new_argv[toks - 1] = tok;
> +
> + /* Find end of token and overwrite it with NUL. */
> + tok = strchr (tok, sep);
> + if (tok != NULL)
> + *tok++ = '\0';
> + }
> +
> + /* Append main_argv arguments to new_argv. */
> + memcpy (&new_argv[toks], main_argv + optind, extra_args_size);
>
> - execvp (alternate_editor, main_argv + i);
> + execvp (*new_argv, new_argv);
This won't work on Windows, btw, if the arguments include whitespace.
But that can be fixed by followup changes.
Thanks.
- bug#25082: [PATCH] Add support to emacsclient for command-lline options in ALTERNATE_EDITOR/--alternate-editor, Reuben Thomas, 2017/08/20
- bug#25082: [PATCH] Add support to emacsclient for command-lline options in ALTERNATE_EDITOR/--alternate-editor, Reuben Thomas, 2017/08/23
- bug#25082: [PATCH] Add support to emacsclient for command-lline options in ALTERNATE_EDITOR/--alternate-editor, Eli Zaretskii, 2017/08/27
- bug#25082: [PATCH] Add support to emacsclient for command-lline options in ALTERNATE_EDITOR/--alternate-editor, Reuben Thomas, 2017/08/28
- bug#25082: [PATCH] Add support to emacsclient for command-lline options in ALTERNATE_EDITOR/--alternate-editor,
Eli Zaretskii <=
- bug#25082: [PATCH] Add support to emacsclient for command-lline options in ALTERNATE_EDITOR/--alternate-editor, Reuben Thomas, 2017/08/29
- bug#25082: [PATCH] Add support to emacsclient for command-lline options in ALTERNATE_EDITOR/--alternate-editor, Eli Zaretskii, 2017/08/29
- bug#25082: [PATCH] Add support to emacsclient for command-lline options in ALTERNATE_EDITOR/--alternate-editor, Reuben Thomas, 2017/08/29
- bug#25082: [PATCH] Add support to emacsclient for command-lline options in ALTERNATE_EDITOR/--alternate-editor, Eli Zaretskii, 2017/08/30
- bug#25082: [PATCH] Add support to emacsclient for command-lline options in ALTERNATE_EDITOR/--alternate-editor, Reuben Thomas, 2017/08/30