[prev in list] [next in list] [prev in thread] [next in thread] 

List:       mutt-users
Subject:    Re: Setting X-Priority/Priority/Important headers more easiliy?
From:       "P. Mazart" <pmazart () web ! de>
Date:       2023-09-28 8:21:49
Message-ID: ZRU3nQd9LYXdgLtG () web ! de
[Download RAW message or body]

Hi Tim,

Tim Chase schrieb am 27.09.2023 21:36:57:
> Does anyone have any suggestions/mappings that might make it easier
> to add/manage add/manage these headers rather than hand-entering
> them with {edit-headers} in the message-compose menu? 

If you use vim you could use imap in ~/.vim/ftplugin/mail.vim:
imap .urg Priority: urgent<CR>
Typing .urg would then fill write the header at this point. (given that
you have "set edit_headers=yes"

> Preferrably picking from a list rather than remembering the exact
> text/number for each header.

You could refine the attached script I use to set X-Label which uses
formail and bash to create such a "user interface".
It can be used by binding a key like this:

macro compose P "<enter-command>set \
editor=\"~/.mutt/editlabel\"<enter><edit><enter-command>set editor=vim<enter>" \
"Change label"

This sets the editor to your "Priority" script and then resets it back
to your favourite editor.

Best Regards,
PM


["editlabel" (text/plain)]

#!/bin/bash
# Hiermit kann man E-Mail aus Mutt heraus labeln
# Folgender vereinfachter Dialog soll angezeigt werden:
#
#[1] Label1	(+)
#[2] Label2	(+)
#[3] Label3	(+)
#[4] Label4	(+)
#[c] Clear All
#[x] Do Nothing

# $1 is the filename

# Konsole reinigen
clear

# Configuration
# this file contains one valid label per line
LFILE="$HOME/.mutt/labels"

FNAME="$1"
NFNAME="/tmp/editlabels-`basename "$1"`.$$"


# Start
# multiline variablen imm mit Anführungszeichen (echo "$existLabels") ausgeben
existLabels=`formail -c -z -x X-Label < "$FNAME" | sed 's/ /\n/g'`
stdLabels=`cat $LFILE`
allLabels=`echo "${stdLabels}"$'\n'"${existLabels}" | sort | uniq`

# Anzeige generieren
i=1;
for label in $allLabels 
do
  del=`grep $label <(echo "$existLabels") | wc -l`
  if [ $del -eq 1 ]; then
    echo -e "\e[1;31m[$i]\e[0m $label"$'\t'"\e[1;31m(-)\e[0m";
  else
    echo -e "\e[1;32m[$i]\e[0m $label"$'\t'"\e[1;32m(+)\e[0m";
  fi
  i=$(($i+1));
done

echo -e "\e[1;31m[c] Clear All\e[0m";
echo -e "[*] Do Nothing";


# Input lesen
read -n 1 choice 

# Input auswerten
re='[0-9]'
if [ "$choice" == "c" ]; then
  # Alles Tags löschen
  echo OK $choice
  formail -I "X-Label:" < "$FNAME" > "$NFNAME"
elif [[ "$choice" =~ $re ]]; then
  # Nummerneingabe prüfen

  i=1;
  for label in $allLabels 
  do
    if [ $i -eq $choice  ]; then
	del=`grep $label <(echo $existLabels) | wc -l`
	if [ $del -gt 0 ]; then
		# Entfernen
		new=`echo "X-Label: $existLabels" | tr '\n' ' ' | sed "s/$label//g" | sed "s/[ ]*$//g"`
		#echo löschen \"$new\"
		formail -I "$new" < "$FNAME" > "$NFNAME"
	else
		# Hinzufügen 
		new=`echo "X-Label: $existLabels $label" | tr '\n' ' ' | sed "s/[ ]*$//g"`
		#echo hinzufügen \"$new\"
		formail -I "$new" < "$FNAME" > "$NFNAME"
	fi
    fi 

    i=$(($i+1));
  done


else
	exit
fi

# Abspeichern sofern formail eine neue Datei geschrieben hat
if [ -f "$NFNAME" ]; then
	mv "$NFNAME" "$FNAME"
fi

# Konsole reinigen
clear


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic