# mutt config commun
#
# from https://github.com/Nelyah/dotfiles/blob/master/.mutt/settings

set use_envelope_from=yes

set reverse_name
set reverse_realname

#
# paths
#
# set folder           = ~/.mail               # mailbox location -- set in accounts files
set alias_file       = ~/.mutt/muttrc-alias  # where to store aliases
source		       ~/.mutt/muttrc-alias
set header_cache     = ~/.mutt/cache/headers # where to store headers
set message_cachedir = ~/.mutt/cache/bodies  # where to store bodies
set certificate_file = ~/.mutt/certificates  # where to store certs
set tmpdir           = ~/.mutt/temp          # where to keep temp files
set print			 = ask-yes
set print_command    = lp
set ispell           = "aspell check"

#
# general
#
set mail_check=90 		# check mail every (s)
set timeout=15 			# wait only (s) max
set editor='vim "+set spelllang=fr"'
set wait_key=no
set user_agent=yes
set mime_forward=yes    # set forward message as attach and not in text
set pipe_decode=yes
set pipe_decode_weed=yes

# text/html ....
alternative_order text/plain text/html
auto_view text/html

# status format
# default is = "-%r-Mutt: %f [Msgs:%?M?%M/?%m%?n? New:%n?%?o? Old:%o?%?d? Del:%d?%?F? Flag:%F?%?t? Tag:%t?%?p? Post:%p?%?b? Inc:%b?%?l? %l?]---(%s/%S)-%>-(%P)---"
set status_format = "-%r-%v@%h: %f [Msgs:%?M?%M/?%m%?n? New:%n?%?o? Old:%o?%?d? Del:%d?%?F? Flag:%F?%?t? Tag:%t?%?p? Post:%p?%?b? Inc:%b?%?l? %l?]---(%s/%S)-%>-(%P)---"
#
# pager format
# default is "-%Z- %C/%m: %-20.20n   %s%*  -- (%P)"
set pager_format = "-%Z- %C/%m: from <%n> « %s »%* -- (%P)"

#
# index
#
# index format dynamic change
# from https://muttmua.gitlab.io/mutt/manual-dev.html#index-format-hook
set index_format="%4C %Z %?H?[%H]? %-10@date@ %-30.30L (%?l?%4l&%4c?) %s"
index-format-hook  date  "~d<1d"    "%[%H:%M]"
index-format-hook  date  "~d<2d"    "hier %[%H:%M]"
index-format-hook  date  "~d<5d"    "%[%a %H:%M]"
index-format-hook  date  "~d<1m"    "%[%a %d]"
index-format-hook  date  "~d<1y"    "%[%d %b]"
index-format-hook  date  "~A"       "%[%m/%Y]"

set sort = threads			# default sorting
set sort_aux = last-date-received	# second sorting

#
# keybinding
#
bind generic <home>	first-entry
bind generic <C-up>	first-entry
bind generic <end>	last-entry
bind generic <C-down>   last-entry
bind generic <left>	previous-entry
bind generic <right>	next-entry
bind generic '"'	what-key	# print key code -- ctrl+g to quit

bind index G imap-fetch-mail 	# force fetch new email
bind index K previous-unread
bind index J next-unread
bind index \ct tag-thread
# TODO macro index <Esc>t <enter-command>untag-pattern<enter>


bind pager <pageup> half-up
bind pager <up>   	half-up
bind pager <pagedown> half-down
bind pager <down>	half-down

#
# Macros
#
macro index .r ":source ~/.mutt/muttrc<enter>" "Reload muttrc"
macro index <esc>T <untag-pattern>

# urlscan
macro index,pager \cb "<pipe-message>urlscan<enter>" "open URL in urlscan"
macro attach,compose \cb "<pipe-entry> urlscan<Enter>" "call urlscan to extract URLs out of a message"

# save messages
macro index >I <tag-prefix><save-message>=SERVICE.INFO<enter> 'save to service info'
macro index >N <tag-prefix><save-message>=netdata<enter> 'save to netdata'
macro index >P <tag-prefix><save-message>=2019-2020-PYL<enter> 'Le chef'
macro index >S <tag-prefix><save-message>=SPAM<enter> 'save to SPAM'

# filtres to new/old/flag messages
macro index ,a  "<limit>~A<Enter>"       			"Voir: all"
macro index ,n  "<limit>(~N|~O|~F)<Enter>"  			"Voir: new/flag"
macro index ,f  "<limit>~F<Enter>"  			"Voir: flag"
macro index ,m  "<limit>(~N|~O)(~p|~P|~C info@)|~C printers@|~C proxmox@|~s 'monit alert'|~s SMART|~F<Enter>"	"Voir: new+from/to me"
macro index ,M  "<limit>(~p|~P|~C info@|~C printers@)|~C proxmox@|~s 'monit alert'|~s SMART|~F<Enter>"		"Voir: from/to me"
macro index ,t  "<limit>(~N|~O|~F) ~C tout.?ida@<Enter>"	"Voir: new+toutida"
macro index ,T  "<limit>~C tout.?ida@<Enter>"			"Voir: toutida"
# filtres autres
macro index ,i "<limit>Demande.*inscription<Enter>"       "view inscription"
macro index >i <tag-prefix><save-message>=dalembert-inscription<enter> 'save to IMPRIMANTES'
macro index,pager .i ":set wait_key=yes<enter><tag-prefix><pipe-message>mutt_process<enter>:set wait_key=no<enter>" 'generate responses from '
# macro index,pager .i ":set wait_key=yes<enter><tag-prefix><pipe-message>mutt_process<enter>:set wait_key=no<enter>" 'generate responses from '
# macro index /c "<limit>~C su-adherents|~C diffusion-fercsup|~C bureau-sntrsjussieu|~C communication-syndicale|~C commob_jussieu|~s CGT|~s 'commission sociale'<Enter>"       "view listes CGT"
macro index ,c "<limit>~C corresp_ssi@services.cnrs.fr | ~C cssi_dr2@services.cnrs.fr | ~C netadmin@listes.sorbonne-universite.fr | ~c cssi@listes.sorbonne-universite.fr | ~f support@cert-manager.com | ~s genci <Enter>"       "view CSSI"
macro index >C <tag-prefix><save-message>=CSSI<enter> 'save to CSSI'
macro index ,l "<limit>logwatch|cron<Enter>"       "view logwatch"
macro index >L <tag-prefix><save-message>=logwatchs<enter> 'save to logwatchs'
macro index ,v "<limit>~f @brahma<Enter>"       "view brahma logs"
macro index >V <tag-prefix><save-message>=VLAN<enter> 'save to VLAN'

