Cobalt.el is an Emacs interface for Cobalt.rs, a static site generator written in Rust.
The package provides simple-to-use Emacs commands for easy site generation and post management.
The latest version of Cobalt.rs should be installed on your machine and should be found in your Emacs' exec-path.
Download the package from Melpa or by cloning this repository. Then add the following to your init file:
(require 'cobalt)Create a cobalt site by calling M-x cobalt-init. This will ask you for a directory to create the new site in.
Add the path of the newly created site to cobalt-site-paths as shown below:
(setq cobalt-site-paths '("~/path/to/cobalt/site/" "~/path/to/second/cobalt/site"))Finally, call M-x cobalt-change-current-site to set the current site. This is the directory where all cobalt.el commands will run on.
Call C-u M-x cobalt-serve to serve your site (including drafts) at 127.0.0.1:3000. Remove the C-u if you don't want the drafts to be served.
Call M-x cobalt-preview-site to automatically open the current site on a browser.
Call M-x cobalt-serve-kill to kill the previously created serve process.
You can change the port to serve from by setting cobalt-serve-port like so:
(setq cobalt-serve-port 3003)Call cobalt-new-post to create a new post at the current site. It will ask for the title of the post which will create the necessary .md file and buffer. A title like "This is a title: Part 1" would create a file with the name this-is-a-title-part-1.md.
Save the post buffer and call M-x cobalt-preview-post to open the current post in a browser.
Publish the current post buffer by calling M-x cobalt-publish-post. It will update the current buffer and remove the is_draft: true metadata.
Build the site by calling M-x cobalt-build. This will generate the necessary files at the destination specified in the _cobalt.yml file.
You can switch to other sites you've set in cobalt-site-paths by calling M-x cobalt-change-current-site. All functions that are called will apply to the new site you switch to. Previously started cobalt-serve-process will also be killed so you'll have to call it again to start a new serve process.
The package is still under development but issues and pull-requests are always welcome!
The package uses the excellent Cask Package Toolset. Check out the page to find out how to run the tests.