Package: preview-markup
Thepreview-markupprogram takes a text file with lightweight markup
(MarkdownandreStructuredTextare supported) and shows a live preview of the
markup rendered to HTML in your web browser. When you save your text file the
preview is automatically updated within a couple of seconds. That’s all there
is to it!InstallationRequired system packagesGetting startedFuture improvementsWhy this project?Similar projectsContactLicenseInstallationThepreview-markupprogram is written in Python and is available onPyPIwhich means installation should be as simple as:$pipinstallpreview-markupThere’s actually a multitude of ways to install Python packages (e.g. theper
user site-packages directory,virtual environmentsor just installing
system wide) and I have no intention of getting into that discussion here, so
if this intimidates you then read up on your options before returning to these
instructions ;-).Required system packagesThepreview-markupprogram uses theMisakapackage for Markdown parsing
because it’s compatible with GitHub Flavored Markdown. This may require you to
ensure that the libffi development files are installed before you attempt to
installpreview-markup. On Debian and Ubuntu based systems this can be
accomplished as follows:$sudoapt-getinstalllibffi-devGetting startedTo get started you simply run the commandpreview-markup. If you give it a
filename as an argument then that file will be previewed, otherwise theREADME.mdorREADME.rstfile in the current working directory is
previewed.If you want to runpreview-markupin the background then you probably won’t
appreciate the logging to the terminal that is enabled by default. In this case
I suggest you use the following command line:$preview-markup-q&The-qis short for--quietand the&instructs your shell to run
the program in the background. If you want to kill the program later on just
run thefgcommand (this will bring the program back to the foreground) and
then press Control-C (this will kill the program).Future improvementsSome random ideas for future improvements (I may implement these as time
permits or when I feel like programming but don’t feel like picking up one of
my many other projects):Automatically close orphaned windowsWhen the command line program is terminated the browser window or tab page
that was previously opened should be closed automatically. This can probably
be implemented using a JavaScript call to the server to check if the server is
still alive, if not then just callwindow.close().Instant updates instead of meta refreshRight now there’s a hard coded 10 second meta refresh in the HTML template. It
would be a lot more elegant if the server used inotify or something similar to
instantly detect changes and push those to the browser client. For now the
meta refresh achieves the main goal though :-).Why this project?Different variations ofpreview-markuphave lived in my private dotfiles
repository for years now (I track~/binin my dotfiles repository). Over
those years the program has had several names and very similar yet slightly
different purposes. By the time I decided to clean up these “variations on a
similar theme” I was using several different shell and Python scripts working
together to do the same things thatpreview-markupnow does. I decided to
merge, cleanup, document and publish that mess of Python and shell scripts for
multiple reasons:I wanted to merge all of the features that I’d grown to appreciate into a
single coherent piece of software that was easy and intuitive to use (and
written in Python so I could more easily maintain it :-).I wanted to manage the installation of that software as a Python package
with properly specified dependencies where a singlepip installwas
enough to get things going.Last but not least: Given the effort I’d already put into it, it seemed a
shame not to share my work with the world.Similar projectsI createdpreview-markupbecause I couldn’t find a tool that provided live
previews ofMarkdownandreStructuredTextmarkup and just because it was
fun to work on, howeverthis is clearly an itch that dozens of developers have
scratched over the years:-). Here are some similar projects that I’ve run
into and/or used in the past:restviewLive preview ofreStructuredTextfiles. A personal favorite of mine, simple
and sweet, does exactly what is promises. Written in Python.gripProvides local previews of Markdown files exactly as GitHub renders them by
using the GitHub API to render the Markdown to HTML. Written in Python.markdown-liveLive preview of Markdown files. Written in JavaScript (using Node.js).github-markdown-previewLive preview of Markdown files. Makes it an explicit goal to render things
just like GitHub does. Written in Ruby.ContactThe latest version ofpreview-markupis available onPyPIandGitHub. For
bug reports please create an issue onGitHub. If you have questions,
suggestions, etc. feel free to send me an e-mail atpeter@peterodding.com.LicenseThis software is licensed under theMIT license.© 2018 Peter Odding.