aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lua/plugins/complete-filename.lua3
-rw-r--r--vis-lua.c8
-rwxr-xr-xvis-open13
3 files changed, 19 insertions, 5 deletions
diff --git a/lua/plugins/complete-filename.lua b/lua/plugins/complete-filename.lua
index ceffdd2..03cc313 100644
--- a/lua/plugins/complete-filename.lua
+++ b/lua/plugins/complete-filename.lua
@@ -32,7 +32,8 @@ vis:map(vis.modes.INSERT, "<C-x><C-o>", function()
local file = win.file
local pos = win.selection.pos
if not pos then return end
- local range = file:text_object_word(pos > 0 and pos-1 or pos);
+ -- TODO do something clever here
+ local range = file:text_object_longword(pos > 0 and pos-1 or pos);
if not range then return end
if range.finish > pos then range.finish = pos end
local prefix = file:content(range)
diff --git a/vis-lua.c b/vis-lua.c
index 83052e9..124e380 100644
--- a/vis-lua.c
+++ b/vis-lua.c
@@ -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);
diff --git a/vis-open b/vis-open
index 997aa49..920239c 100755
--- a/vis-open
+++ b/vis-open
@@ -49,10 +49,15 @@ if [ $# -eq 1 -a "$ALLOW_AUTO_SELECT" = 1 ]; then
exec "$0" -p "$VIS_MENU_PROMPT" -f .. $(ls -1)
else
# We've found a single item, and it's not a directory,
- # so it must be a filename (or file-like thing) to open.
- cd "$(dirname "$1")"
- echo "$(pwd -P)"/"$(basename "$1")"
- exit 0
+ # so it must be a filename (or file-like thing) to open,
+ # unless the parent directory does not exist.
+ if [ -d "$(dirname "$1")" ]; then
+ cd "$(dirname "$1")"
+ echo "$(pwd -P)"/"$(basename "$1" | sed 's/\*$//')"
+ exit 0
+ else
+ exit 1
+ fi
fi
fi