Skip to content

Commit

Permalink
vis: display lua search paths in :help output
Browse files Browse the repository at this point in the history
  • Loading branch information
martanne committed Apr 23, 2016
1 parent d6effd0 commit 436e2c1
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 1 deletion.
15 changes: 15 additions & 0 deletions vis-cmds.c
Original file line number Diff line number Diff line change
@@ -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"
Expand Down Expand Up @@ -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;
}
Expand Down
13 changes: 12 additions & 1 deletion vis-lua.c
Original file line number Diff line number Diff line change
Expand Up @@ -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) { }
Expand Down Expand Up @@ -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;
Expand All @@ -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)
Expand Down
6 changes: 6 additions & 0 deletions vis-lua.h
Original file line number Diff line number Diff line change
Expand Up @@ -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*);
Expand Down

0 comments on commit 436e2c1

Please sign in to comment.