
New patches:

[adapt to GHC 6.8
JeanPhilippe.bernardy@gmail.com**20071025202238] {
hunk ./Makefile 13
-	dist/build/yi/yi -B. -f$(frontend)
+	cp --preserve=timestamps -R Yi dist/build
+	dist/build/yi/yi -Bdist/build -f$(frontend)
hunk ./Setup.hs 4
-import Control.Monad(when, filterM, unless)
-import Data.List (intersect)
+import Control.Monad
hunk ./Setup.hs 7
-import Distribution.Setup
+import Distribution.Simple.Setup
hunk ./Setup.hs 9
+import Distribution.Simple.GHC as GHC
hunk ./Setup.hs 11
-import Distribution.Simple.Utils
+import Distribution.Simple.Program
+import Distribution.Verbosity
hunk ./Setup.hs 14
-import System.Exit
hunk ./Setup.hs 15
-import System.Info
-import System.Process
hunk ./Setup.hs 16
+import Control.Applicative
hunk ./Setup.hs 22
-getLibDir ghcPath = do 
-          (_, out, _, pid) <- runInteractiveProcess ghcPath ["--print-libdir"]
-                                                           Nothing Nothing
-          libDir <- hGetLine out
-          waitForProcess pid
-          return libDir
-
hunk ./Setup.hs 24
-bHook :: PackageDescription -> LocalBuildInfo -> Maybe UserHooks -> BuildFlags -> IO ()
-bHook pd lbi hooks bfs = do
-  let ghc = compilerPath . compiler $ lbi
+-- TODO: add a configuration hook that does not want to build for
+-- certain combination of flags
+
+bHook :: PackageDescription -> LocalBuildInfo -> UserHooks -> BuildFlags -> IO ()
+bHook pd lbi hooks flags = do
+  let verbosity = buildVerbose flags
hunk ./Setup.hs 31
+      ghcOut = rawSystemProgramStdoutConf verbosity ghcProgram (withPrograms lbi)
hunk ./Setup.hs 33
-  libdir <- getLibDir ghc
+  libdir <- head . lines <$> ghcOut ["--print-libdir"]
+  putStrLn $ "GHC libdir = " ++ show libdir
hunk ./Setup.hs 39
-  buildHook defaultUserHooks pd' lbi hooks bfs
+  buildHook defaultUserHooks pd' lbi hooks flags
hunk ./Setup.hs 41
-  res <- mapM (precompile ghc) precompiles
-  let sucessfuls = [m | (m,code) <- res, code == ExitSuccess]
-      nok = null $ intersect sucessfuls ["Yi.Vty.UI", "Yi.Gtk.UI"]
-  putStrLn $ "Sucessfully compiled: " ++ show sucessfuls
-  when nok $ do
-       putStrLn "No frontend was compiled sucessfully. Giving up."
-       exitWith (ExitFailure 1)
+  mapM_ (precompile pd' lbi verbosity) precompiles
hunk ./Setup.hs 43
-precompile ghc (moduleName, dependencies) = do
+dependencyName (Dependency name _) = name
+
+precompile pd lbi verbosity (moduleName, dependencies) = when ok $ do  
+  -- just pretend that we build a library with the given modules
hunk ./Setup.hs 48
-  exitCode <- rawSystemVerbose 0 ghc (precompArgs ++ map ("-package "++) dependencies ++ [moduleName])
-  when (exitCode /= ExitSuccess) $
-       putStrLn $ "Precompiling failed: " ++ moduleName
-  return (moduleName, exitCode)
+  let [Executable "yi" _ yiBuildInfo] = executables pd
+      pd' = pd {executables = [], 
+                library = Just (Library {exposedModules = [moduleName],
+                                         libBuildInfo = yiBuildInfo})}
+  GHC.build pd' lbi verbosity
+     where availablePackages = map dependencyName $ buildDepends pd
+           ok = all (`elem` availablePackages) dependencies
+                               
hunk ./Setup.hs 61
-               ("Yi.Gtk.UI", ["gtk", "sourceview"]),
-               ("Yi.Dired", ["unix"])]
-
-precompArgs = ["-DGHC_LIBDIR=\"dummy1\"", 
-               "-DYI_LIBDIR=\"dummy2\"", 
-               "-fglasgow-exts", 
-               "-package ghc",
-               "-package filepath",
-               "-cpp",
-               "-Wall",
-               "-hide-all-packages", -- otherwise wrong versions of packages will be picked.
-               "-package base",
-               "-package mtl",
-               "-package regex-compat-0.71",
-               "-package regex-posix-0.71",
-               "-package regex-base-0.72",
-               "--make"]
-               -- please note: These args must match the args given in Yi.Boot
-               -- TODO: factorize.
+               ("Yi.Gtk.UI", ["gtk"]),
+               ("Yi.Dired", [])]
hunk ./Setup.hs 64
-install :: PackageDescription -> LocalBuildInfo -> Maybe UserHooks -> InstallFlags -> IO ()
-install pd lbi hooks bfs = do
+install :: PackageDescription -> LocalBuildInfo -> UserHooks -> InstallFlags -> IO ()
+install pd lbi hooks flags = do
hunk ./Setup.hs 72
-      -- otherwise GHC (via Yi) thinks it has to recompile them.
+      -- otherwise GHC (via Yi) thinks it has to recompile them when Yi is started.
hunk ./Setup.hs 74
-  instHook defaultUserHooks pd' lbi hooks bfs
+  instHook defaultUserHooks pd' lbi hooks flags
hunk ./Yi/Boot.hs 36
-path :: FilePath
-path = GHC_LIBDIR -- See Setup.hs
+ghcLibdir :: FilePath
+ghcLibdir = GHC_LIBDIR -- See Setup.hs
hunk ./Yi/Boot.hs 43
-  -- here we have to make an early choice between vty and gtk.
hunk ./Yi/Boot.hs 46
-  logPutStrLn $ "Using libdir: " ++ libdir
-  session <- GHC.newSession GHC.Interactive (Just path)
+  logPutStrLn $ "Using Yi libdir: " ++ libdir
+  logPutStrLn $ "Using GHC libdir: " ++ ghcLibdir
+  GHC.parseStaticFlags [] -- no static flags for now
+  session <- GHC.newSession (Just ghcLibdir)
+  logPutStrLn $ "Session started!"
hunk ./Yi/Boot.hs 60
+  -- note: These args must match the args given by cabal at pre-compilation, currently this is 
+  -- not done correctly, so sometimes we use a different version of some package here.
+
hunk ./Yi/FastBuffer.hs 42
-import Data.ByteString.Base 
+import Data.ByteString (ByteString)
hunk ./Yi/Interact.hs 445
-
-forever :: Monad m => m a -> m b
-forever f = f >> forever f
hunk ./Yi/Main.hs 93
+-- TODO: pull this out of the cabal configuration
hunk ./cabal-make.inc 20
+cabal_config=dist/setup-config
+
hunk ./cabal-make.inc 108
-configure: .setup-config
+configure: $(cabal_config)
hunk ./cabal-make.inc 110
-build: .setup-config
+build: $(cabal_config)
hunk ./cabal-make.inc 122
+	-./setup clean
hunk ./cabal-make.inc 124
-	rm -f .setup-config .installed-pkg-config ./setup `find . -name '*.hi' -o -name '*.o'`
+	rm -f $(cabal_config) .installed-pkg-config ./setup `find . -name '*.hi' -o -name '*.o'`
hunk ./cabal-make.inc 137
-# LICENSE dependency makes sure the links are created if that is needed.
-setup: mklinks Setup.*hs 
+setup: Setup.*hs 
hunk ./cabal-make.inc 145
-.setup-config: setup *.cabal
+$(cabal_config): setup *.cabal
hunk ./cabal-make.inc 147
-	sed -e 's/\\\\/\//g' < .setup-config > .tmp.setup-config
-	mv .tmp.setup-config .setup-config
-
-# The previous two lines provide a workaround for a strange problem on
-# Windows.  The forward slashes in that file all get changed to
-# backslashes.  The difficulty is that some of those slashes are part of
-# URLs rather than file paths.  The sed & mv restore the back-slashes.
-# This workaround works fine for cygwin.  I haven't tried under msys.
-
hunk ./cabal-make.inc 189
-haddock: .setup-config
+haddock: $(cabal_config)
hunk ./cabal-make.inc 248
-mklinks:
-	test -e LICENSE || ln -sf ../../LICENSE
+
hunk ./yi.cabal 3
+Cabal-Version:  >= 1.2.1
hunk ./yi.cabal 14
-build-depends:  filepath>=1.0, ghc>=6.6, base, mtl, regex-posix==0.71
+
+Flag vty {
+  Description: Precompile vty UI
+  Default:     True
+}
+
+Flag gtk {
+  Description: Precompile gtk UI
+  Default:     True
+}
+
+
+Executable yi {
+build-depends:  array,  base,  bytestring,  containers,  directory,  filepath>=1.0,  ghc>=6.8,  mtl, process, old-locale, old-time,  regex-base>=0.72, regex-compat>=0.71, regex-posix==0.72,  unix
+-- unix dependency should be eventually removed
+
+if flag(vty) {
+  build-depends: vty>=3.0.0
+}
+
+if flag(gtk) {
+  build-depends: gtk>=0.9.12
+}
+
+
hunk ./yi.cabal 42
-executable:     yi
hunk ./yi.cabal 50
-
-
+}
}

