Giter VIP home page Giter VIP logo

yi's Introduction

Yi

Yi is a text editor written in Haskell and extensible in Haskell. The goal of Yi is to provide a flexible, powerful and correct editor core scriptable in Haskell.

Its features include

  • a purely functional editor core;
  • keybindings written as parsers of the input;
  • Emacs, Vim and Cua (subset) emulations provided by default;
  • Vty (terminal) and Gtk-based Pango UIs, as well as a Cocoa frontend in development.

The long term goal of the project is to make Yi the editor of choice for the haskell hacker. The main short term goal is to maximize Yi's Fun Factor. This means that we want to

  • improve hackability (and therefore architecture) and
  • add cool features.

We also want to simplify the core Yi package to make it more accessible, splitting some parts into several packages.

Other information (much of it old) is available on the Haskell wiki.

Installing

Yi requires the Haskell Platform 2011.2.0.0 at minimum (for GHC 7, alex, and cabal-install, among other things).

With the Haskell Platform installed, yi should be installed with cabal-install:

$ cabal update
$ cabal install yi

On Linux systems, you'll probably need ncurses development headers for the Vty frontend. On Ubuntu, you'll need to install the libncurses5-dev package.

You can specify frontends to compile, also:

$ cabal install yi -fvty -fpango

Options are -fvty, -fvte, -fpango, and -fcocoa. Some are likely broken.

You can also install the yi-contrib package, which contains some extra contributed things (like user configs):

$ cabal install yi-contrib

If you're in the source repository, you can install yi from source:

$ cabal update # Still update to get updated dependencies
$ (cd yi && cabal install)

And the contrib package:

$ (cd yi-contrib && cabal install)

Getting Source

Yi source repository is available on GitHub.

To get the git version,

$ git clone git://github.com/yi-editor/yi.git

(There may be more repositories in the future, as yi is split more.)

Generating documentation

Due to a cabal bug, documentation won't be generated when running 'cabal install yi'. Use the following workaround:

$ cabal install -fdochack yi

This command will install the yi library with documentation, but not the yi executable. To install the executable, simply run

$ cabal install yi

after the documentation has been generated.

Reporting Bugs

Please report issues on GitHub.

Mailing List

Our mailing list is yi-devel, hosted at Google Groups. Please ask us questions on this list! All development discussion occurs on this list.

IRC channel

Our channel is #yi at Freenode. Please note that it is rather slow (very slow compared to #haskell), so be prepared to stay for longer than 5 minutes.

Configuring Yi

Yi uses the Dyre package to have dynamic reconfiguration. You can configure Yi by creating ~/.config/yi/yi.hs, and then Yi is reconfigured whenever you update this file. Example configuration files are in yi/examples/ (copy any of these into ~/.config/yi/ as yi.hs and restart Yi).

You can also use the sample user configs in the yi-contrib package (see the list of user configs in the source repository on GitHub). To use one of these configurations, install the package and then create a configuration file ~/.config/yi/yi.hs like this:

import Yi
import Yi.Config.Users.Anders

main = yi config

It's possible to customize even these user configs in the same way as the example configurations.

Frontend Compatibility

        |  Vty    Pango  Cocoa
--------+----------------------
Linux   |   X       X
OSX     |   X       X      X
Windows |           X

Windows support for Vty may eventually come; patches on the vty package would certainly be appreciated.

The plan is to move the UI frontends into separate packages, but this has not yet happened.

Profiling

If you're interested in optimizing Yi, this thread may be of use.

yi's People

Contributors

bbjubjub2494 avatar benarmston avatar berengal avatar cipherwraith avatar coreyoconnor avatar dagit avatar dexterpu avatar dominiquedevriese avatar donsbot avatar ethercrow avatar evmar avatar exlevan avatar goj avatar greenrd avatar hamishmack avatar jeffwheeler avatar josuf107 avatar jpaugh avatar jyp avatar maltem avatar mgajda avatar nominolo avatar np avatar reinerp avatar sorear avatar spencerjanssen avatar taralx avatar uzytkownik avatar waern avatar zaphar avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.