commit a6eeeca9635652f025f38281f152c650036f8b33 from: Marcel Rodrigues date: Sun Dec 18 12:58:38 2016 UTC Add 'y' & 'p' to copy & paste location. commit - 7a9072e20ad89d8fd88a5b1c19e1dc3952cea755 commit + a6eeeca9635652f025f38281f152c650036f8b33 blob - ef7ad987f78e26ca6ec40a0c15b0428e89549b2b blob + b6c33b74dcd09bf028b2d9d0db4b3e379f84fd44 --- config.h +++ config.h @@ -14,6 +14,8 @@ #define RVK_CD_UP "h" #define RVK_HOME "H" #define RVK_TARGET "t" +#define RVK_COPY_PATH "y" +#define RVK_PASTE_PATH "p" #define RVK_REFRESH "r" #define RVK_SHELL "^M" #define RVK_VIEW " " blob - 640d0d5d9d399ef66b80e5f67cc850a9791edf70 blob + a942d883b97b83f390dd3d00f32964a2e08b03c7 --- rover.c +++ rover.c @@ -36,6 +36,7 @@ static char BUF1[BUFLEN]; static char BUF2[BUFLEN]; static char INPUT[BUFLEN]; +static char CLIPBOARD[BUFLEN]; static wchar_t WBUF[BUFLEN]; /* Paths to external programs. */ @@ -1080,6 +1081,8 @@ main(int argc, char *argv[]) rover.window = subwin(stdscr, LINES - 2, COLS, 1, 0); init_marks(&rover.marks); cd(1); + strcpy(CLIPBOARD, CWD); + strcat(CLIPBOARD, ENAME(ESEL)); while (1) { ch = rover_getch(); key = keyname(ch); @@ -1180,6 +1183,17 @@ main(int argc, char *argv[]) strcat(CWD, "/"); try_to_sel(bname); *bname = '\0'; + update_view(); + } else if (!strcmp(key, RVK_COPY_PATH)) { + strcpy(CLIPBOARD, CWD); + strcat(CLIPBOARD, ENAME(ESEL)); + } else if (!strcmp(key, RVK_PASTE_PATH)) { + strcpy(BUF1, CLIPBOARD); + strcpy(CWD, dirname(BUF1)); + strcat(CWD, "/"); + cd(1); + strcpy(BUF1, CLIPBOARD); + try_to_sel(basename(BUF1)); update_view(); } else if (!strcmp(key, RVK_REFRESH)) { reload();