All Projects → AvramRobert → Omnia

AvramRobert / Omnia

Licence: apache-2.0

Programming Languages

clojure
4091 projects

Projects that are alternatives of or similar to Omnia

fancyline
Readline-esque library with fancy features
Stars: ✭ 72 (-11.11%)
Mutual labels:  console, repl
Quack
🐤 A multi-paradigm programming language with gradual and duck typing that targets PHP and JS
Stars: ✭ 309 (+281.48%)
Mutual labels:  functional-programming, repl
tinker-zero
Bridge laravel/tinker for your laravel-zero applications
Stars: ✭ 39 (-51.85%)
Mutual labels:  console, repl
Cloudcmd
✨☁️📁✨ Cloud Commander file manager for the web with console and editor.
Stars: ✭ 1,332 (+1544.44%)
Mutual labels:  console, editor
Suplemon
🍋 Console (CLI) text editor with multi cursor support. Suplemon replicates Sublime Text like functionality in the terminal. Try it out, give feedback, fork it!
Stars: ✭ 734 (+806.17%)
Mutual labels:  console, editor
Hexed
Windows console-based hex editor
Stars: ✭ 145 (+79.01%)
Mutual labels:  console, editor
Gistlyn
Run Roslyn Gists
Stars: ✭ 75 (-7.41%)
Mutual labels:  editor, repl
Dte
A small, configurable console text editor (moved to https://gitlab.com/craigbarnes/dte)
Stars: ✭ 98 (+20.99%)
Mutual labels:  console, editor
Carp
Carp is a programming language designed to work well for interactive and performance sensitive use cases like games, sound synthesis and visualizations.
Stars: ✭ 4,389 (+5318.52%)
Mutual labels:  functional-programming, repl
Mle
Flexible terminal-based text editor (C)
Stars: ✭ 378 (+366.67%)
Mutual labels:  console, editor
Wonder Editor
Functional 3D Webgl Editor
Stars: ✭ 113 (+39.51%)
Mutual labels:  functional-programming, editor
Radian
A 21 century R console
Stars: ✭ 878 (+983.95%)
Mutual labels:  console, repl
magic-console
Interactive programming for Atom
Stars: ✭ 13 (-83.95%)
Mutual labels:  console, repl
Hazel
Hazel, a live functional programming environment with typed holes
Stars: ✭ 340 (+319.75%)
Mutual labels:  functional-programming, editor
Mappy
A functional programming language. Like LISP but focused around maps rather than lists.
Stars: ✭ 10 (-87.65%)
Mutual labels:  functional-programming, repl
Ramtuary
Ramda + Ramda Fantasy + Sanctuary REPL 🌿
Stars: ✭ 72 (-11.11%)
Mutual labels:  functional-programming, repl
Hawtio
Hawtio web console helps you manage your JVM stuff and stay cool!
Stars: ✭ 1,200 (+1381.48%)
Mutual labels:  console
Idiolisp
A statically typed functional programming language
Stars: ✭ 78 (-3.7%)
Mutual labels:  functional-programming
I3 Quickterm
A small drop-down terminal for i3 and sway
Stars: ✭ 76 (-6.17%)
Mutual labels:  console
Incompose
A inferno utility belt for function components and higher-order components
Stars: ✭ 76 (-6.17%)
Mutual labels:  functional-programming

mnia

A Clojure REPL for prototyping, experimenting and trying things out.

Omnia is a REPL with almost all the power of a fully fledged editor, without being an editor.

Installation

General

  • Download the latest archived release:
    Releases

  • Extract the .tar file

  • Make the omnia file inside executable

  • Run

Arch Linux

Download it from the AUR:

yaourt -S omnia

Features

Configurable Keymap

Configurable syntax highlighting

syntax-highlighting

syntax-highlighting-config

Structural editing

  • Manipulate s-exprs in a paredit-like fashion

sexprs

Multi-line input

  • Input, edit and structure code in multiple lines

multi-line

Multi-view input

  • The view has no bottom, so you can exceed it whilst being able to navigate back and forth

multi-view

Automatic parens matching

  • Always know in which expression you are:

parens-matching

Code formatting

  • Format the current input code by need
  • Automatic formatting not yet supported

formatting

Input suggestions with autocompletion

  • Receive input suggestions and select from a truncated list

input-suggestions

Signature lookup

  • Look up the signature of a function

signature-lookup

Documentation lookup

  • Look up the documentation of a function and scroll through it

docs-lookup

Selection system

  • Select code forward, backward up and down
  • Selected code can be cut, copied, deleted or overwritten

selection

Selection expansion

  • Select code by means of incremental expansion

selection-expansion

Copy/Cut/Paste

  • Copy/cut selections of input
  • Paste copied or cut code wherever in the input

Note: Only supported from within the REPL. Copying/cutting from external sources and then pasting inside the REPL is not currently directly supported.

copy-cut-paste

Undo/Redo

  • Undo actions and redo undoes

undo-redo

Scrolling

  • Scroll up and down the view arbitrarily
  • No mouse support for scrolling as of yet

scrolling

Output clearing

  • Clear the output history

clearing

Dependency resolution

  • Bind external libraries at runtime and use them in the REPL
  • Use the retrieve function and pass the desired dependency
  • retreive currently only supports clojars and mavencentral

dependency-resolution

  • Other repositories are supported through retrieve-from by explicitly specifying them:
(retrieve-from {"sonatype" "https://oss.sonatype.org/content/repositories/releases/"}
               '[joda-time/joda-time "2.9.9"])

Persistent REPL history

  • Evaluations from previous REPL sessions are stored on disk
  • Histories have a limit of 1000 evaluations

repl-history

Graceful failures

  • Should omnia crash for reasons unknown, the REPL will shut down with an appropriate message and log the stack trace of the error in a file called .omnia.error
  • The stack trace log can be found in the directory where the omnia executable is

Bugs

Bug reports can be submitted as issues here on github.

Note: The REPL has a built-in failure-handling system and spits out a stack-trace dump when it crashes. Should it, for some reason, crash for you, then in the same directory where the omnia executable is, you shall find a file named .omnia.error containing the said stack-trace dump.
Should you decide to report the crash, I would very much appreciate if you would, together with a short description of the actions performed before the crash, also attach the contents of that file to your issue.

Feature requests

Feature requests can be submitted as issues with the label feature.
I would however like for every feature request to have a short description of its use case. Their implementation priority will be determined in terms of their complexity and said use case.

Pull requests are also very welcome!

Things to look forward to

Omnia is under constant development, enhancement and improvement. Incoming features in (not necessarily) chronological order:

  • Slurping / barfing expressions
  • REPL content manipulation
  • Automatic code formatting
  • Additional performance improvements
  • Better exception printing
  • ..

Rationale

Omnia is a stand-alone REPL. You can think of it as a better lein repl. It doesn't however have any support for interactive development with existing Clojure projects. It was actually never meant to be used for interactive development or to be integrated with any kind of editors. The rationale behind it is just to provide a better sandbox for experimenting with ideas, that needn't necessarily be part of some project. Hence its description: "A Clojure REPL for prototyping, experimenting and trying things out."

I've given a lightning talk about it and its rationale, should you want to find out more about it.
The talk starts roughly at 1:05: https://www.youtube.com/watch?v=qdeU-2eoEIY

Now the big question. What about rebel-readline? I've been asked this question too many times to count.
Well, purely historically, omnia came into existence much sooner than rebel-readline. I've started the project around the beginning of 2017 and also open-sourced its first draft in November of that year.

Nevertheless, both projects although similar, differ quite heavily in intent. omnia's goal is to be a specialised, stand-alone REPL for Clojure. It will thus be focused on Clojure and it will try to provide the best experience just for Clojure itself. rebel-readline, as far as the description goes, is a more general-purpose terminal library for building REPLs targeting Clojure dialects.

The way I think of it is like this: omnia is simply a tool. rebel-readline is a mechanism to build tools akin to omnia.

License

Copyright © 2017-2018 Robert Marius Avram

Distributed under the Apache-2.0 License.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].