aboutsummaryrefslogtreecommitdiff
path: root/vis.c
diff options
context:
space:
mode:
authorMarc André Tanner <mat@brain-dump.org>2016-11-22 00:15:32 +0100
committerMarc André Tanner <mat@brain-dump.org>2016-11-22 14:59:05 +0100
commit0791cac97ee689195e593cfca89c0b63fb721479 (patch)
tree57166b070b0f7a23ea2a8a1d223136801c0e99c8 /vis.c
parentf555c00e0b0be14cd553c7c803d6136b86f2012b (diff)
downloadvis-0791cac97ee689195e593cfca89c0b63fb721479.tar.gz
vis-0791cac97ee689195e593cfca89c0b63fb721479.tar.xz
vis-lua: introduce pre-save hook
The first argument is the file object while the second argument denotes the full path to which it will be written. Path might be `nil` if the file is going to be written to stdout. The Lua function is expected to return a boolean value indicating whether the write operation should proceed or be aborted.
Diffstat (limited to 'vis.c')
-rw-r--r--vis.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/vis.c b/vis.c
index dcd7457..f8d3dbf 100644
--- a/vis.c
+++ b/vis.c
@@ -58,6 +58,7 @@ bool vis_event_emit(Vis *vis, enum VisEvents id, ...) {
vis->event->vis_start(vis);
break;
case VIS_EVENT_FILE_OPEN:
+ case VIS_EVENT_FILE_SAVE_PRE:
case VIS_EVENT_FILE_SAVE_POST:
case VIS_EVENT_FILE_CLOSE:
{
@@ -66,6 +67,9 @@ bool vis_event_emit(Vis *vis, enum VisEvents id, ...) {
break;
if (id == VIS_EVENT_FILE_OPEN && vis->event->file_open) {
vis->event->file_open(vis, file);
+ } else if (id == VIS_EVENT_FILE_SAVE_PRE && vis->event->file_save_pre) {
+ const char *path = va_arg(ap, const char*);
+ ret = vis->event->file_save_pre(vis, file, path);
} else if (id == VIS_EVENT_FILE_SAVE_POST && vis->event->file_save_post) {
const char *path = va_arg(ap, const char*);
vis->event->file_save_post(vis, file, path);