CIEL is an extended CL
Find a file
vindarel 8d2bccab0b REPL, visual commands: allow "sudo" and "ENV" modifiers
a command like:

ENV=env sudo htop

will be recognized accordingly as visual.

Thanks @ambrevar https://github.com/ruricolist/cmd/issues/10
2021-02-18 23:08:34 +01:00
.github FUNDING: I am on GitHub sponsors 2020-11-11 18:35:15 +01:00
docs REPL, visual commands: allow "sudo" and "ENV" modifiers 2021-02-18 23:08:34 +01:00
src REPL, visual commands: allow "sudo" and "ENV" modifiers 2021-02-18 23:08:34 +01:00
.gitattributes add .gitattributes, don't count generated documentation as part of the project sources 2020-11-06 15:01:15 +01:00
.gitignore init 2019-03-23 13:04:03 +01:00
ABOUT.org add FAQ, ABOUT 2020-10-13 10:23:11 +02:00
build-image.lisp Build a core image 2020-10-13 06:01:52 +02:00
ciel.asd REPL, visual commands: allow "sudo" and "ENV" modifiers 2021-02-18 23:08:34 +01:00
find-depenencies.lisp Generate project dependencies list 2020-10-23 13:43:33 +02:00
Makefile auto-document the exported symbols for: alexandria, trivial-types 2020-12-02 00:04:26 +01:00
README.org docs: rationale 2020-12-07 14:03:02 +01:00
repl-utils.lisp REPL, visual commands: allow "sudo" and "ENV" modifiers 2021-02-18 23:08:34 +01:00
repl.lisp REPL: run visual commands in a terminal window 2021-02-07 20:09:51 +01:00
shell-utils.lisp REPL, visual commands: allow "sudo" and "ENV" modifiers 2021-02-18 23:08:34 +01:00

Install

With Quicklisp

You need a Lisp implementation and Quicklisp installed.

CIEL is not yet on Quicklisp (but it is on Ultralisp), so clone this repository and load the .asd (with load or C-c C-k in Slime).

git clone https://github.com/ciel-lang/CIEL ~/quicklisp/local-projects/CIEL

Then, quickload it:

(ql:quickload "ciel")

and enter the ciel-user package, instead of the default common-lisp-user (or cl-user):

(in-package :ciel-user)

With a core image

You need a Lisp implementation, but you don't need Quicklisp.

Build a core image for your lisp with all CIEL's dependencies:

sbcl --load build-image.lisp

and use it:

sbcl --core ciel --eval '(in-package :ciel-user)'

TODO: we will distribute ready-to-use core images.

With a binary. Use CIEL's custom REPL.

You don't need anything, just download the CIEL executable and run its REPL.

TODO: build it on CI for different platforms.

To build it, clone this repository and run make build.

Start it with ./ciel-repl.

You are dropped into a custom Lisp REPL, freely based on sbcli.

This REPL is more user friendly than the default SBCL one:

  • it has readline capabilities, meaning that the arrow keys work by default (wouhou!) and there is a persistent history, like in any shell.
  • it has multiline input.
  • it has TAB completion.
  • it handles errors gracefully: you are not dropped into the debugger and its sub-REPL, you simply see the error message.
  • it has optional syntax highlighting.
  • it has an optional lisp critic that scans the code you enter at the REPL for instances of bad practices.
  • it has a shell pass-through: try !ls.
  • it has documentation lookup shorthands: use :doc symbol or ? after a symbol to get its documentation: ciel-user> (dict ?.
  • it has developer friendly macros: use (printv code) for an annotated trace output.
  • and it defines more helper commands:
  :help => Prints this general help message
  :doc => Prints the available documentation for this symbol
  :? => Gets help on a symbol <sym>: :? str
  :w => Writes the current session to a file <filename>
  :d => Dumps the disassembly of a symbol <sym>
  :t => Prints the type of a expression <expr>
  :lisp-critic => Toggles the lisp-critic
  :q => Ends the session.

See more in the documentation.

Libraries

We import, use and document libraries to fill various use cases: generic access to data structures, functional data structures, string manipulation, JSON, database access, web, URI handling, GUI, iteration helpers, type checking helpers, syntax extensions, developer utilities, etc.

See the documentation.

To see the full list of dependencies, see the ciel.asd project definition or this dependencies list.

Final words

That was your life in CL:

and now:

How to generate the documentation

See src/ciel.lisp and run (generate-dependencies-page-reference).