Re: [PATCH v3] devel/emacs: add devel/try-emacs-mua.sh
authorTomi Ollila <tomi.ollila@iki.fi>
Sun, 15 Nov 2015 10:07:20 +0000 (12:07 +0200)
committerW. Trevor King <wking@tremily.us>
Sat, 20 Aug 2016 21:50:03 +0000 (14:50 -0700)
90/33e3bcba587f162e933ebc13e762eb63d74668 [new file with mode: 0644]

diff --git a/90/33e3bcba587f162e933ebc13e762eb63d74668 b/90/33e3bcba587f162e933ebc13e762eb63d74668
new file mode 100644 (file)
index 0000000..46d58cf
--- /dev/null
@@ -0,0 +1,230 @@
+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 2954B6DE1016\r
+ for <notmuch@notmuchmail.org>; Sun, 15 Nov 2015 02:07:18 -0800 (PST)\r
+X-Virus-Scanned: Debian amavisd-new at cworth.org\r
+X-Spam-Flag: NO\r
+X-Spam-Score: 0.721\r
+X-Spam-Level: \r
+X-Spam-Status: No, score=0.721 tagged_above=-999 required=5 tests=[AWL=0.069, \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 EdKX3kjVqP1B for <notmuch@notmuchmail.org>;\r
+ Sun, 15 Nov 2015 02:07:13 -0800 (PST)\r
+Received: from guru.guru-group.fi (guru.guru-group.fi [46.183.73.34])\r
+ by arlo.cworth.org (Postfix) with ESMTP id 09F636DE0FC5\r
+ for <notmuch@notmuchmail.org>; Sun, 15 Nov 2015 02:07:12 -0800 (PST)\r
+Received: from guru.guru-group.fi (localhost [IPv6:::1])\r
+ by guru.guru-group.fi (Postfix) with ESMTP id E0BD610008E\r
+ for <notmuch@notmuchmail.org>; Sun, 15 Nov 2015 12:07:20 +0200 (EET)\r
+From: Tomi Ollila <tomi.ollila@iki.fi>\r
+To: notmuch@notmuchmail.org\r
+Subject: Re: [PATCH v3] devel/emacs: add devel/try-emacs-mua.sh\r
+In-Reply-To: <1447457397-11688-1-git-send-email-tomi.ollila@iki.fi>\r
+References: <1447457397-11688-1-git-send-email-tomi.ollila@iki.fi>\r
+User-Agent: Notmuch/0.21+14~g053baf4 (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: Sun, 15 Nov 2015 12:07:20 +0200\r
+Message-ID: <m24mgn1spz.fsf@guru.guru-group.fi>\r
+MIME-Version: 1.0\r
+Content-Type: text/plain\r
+X-BeenThere: notmuch@notmuchmail.org\r
+X-Mailman-Version: 2.1.20\r
+Precedence: list\r
+List-Id: "Use and development of the notmuch mail system."\r
+ <notmuch.notmuchmail.org>\r
+List-Unsubscribe: <https://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: <https://notmuchmail.org/mailman/listinfo/notmuch>,\r
+ <mailto:notmuch-request@notmuchmail.org?subject=subscribe>\r
+X-List-Received-Date: Sun, 15 Nov 2015 10:07:18 -0000\r
+\r
+\r
+I am marking this obsolete as I got and idea if works is going to\r
+be pretty cool... But if it doesn't work then we'll come back\r
+to this version.\r
+\r
+Tomi\r
+\r
+On Sat, Nov 14 2015, Tomi Ollila <tomi.ollila@iki.fi> wrote:\r
+\r
+> devel/try-emacs-mua.sh provides an easy way to try and experiment with\r
+> the notmuch emacs client provided in emacs subdirectory of notmuch\r
+> source tree.\r
+>\r
+> User is required to choose whether to run emacs with -q, -Q or neither\r
+> -- and experienced ones may add other command line options, like\r
+> '-f notmuch'.\r
+>\r
+> With emaces older than 24.4 it is checked that none of the .elc files\r
+> in notmuch/emacs directory is older than their corresponding .el files\r
+> before running emacs. With newer emaces variable `load-prefer-newer'\r
+> is effective so having old .elcs do not matter.\r
+>\r
+> Last possibility for "error" is when emacs starts and loads notmuch\r
+> (by init file) before there is change to have notmuch/emacs directory\r
+> in load-path. This time the message is written to emacs' *scratch* buffer.\r
+>\r
+> If everything is OK, the *scratch* buffer is filled with some lisp code\r
+> which user can evaluate before running notmuch functions.\r
+> ---\r
+>\r
+> Version 3 (I guess) -- the discovery Mark made in\r
+> id:87si4bwrsu.fsf@qmul.ac.uk has been fixed (originally to perl code,\r
+> but now converted to shell) -- and changed to just recognize that there\r
+> are old .elc files -- and the check is done only for emacses < 24.4.\r
+> Now loading of "notmuch" is wrapped in (let ((load-prefer-newer t)) ...).\r
+>\r
+> I tried tricks to ensure that notmuch*.el files are (always) loaded, but\r
+> it either got too complicated (hacky, potentially fragile defadvices), or\r
+> I saw plenty of *.el.gz uncompressions happening (and recursion loop in\r
+> jka-compr before that)...\r
+>\r
+> There is one notably change to the previous one -- before loading notmuch\r
+> there is check whether it is already loaded; if it is there is no point\r
+> going further here. Thanks for this discovery goes to IRC debugging\r
+> section with (mark and) "pseudomyne".\r
+>\r
+>  devel/try-emacs-mua.sh | 117 +++++++++++++++++++++++++++++++++++++++++++++++++\r
+>  1 file changed, 117 insertions(+)\r
+>  create mode 100755 devel/try-emacs-mua.sh\r
+>\r
+> diff --git a/devel/try-emacs-mua.sh b/devel/try-emacs-mua.sh\r
+> new file mode 100755\r
+> index 000000000000..e8406e3cb143\r
+> --- /dev/null\r
+> +++ b/devel/try-emacs-mua.sh\r
+> @@ -0,0 +1,117 @@\r
+> +#!/bin/sh\r
+> +\r
+> +# This script offers an easy way to try and experiment with the\r
+> +# notmuch emacs client provided in notmuch/emacs directory.\r
+> +\r
+> +set -eu\r
+> +\r
+> +test $# -gt 0 || {\r
+> +    exec >&2\r
+> +    echo\r
+> +    echo "Usage: $0 '' | q | Q [other-emacs-args]"\r
+> +    echo\r
+> +    printf "  $0 %s\n" "'' starts emacs without either -q or -Q option" \\r
+> +            "q  starts emacs with -q" \\r
+> +            "Q  starts emacs with -Q"\r
+> +    echo\r
+> +    exit 1\r
+> +}\r
+> +\r
+> +case $1 in '') opt=\r
+> +    ;; q | -q) opt=-q\r
+> +    ;; Q | -Q) opt=-Q\r
+> +    ;; *) echo "option '$1' not '', 'q' nor 'Q'" >&2; exit 1\r
+> +esac\r
+> +shift\r
+> +\r
+> +case $0 in\r
+> +    *\"*)   echo "'$0' contain one or more '\"'s" >&2; exit 1 ;;\r
+> +    *\\*)   echo "'$0' contain one or more '\\'s" >&2; exit 1 ;;\r
+> +    */*)    d0=${0%/*} ;;\r
+> +    *)      d0=.\r
+> +esac\r
+> +\r
+> +pwd=$PWD\r
+> +cd "$d0"/..\r
+> +nmd=$PWD\r
+> +emd=$PWD/emacs\r
+> +\r
+> +test -f "$emd"/notmuch-lib.el || {\r
+> +    echo "Cannot find notmuch-emacs source directory" >&2\r
+> +    exit 1\r
+> +}\r
+> +\r
+> +case `exec 2>&1 "${EMACS:-emacs}" -Q --batch -eval \\r
+> +    '(message (if (boundp '\''load-prefer-newer) "<-yes->" "<-no->"))'`\r
+> +in (*'<-no->'*)\r
+> +    allnew=true\r
+> +    for elc in "$emd"/*.elc\r
+> +    do\r
+> +            test -f "$elc" || continue\r
+> +            if test "$elc" -ot "${elc%c}"\r
+> +            then\r
+> +                    echo "'$elc' is older than '${elc%c}'" >&2\r
+> +                    allnew=false\r
+> +            fi\r
+> +    done\r
+> +    $allnew || {\r
+> +            exec >&2\r
+> +            echo\r
+> +            echo "In directory '$emd' there are .elc files that are"\r
+> +            echo "older than their corresponding .el files."\r
+> +            echo "Please remove (or recompile) these older files and try again."\r
+> +            echo\r
+> +            exit 1\r
+> +    }\r
+> +    unset allnew\r
+> +esac\r
+> +\r
+> +if test -x "$nmd"/notmuch\r
+> +then\r
+> +    nmin='\r
+> +To use accompanied notmuch binary from the same source, evaluate\r
+> +(setq exec-path (cons \"'"$nmd"'\" exec-path))\r
+> +Note: Evaluating the above may be followed by unintended database\r
+> +upgrade and getting back to old version may require dump & restore.\r
+> +'\r
+> +else\r
+> +    nmin=\r
+> +fi\r
+> +\r
+> +if test "$opt" = '-q' || test "$opt" = '-Q'\r
+> +then\r
+> +    qin='\r
+> +If you want to load your .emacs startup file now, evaluate\r
+> +(load \"~/.emacs\")\r
+> +\r
+> +If you want to use packages (e.g. company from elpa) evaluate\r
+> +(progn (require '\''package) (package-initialize))\r
+> +'\r
+> +else\r
+> +    qin='\r
+> +To view initialization time messages, evaluate\r
+> +(pop-to-buffer \"*Messages*\")\r
+> +'\r
+> +fi\r
+> +\r
+> +cd "$pwd"\r
+> +\r
+> +exec "${EMACS:-emacs}" $opt --debug-init -L "$emd" --eval '\r
+> +(with-current-buffer "*scratch*"\r
+> +  (if (featurep '\''notmuch)\r
+> +      (insert "\r
+> +Notmuch has been loaded to this emacs (during processing of the init file)\r
+> +which means it is (most probably) loaded from different source than expected.\r
+> +\r
+> +Please rerun \"'"$0"'\" with '"'q'"' to disable\r
+> +processing of the init file -- you can load it after emacs has started.\n\n")\r
+> +    (let ((load-prefer-newer t)) (load "notmuch" t))\r
+> +    (insert "\r
+> +Go to the end of the following lines and type C-x C-e to evaluate\r
+> +(or C-j which is shorter but inserts evaluation results into buffer)\r
+> +\r
+> +To \"disable\" mail sending, evaluate\r
+> +(setq message-send-mail-function (lambda () t))\r
+> +'"$nmin$qin"'\r
+> +To start notmuch (hello) screen, evaluate\r
+> +(notmuch-hello)")) (set-buffer-modified-p nil))' "$@"\r
+> -- \r
+> 2.0.0\r
+>\r
+> _______________________________________________\r
+> notmuch mailing list\r
+> notmuch@notmuchmail.org\r
+> https://notmuchmail.org/mailman/listinfo/notmuch\r