Vino is an advanced Emacs program tailored for managing wine cellars. It boasts a variety of built-in features, including wine rating and cellar tracking, alongside extension points for customisation. Importantly, Vino does not come preloaded with a database of wine-related information such as regions, appellations, grape varieties, producers, or specific wines. This design choice allows for a more personalised experience.
Explore Barberry Garden to see the potential of what can be developed using Vino and its companion, Vulpea.
Vino preserves international characters (accents, diacritics) in note titles. A wine or region named “Côtes du Rhône” keeps its proper spelling.
To search using ASCII characters (e.g., typing “Cotes” to find “Côtes”), you have two options:
- Completion framework support: If you use orderless, prefix your search with
%to enable char-fold matching. For example,%cotesmatches “Côtes”. - Aliases: Add an ASCII alias to your note. Vino expands aliases during selection, so both spellings become searchable:
:PROPERTIES: :ID: ... :ALIASES: "Cotes du Rhone" :END: #+title: Côtes du Rhône
A wine entry is titled after its producer, name and vintage, so a list of them tells you nothing about which one to open. Vino annotates each candidate with colour, country, rating and how many bottles are left:
Arianna Occhipinti Bombolieri BB 2017 red Italy 4.5 x2
Annotations are part of the candidate string, so they are searchable too: type Italy or rose to narrow the list.
Each section has its own face, so the list can be scanned by colour and by what is worth opening: see vino-annotation-colour-faces and the vino-annotation-* faces. Set vino-entry-annotate-fn to your own function to change what is shown, or to nil to turn annotations off.
A cellar built over years drifts: a region without a country, a rating without a total, a price that is a typo. The vino-schema module describes every vino note type as a Vulpea schema, so you can ask what is broken:
(require 'vino-schema)
(vino-schema-setup)After that the Vulpea validation functions work on wine notes: vulpea-schema-validate-all for one schema, vulpea-schema-note-violations for the note at hand, vulpea-schema-collection-health for the whole collection. With vulpea-ui installed, vulpea-ui-schema-dashboard renders the same data.
The schemas follow what vino-entry-create writes today, which means two fields are required that older entries may lack: volume, which moved to the wine entry in v0.5.0, and country, which both origin selection strategies write. Entries created before those changes are reported as incomplete.
Each schema takes its fields from a variable, so you can describe your own metadata without touching the rest:
(add-to-list 'vino-schema-entry-fields
'(:key "drink from" :type number)
'append)
(vino-schema-setup)vino-rename renames a producer, grape, country, region or appellation and follows the change through the collection. Every link description that reads exactly like the old title is rewritten, so a wine keeps naming its grapes correctly, a region its country, and prose the note it points at. A description that reads differently is left alone, on the assumption it was written that way on purpose.
A wine entry is titled after its producer, and a rating after its wine, so renaming a producer also retitles every wine it made and every rating of those wines. vino-producer-rename is the same thing narrowed to producers, returning the wines it touched.
Wine entries and ratings cannot be renamed this way, since their titles are derived from metadata and a title given directly is undone by the next vino-entry-update. Rename those by changing the metadata they are built from: the name or vintage of a wine, the date of a rating.
Files keep their names. Vino names a producer file after a timestamp and a slug, and a wine entry after its id, so a file name is a stable handle rather than a copy of the title; use vulpea-rename-file if you want to rename one anyway.
For installation, our wiki provides both concise and comprehensive guides suitable for various methods. It also offers detailed instructions on configuring Vino and organising your notes effectively.
Additionally, the wiki includes guidance on how to enhance Vino’s functionality, complete with practical examples.
Logo was created by Iryna Rutylo.
If you enjoy this project, you can support its development via GitHub Sponsors or Patreon.
