Skip to content
Dmitry Ivanov edited this page Nov 12, 2013 · 9 revisions

Architecture

  • We should get rid of circular dependencies.
  • Buffer should know nothing about Windows and let Editor handle all Buffer<->Window interaction. Current Buffer.Misc is a kitchen sink.
  • Architecture must allow fast development cycle. Current 'cabal install && :reload' is rather slow.
  • We should make it easy to make plugins. From time to time people want to make paredit (syntastic, fugitive, etc.) for yi, but the barrier of entry is too high.

Syntax highlighting

  • We must be able to use external tools (haskell-source-exts for Haskell, libclang for (Obj-)C(++), etc.)
  • We still want it to be possible to create syntax highlighting from grammars (use case: user has some in-house config file format)
  • Rainbow parens!
  • Syntax highlighting must be asynchronous (like in xcode, for example), so that slow highlighting doesn't make editing unbearable.
  • It must be possible to switch or disable highlighting at runtime, e.g. when editing a huge file or working on a very slow machine.

UI

  • Layout code must be shared by frontends.
  • Maybe it would be nice to have Qt frontend.
  • Should we try terminal libraries other than vty?

Keymaps

  • It would be nice to have acme in addition to nano, vim and emacs.
  • User must be able to switch and edit keymaps at runtime.

Dependencies

It's been a long time since yi was very actively developed. We should re-evaluate our dependencies. For example:

User Experience

There are bunch of things that raise barrier of entry:

  • Highlighting is broken for utf8.
  • All example configs are monolithic, we should provide a modular one.
  • First launch greets user with "Error, no frontend", it should be friendlier.

GSoC

What tasks have the right difficulty and scope for a GSoC project?