+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.init Redwood::HOOK_DIR
+
+## everything we need to get logging working
+require "sup/logger"
+Redwood::Logger.init.add_sink $stderr
+include Redwood::LogsStuff
+
+## determine encoding and character set
+ $encoding = Locale.current.charset
+ if $encoding
+ debug "using character set encoding #{$encoding.inspect}"
+ else
+ warn "can't find character set by using locale, defaulting to utf-8"
+ $encoding = "UTF-8"
+ end
+
+require "sup/buffer"
+require "sup/keymap"
+require "sup/mode"
+require "sup/modes/scroll-mode"
+require "sup/modes/text-mode"
+require "sup/modes/log-mode"