diff options
| author | Kelsey Judson <kelseyjudson@protonmail.com> | 2018-01-01 19:52:40 +1300 |
|---|---|---|
| committer | Kelsey Judson <kelseyjudson@protonmail.com> | 2018-01-01 19:52:40 +1300 |
| commit | 664b3ee8b72ef815227b9f1fd76ee0ca72f3704a (patch) | |
| tree | 9ebcaa0e2a2b86d487392c17159df35067cdb8f3 /vis-lua.c | |
| parent | 6557d0ee823418d3e78a4133fd5d5af9b5319bca (diff) | |
| download | vis-664b3ee8b72ef815227b9f1fd76ee0ca72f3704a.tar.gz vis-664b3ee8b72ef815227b9f1fd76ee0ca72f3704a.tar.xz | |
vis-open: fix for absolute and non-existent paths
When the shell cannot find any matching files, the glob is not expanded,
and vis-open will return the absolute path of the current working
directory (because dirname outputs '.'), followed by the filename,
followed by a literal '*'. This commit checks that the final path
actually exists, and if not, exits with status 1.
It also uses text_object_longword for the range to match, so that
absolute paths are accepted, and replaced properly (else it only works
back to the first '/').
Diffstat (limited to 'vis-lua.c')
| -rw-r--r-- | vis-lua.c | 9 |
1 files changed, 9 insertions, 0 deletions
@@ -2234,6 +2234,14 @@ static int file_mark_get(lua_State *L) { * @treturn Range range the range */ +/*** + * WORD text object. + * + * @function text_object_longword + * @tparam int pos the position which must be part of the word + * @treturn Range range the range + */ + static int file_text_object(lua_State *L) { Filerange range = text_range_empty(); File *file = obj_ref_check(L, 1, VIS_LUA_TYPE_FILE); @@ -2703,6 +2711,7 @@ void vis_lua_init(Vis *vis) { const char *name; } textobjects[] = { { VIS_TEXTOBJECT_INNER_WORD, "text_object_word" }, + { VIS_TEXTOBJECT_INNER_LONGWORD, "text_object_longword" }, }; for (size_t i = 0; i < LENGTH(textobjects); i++) { |
