diff options
author | Sigrid Solveig Haflínudóttir <sigrid@ftrv.se> | 2022-12-14 20:52:04 +0000 |
---|---|---|
committer | Sigrid Solveig Haflínudóttir <sigrid@ftrv.se> | 2022-12-14 20:52:04 +0000 |
commit | 73e115aab038880a68c9f73b5c49d8fa12d0e5e2 (patch) | |
tree | 7fdedd441243591da9adf1fc2106200ae0f66e6b /sys/src/cmd/vt/main.c | |
parent | 827fdabbf912fa94b6472cf21cbdc5c82306af01 (diff) |
vt: add OSC 7 support for plumbing of remote files without mount/bind magic
Diffstat (limited to 'sys/src/cmd/vt/main.c')
-rw-r--r-- | sys/src/cmd/vt/main.c | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/sys/src/cmd/vt/main.c b/sys/src/cmd/vt/main.c index cdf2e2586..764b24591 100644 --- a/sys/src/cmd/vt/main.c +++ b/sys/src/cmd/vt/main.c @@ -1007,13 +1007,30 @@ snarfsel(void) void plumbsel(void) { - char *s, wdir[1024]; + char *s, *e, wdir[WDIR]; + Plumbmsg msg; int plumb; s = selection(); if(s == nil || *s == 0) return; - if(getwd(wdir, sizeof wdir) == nil){ + memset(&msg, 0, sizeof(msg)); + msg.src = "vt"; + msg.type = "text"; + msg.ndata = strlen(s); + msg.data = s; + msg.wdir = wdir; + if(*osc7cwd != 0){ + strcpy(wdir, osc7cwd); + /* absolute path? adjust wdir and path */ + if(*s == '/'){ + if((e = strchr(wdir+3, '/')) != nil){ + *e = 0; + msg.data++; + msg.ndata--; + } + } + }else if(getwd(wdir, sizeof wdir) == nil){ free(s); return; } @@ -1021,7 +1038,7 @@ plumbsel(void) free(s); return; } - plumbsendtext(plumb, "vt", nil, wdir, s); + plumbsend(plumb, &msg); close(plumb); free(s); } |