unofficial mirror of notmuch@notmuchmail.org
 help / color / mirror / code / Atom feed
* [PATCH] devel/emacs: add devel/try-emacs-mua.sh
@ 2015-11-01 15:16 Tomi Ollila
  2015-11-12  8:22 ` Mark Walters
  0 siblings, 1 reply; 4+ messages in thread
From: Tomi Ollila @ 2015-11-01 15:16 UTC (permalink / raw)
  To: notmuch; +Cc: tomi.ollila

devel/try-emacs-mua.sh provides an easy way to try and experiment with
the notmuch emacs client provided in emacs subdirectory of notmuch
source tree.

User is required to choose whether to run emacs with -q, -Q or neither
-- and experienced ones may add other command line options, like
'-f notmuch'.

This script ensures that no .el files are newer than corresponding .elc
files so that user (/developer!) does not accidentally experiment with
outdated elisp files. The emacs variable to have the same effect,
`load-prefer-newer' is not available until emacs 24.4.

The *scratch* buffer is filled with some code user can execute before
running notmuch code.
---

Addressed David's comments in id:87d1xdtim1.fsf@maritornes.cs.unb.ca
with 2 updates:
     1) removed "address completion insinuate"
     2) added code to initialize package system when using -q or -Q

 devel/try-emacs-mua.sh | 92 ++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 92 insertions(+)
 create mode 100755 devel/try-emacs-mua.sh

