Commit graph

431 commits

Author SHA1 Message Date
Arun Prakash Jana 994ee0d790
Show dir symbol in symlink file stat 2018-08-17 05:55:00 +05:30
Arun Prakash Jana 8b8e644cf5
Remove readline dep and use native prompt
- `nnn` is all about navigational convenience so the user doesn't have to type
- the binary size increases due to readline linkage
- alternative workflow: ^G, cd, `nnn`
- readline required using the prompt and the history would stay after quit
2018-08-16 22:54:49 +05:30
Arun Prakash Jana 9d3f75f63b
Update program help 2018-08-16 20:36:07 +05:30
Arun Prakash Jana 70df4fb3c2
Use symbol @/ to denote symbolic link to directory 2018-08-16 20:14:07 +05:30
Arun Prakash Jana f0ca1e7785
Document that filenames are not unquoted 2018-08-16 20:13:31 +05:30
Arun Prakash Jana 68f0af6220
Prepare for release v1.9 2018-08-10 07:13:53 +05:30
Arun Prakash Jana a2caf24592
Remove inactive code 2018-08-10 06:50:36 +05:30
Arun Prakash Jana ca3b27daf2
Forward filtering optimization 2018-08-08 05:04:34 +05:30
Arun Prakash Jana bf36462a2b
Implement dir auto-select in nav-as-you-type mode.
If only one entry matches regex filter and it it a directory, cd into it.
2018-08-08 04:57:49 +05:30
Arun Prakash Jana d849779f00
nnn is a file manager now 2018-08-07 04:52:39 +05:30
Arun Prakash Jana 7707988fd2
PR #111: Multiple string constants concatenate since C99 2018-08-06 20:17:35 +05:30
Arun Prakash Jana af3d0a69bc
Show selection name in archive option 2018-07-19 04:44:24 +05:30
Arun Prakash Jana c19706006d
Reduce indentation level 2018-07-12 19:59:07 +05:30
Arun Prakash Jana 9995facfb9
Fix checkpatch warnings 2018-07-08 21:32:26 +05:30
Arun Prakash Jana 054465c00d
Fix indentation 2018-07-06 13:35:18 +05:30
Arun Prakash Jana 042d008392
Pass current file name as first argument to custom scripts 2018-07-04 19:35:36 +05:30
Arun Prakash Jana 74a0dc0a97
Replace multiple if with switch 2018-07-04 19:02:47 +05:30
Arun Prakash Jana cd318db1b2
Handle '\b' at prompt in earlier curses (rhel25) 2018-07-04 18:48:43 +05:30
Arun Prakash Jana 9a7660fb62
Add Space as 2nd file-path copier key (easy to use) 2018-06-27 20:38:41 +05:30
Arun Prakash Jana 7a1dd541a6
Support multiple scripts 2018-06-17 21:47:19 +05:30
Arun Prakash Jana f19bf5bbad
Use macro instead if hardcoded value 2018-05-19 01:36:17 +05:30
Arun Prakash Jana 8a1786c49f
Fix #108: wrap user and group strings for NULL 2018-05-19 00:46:56 +05:30
Arun Prakash Jana 3625d5adbb
Remove redundant message 2018-05-10 17:23:10 +05:30
Arun Prakash Jana 5902af230d
Fix #106: use stock strlen() & strcmp().
The binary size increases from 49184 to 49216.
2018-05-09 16:57:01 +05:30
Arun Prakash Jana 3b02014897
Support CYGWIN opener 2018-05-07 17:59:31 +05:30
Arun Prakash Jana d6c0e1093a
Prepare for release v1.8 2018-05-02 03:23:38 +05:30
Arun Prakash Jana 65aa62c48e
Merge fs functions 2018-04-26 00:56:45 +05:30
Arun Prakash Jana 02a2551a17
Use static variables for crc8fast 2018-04-26 00:36:51 +05:30
Arun Prakash Jana 3e34272324
Use a smaller buffer 2018-04-26 00:23:31 +05:30
Arun Prakash Jana a6016e8407
Use concise change dir prompt 2018-04-25 23:59:36 +05:30
Arun Prakash Jana 465d619b7f
Show cp file when NNN_NO_X is set 2018-04-25 23:25:40 +05:30
Arun Prakash Jana 6dc4176f57
Retire readinput() 2018-04-25 23:09:00 +05:30
Arun Prakash Jana 4fbb36b66b
Tidy up xreadline() 2018-04-25 22:46:21 +05:30
Arun Prakash Jana 18deea6383
Handle all ^ chars in main loop 2018-04-25 22:46:19 +05:30
Arun Prakash Jana 33cec52d4e
Reload contents on archive create, extract 2018-04-25 22:46:09 +05:30
Arun Prakash Jana c27f58555e
Support archive creation 2018-04-25 05:40:07 +05:30
Arun Prakash Jana 28f303699c
Use simpler descriptions 2018-04-24 08:55:14 +05:30
Arun Prakash Jana c6f9af931f
multi-cp: show number of cherrypicked files 2018-04-22 21:37:45 +05:30
Arun Prakash Jana ebb4725204
Two copy modes are exclusive 2018-04-17 02:22:23 +05:30
Arun Prakash Jana f652a4fecb
Fix calculation of remaining copybuf bytes
Start with PATH_MAX bytes and then double each time.
2018-04-14 20:40:07 +05:30
Arun Prakash Jana 511a1031b5
Suppress copier script trace 2018-04-14 14:47:34 +05:30
Arun Prakash Jana 8e4ebbed4c
Move volume capacity, free up 2018-04-14 10:21:39 +05:30
arcadius3d 46dd9f2c4d Added brackets for tcc compliance (#103) 2018-04-10 06:58:52 +05:30
Arun Prakash Jana 48cf378c7b
Prefer VISUAL, if defined over EDITOR 2018-04-08 06:15:24 +05:30
Jakub Jirutka a85ce3348f Show hidden files by default when env NNN_SHOW_HIDDEN is set (#100) 2018-04-04 06:33:26 +05:30
Arun Prakash Jana f09bd47f26
Update help 2018-04-01 23:39:51 +05:30
Arun Prakash Jana 1653414039
Add more phony targets 2018-04-01 22:51:55 +05:30
Arun Prakash Jana 12ffff243c
Show more useful info in help 2018-04-01 03:43:16 +05:30
Arun Prakash Jana 1ea41f2dd0
Show help on typing ? at empty filter prompt 2018-03-31 21:02:35 +05:30
Arun Prakash Jana 3a515585d1
Support screen locking on Linux 2018-03-30 21:23:28 +05:30
Arun Prakash Jana 1e1708c2ec
New shortcut ^] to spawn shell in current dir 2018-03-30 20:53:25 +05:30
Arun Prakash Jana bfb814bca6
Support ^A, ^E, ^U and ignore ^ chars at rename prompt 2018-03-28 08:08:02 +05:30
Arun Prakash Jana 0e623010e6
Switch to current dir to run editor/vidir 2018-03-19 06:18:25 +05:30
Arun Prakash Jana 8d7a56cbaa
Run a custom script support 2018-03-19 06:17:58 +05:30
Arun Prakash Jana 5624905803
Omit sorting if no matches/entries 2018-03-19 03:54:19 +05:30
Arun Prakash Jana dbf60734ba
Free regex 2018-03-19 03:42:56 +05:30
Arun Prakash Jana 298ce7639e
Retain nav-as-you-type mode after exiting spawned shell 2018-03-16 22:46:03 +05:30
Arun Prakash Jana 70c39a063d Fix #81: GUI programs shouldn't exit on closing the parent terminal
Issue reproduction steps:

1. Spawn a GUI program e.g. open a PDF file in zathura or evince.
2. Without quitting `nnn` close the terminal.
3. Notice that the application quits too.

Can be a nagging issue if someone is not using a drop-down terminal.

Fix: detach a GUI child and start it in a new session.

There are 2 aspects to this commit:

- It fixes #81: in cases where we do not wait for a spawned child we can assume
that the child is a GUI process. We detach and spawn the child in a new session.
- It changes the behaviour to @Rahi374's suggestion in PR #40 i.e. invoke the DE
opener in F_NOWAIT mode.
2018-03-16 04:39:49 +05:30
Arun Prakash Jana 460984c154
Replace all sprintf() with snprintf() 2018-03-09 02:32:22 +05:30
Arun Prakash Jana eddc0c93ba
Fix #95: Add ^I as an alternative to Insert 2018-03-07 18:32:48 +05:30
Arun Prakash Jana 91ef394dbd
Integer calculation-only coolsize() 2018-03-05 18:21:39 +05:30
Arun Prakash Jana 928699d4a4
float is suficient and a _little_ faster in coolsize() 2018-03-05 08:46:34 +05:30
Arun Prakash Jana 4d93a7f9fe Revert "Integer-only coolsize() (#84)"
This reverts commit 7be0726164.
2018-03-05 01:12:10 +05:30
Arun Prakash Jana 58d90bfcf6 Revert "fix rounding carry in coolsize() (#91)"
This reverts commit 7654a2e0c6.
2018-03-05 01:11:29 +05:30
Arun Prakash Jana 90e8b81c3e Revert "Fix compilation warning"
This reverts commit 30fdb6ff11.
2018-03-05 01:11:14 +05:30
Arun Prakash Jana 30fdb6ff11
Fix compilation warning 2018-03-05 00:57:31 +05:30
Alex Suykov 7654a2e0c6 fix rounding carry in coolsize() (#91)
Sizes like 1.999 get rounded to (1 + 100/100), which should be displayed
as 2.00 not 1.100 as simple %i.%02i would do without additional measures.
2018-03-05 00:48:10 +05:30
Arun Prakash Jana 3036b8a733
Fix #89: User-specific tmp file for copying filenames
Use distinct (by username) tmp filename to copy file paths.

The pattern used is:
/tmp/nnncp$USER

If username is 'arun', the file name is `/tmp/nnncparun`.
2018-03-04 10:37:18 +05:30
Arun Prakash Jana 43134cdfa8
Support ~, - and & keyboard shortcuts at the bookmark prompt.
In nav-as-you-type mode only control keys are understood when filter is enabled.
We need some way to quicly jump HOME, last visited dir or start dir.
2018-03-03 19:19:06 +05:30
Arun Prakash Jana 10e84a28ed
Both src and dst should be alignment checked separately
The following pattern passes the current check:

src  - 1010
dst  - 0101
mask - 1111
2018-03-03 01:08:15 +05:30
Alex Suykov 7be0726164 Integer-only coolsize() (#84) 2018-03-01 13:22:25 +05:30
Arun Prakash Jana 0f89943d95
Prepare for release v1.7 2018-02-28 01:54:42 +05:30
Arun Prakash Jana 11dac5e3db
Add shortcut ^G to quit and cd 2018-02-24 22:54:54 +05:30
Arun Prakash Jana 58e27fb2de
Use macros for external utils 2018-02-24 20:45:50 +05:30
Arun Prakash Jana ee733a39b1
Support batch file rename in vidir 2018-02-24 19:46:58 +05:30
Arun Prakash Jana a963d166c8
Enable file extract in nav-as-you-type mode 2018-02-24 10:43:06 +05:30
Arun Prakash Jana b22d8c32f9
Support file path copy when X is unavailable 2018-02-24 07:49:59 +05:30
Arun Prakash Jana 035bcdb198
Re-populate after spawning shell 2018-02-15 19:21:58 +05:30
Arun Prakash Jana af35b8a27c
Start dir watch, preserve cur entry when navigate-as-you-type is disabled 2018-02-13 13:28:18 +05:30
Arun Prakash Jana 19e5990d3a
Better message for multi-copy 2018-02-04 22:54:58 +05:30
Arun Prakash Jana 991ef57340
Do not show quotes on ^K 2018-01-29 20:49:38 +05:30
Arun Prakash Jana 1d067df0b5
Show copymode on/off 2018-01-28 12:44:29 +05:30
Arun Prakash Jana 1f87bb3bcb
Interpret ^T in filter mode 2018-01-28 12:23:23 +05:30
Arun Prakash Jana d48e91f011
Support file path quote on single copy 2018-01-28 12:04:56 +05:30
Arun Prakash Jana 6da9d5f499 Support file path quote on copy 2018-01-28 11:34:18 +05:30
Arun Prakash Jana e797a7eefd
Use macro for CRC8 table length 2018-01-19 20:39:23 +05:30
Arun Prakash Jana 98c79a69b5
Redraw if no entries when navigate-as-you-type is turned off
The main reason to do this is to start watching the current dir for changes. In
any case, this does not harm; if there are dir entries shown on redraw that's
better than showing nothing.
2018-01-17 20:22:07 +05:30
Arun Prakash Jana cbfeec5625
keybind to pin current dir - b 2018-01-17 19:32:22 +05:30
Arun Prakash Jana e359f60294
Set to last selection if filter is empty 2018-01-14 14:05:19 +05:30
Arun Prakash Jana bac199d0cf
Use consistent date format 2018-01-14 12:43:20 +05:30
Arun Prakash Jana 9f4199481a
Improve common message handling 2018-01-14 12:11:46 +05:30
Arun Prakash Jana 9bcca1a45c
Use concise and lowercase messages 2018-01-14 10:20:41 +05:30
Arun Prakash Jana e6580c38bf
Replace snprintf() with xstrlcpy() 2018-01-14 03:27:24 +05:30
Arun Prakash Jana a40d29ba9f
Support multiple file path copy
Design overview:

We are introducing multiple file path copy as a mode which can be toggled using
the keybind `^Y`. `^K` works as the individual entry selector. If the user wants
to select a range, (s)he can press `^Y` on the first entry and `^Y` on the last
entry.

We subscribe to notifications, so we need a fail-proof way to detect changes in
the directory contents. For example, if a file is deleted, it becomes difficult
to get the names of all the files in a range containing that file. If the file
is on a range boundary it would lead to wrong calculations. To handle this the
right way we use CRC8 checksum of all the visible entries in the directory. The
checksum is calculated based on the file information buffer. If the CRC changes
on a redraw(), we reset the multi-select mode.

New line (`\n`) works as the delimiter between file paths. Note that you may have
to disable IFS in the `NNN_COPIER` script to show file paths separated by spaces.
2018-01-14 01:43:30 +05:30
Arun Prakash Jana 4800250814
Key changes: ^F - extract archive, ^X - quit 2018-01-13 09:28:29 +05:30
Arun Prakash Jana 34b650aac8
Remap ^S and ^Q.
The replacement keys are:

^J - toggle du mode
^Y - quit

The change is done because ^S, ^Q keybinds are lost in the following case:
- start nnn
- navigate to a different directory
- spawn a shell
- exit the shell

The issue happens only with the 'special' keybinds like ^S, ^Q, ^Z... which get
their original shell interpretation back.

So we are replacing these 2 keybinds with 2 'non-special' combinations.
2018-01-09 14:21:09 +05:30
Arun Prakash Jana 827f7fd662
Sufficient to use refresh() after exitcurses() 2018-01-09 13:32:57 +05:30
Arun Prakash Jana 0a1776e18e
Add shortcut ^S to toggle du mode 2018-01-09 00:31:15 +05:30
Arun Prakash Jana f6fd15e088
Explicitly optimize modulo ops 2018-01-09 00:13:11 +05:30
Arun Prakash Jana 77fec499cb
Open with GUI app - Suppress stdout, stderr 2018-01-08 03:27:41 +05:30