From b049773ee84817e9bfb8e95ad9498bb2bb361e05 Mon Sep 17 00:00:00 2001 From: Roland Puntaier Date: Sat, 31 Aug 2019 23:16:16 +0200 Subject: [PATCH] changed shortcuts + bug fixes --- README.md | 24 +++--- bin/mailsync | 38 ++++----- bin/mw | 3 +- mw.1 | 50 +++++++----- share/mutt-wizard.muttrc | 168 ++++++++++++++++++++++++--------------- test/test_mw.bats | 1 - 6 files changed, 169 insertions(+), 115 deletions(-) diff --git a/README.md b/README.md index 485ce97..5bb07e7 100644 --- a/README.md +++ b/README.md @@ -61,7 +61,7 @@ If you get errors in `neomutt`, install the most recent version manually or manu Install it and run `notmuch setup`. Tell it where your mail is (`$MAILDIR` or `~/Mail`). Although, `mw` will do this automatically, if you haven't set notmuch up before. - You can run it in mutt with `ctrl-f`. + You can run it in mutt with `S`. Run `notmuch new` to process new mail. Although, the included `mailsync` script does this for you. - `libnotify`/`libnotify-bin` - allows notifications when syncing mail with `mailsync` @@ -71,28 +71,34 @@ If you get errors in `neomutt`, install the most recent version manually or manu - `pam-gnupg` - this is a more general program that I use. It automatically logs you into your GPG key on login so you will never need to input your password once logged on to your system. Check out the repo and directions [here](https://github.com/cruegge/pam-gnupg). -- `urlview` - outputs urls in mail to browser. +- `urlscan` - outputs urls in mail to browser. ## Neomutt user interface To give you an example of the interface, here's an idea: - `m` - send mail (uses your default `$EDITOR` to write) -- `j`/`k` and `d`/`u` - vim-like bindings to go down and up (or `d`/`u` to go down/up a page). +- `j`/`k` and `ctrl-d`/`ctrl-u` - vim-like bindings to go down and up - `l` - open mail, or attachment page or attachment - `h` - the opposite of `l` - `D` - delete mail -- `r`/`R` - reply/reply all to highlighted mail +- `r`/`gr` - reply/reply all to highlighted mail - `s` - save selected mail or selected attachment -- `gs`,`gi`,`ga`,`gd`,`gS` - Press `g` followed by another letter to change mailbox: `s`ent, `i`nbox, `a`rchive, `d`rafts, `S`pam, etc. -- `M` and `C` - For `M`ove and `C`opy: follow them with one of the mailbox letters above, i.e. `MS` means "move to Spam". +- `ixy` - Press `i` followed by the two initial mailbox letters to go there +- `Mxy` and `Cxy` - For `M`ove and `C`opy to the according mailbox, e.g. `Msp` means "move to Spam". - `i#` - Press `i` followed by a number 1-9 to go to a different account. If you add 9 accounts via mutt-wizard, they will each be assigned a number. -- `a` to add address/person to abook and `Tab` while typing address to complete one from book. +- `ga` to add address/person to abook and `Tab` while typing address to complete one from book. - `?` - see all keyboard shortcuts -- `ctrl-j`/`ctrl-k` - move up and down in sidebar, `ctrl-o` opens mailbox. -- `ctrl-b` - open a menu to select a url you want to open in you browser (needs urlview). +- `ctrl-j`/`ctrl-k` - move up and down in sidebar, `ctrl-l` opens mailbox. +- `gu` - open a menu to select a url you want to open in you browser (needs urlscan). +- `S` - search for a mail +- `gl` - limit by substring of subject +- `gL` - undo limit - `gm / gM` - call mutt-wizard's mailsync for one / all mail accounts +- `^u` within input field / command line, will clear it, `^a` and `^e` go to beginning or end, `^g` aborts + +Look into `/usr/share/mutt-wizard.muttrc` to see all bindings. ## New stuff and improvements since the original release diff --git a/bin/mailsync b/bin/mailsync index f9c3610..79faed0 100755 --- a/bin/mailsync +++ b/bin/mailsync @@ -12,16 +12,17 @@ export DISPLAY=:0.0 if [[ -z $PASSWORD_STORE_DIR ]]; then [ -d "$HOME/.local/share/password-store" ] && export PASSWORD_STORE_DIR="$HOME/.local/share/password-store" fi -configdir=${XDG_CONFIG_HOME:-$HOME/.config} -maildir="${MAILDIR:-$HOME/Mail}" -lastrun=${XDG_CACHE_HOME:-$HOME/.cache}/.mailsynclastrun -mbsyncrc="$configdir/isync/mbsyncrc" -mbsyncbin="$prefix/bin/mbsync -c $mbsyncrc" +mwconfigdir=${XDG_CONFIG_HOME:-$HOME/.config} +mwmaildir="${MAILDIR:-$HOME/Mail}" +mwlastrun=${XDG_CACHE_HOME:-$HOME/.cache}/.mailsynclastrun +mwmbsyncrc="$mwconfigdir/isync/mbsyncrc" +mwmbsyncbin="$prefix/bin/mbsync -c $mwmbsyncrc" # Run only if user logged in (prevent cron errors) pgrep -u "$USER" >/dev/null || { echo "$USER not logged in; sync will not run."; exit ;} # Run only if not already running in other instance -pgrep -x mbsync >/dev/null && { echo "mbsync is already running." ; exit ;} +pgrep -x mbsync >/dev/null && { echo "mbsync is running." ; exit ;} +pgrep -x notmuch >/dev/null && { echo "notmuch is running." ; exit ;} # Checks for internet connection and set notification script. ping -q -c 1 1.1.1.1 > /dev/null || { echo "No internet connection detected."; exit ;} @@ -29,20 +30,21 @@ command -v notify-send >/dev/null || echo "Note that \`libnotify\` or \`libnotif # Settings are different for MacOS (Darwin) systems. if [ "$(uname)" = "Darwin" ]; then - notify() { osascript -e "display notification \"$2 in $1\" with title \"You've got Mail\" subtitle \"Account: $account\"" && sleep 2 ;} + notify() { osascript -e "display notification \"$2 in $1\" with title \"You've got Mail\" subtitle \"Account: $1\"" && sleep 2 ;} else notify() { notify-send "mutt-wizard" "📬 $2 new mail(s) in \`$1\` account." ;} fi # Check account for new mail. Notify if there is new content. syncandnotify() { - acc="$(echo "$account" | sed "s/.*\///")" - $mbsyncbin "$acc" - new=$(find "$maildir/$acc/INBOX/new/" "$maildir/$acc/Inbox/new/" "$maildir/$acc/inbox/new/" -type f -newer "$lastrun" 2> /dev/null) - newcount=$(echo "$new" | sed '/^\s*$/d' | wc -l) + mwacc="$(echo "$mwaccount" | sed "s/.*\///")" + mwaccmaildir="$mwmaildir/$mwacc" + $mwmbsyncbin "$mwacc" + mwnew=$(find "$mwaccmaildir/INBOX/new/" "$mwaccmaildir/Inbox/new/" "$mwaccmaildir/inbox/new/" -type f -newer "$mwlastrun" 2> /dev/null) + newcount=$(echo "$mwnew" | sed '/^\s*$/d' | wc -l) if [ "$newcount" -gt "0" ]; then - notify "$acc" "$newcount" & - for file in $new; do + notify "$mwacc" "$newcount" & + for file in $mwnew; do # Extract subject and sender from mail. from=$(awk '/^From: / && ++n ==1,/^\<.*\>:/' "$file" | perl -CS -MEncode -ne 'print decode("MIME-Header", $_)' | awk '{ $1=""; if (NF>=3)$NF=""; print $0 }' | sed 's/^[[:blank:]]*[\"'\''\<]*//;s/[\"'\''\>]*[[:blank:]]*$//') subject=$(awk '/^Subject: / && ++n == 1,/^\<.*\>: / && ++i == 2' "$file" | head -n-1 | perl -CS -MEncode -ne 'print decode("MIME-Header", $_)' | sed 's/^Subject: //' | sed 's/^{[[:blank:]]*[\"'\''\<]*//;s/[\"'\''\>]*[[:blank:]]*$//' | tr -d '\n') @@ -53,17 +55,17 @@ syncandnotify() { # Sync accounts passed as argument or all. if [ "$#" -eq "0" ]; then - accounts="$(awk '/^Group .*@.*/ {print $2}' "$mbsyncrc")" - accounts+=" $(awk '/^Channel .*@.*/ {print $2}' "$mbsyncrc")" + mwaccounts="$(awk '/^Group .*@.*/ {print $2}' "$mwmbsyncrc")" + mwaccounts+=" $(awk '/^Channel .*@.*/ {print $2}' "$mwmbsyncrc")" else - accounts=$* + mwaccounts=$* fi echo " 🔃" > /tmp/imapsyncicon_"$USER" pkill -RTMIN+12 i3blocks >/dev/null 2>&1 # Parallelize multiple accounts -for account in $accounts +for mwaccount in $mwaccounts do syncandnotify & done @@ -75,4 +77,4 @@ pkill -RTMIN+12 i3blocks >/dev/null 2>&1 notmuch new 2>/dev/null #Create a touch file that indicates the time of the last run of mailsync -touch "$lastrun" +touch "$mwlastrun" diff --git a/bin/mw b/bin/mw index 942f9e6..d6b590d 100755 --- a/bin/mw +++ b/bin/mw @@ -43,9 +43,8 @@ mbsyncbin="$prefix/bin/mbsync -c $mwmbsyncrc" msmtpbin="$prefix/bin/msmtp" _mwaddrmwtype(){ mwacc="$mwaddr" # let the user always just deal with his email - mwaccmutt="${mwaddr//[.@]/_}" # but mutt would not show it with an @ or . + mwaccmaildir="$mwmaildir/$mwacc" # mail dir is $MAILDIR/email mwacccachedir=$mwcachedir/${mwaddr//[.@]/_} # @ cannot stay because of mutt, . could - mwaccmaildir="$mwmaildir/$mwaccmutt" # folder name as shown by mutt and opens with gf in vim mwaccmuttrc="$mwaccmuttdir/$mwidnum-$mwacc.mwonofftype.$mwtype.muttrc" mwpass=mutt-wizard-$mwaddr [ -n "$mwidnum" ] && mwaccmuttrc="$mwaccmuttdir/$mwidnum-$mwacc.mwonofftype.$mwtype.muttrc" diff --git a/mw.1 b/mw.1 index 08e5a24..00e8621 100644 --- a/mw.1 +++ b/mw.1 @@ -46,7 +46,8 @@ If the user chooses to keep offline email with it will be kept in .I $MAILDIR which defaults to -.I $HOME/mail/. +.I $HOME/Mail/ +, the default for mutt. .B notmuch can be used to index and search this mail by giving this directory when first running .B notmuch setup. @@ -55,7 +56,7 @@ If you have not set up notmuch before, mutt-wizard will automatically set it up .B muttrc files mutt-wizard will create a muttrc file for each created account holding account-specific details. These will appear in .I $XDG_CONFIG_HOME/mutt/accounts/. -$XGD_CONFIG_HOME default to ~/.config. +$XGD_CONFIG_HOME defaults to ~/.config. Note that mutt-wizard will also source these files and create the bindings to switch between them, and these will appear in your default .I $XDG_CONFIG_HOME/mutt/muttrc file. @@ -141,9 +142,9 @@ While mail is open, go to next or previous mail with and .I K. In the mail index, -.I d +.I ctrl-d and -.I u +.I ctrl-u go down and up by a half page and .I gg and @@ -154,12 +155,12 @@ go to the very top and very bottom. If you have .B notmuch configured with your proper mail directory (see above), you may run -.I ctrl-f +.I S to search for mail containing any given sequence. Even without notmuch, -.I L +.I gl limits mail, showing only those with the given sequence in the subject while -.I A +.I gL shows all mail (same as limiting to "all"). .TP .B Deleting mail @@ -167,7 +168,7 @@ shows all mail (same as limiting to "all"). deletes mail, while .I U undeletes it (type in mail number to get to deleted mail). Note that -.I S +.I $ saves your mailbox, finalizing deletion. If you have a .I Trash box, deleted mail is moved there. If you want it to skip that and simply be deleted, comment out or remove the @@ -179,7 +180,7 @@ line in that account's muttrc. creates a new mail message; .I r replies to the selected message; -.I R +.I gr replies all to the selected message and .I f fowards the selected message. @@ -197,27 +198,26 @@ to send the mail. .TP .B Saving and autocompleting email addresses with abook Install the optional dependency abook and you will be able to save the sender's email address with -.I a. +.I ga. Once this is done, when you are typing in any email/contact prompt, you may press .I Tab to find contacts matching your input. Although abook is often used with mutt, it is also a useful program in its own right. .TP .B Switching and moving mail between mailboxes The -.I g -key can be paired with several other keys to automatically move to another mailbox: gi: Inbox; gs: Sent; gd: Drafts; ga: Archive; gS: Spam; gj: Junk; gt: Trash. These bindings will only be present for accounts that have the boxes in question. Instead of -.I g, -you can also press -.I C -to copy mail or -.I M -to move mail to the same boxes. +.I i +key is paired with the two inital letters of a mailbox, isp: go to spam, ... +Similar +.I Cxy +will copy mail and +.I Mxy +will move mail to the according boxe. .TP .B Switching between accounts mutt-wizard can configure as many as nine accounts each numbered by the lowest available number when configured. Press .I i followed by an account's number to change to that account: i2, i5, etc. -.I ctrl-b +.I gu to open a menu to select a url you want to open in you browser. .TP .B Sidebar @@ -226,7 +226,17 @@ mutt-wizard enables the sidebar by default which displays your account's boxes w will toggle the sidebar. Move up and down in it with .I ctrl-k/j. Open a box with -.I ctrl-o. +.I ctrl-o +or +.I ctrl-l +.TP +.B Input field / command line +.I ctrl-u +within input field / command line, will clear it +.I ctrl-a / ctl-e +go to beginning or end. +.I ctrl-g +aborts. .TP .B More information Remember that you can press diff --git a/share/mutt-wizard.muttrc b/share/mutt-wizard.muttrc index b13677e..15cf044 100644 --- a/share/mutt-wizard.muttrc +++ b/share/mutt-wizard.muttrc @@ -1,8 +1,15 @@ # vim: filetype=neomuttrc -# This file contains all of mutt-wizard's default settings. +# +# This file contains all of mutt-wizard's defaults. # mutt-wizard will have this file sourced from your muttrc. +# The vim-like key binding has been established by comparing different dotfiles. +# You can change bindings after the sourcing of the defaults. +# Or you can keep mutt-wizard from sourcing its defaults with this comment in your muttrc: +# #source /usr/share/mutt-wizard/mutt-wizard.muttrc +# # In the interest of seamless updating, do not edit this file. -# If you want to override any settings, set those in your muttrc. + +# ==================== SETTINGS ==================== # set mailcap_path = /usr/share/mutt-wizard/mailcap set date_format="%y/%m/%d %I:%M%p" set index_format="%2C %zs %?X?A& ? %D %-15.15F %s (%-4.4c)" @@ -10,64 +17,21 @@ set sort = 'reverse-date' set smtp_authenticators = 'gssapi:login' set query_command = "abook --mutt-query '%s'" set rfc2047_parameters = yes -set sleep_time = 0 # Pause 0 seconds for informational messages -set markers = no # Disables the `+` displayed at line wraps -set mark_old = no # Unread mail stay unread until read -set mime_forward = yes # attachments are forwarded with mail -set wait_key = no # mutt won't ask "press key to continue" -set fast_reply # skip to compose when replying -set fcc_attach # save attachments with the body -set forward_format = "Fwd: %s" # format of subject when forwarding -set forward_quote # include message in forwards -set reverse_name # reply as whomever it was to -set include # include message in replies -set mail_check=60 # to avoid lags using IMAP with some email providers (yahoo for example) -auto_view text/html # automatically show html (mailcap uses w3m) +set sleep_time = 0 # Pause 0 seconds for informational messages +set markers = no # Disables the `+` displayed at line wraps +set mark_old = no # Unread mail stay unread until read +set mime_forward = yes # attachments are forwarded with mail +set wait_key = no # mutt won't ask "press key to continue" +set fast_reply # skip to compose when replying +set fcc_attach # save attachments with the body +set forward_format = "Fwd: %s" # format of subject when forwarding +set forward_quote # include message in forwards +set reverse_name # reply as whomever it was to +set include # include message in replies +set mail_check=60 # to avoid lags using IMAP with some email providers (yahoo for example) +auto_view text/html # automatically show html (mailcap uses w3m) auto_view application/pgp-encrypted alternative_order text/plain text/enriched text/html -bind index,pager i noop -bind index,pager g noop -bind index,pager M noop -bind index,pager C noop - -bind index \Cf noop - -# General rebindings -bind attach view-mailcap -bind attach l view-mailcap -bind editor noop -bind pager,attach h exit -bind pager j next-line -bind pager k previous-line -bind pager l view-attachments -bind index gg first-entry -bind index G last-entry -bind index D delete-message -bind index U undelete-message -bind index L limit -bind index h noop -bind index l display-message -#bind browser h goto-parent -macro browser h '..' "Go to parent folder" -bind index,pager H view-raw-message -bind browser l select-entry -bind pager,browser gg top-page -bind pager,browser G bottom-page -bind index,pager,browser d half-down -bind index,pager,browser u half-up -bind index,pager S sync-mailbox -bind index,pager R group-reply -bind index \031 previous-undeleted # Mouse wheel -bind index \005 next-undeleted # Mouse wheel -bind pager \031 previous-line # Mouse wheel -bind pager \005 next-line # Mouse wheel -bind editor complete-query - -macro index,pager a "|abook --add-email\n" 'add sender to abook' -macro index \Cr "T~UN." "mark all messages as read" -macro index \Cf "unset wait_keyread -p 'Enter a search term to find with notmuch: ' x; echo \$x >\${XDG_CACHE_HOME:-~/.cache}/mutt_terms~i \"\`notmuch search --output=messages \$(cat \${XDG_CACHE_HOME:-~/.cache}/mutt_terms) | head -n 600 | perl -le '@a=<>;s/\^id:// for@a;$,=\"|\";print@a' | perl -le '@a=<>; chomp@a; s/\\+/\\\\+/ for@a;print@a' \`\"" "show only messages matching a notmuch pattern" -macro index A "all\n" "show all messages (undo limit)" - # Sidebar mappings set sidebar_visible = yes set sidebar_width = 20 @@ -75,6 +39,62 @@ set sidebar_short_path = yes set sidebar_next_new_wrap = yes set mail_check_stats set sidebar_format = '%B%?F? [%F]?%* %?N?%N/? %?S?%S?' +# ==================== settings ==================== # + +# =================== SHORTCUTS ==================== # +# Non-standard, more vim-like key mappings +# +# Free keys +bind index h noop +bind index,pager d noop #used for dX +bind index,pager i noop #used for goto iXY and i[1-9] in account muttrc (XY = 2 mailbox letters) +bind index,pager M noop #used for CXY, "move" to XY in account muttrc +bind index,pager C noop #used for CXY, "copy" to XY in account muttrc +bind pager,attach,browser,index g noop +# Moving between views the vim way +bind attach,index gg first-entry +bind attach,index G last-entry +bind pager,browser gg top-page +bind pager,browser G bottom-page +bind pager G bottom +bind pager k previous-line +bind pager j next-line +# l gets from index to mail to attachents to system view via mailcap +# h back vim-like (q by mutt) +bind index l display-message +bind browser l select-entry +bind pager l view-attachments +bind attach l view-mailcap +bind attach view-mailcap +bind pager,attach h exit +macro browser h '..' "Go to parent folder" +# Moving inside view as in vim +bind attach,index,pager,browser \Cd half-down +bind attach,index,pager,browser \Cu half-up +bind attach,browser,pager,index \Cf next-page +bind attach,browser,pager,index \Cb previous-page +bind browser,pager,index \Ce next-line +bind browser,pager,index \Cy previous-line +# and using mouse +bind index \031 previous-undeleted # Mouse wheel +bind index \005 next-undeleted # Mouse wheel +bind pager \031 previous-line # Mouse wheel +bind pager \005 next-line # Mouse wheel +# +# Using other dX and gX keys +bind index gl limit +macro index gL "all\n" "show all messages (undo limit)" +# Threads +bind browser,pager,index N search-opposite +bind pager,index dT delete-thread +bind pager,index dt delete-subthread +bind pager,index gt next-thread +bind pager,index gT previous-thread +bind index za collapse-thread +bind index zA collapse-all +bind index - collapse-thread +bind index _ collapse-all +# Sidebar (J/K goes to previou/next mail by mutt) bind index,pager \Ck sidebar-prev bind index,pager \Cj sidebar-next bind index,pager \Co sidebar-open @@ -82,19 +102,37 @@ bind index,pager \Cl sidebar-open bind index,pager \Cp sidebar-prev-new bind index,pager \Cn sidebar-next-new bind index,pager B sidebar-toggle-visible +# Edit the vim way +# D, U = delete/undelete by pattern by mutt +bind pager,index dd delete-message #u is undelete by mutt +bind index,pager gr group-reply #R is recall postponed by mutt +bind editor noop +bind editor complete-query +bind index,pager V view-raw-message +# Other +bind pager t display-toggle-weed +# +# Macros +macro index \Cr "~U\ + N." \ + "mark all messages as read" +macro index,pager ga "|abook --add-email\n" 'add sender to abook' #"a" alone, add to alias +macro index S "unset wait_keyread -p 'Enter a search term to find with notmuch: ' x; echo \$x >\${XDG_CACHE_HOME:-~/.cache}/mutt_terms~i \"\`notmuch search --output=messages \$(cat \${XDG_CACHE_HOME:-~/.cache}/mutt_terms) | head -n 600 | perl -le '@a=<>;s/\^id:// for@a;$,=\"|\";print@a' | perl -le '@a=<>; chomp@a; s/\\+/\\\\+/ for@a;print@a' \`\"" \ + "show only messages matching a notmuch pattern" +macro pager gu "|urlscan" "call urlscan to open links" +# =================== shortcuts ==================== # -# Default index colors: +## ===================== COLOR ===================== # +# Default index colors color index yellow default '.*' color index_author red default '.*' color index_number blue default color index_subject cyan default '.*' - -# New mail is boldened: +# New mail is boldened color index brightyellow black "~N" color index_author brightred black "~N" color index_subject brightcyan black "~N" - -# Other colors and aesthetic settings: +# Other colors and aesthetic settings mono bold bold mono underline underline mono indicator reverse @@ -124,8 +162,7 @@ color signature brightgreen default color bold black default color underline black default color normal default default - -# Regex highlighting: +# Regex highlighting color header blue default ".*" color header brightmagenta default "^(From)" color header brightcyan default "^(Subject)" @@ -149,3 +186,4 @@ color body brightyellow red "^gpg: BAD signature from.*" mono body bold "^gpg: Good signature" mono body bold "^gpg: BAD signature from.*" color body red default "([a-z][a-z0-9+-]*://(((([a-z0-9_.!~*'();:&=+$,-]|%[0-9a-f][0-9a-f])*@)?((([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?|[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+)(:[0-9]+)?)|([a-z0-9_.!~*'()$,;:@&=+-]|%[0-9a-f][0-9a-f])+)(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*(/([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*(;([a-z0-9_.!~*'():@&=+$,-]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?(#([a-z0-9_.!~*'();/?:@&=+$,-]|%[0-9a-f][0-9a-f])*)?|(www|ftp)\\.(([a-z0-9]([a-z0-9-]*[a-z0-9])?)\\.)*([a-z]([a-z0-9-]*[a-z0-9])?)\\.?(:[0-9]+)?(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*(/([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*(;([-a-z0-9_.!~*'():@&=+$,]|%[0-9a-f][0-9a-f])*)*)*)?(\\?([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?(#([-a-z0-9_.!~*'();/?:@&=+$,]|%[0-9a-f][0-9a-f])*)?)[^].,:;!)? \t\r\n<>\"]" +## ===================== color ===================== # diff --git a/test/test_mw.bats b/test/test_mw.bats index cf5b508..1011f20 100644 --- a/test/test_mw.bats +++ b/test/test_mw.bats @@ -15,7 +15,6 @@ run_only_test() { #these are called for every test setup() { - run_only_test 6 rm -rf mwtesttmp XDG_CONFIG_HOME=mwtesttmp/config \ MAILDIR=mwtesttmp/share/mail \