Context:

[Oops, non-empty list has length 1. (Thanks Corey)
jeanphilippe.bernardy@gmail.com**20071025201410] 
[Changed handling of up and down in Vim keymap to match expected behavior
coreyoconnor@gmail.com**20071024183204
 In vim moving the cursor up and down a line tries to retain the current column. yi would previously always move the cursor to the start of the line.
] 
[allow for config.mk to set desired version of ghc to use
JeanPhilippe.bernardy@gmail.com**20071023175925] 
[Added a completeWordB action to the emacs key bindings, there is no key-binding for it but it should I guess be C-RET, Use it in my own YiConfig though and it's quite nice
a.d.clark@ed.ac.uk**20071021180116] 
[Fixed indent such that when we indent the current line the cursor is kept at the same point in the actual text of the line, which is more intuitive I feel
a.d.clark@ed.ac.uk**20071019091210] 
[Added more exports to the Yi.Keymap.Emacs module such that the user can redefine these keys in their ~/.yi/YiConfig.hs
a.d.clark@ed.ac.uk**20071019092024] 
[added more to the Yi.Keymap.Emacs export list to assist in writing custom keymaps based on the emacs one.
a.d.clark@ed.ac.uk**20071018163307] 
[when we copy (without cutting) the selected region the mark is now unset
a.d.clark@ed.ac.uk**20071019091500] 
[Made cutting and pasting work a little better with the selection, ie it doesn't annoyingly keep the mark set.
a.d.clark@ed.ac.uk**20071010163708] 
[Changed the selected style such that the selection is highlighted, some other movements need a bit of work though.
a.d.clark@ed.ac.uk**20071008220405] 
[Changed the style a little, but more importantly made the Haskell syntax colouring a little more ameinable to configuration by the user
a.d.clark@ed.ac.uk**20071008215329] 
[Fixed Undo such that it does the right thing if the SavedFilePoint is only the only thing in either list, that is it doesn't throw it away.
a.d.clark@ed.ac.uk**20071008215425] 
[Added 'frontend' and 'user' options to MkConfig.hs
a.d.clark@ed.ac.uk**20071015133758] 
[Added a haskell script to generate the config.mk I think this can avoid a lot of users having to continuously say NO when recording stuff, it's kind of annoying.
a.d.clark@ed.ac.uk**20071014122146] 
[remove overhead handling where it's not needed
JeanPhilippe.bernardy@gmail.com**20071011184042] 
[incremental parser: nicer test output
JeanPhilippe.bernardy@gmail.com**20071010210626] 
[insert at the end of shifted strings, not before.
JeanPhilippe.bernardy@gmail.com**20071010210459] 
[Add a testfile for incremental parsers experiments
JeanPhilippe.bernardy@gmail.com**20071008210014] 
[incremental parser improvements
JeanPhilippe.bernardy@gmail.com**20071007215744] 
[restore printing of action results
JeanPhilippe.bernardy@gmail.com**20071006173109] 
[user input are Action(s). fix issue #44
JeanPhilippe.bernardy@gmail.com**20071006165150] 
[vastly improve README file
JeanPhilippe.bernardy@gmail.com**20071006155904] 
[Updated the empty list so that a newly opened file doesn't have the modified flag
a.d.clark@ed.ac.uk**20071001134913] 
[added saved file point indicators to the undo list
a.d.clark@ed.ac.uk**20071001134539] 
[Clear the undos on saving the file.
a.d.clark@ed.ac.uk**20071001115430] 
[Fix old comment
JeanPhilippe.bernardy@gmail.com**20070820094844] 
[remove obsolete cbits directory
JeanPhilippe.bernardy@gmail.com**20070820090408] 
[Comments
JeanPhilippe.bernardy@gmail.com**20070819084147] 
[Move the Direction type to a better place and rename its constructors
JeanPhilippe.bernardy@gmail.com**20070819084128] 
[Extend Action data type
JeanPhilippe.bernardy@gmail.com**20070818205906] 
[Introduced the Action datatype
JeanPhilippe.bernardy@gmail.com**20070807061350] 
[Fix some bugs in IncrementalParser 2
JeanPhilippe.bernardy@gmail.com**20070804082235] 
[Other incremental parser prototype
JeanPhilippe.bernardy@gmail.com**20070801062245] 
[Add a prototype for an incremental parser
JeanPhilippe.bernardy@gmail.com**20070725184650] 
[Better fallback strategy when trying to load a wrong module. Fixes issue 21.
JeanPhilippe.bernardy@gmail.com**20070725180840] 
[Do not use prefix/bin for haddock and HsColour
Jens Petersen <petersen@haskell.org>**20070722130918] 
[Update HsColour mode to -anchorCSS
Jens Petersen <petersen@haskell.org>**20070722131142] 
[Add support for Sockets, Block and Character devices and Named Pipes.  Improve dired colours to be more in line with GNU color ls.
Jens Petersen <petersen@haskell.org>**20070722131438] 
[Put some indent stuff at the BufferM level
JeanPhilippe.bernardy@gmail.com**20070715070235] 
[bugfix: don't crash when the cursor is out of sight
JeanPhilippe.bernardy@gmail.com**20070715043037] 
[Flip argument order to take advantage of partial applications
jeanphilippe.bernardy@gmail.com**20070714093702] 
[move status line to Editor
jeanphilippe.bernardy@gmail.com**20070714085907] 
[Take IO out of EditorM
jeanphilippe.bernardy@gmail.com**20070714082213] 
[ghc-6.6.1 has regex-base-0.72 not 0.71
Jens Petersen <petersen@haskell.org>**20070710230729] 
[Comment
JeanPhilippe.bernardy@gmail.com**20070711174421] 
[Take IO out of BufferM monad
jeanphilippe.bernardy@gmail.com**20070711171315] 
[remove a usage of unsafePerformIO
JeanPhilippe.bernardy@gmail.com**20070711154727] 
[Minor cleanups
JeanPhilippe.bernardy@gmail.com**20070708194719] 
[Avoid a use of IO
jeanphilippe.bernardy@gmail.com**20070708193537] 
[Fix warnings
jeanphilippe.bernardy@gmail.com**20070708193142] 
[bugfix: properly create named marks
JeanPhilippe.bernardy@gmail.com**20070707062214] 
[Properly ignore invalid updates + simplify
JeanPhilippe.bernardy@gmail.com**20070707061137] 
[Fix Makefile and config.mk
JeanPhilippe.bernardy@gmail.com**20070706213344] 
[bugfix: gotoLn < 0 moves point to 0 (not eof)
JeanPhilippe.bernardy@gmail.com**20070706211810] 
[Don't use Mark for overlays (only MarkValue). This also fixes issue #40
JeanPhilippe.bernardy@gmail.com**20070706211122] 
[Minor undo-related cleanups
jeanphilippe.bernardy@gmail.com**20070706063152] 
[gtk: fix the width of the mini-window textview
jeanphilippe.bernardy@gmail.com**20070705194816] 
[Rewrite FastBuffer so it's purely functional
jeanphilippe.bernardy@gmail.com**20070705194247
 The new implementation uses ByteStrings as storage
 
] 
[Set the default Gtk window size to something reasonable
Jens Petersen <petersen@haskell.org>**20070705014545] 
[Wrap text by character in Gtk textviews
Jens Petersen <petersen@haskell.org>**20070705015710] 
[build fix: add missing Buffer.HighLevel
JeanPhilippe.bernardy@gmail.com**20070704053645] 
[Shuffle core around: mainly take Buffer-only action out of Core so they can be shared at a lower level
JeanPhilippe.bernardy@gmail.com**20070703210838] 
[Move yet more actions to BufferM level
JeanPhilippe.bernardy@gmail.com**20070703203259] 
[Move more functions to BufferM level
JeanPhilippe.bernardy@gmail.com**20070703202814] 
[Factoring out common indent handling
coreyoconnor@gmail.com**20070702025802
 Factored out common aspects of indent handling from Emacs and Vim.
 The settings for tab expansion etc is stored in a buffer dynamic variable.
 Currently the settings reflect the names of the Vim settings with the same purpose.
 Updated Vim keymap to perform tab expansion.
] 
[Re-tabify Vim keymap
coreyoconnor@gmail.com**20070630161234
 The standard for this file is to expand tabs. Expanded any \t
] 
[fix warnings
JeanPhilippe.bernardy@gmail.com**20070701202232] 
[Attempt to fix issue 35: only Alt should generate "Meta"
JeanPhilippe.bernardy@gmail.com**20070701201706] 
[isearch: search word on cursor (C-w)
JeanPhilippe.bernardy@gmail.com**20070701153925] 
[Add M-! (shell-command) binding to shellCommandE
Jens Petersen <petersen@haskell.org>**20070701102431] 
[make Buffer and Editor action dynamically available
JeanPhilippe.bernardy@gmail.com**20070630155542] 
[Also pre-compile Main.hs (and fix its build)
JeanPhilippe.bernardy@gmail.com**20070630154818] 
[Some more core-level cleanups
JeanPhilippe.bernardy@gmail.com**20070630154323] 
[Remove more YiM-level buffer stuff
JeanPhilippe.bernardy@gmail.com**20070630153059] 
[remove deleteE/deleteNE/killE
JeanPhilippe.bernardy@gmail.com**20070630140611] 
[remove insertE/insertNE
JeanPhilippe.bernardy@gmail.com**20070630135012] 
[remove atSolE and friends
JeanPhilippe.bernardy@gmail.com**20070630133930] 
[remove getPointE/gotoPointE and adapt
JeanPhilippe.bernardy@gmail.com**20070630133311] 
[Remove gotoLnE/gotoLnFromE
JeanPhilippe.bernardy@gmail.com**20070630131115] 
[Have gotoLnFromE/gotoLnE return the reached line number
JeanPhilippe.bernardy@gmail.com**20070630130119] 
[Remove the semantic-devoid nopE
JeanPhilippe.bernardy@gmail.com**20070630125128] 
[Move some operations from Core to CoreUI
JeanPhilippe.bernardy@gmail.com**20070630124427] 
[Move some Core functions to the Buffer level
JeanPhilippe.bernardy@gmail.com**20070630123612] 
[fix compile
JeanPhilippe.bernardy@gmail.com**20070630123040] 
[More instances of the YiAction class
JeanPhilippe.bernardy@gmail.com**20070630122229] 
[Generalized UnivArgument so it works with the YiAction class
JeanPhilippe.bernardy@gmail.com**20070630122158] 
[Remove another spurious #include "YiUtils.h"
JeanPhilippe.bernardy@gmail.com**20070630122131] 
[Add function to delete 1 character forward from the current point
JeanPhilippe.bernardy@gmail.com**20070630121112] 
[Make BufferM a newtype
JeanPhilippe.bernardy@gmail.com**20070630091722] 
[Introduce the YiAction class
JeanPhilippe.bernardy@gmail.com**20070630072130
 
 This will allow to remove all the redefinitions of Buffer-local primitives
 at core-level
] 
[Remove obsolete inclusion of YiUtils.h
JeanPhilippe.bernardy@gmail.com**20070630071318] 
[blanks and comments
JeanPhilippe.bernardy@gmail.com**20070628210818] 
[vim: improve bindings of window operations
JeanPhilippe.bernardy@gmail.com**20070628060258] 
[Add tryCloseE: delete window unless it's the only one
JeanPhilippe.bernardy@gmail.com**20070628060220] 
[Fix closeE so quitting in vi(m) mode is possible
JeanPhilippe.bernardy@gmail.com**20070628055448] 
[Comment scheduleRefresh implementation
JeanPhilippe.bernardy@gmail.com**20070627191924] 
[gtk: change once more the way cursor and focus is handled
JeanPhilippe.bernardy@gmail.com**20070627191040
 
 My first analysis seemed to be correct; see issue 4.
 
 In detail:
 
 left down: place cursor + focus
 left up: place mark + copy
 mid down: place cursor + paste
 
] 
[remove obsolete, useless and broken piece of code
JeanPhilippe.bernardy@gmail.com**20070627191018] 
[properly handle mouse cursor move and selection (gtk)
JeanPhilippe.bernardy@gmail.com**20070627063328] 
[Allow UI do directly send Editor events into the execution channel
JeanPhilippe.bernardy@gmail.com**20070627063212] 
[insert windows below the current window
JeanPhilippe.bernardy@gmail.com**20070627063049
 (so that the mini-window is below the window it refers to)
] 
[bugfix: properly handle the unsetting of mark
JeanPhilippe.bernardy@gmail.com**20070627062329] 
[gtk: use a simpler method to focus the correct internal window
JeanPhilippe.bernardy@gmail.com**20070625205923] 
[gtk: bugfix: properly focus the window that has been clicked on
JeanPhilippe.bernardy@gmail.com**20070625191106] 
[bugfix: correctly set the heights of the GTK windows (so page up/down work)
JeanPhilippe.bernardy@gmail.com**20070625160218] 
[Fixes issue 26 and 5: runBuffer is now atomic to prevent race conditions
coreyoconnor@gmail.com**20070625061447
 See: http://code.google.com/p/yi-editor/issues/detail?id=26&can=2&q=#c4
 for reasoning on the cause of the bug and how making runBufer atomic fixes this.
] 
[Makefile update
JeanPhilippe.bernardy@gmail.com**20070624151356] 
[Remove the now useless C bits.
jeanphilippe.bernardy@gmail.com**20070624060446] 
[No longer use C startOfLineNr
jeanphilippe.bernardy@gmail.com**20070623215451] 
[Don't use ccountLines any more
jeanphilippe.bernardy@gmail.com**20070623203815] 
[Attempt at computing the height of gtk windows. (failed, but here's the code for reference)
JeanPhilippe.bernardy@gmail.com**20070623152145] 
[remove useless directories
JeanPhilippe.bernardy@gmail.com**20070623131852] 
[Use same syntax highlighting for gtk frontend.
JeanPhilippe.bernardy@gmail.com**20070623074358
 
 As an added benefit, we no longer depend on SourceView. Hence Yi should be
 compilable on windows.
 
] 
[Initital integrate of yi-lib into Yi
coreyoconnor@gmail.com**20070622223834
 Moved all yi-lib source files into Yi.
 Updated cabal description with additions from yi-lib.
 Extended Setup.hs to:
     - Copy the data files moved from yi-lib
     - The compiled object files to a "cbits" directory under the data file
       installation directory.
 Extented Yi.Boot to load the C object files before compiling the dynamic main.
 Currently there is only one object file: YiUtils.o. This is hard-coded into
 Yi.BaseExternalObjects.
 
 TODO: Dynamically generate BaseExternalObjects
 TODO: Verify the linking of the C object files does not interfere with the
 dynamic reconfigure of Yi.
 TODO: Dynamically compile the C sources in much the same way the rest of 
 Yi is compiled.
 
] 
[Fix warning
JeanPhilippe.bernardy@gmail.com**20070622163015] 
[Add tentative Yi logo
jeanphilippe.bernardy@gmail.com**20070621202912] 
[Revert to use plain textview for Gtk UI
JeanPhilippe.bernardy@gmail.com**20070621204424] 
[fix some warnings
jeanphilippe.bernardy@gmail.com**20070621191416] 
[Improve the Contributors calculator
jeanphilippe.bernardy@gmail.com**20070621190008] 
[Use active buffer's directory as start for file search
Fraser Wilson <fraser@thewhitelion.org>**20070621180147
 
 The buffer may not have a directory; in which case we use $home.
 Paths are normalised, and '..' is removed.
] 
[comment fix
jeanphilippe.bernardy@gmail.com**20070621185109] 
[Remove TODO list (subsumed by issue tracking)
jeanphilippe.bernardy@gmail.com**20070621154210] 
[Dynamically load the frontend.
jeanphilippe.bernardy@gmail.com**20070621062742
 
 * We no longer have a build per frontend
 * Each module is compiled at most once
 * Bits of yi that need specific packages are each pre-compiled separately,
   in an uniform way.
 
] 
[build fix: be more precise about the packages we want (at pre-compile time.)
jeanphilippe.bernardy@gmail.com**20070621042107] 
[build fix: Fastbuffer no longer depends on Vty
jeanphilippe.bernardy@gmail.com**20070621041936] 
[Create the Event channel in the Core instead of each UI
jeanphilippe.bernardy@gmail.com**20070620194209] 
[config.mk and README clarifications
jeanphilippe.bernardy@gmail.com**20070620181022] 
[build fix: do not depend on unreleased version of vty (imgHeight)
jeanphilippe.bernardy@gmail.com**20070620180537] 
[Adding split window support to Vim keymapping
coreyoconnor@gmail.com**20070620004637
 Vim uses the key sequences:
     ^W^W swap focus with previous split
     ^W^S Split current window vertically
 Along with some other two-key window movement and split commands. 
 This patch adds the ^W^S split window action and changes the binding for nextWinE to ^W^W.
 
] 
[Better model for UI implementation
jeanphilippe.bernardy@gmail.com**20070619063505] 
[remove obsolete code
jeanphilippe.bernardy@gmail.com**20070611161622] 
[rename EditorM to YiM in the example config
jeanphilippe.bernardy@gmail.com**20070617191329] 
[More cleanup
jeanphilippe.bernardy@gmail.com**20070614165044] 
[Factor and simplify some buffer-closing related code
jeanphilippe.bernardy@gmail.com**20070614163922] 
[simplify upScreenE and downScreenE
jeanphilippe.bernardy@gmail.com**20070614162241] 
[Make loadE idempotent and get C-x d to load Dired if reqd
ben@moseley.name**20070613203751] 
[TAG thousand patches
jeanphilippe.bernardy@gmail.com**20070613050013] 
Patch bundle hash:
8d72d655482220418e257dadbed8b418a9e141b8
