summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJaromil <jaromil@dyne.org>2017-02-05 14:25:19 (GMT)
committer Jaromil <jaromil@dyne.org>2017-02-05 14:25:19 (GMT)
commit39ddbf528a112388f06596a534dedd4eea821286 (patch)
tree57dd69b1533cb065848575c8bc4794b3a90d4b3c
parentcbb50423108f1dd0a9f93904fc126c3c35991f19 (diff)
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
-rwxr-xr-xsrc/jaro21
-rwxr-xr-xsrc/zlibs/email66
-rwxr-xr-xsrc/zlibs/filters18
-rwxr-xr-xsrc/zlibs/helpers16
-rwxr-xr-xsrc/zlibs/mutt118
5 files changed, 137 insertions, 102 deletions
diff --git a/src/jaro b/src/jaro
index 609bd96..5875da9 100755
--- 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
index bf4c6b9..da9edc5 100755
--- 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
index a53df87..a84a86b 100755
--- 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
index e5056b5..b6f7667 100755
--- 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
new file mode 100755
index 0000000..e86857c
--- /dev/null
+++ 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 $?
+}