summaryrefslogtreecommitdiff
path: root/bindings.mdwn
blob: 9b3ea2b2bd6c64b3254e324f9da53ace8cb3960b (plain)
[[!img notmuch-logo.png alt="Notmuch logo" class="left"]]
# Notmuch Language Bindings [DRAFT]

The Notmuch library, `libnotmuch`, can be used from many programming
languages using the Notmuch language bindings. The [command line
interface](https://notmuchmail.org/doc/latest/man1/notmuch.html) and
the [[email clients and frontends|frontends]] are based on the
language bindings.

[[!toc levels=2]]

## C and C++

`libnotmuch` is a shared C library. [The API](https://git.notmuchmail.org/git/notmuch/tree/lib/notmuch.h)

The Notmuch command-line interface is based on the C library.

## Python

Notmuch includes Python bindings to the Notmuch shared library. Please refer to
the nice and extensive [Notmuch Python API
documentation](https://notmuchmail.org/doc/latest/python-bindings.html).

The bindings are very simple to use. As an example, given you have the Python
bindings installed (or simply set your PYTHONPATH environment variable to point
to the .../bindings/python directory), this snippet will produce a list of mails
matching the given expression:

        >>> from notmuch2 import Database
        >>> db = Database()
        >>> messages = list(db.messages('tag:inbox AND NOT tag:killed'))
        [...]

[The source](https://git.notmuchmail.org/git/notmuch/tree/bindings/python-cffi/)

## Ruby

[The source](https://git.notmuchmail.org/git/notmuch/tree/bindings/ruby/)

The [client for
vim](https://git.notmuchmail.org/git/notmuch/tree/vim/README) is in Ruby,
so worth a look.

## Go

[The source](https://git.notmuchmail.org/git/notmuch/tree/contrib/go/)