commit 39ddbf528a112388f06596a534dedd4eea821286
parent cbb50423108f1dd0a9f93904fc126c3c35991f19
Author: Jaromil <jaromil@dyne.org>
Date:   Sun,  5 Feb 2017 15:25:19 +0100
new way to call mutt
mboxes are now computed at each call with risible overhead
this fixes also change of known to INBOX for peek's sidebar
Diffstat:
5 files changed, 137 insertions(+), 102 deletions(-)
diff --git a/src/jaro b/src/jaro
@@ -292,23 +292,6 @@ hostname=$(hostname) # gather the current hostname
 
 } # if not sourcing
 
-_mutt() {
-
-    [[ -r $MAILDIRS/.mutt/rc ]] || {
-        error "Jaro Mail is not yet configured."
-        error "To configure, edit the files in $MAILDIRS/Accounts"
-        error "Then run 'jaro update' at least once."
-        return 1
-    }
-
-    for i; do _fa+=" $i "; done
-    func "exec: mutt -F $MUTTDIR/rc ${=muttflags} ${_fa}"
-    [[ "$subcommand" = "peek" ]] || rm -f $MUTTDIR/muttpass
-    touch $MUTTDIR/muttpass
-    mutt -F $MUTTDIR/rc ${=muttflags} ${=_fa}
-    return $?
-}
-
 # binary programs recognition
 check_bin() {
 
@@ -961,7 +944,7 @@ EOF
         elif isemail "$subcommand"; then
             notice "Composing message to: ${@}"
             # its an email, TODO see if we have it in our addressbook
-            _mutt ${=@}
+            x_mutt ${=@}
             exitcode=0
         # or a directory of file
         elif maildircheck "$subcommand"; then
@@ -973,7 +956,7 @@ EOF
             exitcode=$?
         elif [[ -f "$subcommand" ]]; then
             # is it a regular file? then ;attach it
-                _mutt -a ${=@}
+                x_mutt -a ${=@}
                 exitcode=0
         else
             # just open; mutt on first unread folder
diff --git a/src/zlibs/email b/src/zlibs/email
@@ -39,7 +39,7 @@ compose() {
         fi
     done
 
-    cat | _mutt ${=_files} -- ${=_addrs}
+    cat | x_mutt ${=_files} -- ${=_addrs}
     # _mutt -H <(print "To: ${PARAM[@]}")
     return $?
 }
@@ -537,66 +537,30 @@ peek() {
 
     folder=""
     if ! [ -z ${1} ]; then
-    folder="${1}"
-    act "opening folder ${folder}"
+		folder="${1}"
+		act "opening folder ${folder}"
     fi
 
     case $transport in
-    SSL*|TLS*) act "using secure connection ($transport)"
-        iproto="imaps" ;;
-    plain) act "using clear text connection"
-        iproto="imap"  ;;
-    *)
-        error "Unknown transport: $transport"
-        error "Configuration error in imap account ${account}"
-        return 1 ;;
+		SSL*|TLS*) act "using secure connection ($transport)"
+				   iproto="imaps" ;;
+		plain) act "using clear text connection"
+			   iproto="imap"  ;;
+		*)
+			error "Unknown transport: $transport"
+			error "Configuration error in imap account ${account}"
+			return 1 ;;
     esac
     # escape at sign in login
     ilogin=`print $login | sed 's/@/\\@/'`
 
     { test $DRYRUN != 1 } && {
 
-    type=imap
-    host=$imap
-    port=$imap_port
-
-    # when peeking and using mutt-kz use the sidebar
-    is_mutt_kz && {
-        cat <<EOF > "$MAILDIRS/.mutt/notmuch"
-set sidebar_width	 = 25
-set sidebar_visible	 = yes
-
-color sidebar_new white default
-color progress default magenta
-
-bind index p sidebar-prev
-bind index n sidebar-next
-bind index <space> sidebar-open
-
-macro pager S "<enter-command>toggle sidebar_visible<enter>"
-macro index S "<enter-command>toggle sidebar_visible<enter>"
-
-EOF
-    }
-
-    # when peeking don't mark unread messages as Old
-    # and sort date received with no threading (latest up)
-    # also set the spoolfile name to INBOX (imap's default)
-    rm -f "$MAILDIRS/.mutt/muttpass"
-    sysread -o 1 <<EOF > "$MAILDIRS/.mutt/muttpass"
-set imap_pass = \`$WORKDIR/bin/jaro -a ${account} askpass\`
-unset mark_old
-set sort=reverse-date-received
-set folder=${iproto}://${ilogin}@${imap}:${imap_port}
-set spoolfile=${iproto}://${ilogin}@${imap}:${imap_port}/INBOX
-EOF
-
-    # schedule deletion of muttpass file after use
-    sched +3 "
-rm -f $MAILDIRS/.mutt/muttpass
-touch $MAILDIRS/.mutt/muttpass"
+		type=imap
+		host=$imap
+		port=$imap_port
 
-    _mutt -f ${iproto}://${ilogin}@${imap}:${imap_port}/${folder}
+		x_mutt -f ${iproto}://${ilogin}@${imap}:${imap_port}/${folder}
 
     } # DRYRUN
     return $?
diff --git a/src/zlibs/filters b/src/zlibs/filters
@@ -619,24 +619,6 @@ EOF
     touch "$MAILDIRS/.mutt/notmuch"
 
 
-    # just the header, will be completed later
-    rm -f $MAILDIRS/.mutt/mboxes
-    print -n "mailboxes +known +priv" > $MAILDIRS/.mutt/mboxes
-
-    for f in `cat "$MAILDIRS/Filters.txt" | awk '
-    /^#/ {next}
-    /^./ { print $4 }'`; do
-        # MUTT (generate mailboxes priority this parser)
-        print  " \\" >> $MAILDIRS/.mutt/mboxes
-        print -n " +${f} " >> $MAILDIRS/.mutt/mboxes
-    done
-    print " \\" >> $MAILDIRS/.mutt/mboxes
-    print " +unsorted.ml +unsorted" >> $MAILDIRS/.mutt/mboxes
-
-    ztmp
-    ttmp=$ztmpfile
-    uniq $MAILDIRS/.mutt/mboxes > $ttmp
-    mv $ttmp $MAILDIRS/.mutt/mboxes
 
 }
 
