From b4bc9cb6c152fceec67095f15728c8d91ab91b6a Mon Sep 17 00:00:00 2001 From: djcb Date: Wed, 2 May 2012 17:17:02 +0300 Subject: [PATCH] * move some vars around to prevent compile warnings --- emacs/mu4e-utils.el | 19 +++ emacs/mu4e-vars.el | 329 +++++++++++++++++++++++++++++++++++++++++++- emacs/mu4e-view.el | 17 --- 3 files changed, 347 insertions(+), 18 deletions(-) diff --git a/emacs/mu4e-utils.el b/emacs/mu4e-utils.el index 26e85c26..b9bc273d 100644 --- a/emacs/mu4e-utils.el +++ b/emacs/mu4e-utils.el @@ -30,6 +30,25 @@ (require 'mu4e-vars) (require 'doc-view) + + +(defcustom mu4e-html2text-command nil + "Shell command that converts HTML from stdin into plain text on +stdout. If this is not defined, the emacs `html2text' tool will be +used when faced with html-only message. If you use htmltext, it's +recommended you use \"html2text -utf8 -width 72\"." + :type 'string + :group 'mu4e-view + :safe 'stringp) + + +(defcustom mu4e-view-prefer-html nil + "Whether to base the body display on the HTML-version of the +e-mail message (if there is any." + :type 'boolean + :group 'mu4e-view) + + (defun mu4e-create-maildir-maybe (dir) "Offer to create DIR if it does not exist yet. Return t if the dir already existed, or has been created, nil otherwise." diff --git a/emacs/mu4e-vars.el b/emacs/mu4e-vars.el index e6a57b17..90e230a0 100644 --- a/emacs/mu4e-vars.el +++ b/emacs/mu4e-vars.el @@ -301,6 +301,330 @@ view). Most fields should be self-explanatory. A special one is `mu4e-user-mail-address-regexp', in which case it will be equal to `:to'.") + + +;;; mu4e-vars.el -- part of mu4e, the mu mail user agent +;; +;; Copyright (C) 2011-2012 Dirk-Jan C. Binnema + +;; Author: Dirk-Jan C. Binnema +;; Maintainer: Dirk-Jan C. Binnema + +;; This file is not part of GNU Emacs. +;; +;; GNU Emacs is free software: you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. + +;; GNU Emacs is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs. If not, see . + +;;; Commentary: + +;;; Code: + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; Customization +(require 'mu4e-meta) + +(defgroup mu4e nil + "mu4e - mu for emacs" + :group 'local) + +(defcustom mu4e-mu-home nil + "Location of the mu homedir, or nil for the default." + :type 'directory + :group 'mu4e + :safe 'stringp) + +(defcustom mu4e-mu-binary (executable-find "mu") + "Name of the mu-binary to use; if it cannot be found in your +PATH, you can specify the full path." + :type 'file + :group 'mu4e + :safe 'stringp) + +(defcustom mu4e-maildir (expand-file-name "~/Maildir") + "Your Maildir directory; by default, mu4e assumes +~/Maildir." + :type 'directory + :safe 'stringp + :group 'mu4e) + +(defcustom mu4e-get-mail-command nil + "Shell command to run to retrieve new mail; e.g. 'offlineimap' or +'fetchmail'. Note, when there is no mail, fetchmail will return 1 +as it error code, which mu4e interprets as an error." + :type 'string + :group 'mu4e + :safe 'stringp) + +(defcustom mu4e-update-interval nil + "Number of seconds between automatic calls to retrieve mail and +update the database. If nil, don't update automatically. Note, +changes in `mu4e-update-interval' only take effect after restarting +mu4d." + :type 'integer + :group 'mu4e + :safe 'integerp) + +(defcustom mu4e-attachment-dir (expand-file-name "~/") + "Default directory for saving attachments." + :type 'string + :group 'mu4e + :safe 'stringp) + +(defvar mu4e-user-mail-address-regexp "$^" + "Regular expression matching the user's mail address(es). This is +used to distinguish ourselves from others, e.g. when replying and +in :from-or-to headers. By default, match nothing.") + +(defvar mu4e-date-format-long "%c" + "Date format to use in the message view, in the format of + `format-time-string'.") + +(defvar mu4e-search-results-limit 1000 + "Maximum number of search results (or -1 for unlimited). Since +limiting search results speeds up searches significantly, it's +useful to limit this. Note, to ignore the limit, use a prefix +argument (C-u) before invoking the search.") + +(defvar mu4e-debug nil + "When set to non-nil, log debug information to the *mu4e-log* buffer.") + +(defvar mu4e-bookmarks + '( ("flag:unread AND NOT flag:trashed" "Unread messages" ?u) + ("date:today..now" "Today's messages" ?t) + ("date:7d..now" "Last 7 days" ?w) + ("mime:image/*" "Messages with images" ?p)) + "A list of pre-defined queries; these will show up in the main +screen. Each of the list elements is a three-element list of the +form (QUERY DESCRIPTION KEY), where QUERY is a string with a mu +query, DESCRIPTION is a short description of the query (this will +show up in the UI), and KEY is a shortcut key for the query.") + +(defvar mu4e-split-view 'horizontal + "How to show messages / headers; a symbol which is either: * a +symbol 'horizontal: split horizontally (headers on top) * a symbol +'vertical: split vertically (headers on the left). * anything +else: don't split (show either headers or messages, not both) Also +see `mu4e-headers-visible-lines' and +`mu4e-headers-visible-columns'.") + + +;; Folders +(defgroup mu4e-folders nil + "Special folders." + :group 'mu4e) + +(defcustom mu4e-sent-folder "/sent" + "Your folder for sent messages, relative to `mu4e-maildir', + e.g. \"/Sent Items\"." + :type 'string + :safe 'stringp + :group 'mu4e-folders) + +(defcustom mu4e-drafts-folder "/drafts" + "Your folder for draft messages, relative to `mu4e-maildir', + e.g. \"/drafts\"" + :type 'string + :safe 'stringp + :group 'mu4e-folders) + +(defcustom mu4e-trash-folder "/trash" + "Your folder for trashed messages, relative to `mu4e-maildir', + e.g. \"/trash\"." + :type 'string + :safe 'stringp + :group 'mu4e-folders) + + +(defcustom mu4e-maildir-shortcuts nil + "A list of maildir shortcuts to enable quickly going to the + particular for, or quickly moving messages towards them (i.e., + archiving or refiling). The list contains elements of the form + (maildir . shortcut), where MAILDIR is a maildir (such as +\"/archive/\"), and shortcut a single shortcut character. With +this, in the header buffer and view buffer you can execute +`mu4e-mark-for-move-quick' (or 'm', by default) or +`mu4e-jump-to-maildir' (or 'j', by default), followed by the +designated shortcut character for the maildir.") + + + +;; Faces +(defgroup mu4e-faces nil + "Type faces (fonts) used in mu4e." + :group 'mu4e + :group 'faces) + + +(defface mu4e-unread-face + '((t :inherit font-lock-keyword-face :bold t)) + "Face for an unread message header." + :group 'mu4e-faces) + +(defface mu4e-moved-face + '((t :inherit font-lock-comment-face :slant italic)) + "Face for a message header that has been moved to some +folder (it's still visible in the search results, since we cannot +be sure it no longer matches)." + :group 'mu4e-faces) + +(defface mu4e-trashed-face + '((t :inherit font-lock-comment-face :strike-through t)) + "Face for an message header in the trash folder." + :group 'mu4e-faces) + +(defface mu4e-draft-face + '((t :inherit font-lock-string-face)) + "Face for a draft message header (i.e., a message with the draft +flag set)." + :group 'mu4e-faces) + +(defface mu4e-header-face + '((t :inherit default)) + "Face for a header without any special flags." + :group 'mu4e-faces) + +(defface mu4e-header-title-face + '((t :inherit font-lock-type-face)) + "Face for a header title in the headers view." + :group 'mu4e-faces) + +(defface mu4e-header-highlight-face + '((t :inherit default :weight bold :underline t)) + "Face for the header at point." + :group 'mu4e-faces) + +(defface mu4e-header-marks-face + '((t :inherit font-lock-preprocessor-face)) + "Face for the mark in the headers list." + :group 'mu4e-faces) + +(defface mu4e-view-header-key-face + '((t :inherit font-lock-builtin-face :bold t)) + "Face for a header key (such as \"Foo\" in \"Subject:\ Foo\") in + the message view." + :group 'mu4e-faces) + +(defface mu4e-view-header-value-face + '((t :inherit font-lock-doc-face)) + "Face for a header value (such as \"Re: Hello!\") in the message + view." + :group 'mu4e-faces) + +(defface mu4e-view-link-face + '((t :inherit font-lock-type-face :underline t)) + "Face for showing URLs and attachments in the message view." + :group 'mu4e-faces) + +(defface mu4e-highlight-face + '((t :inherit font-lock-pseudo-keyword-face :bold t)) + "Face for highlighting things." + :group 'mu4e-faces) + +(defface mu4e-title-face + '((t :inherit font-lock-type-face :bold t)) + "Face for a header title in the headers view." + :group 'mu4e-faces) + +(defface mu4e-footer-face + '((t :inherit font-lock-comment-face)) + "Face for message footers (signatures)." + :group 'mu4e-faces) + +(defface mu4e-view-url-number-face + '((t :inherit font-lock-reference-face :bold t)) + "Face for the number tags for URLs." + :group 'mu4e-faces) + +(defface mu4e-view-attach-number-face + '((t :inherit font-lock-variable-name-face :bold t)) + "Face for the number tags for attachments." + :group 'mu4e-faces) + +(defface mu4e-cited-1-face + '((t :inherit font-lock-builtin-face :bold nil :italic t)) + "Face for cited message parts (level 1)." + :group 'mu4e-faces) + +(defface mu4e-cited-2-face + '((t :inherit font-lock-type-face :bold nil :italic t)) + "Face for cited message parts (level 2)." + :group 'mu4e-faces) + +(defface mu4e-cited-3-face + '((t :inherit font-lock-variable-name-face :bold nil :italic t)) + "Face for cited message parts (level 3)." + :group 'mu4e-faces) + +(defface mu4e-cited-4-face + '((t :inherit font-lock-pseudo-keyword-face :bold nil :italic t)) + "Face for cited message parts (level 4)." + :group 'mu4e-faces) + +(defface mu4e-system-face + '((t :inherit font-lock-comment-face :slant italic)) + "Face for system message (such as the footers for message +headers)." + :group 'mu4e-faces) + + +(defconst mu4e-logo + (concat + (propertize "mu" 'face 'font-lock-builtin-face) + (propertize "4" 'face 'font-lock-constant-face) + (propertize "e" 'face 'font-lock-string-face)) + "A propertized string for the mu4e 'logo'.") + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +;; internal variables / constants + +(defconst mu4e-header-names + '( (:attachments . "Attach") + (:bcc . "Bcc") + (:cc . "Cc") + (:date . "Date") + (:flags . "Flags") + (:from . "From") + (:from-or-to . "From/To") + (:maildir . "Maildir") + (:path . "Path") + (:subject . "Subject") + (:to . "To")) +"An alist of all possible header fields; this is used in the UI (the +column headers in the header list, and the fields the message +view). Most fields should be self-explanatory. A special one is +`:from-or-to', which is equal to `:from' unless `:from' matches +`mu4e-user-mail-address-regexp', in which case it will be equal to +`:to'.") + + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + + + + + + + + + + + + + + + + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; run-time vars used in multiple places @@ -312,7 +636,10 @@ view). Most fields should be self-explanatory. A special one is (defconst mu4e~view-buffer-name "*mu4e-view*" "Name for the message view buffer") (defvar mu4e~view-buffer nil "The view buffer.") - + +(defvar mu4e~view-msg nil "The message being viewed in view mode.") + + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; our handlers funcs diff --git a/emacs/mu4e-view.el b/emacs/mu4e-view.el index ea0f8666..51cf2cb5 100644 --- a/emacs/mu4e-view.el +++ b/emacs/mu4e-view.el @@ -55,21 +55,6 @@ complete list of available headers, see `mu4e-header-names'." :type 'string :group 'mu4e-view) -(defcustom mu4e-view-prefer-html nil - "Whether to base the body display on the HTML-version of the -e-mail message (if there is any." - :type 'boolean - :group 'mu4e-view) - -(defcustom mu4e-html2text-command nil - "Shell command that converts HTML from stdin into plain text on -stdout. If this is not defined, the emacs `html2text' tool will be -used when faced with html-only message. If you use htmltext, it's -recommended you use \"html2text -utf8 -width 72\"." - :type 'string - :group 'mu4e-view - :safe 'stringp) - (defcustom mu4e-view-show-addresses t "Whether to show e-mail addresses for contacts in address-fields, if names are available as well (note that the e-mail addresses @@ -134,8 +119,6 @@ where: (defvar mu4e~view-lines-wrapped nil "*internal* Whether lines are wrapped.") (defvar mu4e~view-cited-hidden nil "*internal* Whether cited lines are hidden.") -(defvar mu4e~view-msg nil "The message being viewed in view mode.") - (defun mu4e-view-message-with-msgid (msgid) "View message with MSGID. This is meant for external programs