diff options
| author | Marc André Tanner <mat@brain-dump.org> | 2016-04-23 11:44:11 +0200 |
|---|---|---|
| committer | Marc André Tanner <mat@brain-dump.org> | 2016-04-23 11:44:11 +0200 |
| commit | 436e2c1ff8ab8ac4f8bc4078312838c4fc5d226e (patch) | |
| tree | 75f81894eeb9aca9d241e8172d0ceefb200a56fc | |
| parent | d6effd021d2aa2b6c452f229046a85c5f1a252a7 (diff) | |
| download | vis-436e2c1ff8ab8ac4f8bc4078312838c4fc5d226e.tar.gz vis-436e2c1ff8ab8ac4f8bc4078312838c4fc5d226e.tar.xz | |
vis: display lua search paths in :help output
| -rw-r--r-- | vis-cmds.c | 15 | ||||
| -rw-r--r-- | vis-lua.c | 13 | ||||
| -rw-r--r-- | vis-lua.h | 6 |
3 files changed, 33 insertions, 1 deletions
@@ -1,6 +1,7 @@ /* this file is included from sam.c */ #include <termkey.h> +#include "vis-lua.h" #ifndef VIS_OPEN #define VIS_OPEN "vis-open" @@ -659,6 +660,20 @@ static bool cmd_help(Vis *vis, Win *win, Command *cmd, const char *argv[], Curso "(prefix with C-, S-, and M- for Ctrl, Shift and Alt respectively)\n\n"); print_symbolic_keys(vis, txt); + const char *paths = vis_lua_paths_get(vis); + if (paths) { + char *copy = strdup(paths); + text_appendf(txt, "\n Lua paths used to load runtime files " + "(? will be replaced by filename):\n\n"); + for (char *elem = copy, *next; elem; elem = next) { + if ((next = strstr(elem, ";"))) + *next++ = '\0'; + if (*elem) + text_appendf(txt, " %s\n", elem); + } + free (copy); + } + text_save(txt, NULL); return true; } @@ -17,6 +17,8 @@ #if !CONFIG_LUA +bool vis_lua_path_add(Vis *vis, const char *path) { return true; } +const char *vis_lua_paths_get(Vis *vis) { return NULL; } void vis_lua_init(Vis *vis) { } void vis_lua_start(Vis *vis) { } void vis_lua_quit(Vis *vis) { } @@ -1033,7 +1035,7 @@ static bool vis_lua_path_strip(Vis *vis) { return true; } -static bool vis_lua_path_add(Vis *vis, const char *path) { +bool vis_lua_path_add(Vis *vis, const char *path) { if (!path) return false; lua_State *L = vis->lua; @@ -1049,6 +1051,15 @@ static bool vis_lua_path_add(Vis *vis, const char *path) { return true; } +const char *vis_lua_paths_get(Vis *vis) { + lua_State *L = vis->lua; + if (!L) + return NULL; + lua_getglobal(L, "package"); + lua_getfield(L, -1, "path"); + return lua_tostring(L, -1); +} + void vis_lua_init(Vis *vis) { lua_State *L = luaL_newstate(); if (!L) @@ -11,6 +11,12 @@ typedef struct lua_State lua_State; #include "vis.h" +/* add a directory to consider when loading lua files */ +bool vis_lua_path_add(Vis*, const char *path); +/* get semi colon separated list of paths to load lua files */ +const char *vis_lua_paths_get(Vis*); + +/* various event handlers, triggered by the vis core */ void vis_lua_init(Vis*); void vis_lua_start(Vis*); void vis_lua_quit(Vis*); |