diff --git a/src/zlibs/helpers b/src/zlibs/helpers
@@ -220,18 +220,6 @@ edit_file() {
     return $?
 }
 
-is_mutt_kz() {
-    rm -f "$MAILDIRS/.mutt/notmuch"
-    touch "$MAILDIRS/.mutt/notmuch"
-    kz=`mutt -v | awk '/Configure options.*enable-notmuch/ { print $0 }'`
-    if [[ "$kz" = "" ]]; then
-         return 1
-    else
-        act "Notmuch powered mutt-kz detected, enabling extra features"
-        return 0
-    fi
-}
-
 #####################
 ## Open a mail folder
 open_folder() {
@@ -280,9 +268,9 @@ EOF
     }
 
     if [[ "$1" = "" ]]; then
-        _mutt -Z
+        x_mutt -Z
     else
-        _mutt -f "$1"
+        x_mutt -f "$1"
     fi
     return $?
 }
diff --git a/src/zlibs/mutt b/src/zlibs/mutt
@@ -0,0 +1,118 @@
+#!/usr/bin/env zsh
+#
+# Jaro Mail, your humble and faithful electronic postman
+#
+# a tool to easily and privately handle your e-mail communication
+#
+# Copyright (C) 2017 Dyne.org Foundation
+#
+# JaroMail is designed, written and maintained by Denis Roio <jaromil@dyne.org>
+#
+# This source  code is free  software; you can redistribute  it and/or
+# modify it under the terms of  the GNU Public License as published by
+# the Free  Software Foundation; either  version 3 of the  License, or
+# (at your option) any later version.
+#
+# This source code is distributed in  the hope that it will be useful,
+# but  WITHOUT ANY  WARRANTY;  without even  the  implied warranty  of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+# Please refer to the GNU Public License for more details.
+#
+# You should have received a copy of the GNU Public License along with
+# this source code; if not, write to:
+# Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+
+
+is_mutt_kz() {
+    rm -f "$MAILDIRS/.mutt/notmuch"
+    touch "$MAILDIRS/.mutt/notmuch"
+    kz=`mutt -v | awk '/Configure options.*enable-notmuch/ { print $0 }'`
+    if [[ "$kz" = "" ]]; then
+         return 1
+    else
+        act "Notmuch powered mutt-kz detected, enabling extra features"
+        return 0
+    fi
+}
+
+
+x_mutt() {
+
+    [[ -r $MAILDIRS/.mutt/rc ]] || {
+        error "Jaro Mail is not yet configured."
+        error "To configure, edit the files in $MAILDIRS/Accounts"
+        error "Then run 'jaro update' at least once."
+        return 1
+    }
+
+
+    # when peeking and using mutt-kz use the sidebar
+    is_mutt_kz && {
+        cat <<EOF > "$MAILDIRS/.mutt/notmuch"
+set sidebar_width	 = 25
+set sidebar_visible	 = yes
+
+color sidebar_new white default
+color progress default magenta
+
+bind index p sidebar-prev
+bind index n sidebar-next
+bind index <space> sidebar-open
+
+macro pager S "<enter-command>toggle sidebar_visible<enter>"
+macro index S "<enter-command>toggle sidebar_visible<enter>"
+
+EOF
+    }
+
+    rm -f $MAILDIRS/.mutt/mboxes
+
+    for i; do _fa+=" $i "; done
+    func "exec: mutt -F $MUTTDIR/rc ${=muttflags} ${_fa}"
+
+	ztmp
+	_mboxes=$ztmpfile
+
+    if [[ "$subcommand" = "peek" ]]; then
+		# when peeking don't mark unread messages as Old
+		# and sort date received with no threading (latest up)
+		# also set the spoolfile name to INBOX (imap's default)
+		rm -f "$MAILDIRS/.mutt/muttpass"
+		sysread -o 1 <<EOF > "$MAILDIRS/.mutt/muttpass"
+set imap_pass = \`$WORKDIR/bin/jaro -a ${account} askpass\`
+unset mark_old
+set sort=reverse-date-received
+set folder=${iproto}://${ilogin}@${imap}:${imap_port}
+set spoolfile=${iproto}://${ilogin}@${imap}:${imap_port}/INBOX
+EOF
+
+		print -n "mailboxes +INBOX +priv" > $_mboxes
+	else
+		print -n "mailboxes +known +priv" > $_mboxes
+		rm -f $MUTTDIR/muttpass
+	fi
+
+    touch $MUTTDIR/muttpass
+
+    # make the mailboxes according to filters and such
+
+    for f in `cat "$MAILDIRS/Filters.txt" | awk '
+    /^#/ {next}
+    /^./ { print $4 }'`; do
+        # MUTT (generate mailboxes priority this parser)
+        print  " \\" >> $_mboxes
+        print -n " +${f} " >> $_mboxes
+    done
+    print " \\" >> $_mboxes
+    print " +unsorted.ml +unsorted" >> $_mboxes
+
+    uniq $_mboxes > $MAILDIRS/.mutt/mboxes
+
+    # schedule deletion of muttpass file after use
+    sched +3 "
+rm -f $MAILDIRS/.mutt/muttpass
+touch $MAILDIRS/.mutt/muttpass"
+
+    mutt -F $MUTTDIR/rc ${=muttflags} ${=_fa}
+    return $?
+}