Skip to content

Build Casual Mairix #212

@ultronozm

Description

@ultronozm

I currently have the following in my init.el, which seems to be aligned with the aims of this package.

(use-package mairix
  :ensure nil
  :defer t
  :bind
  ("C-z m" . mairix-transient-menu)
  :config
  (defconst mairix-syntax-help-text
    "Mairix Search Syntax:

word          : match word in message body and major headers
t:word        : match word in To: header
c:word        : match word in Cc: header
f:word        : match word in From: header
a:word        : match word in To:, Cc: or From: headers (address)
s:word        : match word in Subject: header
b:word        : match word in message body
m:word        : match word in Message-ID: header
n:word        : match word in name of attachment
F:flags       : match message flags (s=seen,r=replied,f=flagged,-=negate)
p:substring   : match substring of path
d:start-end   : match date range
z:low-high    : match messages in size range

Advanced syntax:
bs:word       : match word in Subject: header or body
s:word1,word2 : match both words in Subject:
s:word1/word2 : match either word or both words in Subject:
s:~word       : match messages not containing word in Subject:
s:substring=  : match substring in any word in Subject:
s:^substring= : match left-anchored substring in any word in Subject:
s:substring=2 : match substring with <=2 errors in any word in Subject:"
    "Help text for mairix search syntax.")

  (defun mairix-display-syntax-help ()
    "Display mairix search syntax help in a buffer."
    (interactive)
    (with-help-window "*Mairix Syntax Help*"
      (princ mairix-syntax-help-text)))

  (require 'transient)
  (transient-define-prefix
    mairix-transient-menu ()
    "Mairix search commands."
    :info-manual "(mairix-el)Top"
    [["Search"
      ("RET" "Prompted search" mairix-search)
      ("f"   "Search by sender" mairix-search-from-this-article)
      ("t"   "Search thread" mairix-search-thread-this-article)]
     ["Widget search"
      ("w" "Widget search" mairix-widget-search)
      ("b" "Widget based on article" mairix-widget-search-based-on-article)]
     ["Saved searches"
      ("s" "Use saved search" mairix-use-saved-search)
      ("S" "Save last search" mairix-save-search)
      ("e" "Edit saved searches" mairix-edit-saved-searches)]]
    [:class transient-row
            ("u" "Update database" mairix-update-database)
            ("?" "Show syntax help" mairix-display-syntax-help)
            ("i" "Info docs" (lambda ()
                               (interactive)
                               (info "(mairix-el)")))]))

Please let me know if this would be suitable to polish and PR as "casual-mairix.el", or feel free to use it for inspiration, etc.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions