The reStructuredText processor

I always liked to write. As far as I remember, I always do it with a keyboard, in the computer. Except for some doodles when I'm thinking something hard or when I'm bored in a meeting or class, I never write in paper.

In the computer I write a lot, but I not use text processors, neither the open-sources: althought "what you see" is "what you get", very frenquently what I see isn't what I want.

For that reason (and because I always follow the advices of Roberto Alsina) I write in plain text, using reStructuredText. And I write everything: this blog, the slides of my talks, my thesis, the documentation of my projects , quick notes in a wiki, love letters, etc.

reST is a simple markup language designed to be readable in its source form. Writing in any text editor, we focus in the important part (the content), without fight against a table, the indentation or the header fonts. Morover, it's more useful under a version control system where the diff is easily viewable

Even when its syntax is a more verbose [1] than Markdown (the light markup more used in the web), reST is more powerful, supporting many output formats (html, ebooks, pdf, etc.). In fact, there are books and the whole official Python documentation writing with this.

However, there is no need to be an ascetic: if a software could help us to write and to format a writing easier, why not to use it?

That is what does rst-completions, a plugin for SublimeText I've developed [2]. Here a demo of its capabilities.

At the moment it has:

  • Shortcuts for links, admonitions, code blocks, etc.
  • Headers: automcomplete, navigation, level changes, block folding
  • Tables: autoformat, fixed or variable fitting, merge of cells
  • Footnotes: automatic insertion at the bottom of the text, jump between the reference and definition
  • Lists: automatic detection of the pattern (for ordered or unordered lists)
  • Output: html, pdf, etc. (using pandoc, rst2pdf o rst2html)

I did it for SublimeText because it is the editor I currently use, among its extensions API is based on Python [2]. But I have the idea to split as an agnostic library, allowing make light wrappers for any other editor.

[1] At a basic level, they are very similar
[2] (1, 2) Although its documentation sucks.

The source of this post is available in github. Did you find a typo or mistake? Please send me a pull request.


Comments powered by Disqus