1 Introduction

Clon is a library for managing command-line options in standalone Common Lisp applications. It provides a unified option syntax with both short and long names, automatic completion of partial names and automatic retrieval/conversion of option arguments from the command-line, associated environment variables, fallback or default values. Clon comes with a set of extensible option types (switches, paths, strings etc.). Clon also provides automatic generation and formatting of help strings, with support for highlighting on tty’s through ISO/IEC 6429 SGR. This formatting is customizable through themes.

Depending on the target audience, Clon stands for either “The Command-Line Options Nuker” or “The Common Lisp Options Nuker”. Clon also has a recursive acronym: “Clon Likes Options Nuking”, and a reverse one: “Never Omit to Link with Clon”. Other possible expansions of the acronym are still being investigated.

This manual is for the Clon user, that is, the developer of a Common Lisp application who wants to use Clon for command-line option management1. As opposed to the user of the library, the user of an application powered by Clon is called an end-user. Clon provides both a user manual (this one) and an end-user manual (see The Clon End-User Manual). Everybody should read the end-user manual first.

Quick Start provides a very short example in order to give an overview of what’s coming next. Using Clon explains in detail how to clonify your application, and Extending Clon describe how to extend Clon with your own option types.



An application using Clon for its command-line option management is said to be clonified. It is also possible to say clonfiscated. However, we advise against using clonistified. The term clonificated is also considered bad style, and the use of clonificationated is strictly prohibited.