Tutorial¶
This tutorial shows how the Enki text editor, integrated with the CodeChat literate programming plug-in, provides a powerful environment for creating expressive programs.
Contents
The following playlist covers all the topics in this tutorial.
This tutorial employs the following typography:
This font
for the name of a file or directory;- This font for labels in the GUI; and
- for menu selections.
Basic restructuredText¶
CodeChat relies on reStructuredText (reST) in comments to provide human-readable markup. “ReStructuredText is an easy-to-read, what-you-see-is-what-you-get plaintext markup syntax” [1]. So, this tutorial begins by exploring reST using Enki.
First, install Enki, which hosts the CodeChat system. Next, download the source code for CodeChat, which also contains a reStructuredText Primer needed in this tutorial. Unzip this file in a directory of your choice. Now, open location of unzipped CodeChat files/docs/rest-primer.rst
in Enki. Move around the document, noticing that the text and web views are automatically synchronized [2]. Click on any element of the web view to show the corresponding text view. Edit – your changes are visible immediately. Note that the syncronization ability applies to any file Enki can preview, such as HTML files (try location of unzipped CodeChat files/CodeChat/LICENSE.html
, for exampe, or Enki’s README.md).
Now, explore creating your own reST file: create a new file, then save it with an extension of .rst
. Based on the very helpful reST primer, try out some syntax: create headings, include a hyperlink, add an image, use inline markup. When errors occur, they are reported in the log window and typically in-line in the resulting web page. When a page is complete, the save icon in the preview window stores the resulting HTML to disk.
By design, reST operates on one file at a time. To create a web site consisting of multiple, interlinked documents, we turn to Sphinx, wihch adds this ability to reStructuredText.
[1] | http://docutils.sourceforge.net/rst.html |
[2] | Assuming TRE is installed. Follow the TRE build instructions if not. |
Basic Sphinx¶
“Sphinx is a tool that makes it easy to create intelligent and beautiful documentation” [3]. It provides additional features lacking basic reStructuredText, including the ability to link together many documents (such as all the files in a program’s source code).
To use Sphinx with Enki, first go to . Then enable Sphinx and select location of unzipped CodeChat files
as the project directory. Click OK. Then, open location of unzipped CodeChat files/README.rst
. The resulting web page will be displayed in the Preview dock.
In addition to providing a number of beautiful themes for rendering reST files, Sphinx creates a set of linked documents. To see this in action, open location of unzipped CodeChat files/index.rst
. This file determines the hierarchical document structure. For example, the following markup includes headings from README.rst
into index.rst
:
.. toctree::
:maxdepth: 2
README.rst
One important note: when refering to files in subdirectories, a forward slash MUST be used, even on Windows. That is, use CodeChat/filename
, not CodeChat\filename
. Sphinx supports many other markup constructs as well.
Creating a new project¶
To create a new Sphinx project, first create an empty directory to hold your project’s files. In Enable CodeChat; otherwise, Enki will create not just a Sphinx project, but a CodeChat-enabled Sphinx project. Next, create a new file and save it with the .rst
extension in the empty directory you created. A dialog box will pop up, asking if you’d like some default files copied. Click yes. Open the generated index.rst
file. Add some content to this file, including at least one heading, but notice that it generates a warning in the log window. To fix this, include it in your Sphinx project: in index.rst
add it to your toctree
directive. Assuming the name of the file you created was demo.rst
, the syntax is:
.. toctree::
:maxdepth: 2
demo.rst
When you switch back to demo.rst
, it will now be included in your project.
[3] | http://sphinx-doc.org/index.html |
Basic CodeChat¶
Based on your familiarity with reST, we’ll now explore embedding reST in the comments of a program. First, enable CodeChat in Enki’s dialog by checking the “Enable CodeChat” checkbox. In , uncheck the Enable Sphinx checkbox. Now, open location of unzipped CodeChat files/setup.py
. Notice that reST markup, when correctly embedded in comments, renders properly. Specifically, to be rendered using reST:
- A comment must be placed on a line containing only comments or whitespace, but no code, preprocessor directives, etc.
- One space must follow the opening comment delimiter.
The style_guide.cpp - Style recommendations for CodeChat gives more details; also, see CommentDelimiterInfo.py - Info on comment delimiters for many languages. for a full list of supported languages.
Now, open one of your source files. Modify your comments to add reST markup; add in titles, hyperlinks, and other useful markup.
While basic CodeChat usage shown here provides a quick way to begin experimenting with literate programming, it’s limited in several ways. First, because it uses basic reST, CodeChat lacks the ability to create a web of documentation over multiple source files in a project. Second, the web page produced by CodeChat must be manually saved to disk for others to view, an inefficient process when providing documentation to others. Finally, the results are rather plain. We therefore turn to Sphinx to remedy all these problems.
Basic Sphinx with CodeChat¶
Now, combining Sphinx with CodeChat enables the use of the literate programming paradigm applied to all source and accompanying documentation in a project. To see this in action, in location of unzipped CodeChat files/
. Now, open or switch to location of unzipped CodeChat files/setup.py
. Note that the source code is rendered to HTML for this file and for all source and documentation files in the CodeChat project.
Now, create a new Sphinx with CodeChat project. First, choose a directory in which source files you’d like to document reside. In conf.py
file, added as a template, to customize the output for your needs.
Reference¶
With a basic knowledge of this literate programming system, the following pages provide helpful reference information.
- The style guide for literate programming. Read this first.
- For basic reST syntax, see the reST primer.
- For additional Sphinx-specific commands, refer to markup constructs.
Also, refer to the Examples to see some of the ways in which CodeChat helps create beautiful programs.