Commit graph

1863 commits

Author SHA1 Message Date
Luuk van Baal bc4233767a
Fix git pathspec for gitstatus patch 2022-10-01 17:06:30 +02:00
Arun Prakash Jana 59eed597c2
Fix #1498: count broken when selection is updated outside nnn 2022-09-28 00:30:26 +05:30
Arun Prakash Jana de3ad1b146
Fix build break 2022-09-19 21:36:04 +05:30
pataquets 78019a758e Detect key collisions: make clear everywhere that it exits afterwards. 2022-09-12 23:04:54 +02:00
Luuk van Baal 4f57e0df37
Show selected items in rm msg
Close https://github.com/jarun/nnn/issues/1479
2022-09-08 20:07:34 +02:00
Arun Prakash Jana f56a8caf65
Use correct data type for key collision detection 2022-08-23 19:00:45 +05:30
NRK f8ee991254 xstrdup: use memcpy
the length is already known, so memcpy should be faster than xstrsncpy.
2022-08-16 19:31:18 +06:00
NRK 29a5992dee use standard C11 alignas
nnn source code already uses C11, which introduced `_Alignas` [^0] as a
standardized alternative to __attribute__((aligned)).

there are no other usage of `__attribute__` in the nnn source code, so
in theory this should make things more portable across compilers.

also removes an unnecessary usage of `alloca()` with an aligned constant
sized buffer instead.

[^0]: https://en.cppreference.com/w/c/language/_Alignas
2022-08-11 11:31:35 +06:00
KlzXS 65dec55e23
Improved chunk allocation logic
Found memory deallocation edge case

Update and move chunk limit check

Generalize maximum size of input

Remove hard-coded values

Remove superfluous check before free

Let the kernel deal with extra data

Handle signals while reading

Conform to the manpage

Make CI happy

use `size_t` instead of `ssize_t`

`ssize_t` was used just so `--i` when `i` was zero would become -1
instead of SIZE_MAX. for looping through something in reverse order, the
"goes-to" operator (`-->`) can be used instead which doesn't require `i`
to be signed anymore.

remove useless blank line

use a normal loop

don't see any reason why freeing in reverse order would've been needed.

Co-authored-by: N-R-K <nrk@disroot.org>
2022-08-03 17:38:19 +02:00
Arun Prakash Jana ab9d8bee89
Fix #1449: ^N not working 2022-08-01 23:41:04 +05:30
Arun Prakash Jana a7ebc7858a
Key 'J' to jump to entry number or relative offset 2022-07-31 18:54:47 +05:30
Arun Prakash Jana e8acae3274
Continue listing when max files/size is exceeded 2022-07-31 12:49:42 +05:30
Arun Prakash Jana 21eebbb003
File list mode changes
- support listing maximum 16K files
- check if target directory exists before directory tree creation
  in most of the cases many files will be under the same directory
