Unconstant Conjunction latest posts

Using hledger with ledger-mode

    10 February 2017 // tagged

Last summer I landed a few patches in Emacs’s ledger-mode that make it easier to use with alternative implementations of Ledger, such as hledger. Since the competing hledger-mode garnered some attention last week on Hacker News, I thought these new features might be worth highlighting to those interested in plain-text accounting in Emacs.

Continue Reading →

Exporting Clock Entries from org-mode to CSV

If you’ve used the clocking features of org-mode, you’re no doubt familiar with the clock table, which allows you to summarise time spent on different tasks. This is great for getting an overview of projects, but it’s not a very flexible tool if you want to have a more detailed idea of how you spend your time.

At this point I’ve accumulated about a year’s worth of clocked work time in org, and while clock tables have served me well so far, eventually I just wanted to get my data into R or Python for more minute analysis, and charts like the following:

Calendar heatmap example

However, I haven’t come across a reliable1 way to get individual clock entries out of org-mode files and into a more widely readable format. So I’ve written one.

Continue Reading →

Linting Prose in Emacs

    10 February 2016 // tagged

Recently, I came across the Proselint project, which aspires to be something like a “linter” for written English prose. It differs from spelling or grammar checker in that it is primarily focused on logic and style, taking its advice from the work of many prominent writers on writing.

The project seems to be a little rough around the edges (code blocks seem to make it struggle, for example), but it’s also perfectly usable in its current form. It’s available as a Python package, so you can pip install proselint to get the command-line tool, proselint.

Thanks to the Flycheck framework it’s comically easy to get this imported into a Emacs writing environment. The following snippet will get you up and running in text and markdown modes:

(flycheck-define-checker proselint
  "A linter for prose."
  :command ("proselint" source-inplace)
  :error-patterns
  ((warning line-start (file-name) ":" line ":" column ": "
	    (id (one-or-more (not (any " "))))
	    (message) line-end))
  :modes (text-mode markdown-mode gfm-mode))

(add-to-list 'flycheck-checkers 'proselint)

Continue Reading →