beorg 2.4 will be available this week and introduces a number of new features. The biggest new feature is the inclusion of a Scheme based language into beorg. The other big enhancement is file versions.

Download beorg

Scheme scripting

Scheme is a language based on Lisp. If you are an Emacs Org mode user then you are probably at least semi-familiar with Emacs Lisp. beorg includes a Lisp variant closer to the Scheme programming language but looks and feels very similar to Emacs Lisp.

In this first release you can use Scheme to:

There is a REPL available so you can type Scheme commands and see the results immediately. You can access this from the Settings tab and also gain access to documentation about using Scheme in beorg:

REPL

Any Scheme you want loaded when beorg starts can be stored in an init.org file. Anything enclosed in a block which looks like…

#+BEGIN_SRC scheme

#+END_SRC

…will be extracted from the file and executed. As this is otherwise a normal org file you can include headings, etc to help organise your code.

init.org

The document export now includes syntax highlighting for some programming languages including Scheme:

Syntax highlighting

If you want to take a look at the functions bundled with beorg which are used internally and for use in your own code you can view this from within the app:

library.org

The notes editor

The text editor for notes can now be customised using Scheme. By default a toolbar is defined for quick insertion of lists, perform basic text transformation and insert Scheme code blocks.

Editor toolbar Text transformation

Custom filters

The TODO tab has a Filter button. There have been many requests from users for additional filters. Scheme in beorg 2.4 allows you to define your own filters.

Here is a snippet which when included in your init.org adds a new filter called Top Priority:

#+BEGIN_SRC scheme
(filter-add "Top Priority" (lambda (item) (string=? (item-priority item) "A")))
#+END_SRC

Your custom filters will appear alongside the built-in filters.

Custom filter

You can turn off the built-in filters using:

 #+BEGIN_SRC scheme
 (set! filter-include-default #f)
 #+END_SRC

Versions

beorg 2.4 makes a small change to how the sync works. In previous versions any modified files in beorg are uploaded to the server before any changed files on the server are downloaded. However if you are using WebDAV or Dropbox there was a small chance you may lose changes you had made which hadn’t been synced to beorg before modifications were made on your iPhone/iPad. In 2.4 beorg will always download any modified files from Dropbox/WebDAV/iCloud before uploading locally modified files.

So that local changes are never lost beorg now keeps multiple versions of each file. Every time you modify a file locally or sync a version from Dropbox/WebDAV/iCloud a new version will be created. beorg will try and use these versions to determine if there is a conflict and warn you if one occurs.

You can view all versions of a file by swiping from right to left on the file and choosing versions.

Versions

From this screen you can view any version (it will be read-only) or revert to that version.

Up to 7 days worth of versions will be kept after which older versions will be removed from your device. A future version of beorg may provide more control over this via a beorg extension available as an in-app purchase.