mirror of
https://github.com/jarun/nnn.git
synced 2024-11-28 05:41:31 +00:00
Happy Birthday nnn! 🍰
This commit is contained in:
parent
aa7f1dabdd
commit
315132b363
45
CHANGELOG
45
CHANGELOG
|
@ -1,3 +1,48 @@
|
||||||
|
nnn v3.1
|
||||||
|
2020-04-13
|
||||||
|
|
||||||
|
- unlimited bookmarks and plugin keys
|
||||||
|
- status bar text in context color
|
||||||
|
- support config `NO_COLOR` to disable colors
|
||||||
|
- config `NNN_OPTS` to specify binary options to `nnn`
|
||||||
|
- config `NNN_MCLICK` to emulate configurable key
|
||||||
|
- toggle selection on right click
|
||||||
|
- ignore hard links when calculating disk usage
|
||||||
|
- dim (hard/sym) link names (symlink to file has `@`)
|
||||||
|
- more special keys at empty filter prompt in _type-to-nav_
|
||||||
|
- key <kbd>></kbd> to export file list
|
||||||
|
- option `-F` to show fortune in help and settings screen
|
||||||
|
- option `-T` to specify sort order (obsoletes `-v`)
|
||||||
|
- option to clear sort order
|
||||||
|
- key <kbd>T</kbd> to change time type (access/change/mod)
|
||||||
|
- `.nmv` - internal fully-functional batch renamer plugin
|
||||||
|
- make var `O_NOBATCH` to disable native batch renamer
|
||||||
|
- `nuke` & `imgview` - open all images in directory sxiv
|
||||||
|
- `nuke` - open log files in vi
|
||||||
|
- plugin `x2sel` - system clipboard to selection copier
|
||||||
|
- plugin `fzy` - cd using z database
|
||||||
|
- plugin `fzopen` - support `FZF_DEFAULT_COMMAND`
|
||||||
|
- create new context on TAB without prompt
|
||||||
|
- hover and connect by dir name (within config dir)
|
||||||
|
- move to next entry on current file delete
|
||||||
|
- on single file copy/move, select the copied/moved file
|
||||||
|
- option `-f` to to use readline history file (off by default)
|
||||||
|
- use `s` in status bar to indicate selection in progress
|
||||||
|
- make var `O_NOMOUSE` to disable mouse support
|
||||||
|
- do not store `NNN_TRASH` and `-Q` in config/session
|
||||||
|
- add sample .desktop file for XDG compatible DEs
|
||||||
|
- rename _nav-as-you-type_ to _type-to-nav_ mode
|
||||||
|
- fix PCRE case-insensitive regex search
|
||||||
|
- fix no error msg when filter length limit exceeded
|
||||||
|
- fix static package generation
|
||||||
|
- fix broken abort message when started in du-mode
|
||||||
|
- fix filter lost on context switch in non _type-to-nav_ mode
|
||||||
|
- fix broken readline prompt
|
||||||
|
- fix long strings treated as action keys in filter prompt
|
||||||
|
- fix `NNNLVL` not reset when spawned shell is exited
|
||||||
|
|
||||||
|
-------------------------------------------------------------------------------
|
||||||
|
|
||||||
nnn v3.0
|
nnn v3.0
|
||||||
2020-02-12
|
2020-02-12
|
||||||
|
|
||||||
|
|
|
@ -7,7 +7,6 @@
|
||||||
<a href="https://circleci.com/gh/jarun/workflows/nnn"><img src="https://img.shields.io/circleci/project/github/jarun/nnn.svg?label=circleci" alt="CircleCI Status" /></a>
|
<a href="https://circleci.com/gh/jarun/workflows/nnn"><img src="https://img.shields.io/circleci/project/github/jarun/nnn.svg?label=circleci" alt="CircleCI Status" /></a>
|
||||||
<a href="https://en.wikipedia.org/wiki/Privacy-invasive_software"><img src="https://img.shields.io/badge/privacy-✓-crimson?maxAge=2592000" alt="Privacy Awareness" /></a>
|
<a href="https://en.wikipedia.org/wiki/Privacy-invasive_software"><img src="https://img.shields.io/badge/privacy-✓-crimson?maxAge=2592000" alt="Privacy Awareness" /></a>
|
||||||
<a href="https://github.com/jarun/nnn/blob/master/LICENSE"><img src="https://img.shields.io/badge/license-BSD%202--Clause-yellow.svg?maxAge=2592000" alt="License" /></a>
|
<a href="https://github.com/jarun/nnn/blob/master/LICENSE"><img src="https://img.shields.io/badge/license-BSD%202--Clause-yellow.svg?maxAge=2592000" alt="License" /></a>
|
||||||
<a href="https://github.com/jarun/nnn/wiki"><img src="https://img.shields.io/badge/nnn-Wiki-important?maxAge=2592000" alt="Wiki" /></a>
|
|
||||||
<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=RMLTQ76JSXJ4Q"><img src="https://img.shields.io/badge/PayPal-donate-1eb0fc.svg" alt="Donate via PayPal!" /></a>
|
<a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=RMLTQ76JSXJ4Q"><img src="https://img.shields.io/badge/PayPal-donate-1eb0fc.svg" alt="Donate via PayPal!" /></a>
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
@ -51,7 +50,7 @@ It runs smoothly on the Pi, [Termux](https://www.youtube.com/watch?v=AbaauM7gUJw
|
||||||
25. Watch matrix text fly or read fortune messages
|
25. Watch matrix text fly or read fortune messages
|
||||||
26. Configure in 5 minutes!
|
26. Configure in 5 minutes!
|
||||||
|
|
||||||
Once installed (instructions below), _**read the fine [manual](https://github.com/jarun/nnn/wiki)**_.
|
Once installed (instructions below), _**read the fine manual**_. [![Wiki](https://img.shields.io/badge/nnn-Wiki-important?maxAge=2592000)](https://github.com/jarun/nnn/wiki)
|
||||||
|
|
||||||
## Features
|
## Features
|
||||||
|
|
||||||
|
|
2
nnn.1
2
nnn.1
|
@ -1,4 +1,4 @@
|
||||||
.Dd Feb 12, 2020
|
.Dd Apr 13, 2020
|
||||||
.Dt NNN 1
|
.Dt NNN 1
|
||||||
.Os
|
.Os
|
||||||
.Sh NAME
|
.Sh NAME
|
||||||
|
|
18
src/nnn.c
18
src/nnn.c
|
@ -107,7 +107,7 @@
|
||||||
#include "dbg.h"
|
#include "dbg.h"
|
||||||
|
|
||||||
/* Macro definitions */
|
/* Macro definitions */
|
||||||
#define VERSION "3.0"
|
#define VERSION "3.1"
|
||||||
#define GENERAL_INFO "BSD 2-Clause\nhttps://github.com/jarun/nnn"
|
#define GENERAL_INFO "BSD 2-Clause\nhttps://github.com/jarun/nnn"
|
||||||
#define SESSIONS_VERSION 1
|
#define SESSIONS_VERSION 1
|
||||||
|
|
||||||
|
@ -770,7 +770,7 @@ static void clear_hash()
|
||||||
static void clearinfoln(void)
|
static void clearinfoln(void)
|
||||||
{
|
{
|
||||||
move(xlines - 2, 0);
|
move(xlines - 2, 0);
|
||||||
addch('\n');
|
clrtoeol();
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef KEY_RESIZE
|
#ifdef KEY_RESIZE
|
||||||
|
@ -819,12 +819,6 @@ static void printerr(int linenum)
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void printinfoln(const char *str)
|
|
||||||
{
|
|
||||||
clearinfoln();
|
|
||||||
mvaddstr(xlines - 2, xcols - strlen(str), str);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline bool xconfirm(int c)
|
static inline bool xconfirm(int c)
|
||||||
{
|
{
|
||||||
return (c == 'y' || c == 'Y');
|
return (c == 'y' || c == 'Y');
|
||||||
|
@ -936,7 +930,7 @@ static void *xrealloc(void *pcur, size_t len)
|
||||||
* Always null ('\0') terminates if both src and dest are valid pointers.
|
* Always null ('\0') terminates if both src and dest are valid pointers.
|
||||||
* Returns the number of bytes copied including terminating null byte.
|
* Returns the number of bytes copied including terminating null byte.
|
||||||
*/
|
*/
|
||||||
static size_t xstrsncpy(char *restrict dest, const char *restrict src, size_t n)
|
static size_t xstrsncpy(char *dest, const char *src, size_t n)
|
||||||
{
|
{
|
||||||
if (!src || !dest || !n)
|
if (!src || !dest || !n)
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -2390,13 +2384,17 @@ static void showfilterinfo(void)
|
||||||
snprintf(info + i, REGEX_MAX - i - 1, " %s [/], %s [:]",
|
snprintf(info + i, REGEX_MAX - i - 1, " %s [/], %s [:]",
|
||||||
(cfg.regex ? "regex" : "str"),
|
(cfg.regex ? "regex" : "str"),
|
||||||
((fnstrstr == &strcasestr) ? "ic" : "noic"));
|
((fnstrstr == &strcasestr) ? "ic" : "noic"));
|
||||||
printinfoln(info);
|
|
||||||
|
clearinfoln();
|
||||||
|
mvaddstr(xlines - 2, xcols - strlen(info), info);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void showfilter(char *str)
|
static void showfilter(char *str)
|
||||||
{
|
{
|
||||||
|
attron(COLOR_PAIR(cfg.curctx + 1));
|
||||||
showfilterinfo();
|
showfilterinfo();
|
||||||
printmsg(str);
|
printmsg(str);
|
||||||
|
// printmsg calls attroff()
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void swap_ent(int id1, int id2)
|
static inline void swap_ent(int id1, int id2)
|
||||||
|
|
Loading…
Reference in a new issue