[mew-int 3050] Re: Automatic case set & bbdb
Michael Steiner
michisteiner at example.com
Fri Mar 2 07:35:20 JST 2012
>>>>> On Thu, 01 Mar 2012 16:14:25 -0500 (EST), Michael Steiner <michisteiner at example.com> said:
MS> I have several accounts which i use with mew. It would be nice if
MS> selecting the correct case would be as automatic as possible. I know
MS> about mew-case-guess-alist but unless i'm overlooking something
MS> trivial, it essentially has to be based on the To: and Cc: fields of
MS> the new mail and hence more or less requires enumeration of ids if
MS> there are no trivial rules based on domains. Hence that doesn't seem
MS> that scalable. However, to some extent i have the information
MS> already in form of tags in a BBDB db which is linked to mew.
MS>
MS> =>
MS>
MS> Did anybody of you already implement some automatic case guessing
MS> based on bbdb fields (maybe based on some bbdb-complete-name-hooks
MS> trickery?) or alike and/or has a good idea how this could be
MS> accomplished?
Never mind. After digging a bit around in the code i came up with
following approach ....
(add-hook
'bbdb-complete-name-hooks
'((lambda ()
(if (mew-draft-or-header-p)
(let* ((rec (if (boundp 'match-recs) (car match-recs) rec))
(keywords (if rec (cdr (assoc 'keyword (bbdb-record-raw-notes rec))) ""))
(email (if (boundp 'this-addr) this-addr "")))
;(message (concat "k:" keywords " e:" email))
(cond
; ....
; rules which set case based on email and keywords ...
; ....
... it is a bit kludgy as it relies on undocumented parameters in
bbdb-complete-name-hooks and to set the case i also had to unelegantly
define ...
(defun mew-draft-set-case-non-interactive (new-case)
(let ((old-case (mew-tinfo-get-case)))
(mew-tinfo-set-case new-case)
(mew-tinfo-set-use-flowed (mew-use-format-flowed new-case))
(mew-draft-mode-name (mew-tinfo-get-hdr-file))
(mew-draft-replace-fields old-case)
(mew-highlight-header)
(unless (mew-tinfo-get-hdr-file) (mew-draft-header-keymap))))
... which is non-interactive version of mew-draft-set-case as i
couldn't find an existing clean function to call for setting the case
non-interactively.
So more or less i'm happy for now but any hints for more elegant
approaches are still welcome :-)
-michael-
More information about the Mew-int
mailing list