commit 5cde236501e1894e0ee08cbfd211a08fee7b6691 from: Marcel Rodrigues date: Thu Jun 04 17:32:08 2015 UTC Merge pull request #3 from Vifon/shell_cd Quick and dirty support for cd in bash and zsh commit - b084f13e9acf971b9c1336617825d5a42497acd4 commit + 5cde236501e1894e0ee08cbfd211a08fee7b6691 blob - 4fc21ce0e5798d87f88459f89e7dc43aed8e89bc blob + c8604deec3a65def085a7ebc6690b305e6170c54 --- rover.c +++ rover.c @@ -759,8 +759,9 @@ main(int argc, char *argv[]) const char *key; DIR *d; EditStat edit_stat; + const char *save_cwd_file = NULL; - if (argc == 2) { + if (argc >= 2) { if (!strcmp(argv[1], "-v") || !strcmp(argv[1], "--version")) { printf("rover %s\n", RV_VERSION); return 0; @@ -776,6 +777,10 @@ main(int argc, char *argv[]) "Rover homepage: .\n" ); return 0; + } else if (argc > 2 && !strcmp(argv[1], "--save-cwd")) { + --argc; ++argv; + save_cwd_file = argv[1]; + --argc; ++argv; } } init_term(); @@ -1097,5 +1102,10 @@ main(int argc, char *argv[]) free_rows(&rover.rows, rover.nfiles); free_marks(&rover.marks); delwin(rover.window); + if (save_cwd_file != NULL) { + FILE *fd = fopen(save_cwd_file, "w"); + fputs(rover.cwd[rover.tab], fd); + fclose(fd); + } return 0; } blob - /dev/null blob + 33b4107fc6cf5c50dbb20b86f65566d4f5fe77f6 (mode 755) --- /dev/null +++ rover.sh @@ -0,0 +1,17 @@ +#!/bin/sh + +# Based on ranger launcher. +# +# Usage: ". ./rover.sh [/path/to/rover]" + +tempfile="$(mktemp)" +rover="${1:-rover}" +test -z "$1" || shift +"$rover" --save-cwd "$tempfile" "${@:-$(pwd)}" +returnvalue=$? +test -f "$tempfile" && +if [ "$(cat -- "$tempfile")" != "$(echo -n `pwd`)" ]; then + cd "$(cat "$tempfile")" +fi +rm -f -- "$tempfile" +return $returnvalue