From da859e4c5d97d3ac38587f5d5ea5ea013b6f3808 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marc=20Andr=C3=A9=20Tanner?= Date: Mon, 27 Feb 2017 13:27:18 +0100 Subject: vis: allow useage of file dialog for :read command Fix #505 --- vis-cmds.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'vis-cmds.c') diff --git a/vis-cmds.c b/vis-cmds.c index 43d2fed..f0aba72 100644 --- a/vis-cmds.c +++ b/vis-cmds.c @@ -410,6 +410,24 @@ static bool cmd_edit(Vis *vis, Win *win, Command *cmd, const char *argv[], Curso return vis->win != oldwin; } +static bool cmd_read(Vis *vis, Win *win, Command *cmd, const char *argv[], Cursor *cur, Filerange *range) { + bool ret = false; + const size_t first_file = 3; + const char *args[MAX_ARGV] = { argv[0], "cat", "--" }; + const char **name = argv[1] ? &argv[1] : (const char*[]){ ".", NULL }; + for (size_t i = first_file; *name && i < LENGTH(args)-1; name++, i++) { + const char *file = file_open_dialog(vis, *name); + if (!file || !(args[i] = strdup(file))) + goto err; + } + args[LENGTH(args)-1] = NULL; + ret = cmd_pipein(vis, win, cmd, args, cur, range); +err: + for (size_t i = first_file; i < LENGTH(args); i++) + free((char*)args[i]); + return ret; +} + static bool has_windows(Vis *vis) { for (Win *win = vis->windows; win; win = win->next) { if (!win->file->internal) -- cgit v1.2.3