Subject: bug#57752: 28.1.91; emacsclient-mail.desktop doesn't work for me

From: Robert Pluim <[email-masked]>
Date: Fri, 16 Sep 2022 16:18:00 +0200

>>>>> On Fri, 16 Sep 2022 12:14:33 +0200, Lars Ingebrigtsen <[email-masked]> said:

    Lars> Robert Pluim <[email-masked]> writes:
    Lars> I've idly wondered before whether we should add a general
    Lars> mechanism for
    Lars> this to avoid having to create functions that look at
    Lars> `command-line-args-left' themselves.  (And --eval is problematic in
    Lars> circumstances like this.)
    >> 
    >> emacsclient interprets
    >> 
    >> emacsclient arg1 arg2 --eval (form1) (form2) (form3)
    >> 
    >> as "send (form1), then (form2) then (form3), so by analogy this:
    >> 
    Lars> --function foo --function-args bar zot gazonk
    >> 
    >> doesnʼt require a --function-args parameter

    Lars> I was thinking first and foremost about on the Emacs side, not on the
    Lars> emacsside client.  But if then Emacs had --function-args, then by
    Lars> analogy, emacsclient should also have it.

Wouldnʼt it be easier to define a macro to do the
`command-line-args-left' handling on behalf of a defun? That macro
would then consume any args up to the next arg starting with '-', so
you could do

emacs --function foo arg1 arg2 arg3 --function bar arg4 arg5 arg6

There are also quoting and conversion issues to think about, eg:

emacs --function foo hello 3 indent-tabs-mode 'always

Do we make people say

"hello" if they want strings, which implies that indent-tabs-mode
would be treated as a variable, 3 as a number, and the ' needs to be
escaped somehow?

Robert
--