Re: [PATCH] devel/emacs: add devel/try-emacs-mua.sh

2016-01-04 Thread Michal Sojka
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
___
notmuch mailing list
notmuch@notmuchmail.org
https://notmuchmail.org/mailman/listinfo/notmuch


Re: [PATCH] devel/emacs: add devel/try-emacs-mua.sh

2015-11-12 Thread Mark Walters

> 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@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 ..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
___
notmuch mailing list
notmuch@notmuchmail.org
https://notmuchmail.org/mailman/listinfo/notmuch


Re: [PATCH] devel/emacs: add devel/try-emacs-mua.sh

2015-11-12 Thread 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.
>>
>> 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@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 ..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
>> 

[PATCH] devel/emacs: add devel/try-emacs-mua.sh

2015-11-01 Thread 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@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 ..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

___
notmuch mailing list
notmuch@notmuchmail.org
https://notmuchmail.org/mailman/listinfo/notmuch