* [PATCH v4 0/5] notmuch-emacs-mua updates
@ 2015-08-15 9:05 Jani Nikula
2015-08-15 9:05 ` [PATCH v4 1/5] man: clean up notmuch-emacs-mua man page Jani Nikula
` (5 more replies)
0 siblings, 6 replies; 13+ messages in thread
From: Jani Nikula @ 2015-08-15 9:05 UTC (permalink / raw)
To: notmuch; +Cc: Tomi Ollila
The main goal is to not force --create-frame on users who dislike
it. Split to some hopefully less controversial prep patches.
BR,
Jani.
Jani Nikula (5):
man: clean up notmuch-emacs-mua man page
notmuch-emacs-mua: support --no-window-system also for non-client
notmuch-emacs-mua: move --client option handling around
notmuch-emacs-mua: add --auto-daemon option to start Emacs daemon as
needed
notmuch-emacs-mua: do not create a frame by default with --client
doc/man1/notmuch-emacs-mua.rst | 21 ++++++++++++++++-----
notmuch-emacs-mua | 30 +++++++++++++++++++++---------
2 files changed, 37 insertions(+), 14 deletions(-)
--
2.1.4
^ permalink raw reply [flat|nested] 13+ messages in thread
* [PATCH v4 1/5] man: clean up notmuch-emacs-mua man page
2015-08-15 9:05 [PATCH v4 0/5] notmuch-emacs-mua updates Jani Nikula
@ 2015-08-15 9:05 ` Jani Nikula
2015-08-15 9:05 ` [PATCH v4 2/5] notmuch-emacs-mua: support --no-window-system also for non-client Jani Nikula
` (4 subsequent siblings)
5 siblings, 0 replies; 13+ messages in thread
From: Jani Nikula @ 2015-08-15 9:05 UTC (permalink / raw)
To: notmuch; +Cc: Tomi Ollila
Move --client description to a more suitable location, stylistic
changes.
---
doc/man1/notmuch-emacs-mua.rst | 10 +++++-----
1 file changed, 5 insertions(+), 5 deletions(-)
diff --git a/doc/man1/notmuch-emacs-mua.rst b/doc/man1/notmuch-emacs-mua.rst
index 36b51cdc3b18..7c2f5c24f1c0 100644
--- a/doc/man1/notmuch-emacs-mua.rst
+++ b/doc/man1/notmuch-emacs-mua.rst
@@ -18,10 +18,6 @@ Supported options for **notmuch-emacs-mua** include
``-h, --help``
Display help.
- ``--client``
- Use emacsclient, rather than emacs. This will start
- an emacs daemon process if necessary.
-
``-s, --subject=``\ <subject>
Specify the subject of the message.
@@ -38,7 +34,11 @@ Supported options for **notmuch-emacs-mua** include
Specify a file to include into the body of the message.
``--no-window-system``
- Even if a window system is available, use the current terminal
+ Even if a window system is available, use the current terminal.
+
+ ``--client``
+ Use **emacsclient**, rather than **emacs**. This will start
+ an Emacs daemon process if necessary.
``--print``
Output the resulting elisp to stdout instead of evaluating it.
--
2.1.4
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v4 2/5] notmuch-emacs-mua: support --no-window-system also for non-client
2015-08-15 9:05 [PATCH v4 0/5] notmuch-emacs-mua updates Jani Nikula
2015-08-15 9:05 ` [PATCH v4 1/5] man: clean up notmuch-emacs-mua man page Jani Nikula
@ 2015-08-15 9:05 ` Jani Nikula
2015-08-15 9:05 ` [PATCH v4 3/5] notmuch-emacs-mua: move --client option handling around Jani Nikula
` (3 subsequent siblings)
5 siblings, 0 replies; 13+ messages in thread
From: Jani Nikula @ 2015-08-15 9:05 UTC (permalink / raw)
To: notmuch; +Cc: Tomi Ollila
Clearly --no-window-system should be applicable without --client as
well. Prepare for future changes with the naming of the variables.
---
notmuch-emacs-mua | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/notmuch-emacs-mua b/notmuch-emacs-mua
index 79714305b3e2..e33aa955d6b5 100755
--- a/notmuch-emacs-mua
+++ b/notmuch-emacs-mua
@@ -34,8 +34,9 @@ EMACS=${EMACS-emacs}
EMACSCLIENT=${EMACSCLIENT-emacsclient}
PRINT_ONLY=
+NO_WINDOW=
USE_EMACSCLIENT=
-CLIENT_TYPE="-c"
+CREATE_FRAME="-c"
# The crux of it all: construct an elisp progn and eval it.
ELISP="(prog1 'done (require 'notmuch) (notmuch-mua-new-mail)"
@@ -103,7 +104,8 @@ while getopts :s:c:b:i:h opt; do
PRINT_ONLY=1
;;
--no-window-system)
- CLIENT_TYPE="-t"
+ NO_WINDOW="-nw"
+ CREATE_FRAME=
;;
*)
# We should never end up here.
@@ -132,7 +134,7 @@ fi
if [ -n "$USE_EMACSCLIENT" ]; then
# Evaluate the progn.
- exec ${EMACSCLIENT} ${CLIENT_TYPE} -a '' --eval "${ELISP}"
+ exec ${EMACSCLIENT} ${NO_WINDOW} ${CREATE_FRAME} -a '' --eval "${ELISP}"
else
- exec ${EMACS} --eval "${ELISP}"
+ exec ${EMACS} ${NO_WINDOW} --eval "${ELISP}"
fi
--
2.1.4
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v4 3/5] notmuch-emacs-mua: move --client option handling around
2015-08-15 9:05 [PATCH v4 0/5] notmuch-emacs-mua updates Jani Nikula
2015-08-15 9:05 ` [PATCH v4 1/5] man: clean up notmuch-emacs-mua man page Jani Nikula
2015-08-15 9:05 ` [PATCH v4 2/5] notmuch-emacs-mua: support --no-window-system also for non-client Jani Nikula
@ 2015-08-15 9:05 ` Jani Nikula
2015-08-15 9:05 ` [PATCH v4 4/5] notmuch-emacs-mua: add --auto-daemon option to start Emacs daemon as needed Jani Nikula
` (2 subsequent siblings)
5 siblings, 0 replies; 13+ messages in thread
From: Jani Nikula @ 2015-08-15 9:05 UTC (permalink / raw)
To: notmuch; +Cc: Tomi Ollila
Move --client handling to a more suitable location. No functional
changes.
---
notmuch-emacs-mua | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/notmuch-emacs-mua b/notmuch-emacs-mua
index e33aa955d6b5..1f088c42feb9 100755
--- a/notmuch-emacs-mua
+++ b/notmuch-emacs-mua
@@ -82,9 +82,6 @@ while getopts :s:c:b:i:h opt; do
--help|h)
exec man notmuch-emacs-mua
;;
- --client)
- USE_EMACSCLIENT="yes"
- ;;
--subject|s)
ELISP="${ELISP} (message-goto-subject) (insert \"${OPTARG}\")"
;;
@@ -107,6 +104,9 @@ while getopts :s:c:b:i:h opt; do
NO_WINDOW="-nw"
CREATE_FRAME=
;;
+ --client)
+ USE_EMACSCLIENT="yes"
+ ;;
*)
# We should never end up here.
echo "$0: internal error (option ${opt})." >&2
--
2.1.4
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v4 4/5] notmuch-emacs-mua: add --auto-daemon option to start Emacs daemon as needed
2015-08-15 9:05 [PATCH v4 0/5] notmuch-emacs-mua updates Jani Nikula
` (2 preceding siblings ...)
2015-08-15 9:05 ` [PATCH v4 3/5] notmuch-emacs-mua: move --client option handling around Jani Nikula
@ 2015-08-15 9:05 ` Jani Nikula
2015-08-15 9:05 ` [PATCH v4 5/5] notmuch-emacs-mua: do not create a frame by default with --client Jani Nikula
2015-09-29 11:28 ` [PATCH v4 0/5] notmuch-emacs-mua updates David Bremner
5 siblings, 0 replies; 13+ messages in thread
From: Jani Nikula @ 2015-08-15 9:05 UTC (permalink / raw)
To: notmuch; +Cc: Tomi Ollila
Automatically starting Emacs in daemon mode if the Emacs server is not
running is a matter of preference better not hard coded in
notmuch-emacs-mua. Add an option to control the behaviour.
---
doc/man1/notmuch-emacs-mua.rst | 9 +++++++--
notmuch-emacs-mua | 8 ++++++--
2 files changed, 13 insertions(+), 4 deletions(-)
diff --git a/doc/man1/notmuch-emacs-mua.rst b/doc/man1/notmuch-emacs-mua.rst
index 7c2f5c24f1c0..89a2fead17b1 100644
--- a/doc/man1/notmuch-emacs-mua.rst
+++ b/doc/man1/notmuch-emacs-mua.rst
@@ -37,8 +37,13 @@ Supported options for **notmuch-emacs-mua** include
Even if a window system is available, use the current terminal.
``--client``
- Use **emacsclient**, rather than **emacs**. This will start
- an Emacs daemon process if necessary.
+ Use **emacsclient**, rather than **emacs**. For
+ **emacsclient** to work, you need an already running Emacs
+ with a server, or use ``--auto-daemon``.
+
+ ``--auto-daemon``
+ Automatically start Emacs in daemon mode, if the Emacs server
+ is not running. Applicable with ``--client``.
``--print``
Output the resulting elisp to stdout instead of evaluating it.
diff --git a/notmuch-emacs-mua b/notmuch-emacs-mua
index 1f088c42feb9..ac03a4a60d56 100755
--- a/notmuch-emacs-mua
+++ b/notmuch-emacs-mua
@@ -36,6 +36,7 @@ EMACSCLIENT=${EMACSCLIENT-emacsclient}
PRINT_ONLY=
NO_WINDOW=
USE_EMACSCLIENT=
+AUTO_DAEMON=
CREATE_FRAME="-c"
# The crux of it all: construct an elisp progn and eval it.
@@ -64,7 +65,7 @@ while getopts :s:c:b:i:h opt; do
opt=${opt%%=*}
;;
# Long options without arguments.
- --help|--print|--no-window-system|--client)
+ --help|--print|--no-window-system|--client|--auto-daemon)
;;
*)
echo "$0: unknown long option ${opt}, or argument mismatch." >&2
@@ -107,6 +108,9 @@ while getopts :s:c:b:i:h opt; do
--client)
USE_EMACSCLIENT="yes"
;;
+ --auto-daemon)
+ AUTO_DAEMON="--alternate-editor="
+ ;;
*)
# We should never end up here.
echo "$0: internal error (option ${opt})." >&2
@@ -134,7 +138,7 @@ fi
if [ -n "$USE_EMACSCLIENT" ]; then
# Evaluate the progn.
- exec ${EMACSCLIENT} ${NO_WINDOW} ${CREATE_FRAME} -a '' --eval "${ELISP}"
+ exec ${EMACSCLIENT} ${NO_WINDOW} ${CREATE_FRAME} ${AUTO_DAEMON} --eval "${ELISP}"
else
exec ${EMACS} ${NO_WINDOW} --eval "${ELISP}"
fi
--
2.1.4
^ permalink raw reply related [flat|nested] 13+ messages in thread
* [PATCH v4 5/5] notmuch-emacs-mua: do not create a frame by default with --client
2015-08-15 9:05 [PATCH v4 0/5] notmuch-emacs-mua updates Jani Nikula
` (3 preceding siblings ...)
2015-08-15 9:05 ` [PATCH v4 4/5] notmuch-emacs-mua: add --auto-daemon option to start Emacs daemon as needed Jani Nikula
@ 2015-08-15 9:05 ` Jani Nikula
2015-08-26 19:03 ` Tomi Ollila
2015-09-29 11:28 ` [PATCH v4 0/5] notmuch-emacs-mua updates David Bremner
5 siblings, 1 reply; 13+ messages in thread
From: Jani Nikula @ 2015-08-15 9:05 UTC (permalink / raw)
To: notmuch; +Cc: Tomi Ollila
Make the default behaviour for --client the same as emacsclient
default: do not create a new frame. Add a new option --create-frame,
passing the same option to emacsclient to create a frame.
---
v2: fix killing frame with --create-frame
v3: fix --create-frame w/o --client parameter check
v4: fix kill terminal logic, document behaviour with daemon mode
---
doc/man1/notmuch-emacs-mua.rst | 6 ++++++
notmuch-emacs-mua | 14 ++++++++++----
2 files changed, 16 insertions(+), 4 deletions(-)
diff --git a/doc/man1/notmuch-emacs-mua.rst b/doc/man1/notmuch-emacs-mua.rst
index 89a2fead17b1..c3689eb82c8a 100644
--- a/doc/man1/notmuch-emacs-mua.rst
+++ b/doc/man1/notmuch-emacs-mua.rst
@@ -45,6 +45,12 @@ Supported options for **notmuch-emacs-mua** include
Automatically start Emacs in daemon mode, if the Emacs server
is not running. Applicable with ``--client``.
+ ``--create-frame``
+ Create a new frame instead of trying to use the current Emacs
+ frame. Applicable with ``--client``. This will be required
+ when Emacs is running (or automatically started with
+ ``--auto-daemon``) in daemon mode.
+
``--print``
Output the resulting elisp to stdout instead of evaluating it.
diff --git a/notmuch-emacs-mua b/notmuch-emacs-mua
index ac03a4a60d56..b51d8d0e2c5b 100755
--- a/notmuch-emacs-mua
+++ b/notmuch-emacs-mua
@@ -37,11 +37,10 @@ PRINT_ONLY=
NO_WINDOW=
USE_EMACSCLIENT=
AUTO_DAEMON=
-CREATE_FRAME="-c"
+CREATE_FRAME=
# The crux of it all: construct an elisp progn and eval it.
ELISP="(prog1 'done (require 'notmuch) (notmuch-mua-new-mail)"
-ELISP="${ELISP} (setq message-exit-actions (list #'save-buffers-kill-terminal))"
# Short options compatible with mutt(1).
while getopts :s:c:b:i:h opt; do
@@ -65,7 +64,7 @@ while getopts :s:c:b:i:h opt; do
opt=${opt%%=*}
;;
# Long options without arguments.
- --help|--print|--no-window-system|--client|--auto-daemon)
+ --help|--print|--no-window-system|--client|--auto-daemon|--create-frame)
;;
*)
echo "$0: unknown long option ${opt}, or argument mismatch." >&2
@@ -103,7 +102,6 @@ while getopts :s:c:b:i:h opt; do
;;
--no-window-system)
NO_WINDOW="-nw"
- CREATE_FRAME=
;;
--client)
USE_EMACSCLIENT="yes"
@@ -111,6 +109,9 @@ while getopts :s:c:b:i:h opt; do
--auto-daemon)
AUTO_DAEMON="--alternate-editor="
;;
+ --create-frame)
+ CREATE_FRAME="-c"
+ ;;
*)
# We should never end up here.
echo "$0: internal error (option ${opt})." >&2
@@ -128,6 +129,11 @@ for arg; do
ELISP="${ELISP} (message-goto-to) (insert \"${arg}, \")"
done
+# Kill the terminal/frame if we're creating one.
+if [ -z "$USE_EMACSCLIENT" -o -n "$CREATE_FRAME" -o -n "$NO_WINDOW" ]; then
+ ELISP="${ELISP} (setq message-exit-actions (list #'save-buffers-kill-terminal))"
+fi
+
# End progn.
ELISP="${ELISP})"
--
2.1.4
^ permalink raw reply related [flat|nested] 13+ messages in thread
* Re: [PATCH v4 5/5] notmuch-emacs-mua: do not create a frame by default with --client
2015-08-15 9:05 ` [PATCH v4 5/5] notmuch-emacs-mua: do not create a frame by default with --client Jani Nikula
@ 2015-08-26 19:03 ` Tomi Ollila
2015-08-28 18:22 ` Jani Nikula
2015-09-28 10:59 ` David Bremner
0 siblings, 2 replies; 13+ messages in thread
From: Tomi Ollila @ 2015-08-26 19:03 UTC (permalink / raw)
To: Jani Nikula, notmuch
On Sat, Aug 15 2015, Jani Nikula <jani@nikula.org> wrote:
> Make the default behaviour for --client the same as emacsclient
> default: do not create a new frame. Add a new option --create-frame,
> passing the same option to emacsclient to create a frame.
>
> ---
>
> v2: fix killing frame with --create-frame
>
> v3: fix --create-frame w/o --client parameter check
>
> v4: fix kill terminal logic, document behaviour with daemon mode
> ---
> doc/man1/notmuch-emacs-mua.rst | 6 ++++++
> notmuch-emacs-mua | 14 ++++++++++----
> 2 files changed, 16 insertions(+), 4 deletions(-)
>
> diff --git a/doc/man1/notmuch-emacs-mua.rst b/doc/man1/notmuch-emacs-mua.rst
> index 89a2fead17b1..c3689eb82c8a 100644
> --- a/doc/man1/notmuch-emacs-mua.rst
> +++ b/doc/man1/notmuch-emacs-mua.rst
> @@ -45,6 +45,12 @@ Supported options for **notmuch-emacs-mua** include
> Automatically start Emacs in daemon mode, if the Emacs server
> is not running. Applicable with ``--client``.
>
> + ``--create-frame``
> + Create a new frame instead of trying to use the current Emacs
> + frame. Applicable with ``--client``. This will be required
> + when Emacs is running (or automatically started with
> + ``--auto-daemon``) in daemon mode.
> +
> ``--print``
> Output the resulting elisp to stdout instead of evaluating it.
>
> diff --git a/notmuch-emacs-mua b/notmuch-emacs-mua
> index ac03a4a60d56..b51d8d0e2c5b 100755
> --- a/notmuch-emacs-mua
> +++ b/notmuch-emacs-mua
> @@ -37,11 +37,10 @@ PRINT_ONLY=
> NO_WINDOW=
> USE_EMACSCLIENT=
> AUTO_DAEMON=
> -CREATE_FRAME="-c"
> +CREATE_FRAME=
>
> # The crux of it all: construct an elisp progn and eval it.
> ELISP="(prog1 'done (require 'notmuch) (notmuch-mua-new-mail)"
> -ELISP="${ELISP} (setq message-exit-actions (list #'save-buffers-kill-terminal))"
>
> # Short options compatible with mutt(1).
> while getopts :s:c:b:i:h opt; do
> @@ -65,7 +64,7 @@ while getopts :s:c:b:i:h opt; do
> opt=${opt%%=*}
> ;;
> # Long options without arguments.
> - --help|--print|--no-window-system|--client|--auto-daemon)
> + --help|--print|--no-window-system|--client|--auto-daemon|--create-frame)
> ;;
> *)
> echo "$0: unknown long option ${opt}, or argument mismatch." >&2
> @@ -103,7 +102,6 @@ while getopts :s:c:b:i:h opt; do
> ;;
> --no-window-system)
> NO_WINDOW="-nw"
> - CREATE_FRAME=
> ;;
> --client)
> USE_EMACSCLIENT="yes"
> @@ -111,6 +109,9 @@ while getopts :s:c:b:i:h opt; do
> --auto-daemon)
> AUTO_DAEMON="--alternate-editor="
> ;;
> + --create-frame)
> + CREATE_FRAME="-c"
> + ;;
> *)
> # We should never end up here.
> echo "$0: internal error (option ${opt})." >&2
This looks pretty good now; I player quite a bit with --client,
--create-frame and --auto-daemon
(with and without setting EMACSCLIENT='echo emacsclient')
Based on that I think this check should be added here (after option
parsing):
if [ -n "$AUTO_DAEMON" -a -z "$CREATE_FRAME" ]; then
echo "$0: --auto-daemon is only applicable with --create-frame." >&2
exit 1
fi
without this one may execute ./notmuch-emacs-mua --client --auto-daemon
which yields starting emacs in daemon mode (in this example it is expected
emacs is not running; otherwise --auto-daemon has no use in this example)
-- but no ui to that newly-running emacs is provided. Similar behaviour
can be observed by the following
$ emacsclient --eval '(kill emacs) ;; but beware! '
$ emacsclient --alternate-editor= --eval '(find-file "/etc/passwd")'
(side note: using this --alternate-editor= is pretty nifty way to get it done)
emacs --daemon is executed which loaded /etc/passwd but w/o ui
Note the difference in:
emacsclient --alternate-editor= /etc/passwd
now emacs --daemon is executed *and* ui where /etc/passwd is available is
provided!
otoh,
emacsclient --alternate-editor= -c [-nw] --eval '(find-file "/etc/passwd")'
works fine, albeit a bit different than the one where /etc/passwd was given
as a simple filename argument.
comparative to ./notmuch-emacs-mua --client --create-frame --auto-daemon
> @@ -128,6 +129,11 @@ for arg; do
> ELISP="${ELISP} (message-goto-to) (insert \"${arg}, \")"
> done
>
> +# Kill the terminal/frame if we're creating one.
> +if [ -z "$USE_EMACSCLIENT" -o -n "$CREATE_FRAME" -o -n "$NO_WINDOW" ]; then
> + ELISP="${ELISP} (setq message-exit-actions (list #'save-buffers-kill-terminal))"
> +fi
I am not very happy that message-exit-actions was added to $ELISP when
not using emacsclient; when emacs is started its sole (initial) purpose is
to serve mail sending (and not lending a frame in some other emacs) -- in
this case it would be nice to be able to retrieve the sent mail buffer.
perhaps the above could be changed to just
if [ -n "$CREATE_FRAME" ]; then
ELISP="${ELISP} (setq message-exit-actions (list #'save-buffers-kill-terminal))"
fi
another option is --yet-another-option ;/
No other issues (relevant to this series).
Tomi
> +
> # End progn.
> ELISP="${ELISP})"
>
> --
> 2.1.4
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v4 5/5] notmuch-emacs-mua: do not create a frame by default with --client
2015-08-26 19:03 ` Tomi Ollila
@ 2015-08-28 18:22 ` Jani Nikula
2015-08-28 19:18 ` Tomi Ollila
2015-09-28 10:59 ` David Bremner
1 sibling, 1 reply; 13+ messages in thread
From: Jani Nikula @ 2015-08-28 18:22 UTC (permalink / raw)
To: Tomi Ollila, notmuch
On Wed, 26 Aug 2015, Tomi Ollila <tomi.ollila@iki.fi> wrote:
> On Sat, Aug 15 2015, Jani Nikula <jani@nikula.org> wrote:
>
>> Make the default behaviour for --client the same as emacsclient
>> default: do not create a new frame. Add a new option --create-frame,
>> passing the same option to emacsclient to create a frame.
>>
>> ---
>>
>> v2: fix killing frame with --create-frame
>>
>> v3: fix --create-frame w/o --client parameter check
>>
>> v4: fix kill terminal logic, document behaviour with daemon mode
>> ---
>> doc/man1/notmuch-emacs-mua.rst | 6 ++++++
>> notmuch-emacs-mua | 14 ++++++++++----
>> 2 files changed, 16 insertions(+), 4 deletions(-)
>>
>> diff --git a/doc/man1/notmuch-emacs-mua.rst b/doc/man1/notmuch-emacs-mua.rst
>> index 89a2fead17b1..c3689eb82c8a 100644
>> --- a/doc/man1/notmuch-emacs-mua.rst
>> +++ b/doc/man1/notmuch-emacs-mua.rst
>> @@ -45,6 +45,12 @@ Supported options for **notmuch-emacs-mua** include
>> Automatically start Emacs in daemon mode, if the Emacs server
>> is not running. Applicable with ``--client``.
>>
>> + ``--create-frame``
>> + Create a new frame instead of trying to use the current Emacs
>> + frame. Applicable with ``--client``. This will be required
>> + when Emacs is running (or automatically started with
>> + ``--auto-daemon``) in daemon mode.
>> +
>> ``--print``
>> Output the resulting elisp to stdout instead of evaluating it.
>>
>> diff --git a/notmuch-emacs-mua b/notmuch-emacs-mua
>> index ac03a4a60d56..b51d8d0e2c5b 100755
>> --- a/notmuch-emacs-mua
>> +++ b/notmuch-emacs-mua
>> @@ -37,11 +37,10 @@ PRINT_ONLY=
>> NO_WINDOW=
>> USE_EMACSCLIENT=
>> AUTO_DAEMON=
>> -CREATE_FRAME="-c"
>> +CREATE_FRAME=
>>
>> # The crux of it all: construct an elisp progn and eval it.
>> ELISP="(prog1 'done (require 'notmuch) (notmuch-mua-new-mail)"
>> -ELISP="${ELISP} (setq message-exit-actions (list #'save-buffers-kill-terminal))"
>>
>> # Short options compatible with mutt(1).
>> while getopts :s:c:b:i:h opt; do
>> @@ -65,7 +64,7 @@ while getopts :s:c:b:i:h opt; do
>> opt=${opt%%=*}
>> ;;
>> # Long options without arguments.
>> - --help|--print|--no-window-system|--client|--auto-daemon)
>> + --help|--print|--no-window-system|--client|--auto-daemon|--create-frame)
>> ;;
>> *)
>> echo "$0: unknown long option ${opt}, or argument mismatch." >&2
>> @@ -103,7 +102,6 @@ while getopts :s:c:b:i:h opt; do
>> ;;
>> --no-window-system)
>> NO_WINDOW="-nw"
>> - CREATE_FRAME=
>> ;;
>> --client)
>> USE_EMACSCLIENT="yes"
>> @@ -111,6 +109,9 @@ while getopts :s:c:b:i:h opt; do
>> --auto-daemon)
>> AUTO_DAEMON="--alternate-editor="
>> ;;
>> + --create-frame)
>> + CREATE_FRAME="-c"
>> + ;;
>> *)
>> # We should never end up here.
>> echo "$0: internal error (option ${opt})." >&2
>
> This looks pretty good now; I player quite a bit with --client,
> --create-frame and --auto-daemon
> (with and without setting EMACSCLIENT='echo emacsclient')
>
> Based on that I think this check should be added here (after option
> parsing):
>
> if [ -n "$AUTO_DAEMON" -a -z "$CREATE_FRAME" ]; then
> echo "$0: --auto-daemon is only applicable with --create-frame." >&2
> exit 1
> fi
>
> without this one may execute ./notmuch-emacs-mua --client --auto-daemon
> which yields starting emacs in daemon mode (in this example it is expected
> emacs is not running; otherwise --auto-daemon has no use in this example)
> -- but no ui to that newly-running emacs is provided. Similar behaviour
> can be observed by the following
This problem is present with the current code already, right now. I
don't see the need to fix everything in my series.
> $ emacsclient --eval '(kill emacs) ;; but beware! '
> $ emacsclient --alternate-editor= --eval '(find-file "/etc/passwd")'
>
> (side note: using this --alternate-editor= is pretty nifty way to get it done)
>
> emacs --daemon is executed which loaded /etc/passwd but w/o ui
>
> Note the difference in:
>
> emacsclient --alternate-editor= /etc/passwd
>
> now emacs --daemon is executed *and* ui where /etc/passwd is available is
> provided!
>
> otoh,
> emacsclient --alternate-editor= -c [-nw] --eval '(find-file "/etc/passwd")'
>
> works fine, albeit a bit different than the one where /etc/passwd was given
> as a simple filename argument.
>
> comparative to ./notmuch-emacs-mua --client --create-frame --auto-daemon
>
>> @@ -128,6 +129,11 @@ for arg; do
>> ELISP="${ELISP} (message-goto-to) (insert \"${arg}, \")"
>> done
>>
>> +# Kill the terminal/frame if we're creating one.
>> +if [ -z "$USE_EMACSCLIENT" -o -n "$CREATE_FRAME" -o -n "$NO_WINDOW" ]; then
>> + ELISP="${ELISP} (setq message-exit-actions (list #'save-buffers-kill-terminal))"
>> +fi
>
> I am not very happy that message-exit-actions was added to $ELISP when
> not using emacsclient; when emacs is started its sole (initial) purpose is
> to serve mail sending (and not lending a frame in some other emacs) -- in
> this case it would be nice to be able to retrieve the sent mail buffer.
And I am not very happy with being expected to modify these patches ad
infinitum while trying to get back the *one* use case I wrote this
script for in the first place, and that got broken somewhere down the
line.
Sincerely,
Jani.
>
> perhaps the above could be changed to just
>
> if [ -n "$CREATE_FRAME" ]; then
> ELISP="${ELISP} (setq message-exit-actions (list #'save-buffers-kill-terminal))"
> fi
>
> another option is --yet-another-option ;/
>
> No other issues (relevant to this series).
>
> Tomi
>
>
>> +
>> # End progn.
>> ELISP="${ELISP})"
>>
>> --
>> 2.1.4
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v4 5/5] notmuch-emacs-mua: do not create a frame by default with --client
2015-08-28 18:22 ` Jani Nikula
@ 2015-08-28 19:18 ` Tomi Ollila
0 siblings, 0 replies; 13+ messages in thread
From: Tomi Ollila @ 2015-08-28 19:18 UTC (permalink / raw)
To: Jani Nikula, notmuch
On Fri, Aug 28 2015, Jani Nikula <jani@nikula.org> wrote:
> On Wed, 26 Aug 2015, Tomi Ollila <tomi.ollila@iki.fi> wrote:
>> On Sat, Aug 15 2015, Jani Nikula <jani@nikula.org> wrote:
>>
>>> Make the default behaviour for --client the same as emacsclient
>>> default: do not create a new frame. Add a new option --create-frame,
>>> passing the same option to emacsclient to create a frame.
>>>
>>> ---
>>>
>>> v2: fix killing frame with --create-frame
>>>
>>> v3: fix --create-frame w/o --client parameter check
>>>
>>> v4: fix kill terminal logic, document behaviour with daemon mode
>>> ---
>>> doc/man1/notmuch-emacs-mua.rst | 6 ++++++
>>> notmuch-emacs-mua | 14 ++++++++++----
>>> 2 files changed, 16 insertions(+), 4 deletions(-)
>>>
>>> diff --git a/doc/man1/notmuch-emacs-mua.rst b/doc/man1/notmuch-emacs-mua.rst
>>> index 89a2fead17b1..c3689eb82c8a 100644
>>> --- a/doc/man1/notmuch-emacs-mua.rst
>>> +++ b/doc/man1/notmuch-emacs-mua.rst
>>> @@ -45,6 +45,12 @@ Supported options for **notmuch-emacs-mua** include
>>> Automatically start Emacs in daemon mode, if the Emacs server
>>> is not running. Applicable with ``--client``.
>>>
>>> + ``--create-frame``
>>> + Create a new frame instead of trying to use the current Emacs
>>> + frame. Applicable with ``--client``. This will be required
>>> + when Emacs is running (or automatically started with
>>> + ``--auto-daemon``) in daemon mode.
>>> +
>>> ``--print``
>>> Output the resulting elisp to stdout instead of evaluating it.
>>>
>>> diff --git a/notmuch-emacs-mua b/notmuch-emacs-mua
>>> index ac03a4a60d56..b51d8d0e2c5b 100755
>>> --- a/notmuch-emacs-mua
>>> +++ b/notmuch-emacs-mua
>>> @@ -37,11 +37,10 @@ PRINT_ONLY=
>>> NO_WINDOW=
>>> USE_EMACSCLIENT=
>>> AUTO_DAEMON=
>>> -CREATE_FRAME="-c"
>>> +CREATE_FRAME=
>>>
>>> # The crux of it all: construct an elisp progn and eval it.
>>> ELISP="(prog1 'done (require 'notmuch) (notmuch-mua-new-mail)"
>>> -ELISP="${ELISP} (setq message-exit-actions (list #'save-buffers-kill-terminal))"
>>>
>>> # Short options compatible with mutt(1).
>>> while getopts :s:c:b:i:h opt; do
>>> @@ -65,7 +64,7 @@ while getopts :s:c:b:i:h opt; do
>>> opt=${opt%%=*}
>>> ;;
>>> # Long options without arguments.
>>> - --help|--print|--no-window-system|--client|--auto-daemon)
>>> + --help|--print|--no-window-system|--client|--auto-daemon|--create-frame)
>>> ;;
>>> *)
>>> echo "$0: unknown long option ${opt}, or argument mismatch." >&2
>>> @@ -103,7 +102,6 @@ while getopts :s:c:b:i:h opt; do
>>> ;;
>>> --no-window-system)
>>> NO_WINDOW="-nw"
>>> - CREATE_FRAME=
>>> ;;
>>> --client)
>>> USE_EMACSCLIENT="yes"
>>> @@ -111,6 +109,9 @@ while getopts :s:c:b:i:h opt; do
>>> --auto-daemon)
>>> AUTO_DAEMON="--alternate-editor="
>>> ;;
>>> + --create-frame)
>>> + CREATE_FRAME="-c"
>>> + ;;
>>> *)
>>> # We should never end up here.
>>> echo "$0: internal error (option ${opt})." >&2
>>
>> This looks pretty good now; I player quite a bit with --client,
>> --create-frame and --auto-daemon
>> (with and without setting EMACSCLIENT='echo emacsclient')
>>
>> Based on that I think this check should be added here (after option
>> parsing):
>>
>> if [ -n "$AUTO_DAEMON" -a -z "$CREATE_FRAME" ]; then
>> echo "$0: --auto-daemon is only applicable with --create-frame." >&2
>> exit 1
>> fi
>>
>> without this one may execute ./notmuch-emacs-mua --client --auto-daemon
>> which yields starting emacs in daemon mode (in this example it is expected
>> emacs is not running; otherwise --auto-daemon has no use in this example)
>> -- but no ui to that newly-running emacs is provided. Similar behaviour
>> can be observed by the following
>
> This problem is present with the current code already, right now. I
> don't see the need to fix everything in my series.
Yes, the problem was already present in patch 4/5 (and probably earlier as
you mentioned that there was problem already) -- I just did not want
to pick that also in this discussion... ;/
>> $ emacsclient --eval '(kill emacs) ;; but beware! '
>> $ emacsclient --alternate-editor= --eval '(find-file "/etc/passwd")'
>>
>> (side note: using this --alternate-editor= is pretty nifty way to get it done)
>>
>> emacs --daemon is executed which loaded /etc/passwd but w/o ui
>>
>> Note the difference in:
>>
>> emacsclient --alternate-editor= /etc/passwd
>>
>> now emacs --daemon is executed *and* ui where /etc/passwd is available is
>> provided!
>>
>> otoh,
>> emacsclient --alternate-editor= -c [-nw] --eval '(find-file "/etc/passwd")'
>>
>> works fine, albeit a bit different than the one where /etc/passwd was given
>> as a simple filename argument.
>>
>> comparative to ./notmuch-emacs-mua --client --create-frame --auto-daemon
>>
>>> @@ -128,6 +129,11 @@ for arg; do
>>> ELISP="${ELISP} (message-goto-to) (insert \"${arg}, \")"
>>> done
>>>
>>> +# Kill the terminal/frame if we're creating one.
>>> +if [ -z "$USE_EMACSCLIENT" -o -n "$CREATE_FRAME" -o -n "$NO_WINDOW" ]; then
>>> + ELISP="${ELISP} (setq message-exit-actions (list #'save-buffers-kill-terminal))"
>>> +fi
>>
>> I am not very happy that message-exit-actions was added to $ELISP when
>> not using emacsclient; when emacs is started its sole (initial) purpose is
>> to serve mail sending (and not lending a frame in some other emacs) -- in
>> this case it would be nice to be able to retrieve the sent mail buffer.
>
> And I am not very happy with being expected to modify these patches ad
> infinitum while trying to get back the *one* use case I wrote this
> script for in the first place, and that got broken somewhere down the
> line.
I can agree that these patches could be applied as is and I can do the
followup patch that changes the things later ... but I'd like to get these
changes I presented discussed and agreed (whatever the agreement is) before
doing these so that the result will be good and safe for all potential
users...
>
> Sincerely,
> Jani.
>
ystävällisin terveisin :D,
Tomi
>
>>
>> perhaps the above could be changed to just
>>
>> if [ -n "$CREATE_FRAME" ]; then
>> ELISP="${ELISP} (setq message-exit-actions (list #'save-buffers-kill-terminal))"
>> fi
>>
>> another option is --yet-another-option ;/
>>
>> No other issues (relevant to this series).
>>
>> Tomi
>>
>>
>>> +
>>> # End progn.
>>> ELISP="${ELISP})"
>>>
>>> --
>>> 2.1.4
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v4 5/5] notmuch-emacs-mua: do not create a frame by default with --client
2015-08-26 19:03 ` Tomi Ollila
2015-08-28 18:22 ` Jani Nikula
@ 2015-09-28 10:59 ` David Bremner
2015-09-29 19:18 ` Tomi Ollila
1 sibling, 1 reply; 13+ messages in thread
From: David Bremner @ 2015-09-28 10:59 UTC (permalink / raw)
To: Tomi Ollila, Jani Nikula, notmuch
Tomi Ollila <tomi.ollila@iki.fi> writes:
> if [ -n "$AUTO_DAEMON" -a -z "$CREATE_FRAME" ]; then
> echo "$0: --auto-daemon is only applicable with --create-frame." >&2
> exit 1
> fi
>
> without this one may execute ./notmuch-emacs-mua --client --auto-daemon
> which yields starting emacs in daemon mode (in this example it is expected
> emacs is not running; otherwise --auto-daemon has no use in this example)
> -- but no ui to that newly-running emacs is provided. Similar behaviour
> can be observed by the following
>
I think what you propose is fine for a followup patch; note that the
scenario you worry about also needs --client to be a problem. Apparently
nothing is uncontroversial here, but if auto-daemon only works with
create frame, then perhaps the followup would be to have auto-daemon
imply create-frame
>>
>> +# Kill the terminal/frame if we're creating one.
>> +if [ -z "$USE_EMACSCLIENT" -o -n "$CREATE_FRAME" -o -n "$NO_WINDOW" ]; then
>> + ELISP="${ELISP} (setq message-exit-actions (list #'save-buffers-kill-terminal))"
>> +fi
>
> I am not very happy that message-exit-actions was added to $ELISP when
> not using emacsclient; when emacs is started its sole (initial) purpose is
> to serve mail sending (and not lending a frame in some other emacs) -- in
> this case it would be nice to be able to retrieve the sent mail buffer.
I'm somewhat less sympathetic here. AIUI, the goal of notmuch-emacs-mua
is to provide a drop in tool to replace mutt for sending mail in the
shell or from other programs. In this case, I think the most common
expectation is to terminate after sending mail (e.g. to return use of
the shell to the user, or allow the spawning program to continue).
However, it seems like this would be relatively easy to set up some
customization in notmuch-message-mode so that it could check if running
from the cli, and then either kill-or-not emacs depending on some
variable. So I think I'd like to keep the current behaviour as default,
and make it customizable at the emacs level.
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v4 0/5] notmuch-emacs-mua updates
2015-08-15 9:05 [PATCH v4 0/5] notmuch-emacs-mua updates Jani Nikula
` (4 preceding siblings ...)
2015-08-15 9:05 ` [PATCH v4 5/5] notmuch-emacs-mua: do not create a frame by default with --client Jani Nikula
@ 2015-09-29 11:28 ` David Bremner
5 siblings, 0 replies; 13+ messages in thread
From: David Bremner @ 2015-09-29 11:28 UTC (permalink / raw)
To: Jani Nikula, notmuch; +Cc: Tomi Ollila
Jani Nikula <jani@nikula.org> writes:
> The main goal is to not force --create-frame on users who dislike
> it. Split to some hopefully less controversial prep patches.
series pushed.
d
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v4 5/5] notmuch-emacs-mua: do not create a frame by default with --client
2015-09-28 10:59 ` David Bremner
@ 2015-09-29 19:18 ` Tomi Ollila
2015-09-30 6:13 ` Tomi Ollila
0 siblings, 1 reply; 13+ messages in thread
From: Tomi Ollila @ 2015-09-29 19:18 UTC (permalink / raw)
To: David Bremner, Jani Nikula, notmuch
On Mon, Sep 28 2015, David Bremner <david@tethera.net> wrote:
> Tomi Ollila <tomi.ollila@iki.fi> writes:
>
>
>> if [ -n "$AUTO_DAEMON" -a -z "$CREATE_FRAME" ]; then
>> echo "$0: --auto-daemon is only applicable with --create-frame." >&2
>> exit 1
>> fi
>>
>> without this one may execute ./notmuch-emacs-mua --client --auto-daemon
>> which yields starting emacs in daemon mode (in this example it is expected
>> emacs is not running; otherwise --auto-daemon has no use in this example)
>> -- but no ui to that newly-running emacs is provided. Similar behaviour
>> can be observed by the following
>>
>
> I think what you propose is fine for a followup patch; note that the
> scenario you worry about also needs --client to be a problem. Apparently
> nothing is uncontroversial here, but if auto-daemon only works with
> create frame, then perhaps the followup would be to have auto-daemon
> imply create-frame
Without --client --auto-daemon is no-op (as it is no-op in case emacs
server is already running). I am (only) concerned about user experience
when one runs --client --auto-daemon and user gets nothing (i.e. emacs
server is running in the background w/o any clients connected to it.
We could make --auto-daemon imply --create-frame, but then
./notmuch-emacs-mua --auto-daemon (i.e. w/o --client) starts new mail
compose window to separate frame (even though user did not request
it w/ --create-frame)
(actually I already did the 'imply' option (easy, one line in script,
another in namual), just that testing it gave this thought...
... therefore I'd rather make ./notmuch-emacs-mua --auto-daemon
spit an error and exit -- but I can be convinced otherwise :)
Tomi
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: [PATCH v4 5/5] notmuch-emacs-mua: do not create a frame by default with --client
2015-09-29 19:18 ` Tomi Ollila
@ 2015-09-30 6:13 ` Tomi Ollila
0 siblings, 0 replies; 13+ messages in thread
From: Tomi Ollila @ 2015-09-30 6:13 UTC (permalink / raw)
To: David Bremner, Jani Nikula, notmuch
On Tue, Sep 29 2015, Tomi Ollila <tomi.ollila@iki.fi> wrote:
> On Mon, Sep 28 2015, David Bremner <david@tethera.net> wrote:
>
>> Tomi Ollila <tomi.ollila@iki.fi> writes:
>>
>>
>>> if [ -n "$AUTO_DAEMON" -a -z "$CREATE_FRAME" ]; then
>>> echo "$0: --auto-daemon is only applicable with --create-frame." >&2
>>> exit 1
>>> fi
>>>
>>> without this one may execute ./notmuch-emacs-mua --client --auto-daemon
>>> which yields starting emacs in daemon mode (in this example it is expected
>>> emacs is not running; otherwise --auto-daemon has no use in this example)
>>> -- but no ui to that newly-running emacs is provided. Similar behaviour
>>> can be observed by the following
>>>
>>
>> I think what you propose is fine for a followup patch; note that the
>> scenario you worry about also needs --client to be a problem. Apparently
>> nothing is uncontroversial here, but if auto-daemon only works with
>> create frame, then perhaps the followup would be to have auto-daemon
>> imply create-frame
>
> Without --client --auto-daemon is no-op (as it is no-op in case emacs
> server is already running). I am (only) concerned about user experience
> when one runs --client --auto-daemon and user gets nothing (i.e. emacs
> server is running in the background w/o any clients connected to it.
>
> We could make --auto-daemon imply --create-frame, but then
>
> ./notmuch-emacs-mua --auto-daemon (i.e. w/o --client) starts new mail
> compose window to separate frame (even though user did not request
> it w/ --create-frame)
Hmm, a few more tests. it now looks like in case the command line is
./notmuch-emacs-mua --client --auto-daemon
Then the --create-frame should be implied. w/o --client --create-frame
would ... well, create that (only) emacs frame anyways... oh, the
combinations; for reference I just paste from my history...
1 07:57 0:01 ccd notmuch
2 07:57 0:06 git pull --rebase
3 07:57 0:01 git log
4 07:57 0:04 tig
5 07:58 0:10 ./notmuch-emacs-mua --auto-daemon
6 07:58 0:00 ps ax
8 07:58 0:00 emacs &
9 07:58 0:07 ./notmuch-emacs-mua --auto-daemon
10 07:59 0:01 ./notmuch-emacs-mua --client --auto-daemon
12 08:01 0:03 ./notmuch-emacs-mua --auto-daemon
13 08:02 0:00 ps ax
14 08:02 0:00 ls /tmp/emacs1001
15 08:02 0:00 ./notmuch-emacs-mua -nw --auto-daemon
16 08:02 0:04 DISPLAY= ./notmuch-emacs-mua --auto-daemon
17 08:02 0:05 tig
18 08:03 0:02 DISPLAY= ./notmuch-emacs-mua --auto-daemon
19 08:04 0:01 DISPLAY= ./notmuch-emacs-mua --client --auto-daemon
20 08:04 0:00 ps ax
21 08:04 0:00 kill 1860
22 08:04 0:00 ps ax
23 08:06 0:00 ./notmuch-emacs-mua --client --auto-daemon
24 08:06 0:00 ps ax
25 08:06 0:00 kill 1875
26 08:06 0:00 ./notmuch-emacs-mua --client --auto-daemon
27 08:06 0:00 ps ax
28 08:06 0:00 kill 1926
29 08:06 0:06 ./notmuch-emacs-mua --client --auto-daemon --create-frame
30 08:07 0:28 ./notmuch-emacs-mua --auto-daemon --create-frame
31 08:08 0:00 ps x
32 08:08 0:00 h
So. I'm going w/ the suggestion making --auto-daemon imply --create-frame
>
> (actually I already did the 'imply' option (easy, one line in script,
> another in namual), just that testing it gave this thought...
>
> ... therefore I'd rather make ./notmuch-emacs-mua --auto-daemon
> spit an error and exit -- but I can be convinced otherwise :)
>
> Tomi
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2015-09-30 6:13 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-08-15 9:05 [PATCH v4 0/5] notmuch-emacs-mua updates Jani Nikula
2015-08-15 9:05 ` [PATCH v4 1/5] man: clean up notmuch-emacs-mua man page Jani Nikula
2015-08-15 9:05 ` [PATCH v4 2/5] notmuch-emacs-mua: support --no-window-system also for non-client Jani Nikula
2015-08-15 9:05 ` [PATCH v4 3/5] notmuch-emacs-mua: move --client option handling around Jani Nikula
2015-08-15 9:05 ` [PATCH v4 4/5] notmuch-emacs-mua: add --auto-daemon option to start Emacs daemon as needed Jani Nikula
2015-08-15 9:05 ` [PATCH v4 5/5] notmuch-emacs-mua: do not create a frame by default with --client Jani Nikula
2015-08-26 19:03 ` Tomi Ollila
2015-08-28 18:22 ` Jani Nikula
2015-08-28 19:18 ` Tomi Ollila
2015-09-28 10:59 ` David Bremner
2015-09-29 19:18 ` Tomi Ollila
2015-09-30 6:13 ` Tomi Ollila
2015-09-29 11:28 ` [PATCH v4 0/5] notmuch-emacs-mua updates David Bremner
Code repositories for project(s) associated with this public inbox
https://yhetil.org/notmuch.git/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).