Arun Prakash Jana
f7399b05f9
Optimize xmemrchr()
2017-12-25 01:44:48 +05:30
Arun Prakash Jana
436d2143fd
Reduce sprintf() family usage
2017-12-25 00:28:12 +05:30
Arun Prakash Jana
c0255db4f1
Optimize saving, matching old entry
2017-12-24 23:23:52 +05:30
Arun Prakash Jana
78f544c41d
Shorten error messages
2017-12-24 21:22:54 +05:30
Arun Prakash Jana
f2387898f3
Limit filter length to NAME_MAX from LINE_MAX
2017-12-24 21:20:36 +05:30
Arun Prakash Jana
959db96f99
Use const if applicable
2017-12-24 21:03:23 +05:30
Arun Prakash Jana
8b98df0be1
Update documentation
2017-12-24 18:46:56 +05:30
Arun Prakash Jana
8189411aef
Users understand 'DIR' easier then 'cwd'
2017-12-24 15:23:33 +05:30
Arun Prakash Jana
d9537e6d49
Add option -b to open bookmark directly
2017-12-24 15:21:38 +05:30
Arun Prakash Jana
d3797f21d1
Order numeric file names (helps with /proc)
2017-12-24 03:15:22 +05:30
Arun Prakash Jana
59ae6c9e7f
Replace xstricmp() with strcoll()
2017-12-22 01:19:32 +05:30
Arun Prakash Jana
a451e74465
Remove redundant variable
2017-12-22 00:58:02 +05:30
Arun Prakash Jana
04bf7537e5
Consider only symbolic or only nunmeric names
2017-12-22 00:56:15 +05:30
Arun Prakash Jana
2f86e0d107
No need to test end of numeric
2017-12-21 19:12:12 +05:30
Arun Prakash Jana
988a3dd621
Ignore punctuation marks in file name compare. Fix xstrcmp().
...
1. File name comparison method:
- initially ignore white space and punctuation characters
- run test for numeric values
- if the remaining substrings match in case-insensitive compare, compare case
- if they still match, see which one has more prefix symbols
- if they still match, run a case-sensitive compare on complete strings
2. Fixed xstrcmp() to return diff instead of 0 and -1.
2017-12-21 17:49:31 +05:30
Arun Prakash Jana
0945dfb91a
Add file name len to entry structure
2017-12-20 22:20:28 +05:30
Arun Prakash Jana
bc1e74bc56
Offset can be derived
2017-12-20 08:18:37 +05:30
Arun Prakash Jana
106c7c2371
Retire redundant variable
2017-12-20 00:42:11 +05:30
Arun Prakash Jana
d135af33af
A fancier func to get order of 2
2017-12-20 00:01:32 +05:30
Arun Prakash Jana
cc1891d351
Replace a large buf with global g_buf
2017-12-19 23:33:27 +05:30
Arun Prakash Jana
ded690c693
Use exact number of bytes for each filename.
...
Results in even less memory usage. The names are appended one after another.
The offsets are reset when the location of the memory changes die to realloc().
Other changes:
1. Use a debug mode print to measure time.
2. Remove redundant prefix when printing pointers in debug mode.
2017-12-19 01:16:03 +05:30
Arun Prakash Jana
8307bc95bd
Fix #64 : change printf() to printw()
2017-12-18 00:30:48 +05:30
Arun Prakash Jana
ca28580746
NAME_MAX does not include NULL char
2017-12-18 00:00:08 +05:30
Arun Prakash Jana
7a16440e1f
An even faster nnn - no more copying file names!
...
nnn has been using `struct entry` to hold both file name as well as file info.
The design forces file names to be copied in the following cases:
- swaps during file sort (nnn uses quicksort) applied after all the matching
files are read (in no particular order; good old readdir()) into memory.
- swaps during manual filtering. nnn moves non-matching entries below so they
are not encountered twice resulting in fast filtering.
There were scopes for _massive_ improvements in this area. So I did what had to
be done - decouple the file names from `struct entry` and use a separate struct
to hold the names with the indices set when the files are added by opendir().
There was a hidden problem to this approach - nnn uses realloc() to allocate
memory for file information and realloc() may move the original pointer in mem
when it can't fit the new memory to the earlier pointer. To handle that the new
algorithm tracks the change in memory location and re-adjusts the existing dir
entry names when that happens; this too, without any copying!
Though the results seem pretty clean from a theoretical point of view and early
tests, we may uncover some bugs. However, the speed is just mind-blowing!
And the binary size remains the same too!!!
2017-12-17 23:08:55 +05:30
Arun Prakash Jana
ef3eab073e
Fix indentation
2017-12-14 19:17:29 +05:30
Arun Prakash Jana
c3545dd82f
Use static vars in frequently used APIs
2017-12-13 02:41:30 +05:30
Arun Prakash Jana
5ae9993a12
Retire redundant tmp vars
2017-12-13 02:32:45 +05:30
Arun Prakash Jana
1b035d6ffd
Process keypress by probable frequency
2017-12-13 01:46:50 +05:30
Arun Prakash Jana
6ccb8ee94b
Minor optimization, refactor
2017-12-04 19:52:35 +05:30
Arun Prakash Jana
092cdf3f82
Fix -Os compilation warnings
2017-12-03 17:36:00 +05:30
Arun Prakash Jana
cd2bdc5991
Minor changes
2017-11-30 18:24:28 +05:30
Arun Prakash Jana
55abc13cd2
Minor maintenance
2017-10-16 05:24:56 +05:30
Arun Prakash Jana
f1a27e21af
Ignore TAB in input prompt
2017-10-09 22:55:44 +05:30
Vlad Glagolev
9638ed148d
Fix a couple of warnings on BSDs ( #54 )
2017-10-09 07:47:02 +05:30
Vlad Glagolev
d835f72c6c
Fix segfault when SHLVL env var is not available ( #52 )
2017-10-08 09:32:29 +05:30
Vlad Glagolev
8959a5b57d
Correct name checking for NEW and RENAME ( #53 )
2017-10-08 09:17:32 +05:30
Vlad Glagolev
caf368f593
OpenBSD compatibility support ( #48 )
...
* Improve compatibility with OpenBSD
* Fix indefinite blocking
2017-10-08 07:12:12 +05:30
maxice8
935fca41f1
include sys/types.h for non-glibc linux builds ( #46 )
2017-10-05 13:04:18 +05:30
Arun Prakash Jana
dcf8fbf78b
Prepare for release v1.5
2017-10-05 00:18:53 +05:30
Arun Prakash Jana
d62ce4bb5e
Remove redundant conversion
2017-10-01 18:59:43 +05:30
Arun Prakash Jana
c66c941a97
Disable noti subscription for the same dir
2017-10-01 16:13:35 +05:30
Arun Prakash Jana
79cbc40a7f
Change archive list shortcut to 'F'
2017-10-01 04:28:48 +05:30
Arun Prakash Jana
6bfbff9519
Revert "Archive handling on OS X using unar+lsar"
...
This reverts commit 1e859eb1370bd67cecd06b7bc8c6f885b80554bd.
We will use atool on OS X as well, it can be brewed easily.
2017-09-27 22:14:09 +05:30
Arun Prakash Jana
7c54f073fc
Archive handling on OS X using unar+lsar
2017-09-27 22:14:07 +05:30
Arun Prakash Jana
71d27de517
Support archive listing and extraction
2017-09-27 22:14:01 +05:30
Arun Prakash Jana
a594c876be
Show current entry number in du mode
2017-09-27 17:37:36 +05:30
Arun Prakash Jana
082974dc8e
Show current entry number.
...
...because you need to know where you are.
2017-09-27 02:08:58 +05:30
Arun Prakash Jana
bc76c0f7ee
Fix #42
2017-09-24 23:46:34 +05:30
Arun Prakash Jana
55643a5fcc
Update NNN_NOWAIT changes
2017-09-19 19:55:02 +05:30
Paul
df4b557ca1
Prevent nnn from waiting on open file process ( #40 )
...
* Prevent nnn from waiting on open file process
* Add env var flag to not wait for child process when opening file
* Set nowait flag once to skip bit-or every time we open a file
* Add documentation for NNN_NOWAIT
2017-09-19 12:00:54 +05:30
Arun Prakash Jana
968beb434a
Skip entries in case fstatat() fails, do not exit
2017-09-13 18:44:27 +05:30
Arun Prakash Jana
28f69e59fa
Support file and dir create
2017-09-10 13:05:25 +05:30
Arun Prakash Jana
5ab6dd2fed
Convert metaviewer and color to bitfields
2017-09-09 02:16:10 +05:30
Arun Prakash Jana
321a618192
Add general info in help
2017-09-09 01:10:21 +05:30
Arun Prakash Jana
91ab00061c
Prepare for v1.4 release
2017-09-04 10:23:02 +05:30
Arun Prakash Jana
c35c1afa87
Reorder APIs
2017-09-02 14:09:34 +05:30
Arun Prakash Jana
056a79635a
Disable dircolor if no sub-directories
...
Fix regression from 1e5a0b8c5b
.
2017-09-02 14:02:29 +05:30
Arun Prakash Jana
277cf66097
Move config.h to nnn.h
2017-09-02 11:39:44 +05:30
Arun Prakash Jana
e2fae851c3
Use 'pin' dir instead of 'mark' dir
2017-09-01 19:57:36 +05:30
Arun Prakash Jana
c248f42c31
Calculate number of cols for name only once
2017-09-01 19:30:25 +05:30
Arun Prakash Jana
7ec524c231
Change to light mode if < 35 columns are available
2017-09-01 18:58:32 +05:30
Arun Prakash Jana
2e3f013ce3
Remove redundant variable
2017-09-01 17:50:14 +05:30
Arun Prakash Jana
dcc9b62760
Adjusting number of cols is redundant with shortening.
2017-09-01 10:45:10 +05:30
Arun Prakash Jana
1e5a0b8c5b
Fix #36 : uneven splitting of codepoints
...
Check if the number of columns needed to print name exceeds the number of cols.
If it does, split the name str at the max number of columns available for name.
Conversion to wide char ensures the split is done at a valid codepoint.
The current patch adds some optimization as well:
- No more copying to an intermediate (global) string.
- If the name is shortened, escape chars are replaced only till the terminator.
2017-09-01 10:22:44 +05:30
Arun Prakash Jana
c49b79d792
Fix cursor position issue with astral symbols
...
In case of astral symbols like Devanagari matras multiple wide-char codepoints
occupy a single position/column. Positioning the cursor wrt. the actual number
of wide-characters in a wide-char string gets "visually incorrect". The trick
is to calculate the correct number of columns needed to represent a fixed-size
wide-character string.
Relevant man pages:
1. wcswidth(3)
2. wctomb(3)
3. mblen(3)
Interesting links:
1. https://www.gnu.org/software/libc/manual/html_node/Non_002dreentrant-Character-Conversion.html
2. https://www.gnu.org/software/libc/manual/html_node/Shift-State.html
3. https://10hash.com/c-programming/uchar/
4. https://mathiasbynens.be/notes/javascript-unicode#accounting-for-astral-symbols
Example file names for test:
1. Malgudi Days - मालगुडी डेज - E05. Swami and Friends - स्वामी और उसके दोस्त (Part 5)
2. Eso eso aamar ghare eso ♫ এসো এসো আমার ঘরে এসো ♫ Swagatalakshmi Dasgupta
3. Führer
2017-08-26 14:46:49 +05:30
Arun Prakash Jana
ac03793547
A shorter overwrite message (key is not echoed)
2017-08-26 09:37:04 +05:30
Arun Prakash Jana
6b6182a61a
Revert "Handle multi-byte: 2 codepoints single column"
...
This reverts commit e8cf0dc663
.
2017-08-26 02:42:33 +05:30
Arun Prakash Jana
e8cf0dc663
Handle multi-byte: 2 codepoints single column
...
Very frequent with Devanagari scripts ('matra's)
2017-08-26 02:35:01 +05:30
Arun Prakash Jana
f94235333a
More concise help
2017-08-25 22:09:03 +05:30
Arun Prakash Jana
776d782fcf
Clear rename prompt with Ctrl-L
2017-08-25 21:49:55 +05:30
Arun Prakash Jana
4196af94f7
The '> ' as rename prompt is distracting
2017-08-25 19:22:30 +05:30
Arun Prakash Jana
ccdb95f3ab
mbstowcs() returns the codepoints
2017-08-25 18:27:06 +05:30
Arun Prakash Jana
b854f396cf
Simplify filter handling
2017-08-25 14:13:26 +05:30
Arun Prakash Jana
efc70f33e5
Get rid of getch() ('Führer' works now)
2017-08-25 13:57:22 +05:30
Arun Prakash Jana
76d582d5cd
Show line number only on fatal error
2017-08-24 22:26:46 +05:30
Arun Prakash Jana
512b7ac6cd
Re-order macros, globals...
2017-08-24 21:39:16 +05:30
Arun Prakash Jana
f31978573e
Remove extern ref to wget_wch()
2017-08-24 19:43:11 +05:30
Arun Prakash Jana
05bb9db9e1
Remove extern ref to add_history()
2017-08-24 19:36:33 +05:30
Arun Prakash Jana
08b5fc8231
Fix build failure
2017-08-24 19:13:00 +05:30
Arun Prakash Jana
2f40eb5efc
Show volume capacity in help
2017-08-24 17:50:00 +05:30
Arun Prakash Jana
7275d68ab7
Rename MAX_BM to BM_MAX
2017-08-24 10:16:35 +05:30
Arun Prakash Jana
7c52e4a89e
Support multi-byte string in rename
2017-08-24 10:15:32 +05:30
Arun Prakash Jana
f4b2e3a5df
Show filename in rename
2017-08-24 10:12:03 +05:30
Arun Prakash Jana
e3bce10908
Add checks before dir access
2017-08-23 18:13:22 +05:30
Arun Prakash Jana
f53f1b86e0
Remove shortcut F2 for refresh.
...
F2 is not very portable e.g., doesn't work over putty (default settings).
2017-08-23 17:36:32 +05:30
Arun Prakash Jana
be337d883e
Disable dir watch in filter mode
2017-08-23 09:29:21 +05:30
Arun Prakash Jana
fb521a7a94
Use hyphen within date
2017-08-23 01:17:09 +05:30
Arun Prakash Jana
0b3bec329f
Support in-place file rename
2017-08-23 00:51:59 +05:30
Arun Prakash Jana
5404cee9ee
Line length size limit is now 139
2017-08-22 22:34:17 +05:30
Arun Prakash Jana
081cb3a3e8
Do not follow mounted fs in du mode
2017-08-22 21:31:06 +05:30
Arun Prakash Jana
96e9028226
Implement BSD, Apple dir watch ( #35 )
2017-08-21 22:03:26 +05:30
Arun Prakash Jana
e4596db30a
Watch out for directory changes
2017-08-21 20:55:56 +05:30
Arun Prakash Jana
be77094235
Limit max open fds to 20K.
2017-08-21 09:16:11 +05:30
Arun Prakash Jana
1efa17cf23
A compact help format
2017-08-20 23:18:58 +05:30
Arun Prakash Jana
3d89b3f945
Support mark a directory
...
In certain workflows you know you would have revisit a directory. Mark it!
2017-08-20 16:47:23 +05:30
Arun Prakash Jana
f178004b13
Show vol free in help
2017-08-12 19:57:23 +05:30
Arun Prakash Jana
7fe6abb213
Prepare for release v1.3
2017-07-26 09:31:03 +05:30
Arun Prakash Jana
16f0054b48
Fix #34 : use ~75% of max open file descs
2017-07-25 10:13:22 +05:30
Arun Prakash Jana
c9c5dfaef7
Remove tab
2017-07-09 07:41:44 +05:30
Arun Prakash Jana
fb4263a736
Reset current on empty filter prompt
2017-07-08 11:02:17 +05:30