diff options
| author | Marc André Tanner <mat@brain-dump.org> | 2018-02-28 19:53:28 +0100 |
|---|---|---|
| committer | Marc André Tanner <mat@brain-dump.org> | 2018-02-28 19:53:28 +0100 |
| commit | fdb56b003c9e0a00ded2878b0c174a7780bb39b2 (patch) | |
| tree | 2f10670e311cfb379cbde19c26c200c0c29ac478 | |
| parent | 113a6a6a84198432ed9258f4abd5ec490a64c518 (diff) | |
| parent | 0be1e2e70b797e7e3149d777a26bc69966079e07 (diff) | |
| download | vis-fdb56b003c9e0a00ded2878b0c174a7780bb39b2.tar.gz vis-fdb56b003c9e0a00ded2878b0c174a7780bb39b2.tar.xz | |
Merge branch 'vis-open-fixes' of https://github.com/kj/vis
| -rw-r--r-- | lua/plugins/complete-filename.lua | 3 | ||||
| -rw-r--r-- | vis-lua.c | 8 | ||||
| -rwxr-xr-x | vis-open | 13 |
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) @@ -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); @@ -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 |
