unofficial mirror of notmuch@notmuchmail.org
 help / color / mirror / code / Atom feed
* [PATCH] emacs: add emacs/try-emacs-mua.sh
@ 2015-09-07  6:48 Tomi Ollila
  2015-09-20 11:50 ` David Bremner
  0 siblings, 1 reply; 2+ messages in thread
From: Tomi Ollila @ 2015-09-07  6:48 UTC (permalink / raw)
  To: notmuch; +Cc: tomi.ollila

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 *scratch* buffer is filled with some code user can execute before
running notmuch code.
---

I developed this when doing series starting from
  id:1441204482-26509-1-git-send-email-tomi.ollila@iki.fi
and found this useful when testing
  id:1441574945-28437-1-git-send-email-uli@scholler.net

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

diff --git a/emacs/try-emacs-mua.sh b/emacs/try-emacs-mua.sh
new file mode 100755
index 000000000000..923137b41de6
--- /dev/null
+++ b/emacs/try-emacs-mua.sh
@@ -0,0 +1,68 @@
+#!/bin/sh
+
+# This script provides an easy way to try and experiment with the
+# notmuch emacs client provided in this 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
+	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"
+elwd=$PWD
+
+# ensure we don't load .elc files that are older than corresponding .el file
+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 "$elwd" -l "$d0"/notmuch.el "$@" --eval '
+(with-current-buffer "*scratch*"
+  (let ((pdir (expand-file-name "'"$elwd/.."'")))
+    (insert "
+Go to the end of the following lines and type C-x C-e to evaluate
+
+To \"disable\" mail sending, evaluate
+(setq message-send-mail-function (lambda () t))
+
+To enable address completion, evaluate
+(notmuch-address-message-insinuate)
+
+To use accompanied notmuch binary from the same source, evaluate
+(setq exec-path (cons \"" pdir "\" exec-path))
+Note: Evaluating the above may be followed by unintended database
+upgrade and getting back to old version may require dump & restore.
+
+To start notmuch (hello) screen, evaluate
+(notmuch-hello)")) (set-buffer-modified-p nil))'
-- 
2.0.0

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

* Re: [PATCH] emacs: add emacs/try-emacs-mua.sh
  2015-09-07  6:48 [PATCH] emacs: add emacs/try-emacs-mua.sh Tomi Ollila
@ 2015-09-20 11:50 ` David Bremner
  0 siblings, 0 replies; 2+ messages in thread
From: David Bremner @ 2015-09-20 11:50 UTC (permalink / raw)
  To: Tomi Ollila, notmuch; +Cc: tomi.ollila

Tomi Ollila <tomi.ollila@iki.fi> writes:

> 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 wondered if this made more sense in the devel subdirectory as
primarily a developer tool.

> +# ensure we don't load .elc files that are older than corresponding .el file
> +perl -e 'use strict; use warnings;
> +while (<*.elc>) {
[snip]
> +	}
> +}'

I think this part can be simplified using the emacs variable
`load-prefer-newer'. Which should really be the default in emacs, but
*shrug*. untested:

--eval "(setq load-prefer-newer t)" -L foo -l bar

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

end of thread, other threads:[~2015-09-20 12:13 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-09-07  6:48 [PATCH] emacs: add emacs/try-emacs-mua.sh Tomi Ollila
2015-09-20 11:50 ` 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).