diff --git a/devel/try-emacs-mua.sh b/devel/try-emacs-mua.sh
new file mode 100755
index 000000000000..71be152c2346
--- /dev/null
+++ b/devel/try-emacs-mua.sh
@@ -0,0 +1,92 @@
+#!/bin/sh
+
+# This script provides an easy way to try and experiment with the
+# notmuch emacs client provided in notmuch/emacs directory.
+
+set -eu
+
+test $# -gt 0 || {
+	exec >&2
+	echo
+	echo "Usage: $0 '' | q | Q [other-emacs-args]"
+	echo
+	printf "  $0 %s\n" "'' starts emacs without either -q or -Q option" \
+		"q  starts emacs with -q" \
+		"Q  starts emacs with -Q"
+	echo
+	echo Note that if there are notmuch-emacs .elc files that are older than
+	echo their corresponding .el files those older .elcs will be removed.
+	echo
+	exit 1
+}
+
+case $1 in '') opt=
+	;; q | -q) opt=-q
+	;; Q | -Q) opt=-Q
+	;; *) echo "option '$1' not '', 'q' nor 'Q'" >&2; exit 1
+esac
+shift
+
+case $0 in
+	*\"*)	echo "'$0' contain one or more '\"'s" >&2; exit 1 ;;
+	*/*)	d0=${0%/*} ;;
+	*)	d0=.
+esac
+
+pwd=$PWD
+cd "$d0/.."
+nmd=$PWD
+emd=$PWD/emacs
+
+test -f "$nmd"/emacs/notmuch-lib.el || {
+	echo "Cannot find notmuch-emacs source directory"
+	exit 1
+}
+
+if test -x "$nmd"/notmuch
+then
+	nmin='
+To use accompanied notmuch binary from the same source, evaluate
+(setq exec-path (cons \"'"$nmd"'\" exec-path))
+Note: Evaluating the above may be followed by unintended database
+upgrade and getting back to old version may require dump & restore.
+'
+else
+	nmin=
+fi
+
+if test "$opt" = '-q' || test "$opt" = '-Q'
+then
+	pkgin='
+If you want to use packages (like company from elpa) evaluate
+(progn (require '\''package) (package-initialize))
+'
+else
+	pkgin=
+fi
+
+# ensure we don't load .elc files that are older than corresponding .el file
+# the emacs variable `load-prefer-newer' is not available until emacs 24.4
+perl -e 'use strict; use warnings;
+while (<*.elc>) {
+	my $elc = $_; s/elc$/el/;
+	if (-M $_ < -M $elc) {
+		warn "$_ is newer than $elc. Removing $elc\n";
+		unlink $elc or die "Failed to remove '\''$elc'\'': $!\n";
+	}
+}'
+
+cd "$pwd"
+
+# note: whitespace in $EMACS splits to command and args
+exec ${EMACS:-emacs} $opt -L "$emd" -l "$emd"/notmuch.el "$@" --eval '
+(with-current-buffer "*scratch*"
+  (insert "
+Go to the end of the following lines and type C-x C-e to evaluate
+(or C-j which is shorter but inserts evaluation results into buffer)
+
+To \"disable\" mail sending, evaluate
+(setq message-send-mail-function (lambda () t))
+'"$nmin$pkgin"'
+To start notmuch (hello) screen, evaluate
+(notmuch-hello)") (set-buffer-modified-p nil))'
-- 
2.0.0

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH] devel/emacs: add devel/try-emacs-mua.sh
  2015-11-01 15:16 [PATCH] devel/emacs: add devel/try-emacs-mua.sh Tomi Ollila
@ 2015-11-12  8:22 ` Mark Walters
  2015-11-12  9:07   ` Tomi Ollila
  2016-01-04 23:30   ` Michal Sojka
  0 siblings, 2 replies; 4+ messages in thread
From: Mark Walters @ 2015-11-12  8:22 UTC (permalink / raw)
  To: Tomi Ollila, notmuch; +Cc: tomi.ollila


> devel/try-emacs-mua.sh provides an easy way to try and experiment with
> the notmuch emacs client provided in emacs subdirectory of notmuch
> source tree.
>
> User is required to choose whether to run emacs with -q, -Q or neither
> -- and experienced ones may add other command line options, like
> '-f notmuch'.
>
> This script ensures that no .el files are newer than corresponding .elc
> files so that user (/developer!) does not accidentally experiment with
> outdated elisp files. The emacs variable to have the same effect,
> `load-prefer-newer' is not available until emacs 24.4.
>
> The *scratch* buffer is filled with some code user can execute before
> running notmuch code.

I like this -- a nice simple way to get to a working but uncustomised
test environment.

I don't know how easy the following would be but one addition that I
would find very useful would be a way to make this use the test
corpus. This would be useful for giving a completely standard
environment for interactive testing, but also for debugging what is
going on when tests fail.

Of course that is a feature request and should not delay the feature.

Finally, I think there is a bug: 


> ---
>
> Addressed David's comments in id:87d1xdtim1.fsf@maritornes.cs.unb.ca
> with 2 updates:
>      1) removed "address completion insinuate"
>      2) added code to initialize package system when using -q or -Q
>
>  devel/try-emacs-mua.sh | 92 ++++++++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 92 insertions(+)
>  create mode 100755 devel/try-emacs-mua.sh
>
> diff --git a/devel/try-emacs-mua.sh b/devel/try-emacs-mua.sh
> new file mode 100755
> index 000000000000..71be152c2346
> --- /dev/null
> +++ b/devel/try-emacs-mua.sh
> @@ -0,0 +1,92 @@
> +#!/bin/sh
> +
> +# This script provides an easy way to try and experiment with the
> +# notmuch emacs client provided in notmuch/emacs directory.
> +
> +set -eu
> +
> +test $# -gt 0 || {
> +	exec >&2
> +	echo
> +	echo "Usage: $0 '' | q | Q [other-emacs-args]"
> +	echo
> +	printf "  $0 %s\n" "'' starts emacs without either -q or -Q option" \
> +		"q  starts emacs with -q" \
> +		"Q  starts emacs with -Q"
> +	echo
> +	echo Note that if there are notmuch-emacs .elc files that are older than
> +	echo their corresponding .el files those older .elcs will be removed.
> +	echo
> +	exit 1
> +}
> +
> +case $1 in '') opt=
> +	;; q | -q) opt=-q
> +	;; Q | -Q) opt=-Q
> +	;; *) echo "option '$1' not '', 'q' nor 'Q'" >&2; exit 1
> +esac
> +shift
> +
> +case $0 in
> +	*\"*)	echo "'$0' contain one or more '\"'s" >&2; exit 1 ;;
> +	*/*)	d0=${0%/*} ;;
> +	*)	d0=.
> +esac
> +
> +pwd=$PWD
> +cd "$d0/.."
> +nmd=$PWD
> +emd=$PWD/emacs
> +
> +test -f "$nmd"/emacs/notmuch-lib.el || {
> +	echo "Cannot find notmuch-emacs source directory"
> +	exit 1
> +}
> +
> +if test -x "$nmd"/notmuch
> +then
> +	nmin='
> +To use accompanied notmuch binary from the same source, evaluate
> +(setq exec-path (cons \"'"$nmd"'\" exec-path))
> +Note: Evaluating the above may be followed by unintended database
> +upgrade and getting back to old version may require dump & restore.
> +'
> +else
> +	nmin=
> +fi
> +
> +if test "$opt" = '-q' || test "$opt" = '-Q'
> +then
> +	pkgin='
> +If you want to use packages (like company from elpa) evaluate
> +(progn (require '\''package) (package-initialize))
> +'
> +else
> +	pkgin=
> +fi

As far as I can see at this point we are in $nmd not $emd so the
following does not delete stale .elc files.

> +
> +# ensure we don't load .elc files that are older than corresponding .el file
> +# the emacs variable `load-prefer-newer' is not available until emacs 24.4
> +perl -e 'use strict; use warnings;
> +while (<*.elc>) {
> +	my $elc = $_; s/elc$/el/;
> +	if (-M $_ < -M $elc) {
> +		warn "$_ is newer than $elc. Removing $elc\n";
> +		unlink $elc or die "Failed to remove '\''$elc'\'': $!\n";
> +	}
> +}'


Best wishes

Mark

> +
> +cd "$pwd"
> +
> +# note: whitespace in $EMACS splits to command and args
> +exec ${EMACS:-emacs} $opt -L "$emd" -l "$emd"/notmuch.el "$@" --eval '
> +(with-current-buffer "*scratch*"
> +  (insert "
> +Go to the end of the following lines and type C-x C-e to evaluate
> +(or C-j which is shorter but inserts evaluation results into buffer)
> +
> +To \"disable\" mail sending, evaluate
> +(setq message-send-mail-function (lambda () t))
> +'"$nmin$pkgin"'
> +To start notmuch (hello) screen, evaluate
> +(notmuch-hello)") (set-buffer-modified-p nil))'
> -- 
> 2.0.0
>
> _______________________________________________
> notmuch mailing list
> notmuch@notmuchmail.org
> https://notmuchmail.org/mailman/listinfo/notmuch

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] devel/emacs: add devel/try-emacs-mua.sh
  2015-11-12  8:22 ` Mark Walters
@ 2015-11-12  9:07   ` Tomi Ollila
  2016-01-04 23:30   ` Michal Sojka
  1 sibling, 0 replies; 4+ messages in thread
From: Tomi Ollila @ 2015-11-12  9:07 UTC (permalink / raw)
  To: Mark Walters, notmuch

On Thu, Nov 12 2015, Mark Walters <markwalters1009@gmail.com> wrote:

>> devel/try-emacs-mua.sh provides an easy way to try and experiment with
>> the notmuch emacs client provided in emacs subdirectory of notmuch
>> source tree.
>>
>> User is required to choose whether to run emacs with -q, -Q or neither
>> -- and experienced ones may add other command line options, like
>> '-f notmuch'.
>>
>> This script ensures that no .el files are newer than corresponding .elc
>> files so that user (/developer!) does not accidentally experiment with
>> outdated elisp files. The emacs variable to have the same effect,
>> `load-prefer-newer' is not available until emacs 24.4.
>>
>> The *scratch* buffer is filled with some code user can execute before
>> running notmuch code.
>
> I like this -- a nice simple way to get to a working but uncustomised
> test environment.
>
> I don't know how easy the following would be but one addition that I
> would find very useful would be a way to make this use the test
> corpus. This would be useful for giving a completely standard
> environment for interactive testing, but also for debugging what is
> going on when tests fail.
>
> Of course that is a feature request and should not delay the feature.
>
> Finally, I think there is a bug: 
>
>
>> ---
>>
>> Addressed David's comments in id:87d1xdtim1.fsf@maritornes.cs.unb.ca
>> with 2 updates:
>>      1) removed "address completion insinuate"
>>      2) added code to initialize package system when using -q or -Q
>>
>>  devel/try-emacs-mua.sh | 92 ++++++++++++++++++++++++++++++++++++++++++++++++++
>>  1 file changed, 92 insertions(+)
>>  create mode 100755 devel/try-emacs-mua.sh
>>
>> diff --git a/devel/try-emacs-mua.sh b/devel/try-emacs-mua.sh
>> new file mode 100755
>> index 000000000000..71be152c2346
>> --- /dev/null
>> +++ b/devel/try-emacs-mua.sh
>> @@ -0,0 +1,92 @@
>> +#!/bin/sh
>> +
>> +# This script provides an easy way to try and experiment with the
>> +# notmuch emacs client provided in notmuch/emacs directory.
>> +
>> +set -eu
>> +
>> +test $# -gt 0 || {
>> +	exec >&2
>> +	echo
>> +	echo "Usage: $0 '' | q | Q [other-emacs-args]"
>> +	echo
>> +	printf "  $0 %s\n" "'' starts emacs without either -q or -Q option" \
>> +		"q  starts emacs with -q" \
>> +		"Q  starts emacs with -Q"
>> +	echo
>> +	echo Note that if there are notmuch-emacs .elc files that are older than
>> +	echo their corresponding .el files those older .elcs will be removed.
>> +	echo
>> +	exit 1
>> +}
>> +
>> +case $1 in '') opt=
>> +	;; q | -q) opt=-q
>> +	;; Q | -Q) opt=-Q
>> +	;; *) echo "option '$1' not '', 'q' nor 'Q'" >&2; exit 1
>> +esac
>> +shift
>> +
>> +case $0 in
>> +	*\"*)	echo "'$0' contain one or more '\"'s" >&2; exit 1 ;;
>> +	*/*)	d0=${0%/*} ;;
>> +	*)	d0=.
>> +esac
>> +
>> +pwd=$PWD
>> +cd "$d0/.."
>> +nmd=$PWD
>> +emd=$PWD/emacs
>> +
>> +test -f "$nmd"/emacs/notmuch-lib.el || {
>> +	echo "Cannot find notmuch-emacs source directory"
>> +	exit 1
>> +}
>> +
>> +if test -x "$nmd"/notmuch
>> +then
>> +	nmin='
>> +To use accompanied notmuch binary from the same source, evaluate
>> +(setq exec-path (cons \"'"$nmd"'\" exec-path))
>> +Note: Evaluating the above may be followed by unintended database
>> +upgrade and getting back to old version may require dump & restore.
>> +'
>> +else
>> +	nmin=
>> +fi
>> +
>> +if test "$opt" = '-q' || test "$opt" = '-Q'
>> +then
>> +	pkgin='
>> +If you want to use packages (like company from elpa) evaluate
>> +(progn (require '\''package) (package-initialize))
>> +'
>> +else
>> +	pkgin=
>> +fi
>
> As far as I can see at this point we are in $nmd not $emd so the
> following does not delete stale .elc files.

It sure doesn't! Thanks for the review.

Tomi


>
>> +
>> +# ensure we don't load .elc files that are older than corresponding .el file
>> +# the emacs variable `load-prefer-newer' is not available until emacs 24.4
>> +perl -e 'use strict; use warnings;
>> +while (<*.elc>) {
>> +	my $elc = $_; s/elc$/el/;
>> +	if (-M $_ < -M $elc) {
>> +		warn "$_ is newer than $elc. Removing $elc\n";
>> +		unlink $elc or die "Failed to remove '\''$elc'\'': $!\n";
>> +	}
>> +}'
>
>
> Best wishes
>
> Mark
>
>> +
>> +cd "$pwd"
>> +
>> +# note: whitespace in $EMACS splits to command and args
>> +exec ${EMACS:-emacs} $opt -L "$emd" -l "$emd"/notmuch.el "$@" --eval '
>> +(with-current-buffer "*scratch*"
>> +  (insert "
>> +Go to the end of the following lines and type C-x C-e to evaluate
>> +(or C-j which is shorter but inserts evaluation results into buffer)
>> +
>> +To \"disable\" mail sending, evaluate
>> +(setq message-send-mail-function (lambda () t))
>> +'"$nmin$pkgin"'
>> +To start notmuch (hello) screen, evaluate
>> +(notmuch-hello)") (set-buffer-modified-p nil))'
>> -- 
>> 2.0.0
>>
>> _______________________________________________
>> notmuch mailing list
>> notmuch@notmuchmail.org
>> https://notmuchmail.org/mailman/listinfo/notmuch
> _______________________________________________
> notmuch mailing list
> notmuch@notmuchmail.org
> https://notmuchmail.org/mailman/listinfo/notmuch

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] devel/emacs: add devel/try-emacs-mua.sh
  2015-11-12  8:22 ` Mark Walters
  2015-11-12  9:07   ` Tomi Ollila
@ 2016-01-04 23:30   ` Michal Sojka
  1 sibling, 0 replies; 4+ messages in thread
From: Michal Sojka @ 2016-01-04 23:30 UTC (permalink / raw)
  To: Mark Walters, Tomi Ollila, notmuch; +Cc: tomi.ollila

On Thu, Nov 12 2015, Mark Walters wrote:
>> devel/try-emacs-mua.sh provides an easy way to try and experiment with
>> the notmuch emacs client provided in emacs subdirectory of notmuch
>> source tree.

[...]

>
> I like this -- a nice simple way to get to a working but uncustomised
> test environment.
>
> I don't know how easy the following would be but one addition that I
> would find very useful would be a way to make this use the test
> corpus. This would be useful for giving a completely standard
> environment for interactive testing, but also for debugging what is
> going on when tests fail.

This is already possible. If a test fails, its working directory is not
deleted and you can run e.g. ./test/tmp.T310-emacs/run_emacs, where you
can interactively reproduce the test. What you miss compared to Tomi's
approach is the hint screen and extra logging.

BR
-Michal

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2016-01-04 23:30 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-11-01 15:16 [PATCH] devel/emacs: add devel/try-emacs-mua.sh Tomi Ollila
2015-11-12  8:22 ` Mark Walters
2015-11-12  9:07   ` Tomi Ollila
2016-01-04 23:30   ` Michal Sojka

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).