- make frequently used function 'inline'
2022-07-31 11:11:32 +05:30
Arun Prakash Jana e73b57c78a
Option -B to use bsdtar as archive tool 2022-07-29 22:35:43 +05:30
Arun Prakash Jana b76cea3a34 Revert "Patch #1386: make bsdtar the default archive handler"
This reverts commit e104b749be.
2022-07-29 22:14:00 +05:30
Arun Prakash Jana 83825a7d11
Fix rm prompt
Esc - cancels the search
y/Y - adds the force option
n/N/any other key - prompts for every file
2022-07-28 19:38:55 +05:30
N-R-K f618b78866
Makefile: more robust generated header tracking (#1439)
give each generated header it's own unique file so that it's not
possible to try and build `O_EMOJI=1` with the generated header for
`O_NERD=1`.
2022-07-26 20:26:49 +05:30
Arun Prakash Jana 0988268a61
Prepare for release v4.6 Absinthe 2022-07-26 19:28:44 +05:30
Tharindu Abeydeera 98287158aa
Add Elixir icon (#1437)
* Added icons for erlang, elixir and lockfile

* Lockfile icon updated

* Added colors for Erlang and elixir

* Added few more color variations and configured colors and file
extensions

* remove erlang and lock, use 1 color for elixir

Co-authored-by: Tharindu Abeydeera <tharindu.a@vizuamatix.com>
Co-authored-by: NRK <nrk@disroot.org>
2022-07-25 19:40:00 +05:30
NRK e6b6466c49 icons-hash: comments and cleanups
adds some comments, references and cleanups. no change in functionality.
2022-07-25 18:34:36 +06:00
Arun Prakash Jana f415924c7e
Remove redundant spaces 2022-07-24 20:07:27 +05:30
NRK fe9c1bbb3a icons: use a compact array
a lot of the extension use the same icon. this can be exploited via
having an array with all the unique icons and then storing a single byte
index into the unique array.

when using `O_EMOJI` this results in around ~1.7KiB drop in the total
table size. `O_NERD` and `O_ICONS` get roughly ~0.5KiB savings.
2022-07-24 16:24:11 +06:00
NRK 63a254951d icons-hash: some minor cleanups 2022-07-24 16:24:11 +06:00
NRK 12f5faa10d icons: replace double-width icons 2022-07-24 16:06:14 +06:00
NRK f1932967e2 icons: use COLOR_C for go files 2022-07-24 16:06:14 +06:00
Arun Prakash Jana 197717ce68
Enable hidden when opening a hidden file 2022-07-23 09:33:11 +05:30
NRK e98d9288d2 some cleanups and comments 2022-07-22 21:33:35 +06:00
NRK c3a42f0d92 make clang-tidy happy 2022-07-22 17:31:55 +06:00
NRK 3b09fd1c75 Revise and optimize icons handling
This pretty much reworks the entire icon system. Some notable changes:

* The extensions are put into a statically generated hash-table instead
  of a sorted array. We use Robin-Hood insertion to reduce the max probe
  length. Currently we need to probe only 2 slots for `O_EMOJI` and only
  3 for `O_NERD`/`O_ICONS`.
* I've opted not to use a perfect-hash since the perfect hashes
  generated by [`gperf`](https://www.gnu.org/software/gperf) used some
  huge lookup table. The hash function also wasn't as minimal as I'd
  like.
* Colors are now using X-Macros. This should speed up startup since we
  don't have to search `icons_ext` linearly to find unique colors.
* The hash-table generator outputs a more space optimized `struct
  icon_pair` using a char array instead of char pointer. This brings
  down the binary size from `145KiB` when using `O_NERD` down to
  `137KiB`.
* Some unnecessary duplication and indirection has been reduced by using
  the `ICON_STR()` macro.
2022-07-22 17:08:42 +06:00
Arun Prakash Jana d95755cce1
Use unget_wch() 2022-07-21 17:51:20 +05:30
Arun Prakash Jana 12b5416b2c
Fix #1428: handle unicode keybinds 2022-07-20 20:09:34 +05:30
Arun Prakash Jana a937265833
Reduce get_wch() array length and initialization. 2022-07-20 18:49:24 +05:30
Arun Prakash Jana b75a22f72d
Minor improvements 2022-07-18 18:28:16 +05:30
Arun Prakash Jana b752744ca0
Show volume used information in help 2022-07-18 18:28:16 +05:30
Arun Prakash Jana db7cb4da1e
Fix double order chars on filter case match change 2022-07-18 18:28:15 +05:30
NRK 7121a6fe43
Fix build break 2022-06-30 22:26:17 +05:30
NRK 744e9aaf70 initialize to zero instead of using memset
reduces some unncessary code. and when initializing larger objects,
compilers (gcc and clang at least) typically tend to compile it down to
a memset anyways.
2022-06-30 00:27:00 +06:00
NRK 1d347b1ce9 cfg: use designated initializer
anything not explicitly initialized will be implicitly initialized to
zero. this makes things more robust since comments are not checked by
the compiler and can be incorrect.
2022-06-30 00:26:36 +06:00
NRK 2df0cbd08b fix incorrect comment
xextension() uses xmemrchr to find '.'
2022-06-30 00:25:44 +06:00
Arun Prakash Jana 52f4ee5aee
Fix build break 2022-06-28 23:17:23 +05:30
Arun Prakash Jana 89bd541562
Add new emoji for C files 2022-06-25 20:07:43 +05:30
Arun Prakash Jana 02d48a9144
New icons for audio and video 2022-06-25 19:59:13 +05:30
NRK eb66cb5d11 account for realpath failure
realpath may fail, in which case fallback to mkpath.
2022-06-20 21:49:41 +06:00
Arun Prakash Jana 2130e1b33a
Use the term auto-advance instead of auto-jump
There's no jump.
2022-06-15 20:04:56 +05:30
Arun Prakash Jana d898d174f5
Fix docs, allow / to enable filter inside bookmarks 2022-06-14 17:36:17 +05:30
Arun Prakash Jana 581e629c20
Enable automatic dir entry on unique filer match 2022-06-14 13:49:41 +05:30
Arun Prakash Jana 56f96c3d0a
Enable filtering in plugins/bookmarks dirs
Enable auto-dir entry on filter mode
2022-06-14 13:10:54 +05:30
Arun Prakash Jana 51f2fde0e6
Revert #1398: Go to prev dir on bookmark key repeat
Reasons:

1. `b` is not a special key and will be interpreted as a filter
2. with this change pressing the standard `-` inside a symlinked
   bookmark takes back to the bookmarks directory. This deviates
   from the regular bookmarks behaviour.
2022-06-14 12:51:42 +05:30
Luuk van Baal 5b5a62bb0d
Fix false positive selbm 2022-06-13 04:07:40 +02:00
Arun Prakash Jana 783ea754f7
Use a more visible color 2022-06-12 07:55:23 +05:30
Arun Prakash Jana 19b2ea324a
Skip redundant getutil() call 2022-06-11 21:32:16 +05:30
Arun Prakash Jana 03fc3b99c5
Add informative comment 2022-06-11 21:25:03 +05:30
Arun Prakash Jana e104b749be
Patch #1386: make bsdtar the default archive handler 2022-06-11 15:09:40 +05:30
Arun Prakash Jana 8fb7feb61c
Add new icon colors for mp4 and flac formats 2022-06-11 07:34:59 +05:30
Arun Prakash Jana 49f21ae013
Fix segfault when last dir is not set 2022-06-11 06:05:57 +05:30
Göran Gustafsson 4baee859f8
Go to last dir on bookmark key repeat 2022-06-10 21:18:02 +05:30
Luuk van Baal 6fc8f63c0d
Disable e on explorer mode 2022-06-08 21:01:03 +02:00
Arun 88306e2d9c
Merge pull request #1391 from ggustafsson/feat/usage-stdout-fix
Print usage info to stdout instead of stderr
2022-06-08 02:54:27 +05:30
Göran Gustafsson 5023abe2df Print usage info to stdout instead of stderr 2022-06-07 20:33:05 +02:00
Göran Gustafsson 93db9bb2be Use -x flag with BSD stat 2022-06-05 22:13:23 +02:00
NRK 5ae3891ee5 fix incorrect usage of sizeof
`sizeof(cmd)` here would give the sizeof a char pointer, not the sizeof
the cp/mv array.
2022-06-02 15:44:31 +06:00
Arun Prakash Jana 10e2d37d0f Revert "Enter type-to-nav for bookmarks dir"
This reverts commit 8cdeddeb4a.
2022-05-30 22:20:45 +05:30
Arun Prakash Jana 85be28c019 Revert "Fix reverting filtermode on empty directory"
This reverts commit 4337214f50.
2022-05-30 22:19:41 +05:30
Arun Prakash Jana d618922177
Get rid of rundir 2022-05-29 22:32:54 +05:30
Arun Prakash Jana 4337214f50
Fix reverting filtermode on empty directory 2022-05-29 20:17:55 +05:30
Arun Prakash Jana 31a273fdd0
Fix build break 2022-05-29 20:09:33 +05:30
Luuk van Baal 8cdeddeb4a
Enter type-to-nav for bookmarks dir 2022-05-29 13:55:15 +02:00
Arun Prakash Jana 8175571952
Clear runtime states 2022-05-28 23:30:56 +05:30
Arun Prakash Jana 3a50be93fd
Fix #1369: limit symlinked bookmarks to bookmarks dir 2022-05-28 23:14:07 +05:30
Arun Prakash Jana 8d83af811f
Fix #1369: open target of symlinked bookmark 2022-05-28 05:54:55 +05:30
Arun Prakash Jana ec076f5886
FIx alignment 2022-05-26 02:36:59 +05:30
Arun Prakash Jana f6783c2065
Emoji changes 2022-05-13 04:44:27 +05:30
NRK ba72fca69a check for some alloc failures 2022-05-12 18:26:48 +06:00
Arun Prakash Jana c23125ba50
Change some emojis 2022-05-11 21:40:23 +05:30
Arun Prakash Jana 0a67c5d657
Use correct Emojis for arrows 2022-05-11 01:54:54 +05:30
Arun Prakash Jana af94c7704f
Remove redundant Emojis 2022-05-11 00:56:25 +05:30
Desmond Kabus b45be9bc5b
Add build option EMOJI for Unicode emoji as file icons 2022-05-10 20:31:11 +05:30
Arun Prakash Jana 18a6a010cf
Fix #1355: interpret suffix $nnn when paging 2022-05-10 19:46:19 +05:30
Arun Prakash Jana 3f58f6111c Prepare for release v4.5 Cachaça 2022-04-26 18:34:24 +05:30
Arun Prakash Jana cc965d1c2d
Use bold forward arrowhead for current 2022-04-26 04:26:01 +05:30
Arun Prakash Jana dc16ca2340
Add 2 spaces after icons for better visibility 2022-04-26 03:59:12 +05:30
Arun Prakash Jana 6b9f8f3666
Fix #1345: allow symlink name '@' in single file case 2022-04-20 20:20:25 +05:30
Arun Prakash Jana be4460c1da
Handle broken window if started in type-to-nav 2022-04-16 18:48:52 +05:30
Arun Prakash Jana eb42f7a948
Bind ^J with toggle auto-jump on open 2022-04-16 18:04:09 +05:30
Arun Prakash Jana 2c5cb4c5aa
Replace ^J with + to (un)select
^J has been reported as out of place several times.
As `+` is used as the seleciton marker, it makes more sense.
2022-04-16 17:04:53 +05:30
NRK d0bf2abb37 consistently use ELEMENTS macro
+ some small white-space fixes
2022-04-12 22:30:22 +06:00
Arun Prakash Jana d66492ac10 Show reverse timestamp for young entries
Show timestamps for entries modified/created within 5 minutes in
reverse.

Signed-off-by: Arun Prakash Jana <engineerarun@gmail.com>
2022-04-02 10:15:14 +05:30
Arun 81226db24e
Merge pull request #1330 from N-R-K/prompt_clearsel
native prompt: clear selection on successful operation
2022-03-24 03:05:47 +05:30
NRK 72ecf6c4b8 native prompt: clear selection on successful operation
have been using the %j substitution for a bit now, it's quite nice :)
but it's also quite annoying when doing something like

	mv "%j" ./

in this case, the files have been moved but the selection is incorrectly
points to them.

when there's a successful operation made on the selection via the native
prompt, it makes sense to clear the selection.
2022-03-24 00:23:38 +06:00
NRK 9be6c1a5e2 avoid unnessary heap allocation
the binary size shouldn't change since it'll most likely go into the bss
section.
2022-03-22 17:50:54 +06:00
Arun Prakash Jana d38841d5f3
Support n/N to cancel forced rm 2022-03-13 12:37:50 +05:30
Arun Prakash Jana 66639c6053
Fix #1312 2022-02-27 01:44:30 +05:30
NRK 2fedc92efc export NNN_INCLUDE_HIDDEN to plugins
Closes: https://github.com/jarun/nnn/issues/1308
2022-02-22 17:40:44 +06:00
NRK 799b8fd378 don't leak inotify_fd to plugins
Closes: https://github.com/jarun/nnn/issues/1291

Co-authored-by: Daniel Eklöf <daniel@ekloef.se>
2022-02-15 19:05:58 +06:00
Arun Prakash Jana 23b54ba0cf
Open previous active context on context quit 2022-02-06 00:23:45 +05:30
Arun Prakash Jana aa2147f3ef
make option O_NOSORT to disable sort on dir load 2022-01-23 10:52:33 +05:30
Arun Prakash Jana e140e34483
Disable filterinfo if file details enabled 2022-01-22 21:06:57 +05:30
Arun Prakash Jana fe4ea8a029
Update copyright date 2022-01-22 16:02:51 +05:30
NRK 04181084c0 add webp icon 2021-12-26 14:43:18 +06:00
NRK 02d6feb9b9 check bound before making access 2021-12-25 12:47:48 +06:00