Code Monkey home page Code Monkey logo

omacs's Introduction

Omacs

Emacs in OCaml

##Authors

##Meeting Plan We plan on meeting at least twice a week, and likely more often. Since we're on the same project team which already has biweekly meetings, we plan on meeting before or after those to discuss the project. When we get to the implementation phase, we plan on adding more meeting times as necessary.

##Design Proposal

Omacs - Emacs in OCaml.

We want to make an OCaml-based extensible, customizable text editor - and more. At its core will be a simple buffer-based text editor, with the possibility of having arbitrary function be run on the contents of the buffer, taking into account the state of the text editor and file that it represents. Naturally, we intend for the editor to have the capabilities to be just as customizable as its namesake, while also being just as elegant to use. The features of Omacs include:

  • An extensive (and intuitive) collection of built-in keyboard shortcuts that would allow the user to quickly perform common operations, e.g. cut/paste, find/replace, navigation, etc.

    • Omacs would also feature a tutorial, similar to GNU Emacs' tutorial or vimtutor, in order to teach users various commands, while also providing an exhaustive documentation of the built-in keybindings. The tutorial will be user editable so it can evolve alongside the program, should the user choose to implement any added functionality to Omacs.
  • Content-sensitive editing modes, including support for a variety of file types including plain text and OCaml source code.

  • Highly customizable, using OCaml code to replace or supplement built-in Omacs functionality. Our plan is to have this interpreted at run time, using Ocaml's built in interpreter (i.e. whatever the toplevel / utop uses). If this isn't feasible, we will make it so that the new functionality can be easily compiled in, but ideally we want to have it be interpreted.

    • This code will have the option of adding new keyboard shortcuts, overriding core functions, and adding hooks onto previously existing functions
  • Some number of other extensions to show the extent of what can be implemented with Omacs. This will possibly include a rudimentary mail client or web browser.

Omacs is intended to be an all inclusive text editor. As with other editors, the critical underlying data structure is the the text buffer, which stores the text being edited in the Omacs environment, and is written to the disk at the users command. We intend to implement the buffer by making use of OCaml's exciting mutability features. Unlike Emacs, there is no plan for Omacs to have any graphical interface-- it is entirely terminal based. We believe that Omacs would serve as a viable alternative text editor, and perhaps a favorite to OCaml developers around the world.

omacs's People

Contributors

alexrenda avatar muansari96 avatar lezed1 avatar

Watchers

James Cloos avatar  avatar  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.