Re: [PATCH v4 5/5] notmuch-emacs-mua: do not create a frame by default with --client
authorTomi Ollila <tomi.ollila@iki.fi>
Fri, 28 Aug 2015 19:18:17 +0000 (22:18 +0300)
committerW. Trevor King <wking@tremily.us>
Sat, 20 Aug 2016 21:49:26 +0000 (14:49 -0700)
61/c73cd59d4d563ea5cd175778cbcae512050b59 [new file with mode: 0644]

diff --git a/61/c73cd59d4d563ea5cd175778cbcae512050b59 b/61/c73cd59d4d563ea5cd175778cbcae512050b59
new file mode 100644 (file)
index 0000000..54c56e2
--- /dev/null
@@ -0,0 +1,250 @@
+Return-Path: <tomi.ollila@iki.fi>\r
+X-Original-To: notmuch@notmuchmail.org\r
+Delivered-To: notmuch@notmuchmail.org\r
+Received: from localhost (localhost [127.0.0.1])\r
+ by arlo.cworth.org (Postfix) with ESMTP id 9EB936DE0AF8\r
+ for <notmuch@notmuchmail.org>; Fri, 28 Aug 2015 12:19:52 -0700 (PDT)\r
+X-Virus-Scanned: Debian amavisd-new at cworth.org\r
+X-Spam-Flag: NO\r
+X-Spam-Score: 0.835\r
+X-Spam-Level: \r
+X-Spam-Status: No, score=0.835 tagged_above=-999 required=5 tests=[AWL=0.183, \r
+ SPF_NEUTRAL=0.652] autolearn=disabled\r
+Received: from arlo.cworth.org ([127.0.0.1])\r
+ by localhost (arlo.cworth.org [127.0.0.1]) (amavisd-new, port 10024)\r
+ with ESMTP id hPmKsDw91emK for <notmuch@notmuchmail.org>;\r
+ Fri, 28 Aug 2015 12:19:50 -0700 (PDT)\r
+Received: from guru.guru-group.fi (guru.guru-group.fi [46.183.73.34])\r
+ by arlo.cworth.org (Postfix) with ESMTP id D564E6DE005F\r
+ for <notmuch@notmuchmail.org>; Fri, 28 Aug 2015 12:19:49 -0700 (PDT)\r
+Received: from guru.guru-group.fi (localhost [IPv6:::1])\r
+ by guru.guru-group.fi (Postfix) with ESMTP id 9400210008E;\r
+ Fri, 28 Aug 2015 22:18:17 +0300 (EEST)\r
+From: Tomi Ollila <tomi.ollila@iki.fi>\r
+To: Jani Nikula <jani@nikula.org>, notmuch@notmuchmail.org\r
+Subject: Re: [PATCH v4 5/5] notmuch-emacs-mua: do not create a frame by\r
+ default with --client\r
+In-Reply-To: <87si73uvbu.fsf@nikula.org>\r
+References: <cover.1439629384.git.jani@nikula.org>\r
+ <455026447d3f75b1038ac11cebe734431604be9d.1439629384.git.jani@nikula.org>\r
+ <m21tepvpm5.fsf@guru.guru-group.fi> <87si73uvbu.fsf@nikula.org>\r
+User-Agent: Notmuch/0.20.2+68~g0c35549 (http://notmuchmail.org) Emacs/24.3.1\r
+ (x86_64-unknown-linux-gnu)\r
+X-Face: HhBM'cA~<r"^Xv\KRN0P{vn'Y"Kd;zg_y3S[4)KSN~s?O\"QPoL\r
+ $[Xv_BD:i/F$WiEWax}R(MPS`^UaptOGD`*/=@\1lKoVa9tnrg0TW?"r7aRtgk[F\r
+ !)g;OY^,BjTbr)Np:%c_o'jj,Z\r
+Date: Fri, 28 Aug 2015 22:18:17 +0300\r
+Message-ID: <m2mvxbjk7a.fsf@guru.guru-group.fi>\r
+MIME-Version: 1.0\r
+Content-Type: text/plain; charset=utf-8\r
+Content-Transfer-Encoding: quoted-printable\r
+X-BeenThere: notmuch@notmuchmail.org\r
+X-Mailman-Version: 2.1.18\r
+Precedence: list\r
+List-Id: "Use and development of the notmuch mail system."\r
+ <notmuch.notmuchmail.org>\r
+List-Unsubscribe: <http://notmuchmail.org/mailman/options/notmuch>,\r
+ <mailto:notmuch-request@notmuchmail.org?subject=unsubscribe>\r
+List-Archive: <http://notmuchmail.org/pipermail/notmuch/>\r
+List-Post: <mailto:notmuch@notmuchmail.org>\r
+List-Help: <mailto:notmuch-request@notmuchmail.org?subject=help>\r
+List-Subscribe: <http://notmuchmail.org/mailman/listinfo/notmuch>,\r
+ <mailto:notmuch-request@notmuchmail.org?subject=subscribe>\r
+X-List-Received-Date: Fri, 28 Aug 2015 19:19:52 -0000\r
+\r
+On Fri, Aug 28 2015, Jani Nikula <jani@nikula.org> wrote:\r
+\r
+> On Wed, 26 Aug 2015, Tomi Ollila <tomi.ollila@iki.fi> wrote:\r
+>> On Sat, Aug 15 2015, Jani Nikula <jani@nikula.org> wrote:\r
+>>\r
+>>> Make the default behaviour for --client the same as emacsclient\r
+>>> default: do not create a new frame. Add a new option --create-frame,\r
+>>> passing the same option to emacsclient to create a frame.\r
+>>>\r
+>>> ---\r
+>>>\r
+>>> v2: fix killing frame with --create-frame\r
+>>>\r
+>>> v3: fix --create-frame w/o --client parameter check\r
+>>>\r
+>>> v4: fix kill terminal logic, document behaviour with daemon mode\r
+>>> ---\r
+>>>  doc/man1/notmuch-emacs-mua.rst |  6 ++++++\r
+>>>  notmuch-emacs-mua              | 14 ++++++++++----\r
+>>>  2 files changed, 16 insertions(+), 4 deletions(-)\r
+>>>\r
+>>> diff --git a/doc/man1/notmuch-emacs-mua.rst b/doc/man1/notmuch-emacs-mu=\r
+a.rst\r
+>>> index 89a2fead17b1..c3689eb82c8a 100644\r
+>>> --- a/doc/man1/notmuch-emacs-mua.rst\r
+>>> +++ b/doc/man1/notmuch-emacs-mua.rst\r
+>>> @@ -45,6 +45,12 @@ Supported options for **notmuch-emacs-mua** include\r
+>>>          Automatically start Emacs in daemon mode, if the Emacs server\r
+>>>          is not running. Applicable with ``--client``.\r
+>>>=20=20\r
+>>> +    ``--create-frame``\r
+>>> +        Create a new frame instead of trying to use the current Emacs\r
+>>> +        frame. Applicable with ``--client``. This will be required\r
+>>> +        when Emacs is running (or automatically started with\r
+>>> +        ``--auto-daemon``) in daemon mode.\r
+>>> +\r
+>>>      ``--print``\r
+>>>          Output the resulting elisp to stdout instead of evaluating it.\r
+>>>=20=20\r
+>>> diff --git a/notmuch-emacs-mua b/notmuch-emacs-mua\r
+>>> index ac03a4a60d56..b51d8d0e2c5b 100755\r
+>>> --- a/notmuch-emacs-mua\r
+>>> +++ b/notmuch-emacs-mua\r
+>>> @@ -37,11 +37,10 @@ PRINT_ONLY=3D\r
+>>>  NO_WINDOW=3D\r
+>>>  USE_EMACSCLIENT=3D\r
+>>>  AUTO_DAEMON=3D\r
+>>> -CREATE_FRAME=3D"-c"\r
+>>> +CREATE_FRAME=3D\r
+>>>=20=20\r
+>>>  # The crux of it all: construct an elisp progn and eval it.\r
+>>>  ELISP=3D"(prog1 'done (require 'notmuch) (notmuch-mua-new-mail)"\r
+>>> -ELISP=3D"${ELISP} (setq message-exit-actions (list #'save-buffers-kill=\r
+-terminal))"\r
+>>>=20=20\r
+>>>  # Short options compatible with mutt(1).\r
+>>>  while getopts :s:c:b:i:h opt; do\r
+>>> @@ -65,7 +64,7 @@ while getopts :s:c:b:i:h opt; do\r
+>>>                opt=3D${opt%%=3D*}\r
+>>>                ;;\r
+>>>            # Long options without arguments.\r
+>>> -          --help|--print|--no-window-system|--client|--auto-daemon)\r
+>>> +          --help|--print|--no-window-system|--client|--auto-daemon|--create-fr=\r
+ame)\r
+>>>                ;;\r
+>>>            *)\r
+>>>                echo "$0: unknown long option ${opt}, or argument mismatch." >&2\r
+>>> @@ -103,7 +102,6 @@ while getopts :s:c:b:i:h opt; do\r
+>>>        ;;\r
+>>>    --no-window-system)\r
+>>>        NO_WINDOW=3D"-nw"\r
+>>> -      CREATE_FRAME=3D\r
+>>>        ;;\r
+>>>    --client)\r
+>>>        USE_EMACSCLIENT=3D"yes"\r
+>>> @@ -111,6 +109,9 @@ while getopts :s:c:b:i:h opt; do\r
+>>>    --auto-daemon)\r
+>>>        AUTO_DAEMON=3D"--alternate-editor=3D"\r
+>>>        ;;\r
+>>> +  --create-frame)\r
+>>> +      CREATE_FRAME=3D"-c"\r
+>>> +      ;;\r
+>>>    *)\r
+>>>        # We should never end up here.\r
+>>>        echo "$0: internal error (option ${opt})." >&2\r
+>>\r
+>> This looks pretty good now; I player quite a bit with --client,\r
+>> --create-frame and --auto-daemon=20\r
+>> (with and without setting EMACSCLIENT=3D'echo emacsclient')\r
+>>\r
+>> Based on that I think this check should be added here (after option\r
+>> parsing):\r
+>>\r
+>> if [ -n "$AUTO_DAEMON" -a -z "$CREATE_FRAME" ]; then\r
+>>     echo "$0: --auto-daemon is only applicable with --create-frame." >&2\r
+>>     exit 1=20=20=20=20=20=20=20\r
+>> fi\r
+>>\r
+>> without this one may execute ./notmuch-emacs-mua --client --auto-daemon\r
+>> which yields starting emacs in daemon mode (in this example it is expect=\r
+ed\r
+>> emacs is not running; otherwise --auto-daemon has no use in this example)\r
+>> -- but no ui to that newly-running emacs is provided. Similar behaviour\r
+>> can be observed by the following\r
+>\r
+> This problem is present with the current code already, right now. I\r
+> don't see the need to fix everything in my series.\r
+\r
+Yes, the problem was already present in patch 4/5 (and probably earlier as\r
+you mentioned that there was problem already) -- I just did not want\r
+to pick that also in this discussion... ;/\r
+\r
+>> $ emacsclient --eval '(kill emacs) ;; but beware! '=20\r
+>> $ emacsclient --alternate-editor=3D --eval '(find-file "/etc/passwd")'\r
+>>\r
+>> (side note: using this --alternate-editor=3D is pretty nifty way to get =\r
+it done)\r
+>>\r
+>> emacs --daemon is executed which loaded /etc/passwd but w/o ui\r
+>>\r
+>> Note the difference in:\r
+>>\r
+>> emacsclient --alternate-editor=3D /etc/passwd\r
+>>\r
+>> now emacs --daemon is executed *and* ui where /etc/passwd is available is\r
+>> provided!\r
+>>\r
+>> otoh,\r
+>> emacsclient --alternate-editor=3D -c [-nw] --eval '(find-file "/etc/pass=\r
+wd")'\r
+>>\r
+>> works fine, albeit a bit different than the one where /etc/passwd was gi=\r
+ven\r
+>> as a simple filename argument.\r
+>>\r
+>> comparative to ./notmuch-emacs-mua --client --create-frame --auto-daemon=\r
+=20\r
+>>\r
+>>> @@ -128,6 +129,11 @@ for arg; do\r
+>>>      ELISP=3D"${ELISP} (message-goto-to) (insert \"${arg}, \")"\r
+>>>  done\r
+>>>=20=20\r
+>>> +# Kill the terminal/frame if we're creating one.\r
+>>> +if [ -z "$USE_EMACSCLIENT" -o -n "$CREATE_FRAME" -o -n "$NO_WINDOW" ];=\r
+ then\r
+>>> +    ELISP=3D"${ELISP} (setq message-exit-actions (list #'save-buffers-=\r
+kill-terminal))"\r
+>>> +fi\r
+>>\r
+>> I am not very happy that message-exit-actions was added to $ELISP when\r
+>> not using emacsclient; when emacs is started its sole (initial) purpose =\r
+is\r
+>> to serve mail sending (and not lending a frame in some other emacs) -- in\r
+>> this case it would be nice to be able to retrieve the sent mail buffer.\r
+>\r
+> And I am not very happy with being expected to modify these patches ad\r
+> infinitum while trying to get back the *one* use case I wrote this\r
+> script for in the first place, and that got broken somewhere down the\r
+> line.\r
+\r
+I can agree that these patches could be applied as is and I can do the\r
+followup patch that changes the things later ... but I'd like to get these\r
+changes I presented discussed and agreed (whatever the agreement is) before\r
+doing these so that the result will be good and safe for all potential\r
+users...\r
+\r
+>\r
+> Sincerely,\r
+> Jani.\r
+>\r
+\r
+yst=C3=A4v=C3=A4llisin terveisin :D,\r
+Tomi\r
+\r
+>\r
+>>\r
+>> perhaps the above could be changed to just=20\r
+>>\r
+>> if [ -n "$CREATE_FRAME" ]; then\r
+>>     ELISP=3D"${ELISP} (setq message-exit-actions (list #'save-buffers-ki=\r
+ll-terminal))"\r
+>> fi\r
+>>\r
+>> another option is --yet-another-option ;/\r
+>>\r
+>> No other issues (relevant to this series).\r
+>>\r
+>> Tomi\r
+>>\r
+>>\r
+>>> +\r
+>>>  # End progn.\r
+>>>  ELISP=3D"${ELISP})"\r
+>>>=20=20\r
+>>> --=20\r
+>>> 2.1.4\r