]> git.cworth.org Git - sup/blobdiff - lib/sup.rb
aliases can now have spaces
[sup] / lib / sup.rb
index 02f62f6a3009a8372b69a2ef26bcd8c44a17c0b8..fafd43035ae85acaaf399a1219c393f1bc044e04 100644 (file)
@@ -3,6 +3,7 @@ require 'yaml'
 require 'zlib'
 require 'thread'
 require 'fileutils'
+require 'curses'
 
 class Object
   ## this is for debugging purposes because i keep calling #id on the
@@ -31,7 +32,7 @@ class Module
 end
 
 module Redwood
-  VERSION = "0.0.8"
+  VERSION = "0.1"
 
   BASE_DIR   = ENV["SUP_BASE"] || File.join(ENV["HOME"], ".sup")
   CONFIG_FN  = File.join(BASE_DIR, "config.yaml")
@@ -43,10 +44,21 @@ module Redwood
   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"
 
+## determine encoding and character set
+## probably a better way to do this
+  $ctype = ENV["LC_CTYPE"] || ENV["LANG"] || "en-US.utf-8"
+  $encoding =
+    if $ctype =~ /\.(.*)?/
+      $1
+    else
+      "utf-8"
+    end
+
 ## record exceptions thrown in threads nicely
   $exception = nil
   def reporting_thread
@@ -72,7 +84,7 @@ module Redwood
 ## one-stop shop for yamliciousness
   def save_yaml_obj object, fn, safe=false
     if safe
-      safe_fn = "safe_#{fn}"
+      safe_fn = "#{File.dirname fn}/safe_#{File.basename fn}"
       mode = File.stat(fn) if File.exists? fn
       File.open(safe_fn, "w", mode) { |f| f.puts object.to_yaml }
       FileUtils.mv safe_fn, fn
@@ -101,10 +113,10 @@ module Redwood
     Redwood::UpdateManager.new
     Redwood::PollManager.new
     Redwood::SuicideManager.new Redwood::SUICIDE_FN
+    Redwood::CryptoManager.new
   end
 
   def finish
-    Redwood::PollManager.stop
     Redwood::LabelManager.save if Redwood::LabelManager.instantiated?
     Redwood::ContactManager.save if Redwood::ContactManager.instantiated?
     Redwood::PersonManager.save if Redwood::PersonManager.instantiated?
@@ -183,6 +195,11 @@ else
     },
     :editor => ENV["EDITOR"] || "/usr/bin/vim -f -c 'setlocal spell spelllang=en_us' -c 'set filetype=mail'",
     :thread_by_subject => false,
+    :edit_signature => false,
+    :ask_for_cc => true,
+    :ask_for_bcc => false,
+    :confirm_no_attachments => true,
+    :confirm_top_posting => true,
   }
   begin
     FileUtils.mkdir_p Redwood::BASE_DIR
@@ -193,8 +210,16 @@ else
 end
 
 require "sup/util"
+require "sup/hook"
+
+## we have to initialize this guy first, because other classes must
+## reference it in order to register hooks, and they do that at parse
+## time.
+Redwood::HookManager.new Redwood::HOOK_DIR
+
 require "sup/update"
 require "sup/suicide"
+require "sup/message-chunks"
 require "sup/message"
 require "sup/source"
 require "sup/mbox"
@@ -214,6 +239,7 @@ require "sup/contact"
 require "sup/tagger"
 require "sup/draft"
 require "sup/poll"
+require "sup/crypto"
 require "sup/modes/scroll-mode"
 require "sup/modes/text-mode"
 require "sup/modes/line-cursor-mode"
@@ -234,6 +260,8 @@ require "sup/modes/inbox-mode"
 require "sup/modes/buffer-list-mode"
 require "sup/modes/log-mode"
 require "sup/modes/poll-mode"
+require "sup/modes/file-browser-mode"
+require "sup/modes/completion-mode"
 require "sup/logger"
 require "sup/sent"