This is an automated email from the ASF dual-hosted git repository.

acassis pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/nuttx.git


The following commit(s) were added to refs/heads/master by this push:
     new 95b1f7dbf1c Documentation: document cle library.
95b1f7dbf1c is described below

commit 95b1f7dbf1cfcfb6f49ae321a9b2fc01e820caaf
Author: hanzhijian <[email protected]>
AuthorDate: Wed May 27 19:06:06 2026 +0800

    Documentation: document cle library.
    
    Refs #11081
    
    Signed-off-by: hanzj <[email protected]>
    Signed-off-by: hanzhijian <[email protected]>
---
 Documentation/applications/system/cle/index.rst | 169 ++++++++++++++++++++++++
 1 file changed, 169 insertions(+)

diff --git a/Documentation/applications/system/cle/index.rst 
b/Documentation/applications/system/cle/index.rst
index 0ecec5a4b12..c7bf31d6a71 100644
--- a/Documentation/applications/system/cle/index.rst
+++ b/Documentation/applications/system/cle/index.rst
@@ -1,3 +1,172 @@
 ======================================
 ``cle`` EMACS-like Command Line Editor
 ======================================
+
+Overview
+========
+
+The ``cle`` library provides an EMACS-like command line editor for NuttX
+applications.  It is similar to GNU ``readline`` but much smaller, making it
+suitable for resource-constrained embedded systems.  ``cle`` is not a
+standalone command; it is a library that applications call to get interactive
+line editing with history and key bindings.
+
+The editor assumes a VT100-compatible terminal and a fixed-width character
+set (such as Courier).  It does not support word-oriented operations or
+keypad cursor control.
+
+Configuration
+=============
+
+Enable the editor with ``CONFIG_SYSTEM_CLE``.  The following options are
+available when ``CONFIG_SYSTEM_CLE`` is enabled:
+
+``CONFIG_SYSTEM_COLOR_CLE``
+  Add simple color highlighting to the prompt, command text, and output.
+  The colors are hardcoded: yellow for the prompt, cyan for command text,
+  and green for output.
+
+``CONFIG_SYSTEM_CLE_CMD_HISTORY``
+  Enable Unix-style command history using the up and down arrow keys.
+  The history is stored in an in-memory circular buffer.
+
+  In FLAT and PROTECTED builds the history is shared by all threads; in
+  KERNEL builds each process has its own history buffer.
+
+``CONFIG_SYSTEM_CLE_CMD_HISTORY_LINELEN``
+  Maximum length of one command line in the history buffer.  Default: 64
+  (when ``CONFIG_DEFAULT_SMALL`` is set) or 80.
+
+``CONFIG_SYSTEM_CLE_CMD_HISTORY_LEN``
+  Number of history records to keep.  Default: 4 (when
+  ``CONFIG_DEFAULT_SMALL`` is set) or 16.
+
+``CONFIG_SYSTEM_CLE_DEBUGLEVEL``
+  Debug output level.  0 = off, 1 = errors on console, 2 = full debug
+  information.  Debug output is sent via ``syslog()``.
+
+Usage
+=====
+
+``cle`` is a library, not a standalone command.  Applications call one of
+the following functions:
+
+.. code-block:: c
+
+   #include <system/cle.h>
+
+   int cle_fd(FAR char *line, FAR const char *prompt, uint16_t linelen,
+              int infd, int outfd);
+
+   #ifdef CONFIG_FILE_STREAM
+   int cle(FAR char *line, FAR const char *prompt, uint16_t linelen,
+           FAR FILE *instream, FAR FILE *outstream);
+   #endif
+
+Parameters
+----------
+
+``line``
+  Buffer to store the edited line.
+
+``prompt``
+  Prompt string displayed before the cursor.
+
+``linelen``
+  Maximum length of the line buffer.
+
+``infd`` / ``instream``
+  Input file descriptor (``cle_fd``) or FILE stream (``cle``).
+
+``outfd`` / ``outstream``
+  Output file descriptor (``cle_fd``) or FILE stream (``cle``).
+
+Return Value
+------------
+
+Both functions return the number of characters in the edited line, or a
+negative error code on failure.
+
+Key Bindings
+============
+
+``cle`` uses EMACS-style control key bindings:
+
+``Ctrl-A``
+  Move cursor to the start of the current line.
+
+``Ctrl-B``
+  Move cursor left one character.
+
+``Ctrl-D``
+  Delete the character at the cursor position.
+
+``Ctrl-E``
+  Move cursor to the end of the current line.
+
+``Ctrl-F``
+  Move cursor right one character.
+
+``Ctrl-H`` (Backspace)
+  Delete the character to the left of the cursor.
+
+``Ctrl-K``
+  Delete from the cursor to the end of the line.
+
+``Ctrl-L``
+  Clear the screen and redraw the current line.
+
+``Ctrl-N``
+  Move down one line (when command history is enabled).
+
+``Ctrl-P``
+  Move up one line (when command history is enabled).
+
+``Ctrl-U``
+  Delete the entire line.
+
+``\\`` (backslash)
+  Quote the next character; the quoted character is inserted literally.
+
+Examples
+========
+
+Use ``cle`` in an application to get interactive line editing:
+
+.. code-block:: c
+
+   #include <system/cle.h>
+   #include <stdio.h>
+
+   int main(void)
+   {
+     char line[128];
+     int len;
+
+     printf("Enter a command: ");
+     len = cle(line, "> ", sizeof(line), stdin, stdout);
+     if (len > 0)
+       {
+         printf("You typed: %s\n", line);
+       }
+
+     return 0;
+   }
+
+Notes
+=====
+
+- ``cle`` requires a VT100-compatible terminal.  It uses VT100 escape
+  sequences for cursor movement, line editing, and screen clearing.
+
+- The editor uses a fixed-width character set assumption.  Variable-width
+  fonts may cause display issues.
+
+- When ``CONFIG_SYSTEM_CLE_CMD_HISTORY`` is enabled, the history buffer
+  is shared across all threads in FLAT and PROTECTED builds.  In KERNEL
+  builds, each process has its own history buffer.
+
+- Memory usage is approximately 1.5–2 KB.
+
+- ``cle`` does not support word-oriented operations (move by word, delete
+  word, etc.) or keypad cursor control.
\ No newline at end of file

Reply via email to