aboutsummaryrefslogtreecommitdiff
path: root/lumail2
diff options
context:
space:
mode:
authorFlorian Fischer <florian.fl.fischer@fau.de>2017-06-05 19:11:42 +0200
committerFlorian Fischer <florian.fl.fischer@fau.de>2017-06-05 19:11:42 +0200
commitd235c9a62afbfcf004f7cbca09096aaac8263a64 (patch)
treef39765f35ad2800b29beb36aaa8b24ab4c5ae431 /lumail2
parentc2bcf5dcde28c5be579e50fff839882939473372 (diff)
downloaddotfiles-d235c9a62afbfcf004f7cbca09096aaac8263a64.tar.gz
dotfiles-d235c9a62afbfcf004f7cbca09096aaac8263a64.zip
add lumail2 config
Diffstat (limited to 'lumail2')
-rw-r--r--lumail2/lumail2.lua201
1 files changed, 201 insertions, 0 deletions
diff --git a/lumail2/lumail2.lua b/lumail2/lumail2.lua
new file mode 100644
index 0000000..a301a92
--- /dev/null
+++ b/lumail2/lumail2.lua
@@ -0,0 +1,201 @@
+--
+-- This is the per-user configuration file for lumail.
+--
+
+keymap['global']['gg'] = 'first()'
+keymap['global']['G'] = 'last()'
+
+-----------------------------------------------------------------------------
+
+--
+-- The following line enables *experimental* conversion of message-bodies
+-- to UTF-8.
+--
+-- You might require this to be enabled if you receive mail in foreign
+-- character-sets. It should be harmless when enabled, but character-sets,
+-- encoding, and similar, are scary and hard. If you see garbled text,
+-- unreadable emails, or similar problems with displaying message-bodies
+-- comment it out as a first step in isolating the problem.
+--
+Config:set( "global.iconv", 1 )
+
+--
+-- Get our home-directory, as this is often used.
+--
+local HOME = os.getenv("HOME")
+
+--
+-- The default Maildir location is ~/Maildir
+--
+Config:set( "maildir.prefix", HOME .. "/Mail" );
+
+--
+-- Handle both of my email accounts.
+-- Determine the current account on basis of the folder path.
+--
+
+-- This is the account used by msmtp
+local account = "fau"
+-- Default name to use
+Config:set("global.name", "Florian Fischer")
+-- Default address.
+Config:set("global.address", "florian.fl.fischer@fau.de")
+-- Default From: address.
+Config:set( "global.sender", "Florian Fischer <florian.fl.fischer@fau.de>" )
+-- Default sent-folder.
+Config:set( "global.sent-mail", HOME.."/Mail/FAU/Sent")
+-- Default trash-folder.
+Config:set( "global.trash-mail", HOME.."/Mail/FAU/Trash")
+
+function on_folder_changed(folder)
+ local path = folder:path()
+ if path:find("FAU") then
+ account = "fau"
+ Config:set("global.address", "florian.fl.fischer@fau.de")
+ Config:set("global.sent-mail", HOME.."/Mail/FAU/Sent")
+ Config:set( "global.trash-mail", HOME.."/Mail/FAU/Trash")
+ elseif path:find("MUHQ") then
+ account = "muhq"
+ Config:set("global.address", "florian.fischer@muhq.space")
+ Config:set("global.sent-mail", HOME.."/Mail/MUHQ/Sent")
+ Config:set( "global.trash-mail", HOME.."/Mail/MUHQ/Trash")
+ end
+ -- update sender
+ Config:set("global.sender", Config:get("global.name").." <"..Config:get("global.address")..">")
+ -- update MTA.
+ Config:set( "global.mailer", "/usr/bin/sendmail -t -a " .. account .. " -f " .. Config:get("global.address") )
+end
+
+--
+-- Setup our MTA, the command which actually sends the mail.
+--
+Config:set( "global.mailer", "/usr/bin/sendmail -t -a " .. account .. " -f " .. Config:get("global.address") )
+
+--
+-- Setup our default editor, for compose/reply/forward operations.
+--
+local editor = os.getenv("VISUAL") or os.getenv("EDITOR") or "vi"
+Config:set( "global.editor", editor .. " +/^$ ++8" )
+
+--
+-- Save persistant history of our input in the named file.
+--
+Config:set( "global.history", HOME .. "/.lumail2/history" )
+
+--
+-- Configure a cache-prefix, and populate it
+--
+Config:set( "cache.prefix", HOME .. "/.lumail2/cache" )
+
+-- Index mode - which shows the list of messages:
+--
+Config:set( "index.format",
+ "[${4|flags}] ${2|message_flags} | ${10|date} | ${20|sender} | ${indent}${subject}" )
+--
+-- Options include:
+--
+-- date -> The message date.
+-- flags -> The local flags.
+-- id -> Message-ID.
+-- indent -> Nesting character(s) for the display of threads.
+-- message_flags -> The message-content flags (has attachment? is signed?).
+-- number -> The message number.
+-- sender -> The sender of the message: "Bob Smith <bob@example.com>"
+-- email -> bob@example.com
+-- name -> Bob Smith
+-- subject -> The message subject.
+
+--
+-- Set the default sorting method. Valid choices are:
+--
+-- `file` - Use the mtime of the files in the maildir.
+-- `date` - Read the `Date` header of the message(s) - slower than the
+-- above method, but works on IMAP too.
+-- `subject` - Sort by subject.
+-- `from` - Sort by sender.
+--
+sorting_method( "threads" )
+
+Config:set("threads.sort", "date")
+
+--
+-- Unread messages/maildirs are drawn in red.
+--
+Config:set( "colour.unread", "red" )
+
+--
+-- This table contains colouring information, it is designed to allow
+-- the user to override the colours used in the display easily.
+--
+colour_table = {}
+
+--
+-- Create a per-mode map for each known mode.
+--
+for i,o in ipairs(Global:modes()) do
+ colour_table[o] = {}
+end
+
+
+--
+-- Setup our colours - for Maildir-mode
+--
+colour_table['maildir'] = {
+ ['Automated'] = 'yellow|underline',
+ ['lists'] = 'green|bold',
+}
+
+-- Setup our colours - for index-mode
+colour_table['index'] = {
+ ['Florian Fischer'] = 'blue',
+ ['Fischer'] = 'blue',
+}
+
+-- Setup our colours - for a message
+colour_table['message'] = {
+ -- headers
+ ['^Subject:'] = 'yellow',
+ ['^Date:'] = 'yellow',
+ ['^From:'] = 'yellow',
+ ['^To:'] = 'yellow',
+ ['^Cc:'] = 'yellow',
+ ['^Sent:'] = 'yellow',
+
+ -- quoting, and nested quoting.
+ ['^>%s*>%s*'] = 'green',
+ ['^>%s*[^>%s]'] = 'blue',
+ ['^>%s$'] = 'blue',
+}
+
+-- set logfile
+Config:set( "log.path" , HOME .. "/.lumail2/log" )
+Config:set ( "log.level", "debug")
+
+--
+-- Include address book completion in on_complete
+--
+do
+ local _on_complete = on_complete
+ function on_complete(token)
+ local res = _on_complete(token)
+
+ local handle = io.popen("khard email --parsable " .. token)
+ local stdout = handle:read("*a")
+ handle:close()
+
+ local lines = {}
+
+ local function insert_mailaddr(line)
+ -- include @ to make sure match is email
+ local mailaddr = line:match("([^%s]*@[^%s]*)%s")
+ if mailaddr then
+ table.insert(res, mailaddr)
+ end
+ end
+
+ stdout:gsub("(.-)\r?\n", insert_mailaddr)
+
+ return res
+ end
+end
+