Skip to content
This repository has been archived by the owner on Sep 2, 2021. It is now read-only.

alvinfrancis/cl-format

Repository files navigation

;;; Commentary:

;; See https://gitlab.com/akater/elisp-cl-format for the currently maintained version of the project.

;; This package implements a CL format routine.
;;
;; Features:
;; * Supports most CL format directives.
;; * CL `format' and `formatter' functions implemented.
;; * Format strings are compiled to elisp.
;; * Output stream may be anything accepted by `standard-output', nil
;;   or t.
;; * Custom directives may be easily implemented (see
;;   `define-cl-format-directive')
;; * Partially based on GNU CLISP's format.
;; * Fontifys format strings.
;; * Extends CL format in some ways.

;; Deviations from CL:
;; * Directives are case-sensitive
;; 
;;   All CL letter directives use a lower case character (the `v' as
;;   well).  This leaves upper-case character for user defined
;;   directives.
;;
;; * Different case-change directive
;;
;;   I wanted to have a general way of defining directives like ~[~],
;;   without running out of memorizable end character.  For this the
;;   ~(~) directive was moved.  The extended syntax allows for
;;   any char to open a enclosing region:
;;       ~CHAR(....~)
;;   The CL case change operation is now
;;       ~|(...~)
;;   The original CL directive ~| (inserts ) is gone.
;; * Some minor additions (e.g. ~% may indent the line)

;; Installation:
;;
;; Put all files in `load-path' and (require 'cl-format) .
;;
;; Put the next line in your init file, if you want colored format strings.
;; (add-hook 'emacs-lisp-mode-hook 'cl-format-font-lock-mode)
;;
;; Usage:
;;
;; See the documentation of `cl-format'.  If you want to write your
;; own directives, take at look at some simple CL directives (e.g. ~%)
;; in cl-format-builtins.el and then proceed to the
;; `define-cl-format-directive' macro.

;;; Code: