Module Redwood
In: lib/sup/account.rb
lib/sup/imap.rb
lib/sup/textfield.rb
lib/sup/ferret_index.rb
lib/sup/source.rb
lib/sup/mbox/ssh-file.rb
lib/sup/mbox/ssh-loader.rb
lib/sup/mbox/loader.rb
lib/sup/person.rb
lib/sup/poll.rb
lib/sup/colormap.rb
lib/sup/label.rb
lib/sup/interactive-lock.rb
lib/sup/index.rb
lib/sup/sent.rb
lib/sup/maildir.rb
lib/sup/draft.rb
lib/sup/thread.rb
lib/sup/message-chunks.rb
lib/sup/contact.rb
lib/sup/tagger.rb
lib/sup/buffer.rb
lib/sup/crypto.rb
lib/sup/logger.rb
lib/sup/undo.rb
lib/sup/horizontal-selector.rb
lib/sup/hook.rb
lib/sup/message.rb
lib/sup/xapian_index.rb
lib/sup/mode.rb
lib/sup/keymap.rb
lib/sup/mbox.rb
lib/sup/update.rb
lib/sup/modes/text-mode.rb
lib/sup/modes/reply-mode.rb
lib/sup/modes/forward-mode.rb
lib/sup/modes/person-search-results-mode.rb
lib/sup/modes/console-mode.rb
lib/sup/modes/thread-index-mode.rb
lib/sup/modes/poll-mode.rb
lib/sup/modes/buffer-list-mode.rb
lib/sup/modes/label-list-mode.rb
lib/sup/modes/completion-mode.rb
lib/sup/modes/help-mode.rb
lib/sup/modes/search-results-mode.rb
lib/sup/modes/thread-view-mode.rb
lib/sup/modes/compose-mode.rb
lib/sup/modes/file-browser-mode.rb
lib/sup/modes/line-cursor-mode.rb
lib/sup/modes/edit-message-mode.rb
lib/sup/modes/inbox-mode.rb
lib/sup/modes/contact-list-mode.rb
lib/sup/modes/log-mode.rb
lib/sup/modes/scroll-mode.rb
lib/sup/modes/resume-mode.rb
lib/sup/modes/label-search-results-mode.rb
lib/sup.rb

fucking imap fucking sucks. what the FUCK kind of committee of dunces designed this shit.

imap talks about ‘unique ids’ for messages, to be used for cross-session identification. great—just what sup needs! except it turns out the uids can be invalidated every time the ‘uidvalidity’ value changes on the server, and ‘uidvalidity’ can change without restriction. it can change any time you log in. it can change EVERY time you log in. of course the imap spec "strongly recommends" that it never change, but there‘s nothing to stop people from just setting it to the current timestamp, and in fact that‘s EXACTLY what the one imap server i have at my disposal does. thus the so-called uids are absolutely useless and imap provides no cross-session way of uniquely identifying a message. but thanks for the "strong recommendation", guys!

so right now i‘m using the ‘internal date’ and the size of each message to uniquely identify it, and i scan over the entire mailbox each time i open it to map those things to message ids. that can be slow for large mailboxes, and we‘ll just have to hope that there are no collisions. ho ho! a perfectly reasonable solution!

and here‘s another thing. check out RFC2060 2.2.2 paragraph 5:

  A client MUST be prepared to accept any server response at all
  times.  This includes server data that was not requested.

yeah. that totally makes a lot of sense. and once again, the idiocy of the spec actually happens in practice. you‘ll request flags for one message, and get it interspersed with a random bunch of flags for some other messages, including a different set of flags for the same message! totally ok by the imap spec. totally retarded by any other metric.

fuck you, imap committee. you managed to design something nearly as shitty as mbox but goddamn THIRTY YEARS LATER.

Methods

Classes and Modules

Module Redwood::CanAliasContacts
Module Redwood::Chunk
Module Redwood::InteractiveLock
Module Redwood::LogsStuff
Module Redwood::MBox
Module Redwood::SerializeLabelsNicely
Class Redwood::Account
Class Redwood::AccountManager
Class Redwood::BaseIndex
Class Redwood::Buffer
Class Redwood::BufferListMode
Class Redwood::BufferManager
Class Redwood::Colormap
Class Redwood::CompletionMode
Class Redwood::ComposeMode
Class Redwood::Console
Class Redwood::ConsoleMode
Class Redwood::ContactListMode
Class Redwood::ContactManager
Class Redwood::Container
Class Redwood::CryptoManager
Class Redwood::DraftLoader
Class Redwood::DraftManager
Class Redwood::EditMessageMode
Class Redwood::FatalSourceError
Class Redwood::FerretIndex
Class Redwood::FileBrowserMode
Class Redwood::ForwardMode
Class Redwood::HelpMode
Class Redwood::HookManager
Class Redwood::HorizontalSelector
Class Redwood::IMAP
Class Redwood::InboxMode
Class Redwood::Index
Class Redwood::InputSequenceAborted
Class Redwood::Keymap
Class Redwood::LabelListMode
Class Redwood::LabelManager
Class Redwood::LabelSearchResultsMode
Class Redwood::LineCursorMode
Class Redwood::LogMode
Class Redwood::Logger
Class Redwood::Maildir
Class Redwood::Message
Class Redwood::Mode
Class Redwood::OutOfSyncSourceError
Class Redwood::Person
Class Redwood::PersonSearchResultsMode
Class Redwood::PollManager
Class Redwood::PollMode
Class Redwood::ReplyMode
Class Redwood::ResumeMode
Class Redwood::ScrollMode
Class Redwood::SearchResultsMode
Class Redwood::SendmailCommandFailed
Class Redwood::SentLoader
Class Redwood::SentManager
Class Redwood::Source
Class Redwood::SourceError
Class Redwood::SourceManager
Class Redwood::Tagger
Class Redwood::TextField
Class Redwood::TextMode
Class Redwood::Thread
Class Redwood::ThreadIndexMode
Class Redwood::ThreadSet
Class Redwood::ThreadViewMode
Class Redwood::UndoManager
Class Redwood::UpdateManager
Class Redwood::XapianIndex

Constants

VERSION = "0.10.2"
BASE_DIR = ENV["SUP_BASE"] || File.join(ENV["HOME"], ".sup")
CONFIG_FN = File.join(BASE_DIR, "config.yaml")
COLOR_FN = File.join(BASE_DIR, "colors.yaml")
SOURCE_FN = File.join(BASE_DIR, "sources.yaml")
LABEL_FN = File.join(BASE_DIR, "labels.txt")
CONTACT_FN = File.join(BASE_DIR, "contacts.txt")
DRAFT_DIR = File.join(BASE_DIR, "drafts")
SENT_FN = File.join(BASE_DIR, "sent.mbox")
LOCK_FN = File.join(BASE_DIR, "lock")
SUICIDE_FN = File.join(BASE_DIR, "please-kill-yourself")
HOOK_DIR = File.join(BASE_DIR, "hooks")
YAML_DOMAIN = "masanjin.net"
YAML_DATE = "2006-10-01"
DEFAULT_NEW_INDEX_TYPE = 'xapian'

Attributes

exceptions  [R] 

Public Instance methods

to be called by entry points in bin/, to ensure that their versions match up against the library versions.

this is a perennial source of bug reports from people who both use git and have a gem version installed.

not really a good place for this, so I‘ll just dump it here.

a source error is either a FatalSourceError or an OutOfSyncSourceError. the superclass SourceError is just a generic.

one-stop shop for yamliciousness

[Validate]