# listes
macro index >A <tag-prefix><save-message>=liste-ASR<enter> "save to liste-ASR"
macro index >D <tag-prefix><save-message>=liste-DEBIAN<enter> "save to liste-DEBIAN"
macro index >H <tag-prefix><save-message>=liste-hackesr<enter> "save to liste-hackesr"
macro index /l  "<limit>(~C @listes.sorbonne-universite.fr|~C @listes.upmc.fr|~C @services.cnrs.fr|~C @groupes.renater.fr|~C @pmichaud.com|~C @lists.debian.org)<Enter>"		"Voir: Listes"
macro index /m  "<limit>monit<Enter>"		"Voir: monit"

# notmuch-mutt ???
macro index .n  \
	"<enter-command>set my_old_pipe_decode=\$pipe_decode my_old_wait_key=\$wait_key nopipe_decode nowait_key<enter>\
	<shell-escape>notmuch-mutt -r --prompt search<enter>\
	<change-folder-readonly>$HOME/.cache/notmuch/mutt/results<enter>\
	<enter-command>set pipe_decode=\$my_old_pipe_decode wait_key=\$my_old_wait_key<enter>" \
	"notmuch search"

### automatic actions
# (push are executed AFTER all commands)
# (multiple push/exec will be exec in reverse order)

# delete duplicate messages 
folder-hook . 'set confirmappend=yes'
folder-hook . 'push <delete-pattern>~=<enter>'

## FIXME ne marche pas
# folder-hook INBOX 'set confirmappend=no'
# folder-hook INBOX 'push ,m'
#+ get new messages by default
# folder-hook INBOX 'push <tag-pattern>CERTFR-<enter><tag-prefix><save-message>=CSSI<enter>'
#+ save CERTFR- to =CSSI

folder-hook INBOX 'push ,m'
#+ get new messages by default

# identities
macro compose \cf "<edit-from>^Umoi\_<tab>" "Select from"

#
# spam detection - champs %H
#
spam "X-j-chkmail-Status: Spam (.*)"		"ju/%1"
spam "X-Spam-Status: Yes"			"sa"
spam "X-Amavis-Spam-Status: Yes"		"am"
spam "X-Renater-SpamScore: ([1-9][0-9]*)"	"re/%1"
set spam_separator="|"

#
# Messages
#
set rfc2047_parameters			# decoded some 
set send_charset = "us-ascii:utf-8"	# UTF stuff
set assumed_charset = "utf-8"
set charset = "utf-8"
set date_format = "%d %b %Y a %H:%M:%S %Z"
set attribution_locale = "fr_FR.UTF-7"
set attribution="Le %d, %n a écrit :"


#
# headers
#
ignore *
unignore from date subject to cc reply-to User-Agent Content-Length
unignore organization organisation x-mailer: x-newsreader: x-mailing-list:
unignore posted-to: List-Id: 
unignore X-j-chkmail-Status: X-Spam-Status: X-Amavis-Spam-Status: X-Renater-SpamScore:
# reset header order
unhdr_order *
hdr_order Date: Subject: From: From To: Cc: reply-to: User-Agent: x-mailer: posted-to: List-Id: x-mailing-list: Content-Length: X-*:

# pager
set pager_stop			# dont exit at the end of the message with <space>

#
# Colors
#
source $HOME/.mutt/muttrc-colors

#
# Accounts
#
# from https://github.com/Nelyah/dotfiles/blob/master/.mutt/settings
macro generic \Cx| "<enter-command>source"
macro generic \Cx& "<enter-command>macro index \\t \"\\Cx"
source $HOME/.mutt/muttrc-accounts

#
# GPG
# 
source $HOME/.mutt/gpg.rc
set crypt_autosign = yes
set crypt_replysign = yes
set crypt_replyencrypt = yes
set crypt_replysignencrypted = yes
set crypt_protected_headers_write = yes		# protect subject
set crypt_protected_headers_subject = 'Sujet Sensible (chiffré)'
# OLD set pgp_default_key = D7B87DFB479CA02E48A2383C00054A3358D16D27
set pgp_default_key = A8F721C80E43073F40DF8F21B57DBE40C72FBCF4

# auto attach pub key from https://stackoverflow.com/a/67065558
# Esc-k pour inclure manuellement
macro compose y "<attach-key>`echo A8F721C80E43073F40DF8F21B57DBE40C72FBCF4`<enter><enter><send-message>"
macro compose Y "<send-message>"


#
# Query : ldap
#
# Use with Ctrl+t
set query_command = "$HOME/.mutt/mutt_ldap.sh %s"