nnn

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README | LICENSE

commit 54a307767c3713b1d4d818d7a37d2363a5a6a703
parent 8bbb752a790293aa442d7a15e8634eedfa7076f5
Author: Arun Prakash Jana <engineerarun@gmail.com>
Date:   Sat,  1 Apr 2017 10:48:18 +0530

Support opening in detail view mode

Diffstat:
MREADME.md | 6++++--
Mnnn.1 | 9++++++++-
Mnnn.c | 47++++++++++++++++++++++++++++++-----------------
3 files changed, 42 insertions(+), 20 deletions(-)

diff --git a/README.md b/README.md @@ -92,8 +92,10 @@ No plans of packaging at the time. Start nnn (default: current directory): - $ nnn [path_to_dir] -`>` indicates the currently selected entry. + $ nnn [-d] [path_to_dir] + + -d: open in detail view mode +`>` indicates the currently selected entry in nnn. ### Keyboard shortcuts diff --git a/nnn.1 b/nnn.1 @@ -6,6 +6,7 @@ .Nd free, fast, friendly file browser .Sh SYNOPSIS .Nm nnn +.Op Ar -d .Op Ar dir .Sh DESCRIPTION .Nm @@ -69,6 +70,12 @@ Quit .Pp Backing up one directory level will set the cursor position at the directory you came out of. +.Pp +.Nm +supports the following option: +.Pp +.Fl d + Open in detail view mode. .Sh CONFIGURATION .Nm is configured by modifying @@ -143,4 +150,4 @@ If you are using urxvt you might have to set backspacekey to DEC. .An Dimitris Papastamos Aq Mt sin@2f30.org , .An Arun Prakash Jana Aq Mt engineerarun@gmail.com . .Sh HOME -https://github.com/jarun/nnn +.Em https://github.com/jarun/nnn diff --git a/nnn.c b/nnn.c @@ -116,7 +116,6 @@ const char* size_units[] = {"B", "K", "M", "G", "T", "P", "E", "Z", "Y"}; * '------ */ -void (*printptr)(struct entry *ent, int active); void printmsg(char *); void printwarn(void); void printerr(int, char *); @@ -438,6 +437,8 @@ printent(struct entry *ent, int active) printw("%s%s\n", active ? CURSR : EMPTY, ent->name); } +void (*printptr)(struct entry *ent, int active) = &printent; + char* coolsize(off_t size) { @@ -933,9 +934,9 @@ nochange: } void -usage(char *argv0) +usage(void) { - fprintf(stderr, "usage: %s [dir]\n", argv0); + fprintf(stderr, "usage: nnn [-d] [dir]\n"); exit(1); } @@ -944,9 +945,7 @@ main(int argc, char *argv[]) { char cwd[PATH_MAX], *ipath; char *ifilter; - - if (argc > 2) - usage(argv[0]); + int opt = 0; /* Confirm we are in a terminal */ if (!isatty(0) || !isatty(1)) { @@ -954,24 +953,38 @@ main(int argc, char *argv[]) exit(1); } - if (getuid() == 0) - showhidden = 1; - initfilter(showhidden, &ifilter); - - printptr = &printent; + if (argc > 3) + usage(); - if (argv[1] != NULL) { - ipath = realpath(argv[1], cwd); - if (!ipath) { - fprintf(stderr, "%s: no such dir\n", argv[1]); - exit(1); + while ((opt = getopt(argc, argv, "d")) != -1) { + switch (opt) { + case 'd': + /* Open in detail mode, if set */ + showdetail = 1; + printptr = &printent_long; + break; + default: + usage(); } - } else { + } + + if (argc == optind) { + /* Start in the current directory */ ipath = getcwd(cwd, sizeof(cwd)); if (ipath == NULL) ipath = "/"; + } else { + ipath = realpath(argv[optind], cwd); + if (!ipath) { + fprintf(stderr, "%s: no such dir\n", argv[optind]); + exit(1); + } } + if (getuid() == 0) + showhidden = 1; + initfilter(showhidden, &ifilter); + /* Get the default desktop mime opener, if set */ opener = getenv("NNN_OPENER");