Commit Graph

144 Commits

Author SHA1 Message Date
33a8e26efc Track cursor position in the editor
Updates #4
2020-10-21 23:55:01 +02:00
a0eacf4607 Add an installation script
Copying snippets from the README was uncomfortable and laborious,
and wasted a lot of space in the document, especially after
the recent additions.

Closes #3
2020-10-21 08:26:42 +02:00
63e7895905 Let the caller decide how to launch helpers
In the end, we don't need to impose any policy on it,
and it removes a level of quoting, as well as an `eval`.
2020-10-08 19:50:04 +02:00
6aa4bd2ff5 When resuming a child, resume the whole group
SIGTSTP is sent to the entire foreground process group,
so do the some with our SIGCONT.

Debian's default sh (dash) doesn't replace itself with
the command, even if it's the last one in the -c option.

Of course, we do not need to use /bin/sh for the helpers
at all, though it doesn't cost us much.  We could also
issue an explicit `exec`.
2020-10-08 19:49:07 +02:00
000315165d Fix the help in absence of a bindings file 2020-10-08 14:28:49 +02:00
d2e4b91262 Fix showing DEL in the help
And in general fix all CTRL processing to handle the DEL character.
2020-10-08 14:28:24 +02:00
b53a3a0981 Revisit zsh integration
zsh's antisocial behaviour was fairly promptly fixed (thanks to
Stephane Chazelas and his patience).

zle-line-init and zle-line-reset seem to be user-defined widgets
and the order inverted.  Put zle-line-init before reset-prompt
because some people do weird things in there.
2020-10-04 14:27:51 +02:00
cf80a15501 Survive a removed CWD, as well as an empty root
All the omitted error checking sometimes sucks a lot,
and I need to include it later anyway.
2020-10-02 16:35:12 +02:00
5451eba2a3 Make the outer prompt look more normal
There's a slight issue with the inverted cell representing
the cursor standing out a bit too much amongst the rest of
the characters.

The resulting experience is a lot more consistent, though.
2020-10-01 13:40:52 +02:00
b8c767354e Show external command line if appropriate
Since I'm already dealing with the fish shell.

All of our supported shells seem to handle cursor position
in Unicode (wide character) codepoints.

It was easiest and most straight-forward to pass the data
through yet-unused program arguments.

The cursor position is marked by a Unicode glyph equivalent
to ACS_DIAMOND, although ncurses doesn't get a chance
to make any ACS translation.
2020-10-01 11:58:32 +02:00
93172797e1 Set cursor to child when going to parent dir
That is, if it's missing from our history.

This makes for a more consistent experience when traversing
the filesystem.  Arguably, it's only good for when 'h' is
bound to the 'parent' action.

Also make sure that the offset and cursor are reset when
the path is changed.
2020-09-29 03:39:13 +02:00
1507f2dff9 Cleanup 2020-09-29 02:31:49 +02:00
9a12fd8021 Add ability to run helpers externally
So far experimental and essentially undocumented.
2020-09-29 01:33:19 +02:00
f596bb8f5e reload() doesn't really need to know the old path
Just whether it's safe for it to keep an anchor on the current item.

I've left in the safety check for an empty entries array,
for the theoretical case of an empty or entirely filtered-out root
directory.  It will likely crash in that case, anyway,
the cursor may be either -1 or 0.
2020-09-28 22:52:33 +02:00
67da8d965b Make anchor processing a bit more obvious 2020-09-28 22:18:17 +02:00
e60ffeeb20 Improve PAGER defaults
We basically need less(1), nothing else will work correctly.

I'm not sure where I took pager(1) from, might be a Debian thing.
2020-09-28 21:34:09 +02:00
0a66ae4d26 Expand a comment about overstriked underlining 2020-09-28 20:11:38 +02:00
121d7850fe Show error output from failed helpers
Usually, when the pager or the editor fail and return a non-zero
exit status, they display a message on the standard error output.

We might also try to redirect this output to show_mesage() but
it might not fit as a whole, so, given the relative rareness
of this situation, this slight inconsistency shouldn't be much
of an issue.

It'd also be possible to redirect the output to run_pager() but
in doing so, we might make the problem recursive.
2020-09-28 20:05:29 +02:00
98c8dc5b7d Fix tilde expansion algorithm
In principle correct, in practice completely broken.

I wrongly assumed basic_string::find() would behave like strcspn(),
and also used a nonsensical string index to check for the tilde.
2020-09-28 02:00:29 +02:00
b99f96cf6a Fix comment: the word "no-op" needs to be split 2020-09-28 01:46:38 +02:00
5759df156b Support tilde expansion in the "chdir" action
The tilde may be escaped, and this first escape may be escaped
as well, so all paths should be expressable.

All will just work(TM) for those who need it, and those who start
filenames with backslashes are begging to have their foot shot.

It appears that even Shift JIS, Big5, GB 18030, and GBK are
compatible with Unix paths, meaning they don't redefine the slash
(0x2F), so I'm okay with my direct multibyte string handling in
unknown locales.

Legacy stuff smells.
2020-09-28 01:45:56 +02:00
91df92f49a Make F3 change directories
Best complemented with a less(1) configuration that also quits on F3,
just like mcview.  Or invoke sdn with PAGER=mcview, even though you
lose the ability to view the help that way (but gain filters).
2020-09-27 23:33:10 +02:00
bff886841b Always accept ^? as well as ^H as backspace 2020-09-21 21:15:15 +02:00
98da5f6d35 Add an action to go to the parent directory 2020-09-15 19:15:30 +02:00
b8344f215c Name change 2020-08-28 18:23:46 +02:00
623c4914d1 Work around an infinite loop issue 2020-04-19 22:40:57 +02:00
571ec74706 Guard against ^Z in helper programs
Resume them immediately, we are not a shell.
2019-12-09 19:01:16 +01:00
7cce0cc2fd Fix change notifications
Another embarrassing 71fbaca regression.
2019-09-27 23:06:12 +02:00
bf38e4e9ea Position indicator like in vi 2019-09-27 22:38:48 +02:00
2c847fb4a3 Add actions imitating L/M/H in vi 2019-09-27 21:08:12 +02:00
296c0cc66f Fixes for previous commits
".." used to be hidden together with hidden files,
and the symlink patch introduced a compiler warning.
2018-12-09 05:29:59 +01:00
71fbaca9e5 Embrace paths with symbolic links 2018-12-08 01:41:41 +01:00
4ce6454ebb Add Norton Commander-like actions for F3 and F4 2018-12-03 22:05:00 +01:00
315b662581 Don't show .. in the root directory 2018-12-03 22:04:35 +01:00
4a2a49312b Fix formatting 2018-12-03 00:11:00 +01:00
7174b507d3 Fix crash on unknown groups 2018-12-01 15:57:35 +01:00
aae9c392fa Also sort symlinks to directories first 2018-11-10 01:32:59 +01:00
fad0d264a5 Support old libstdc++ 4.9
Now sdn can be built under Debian jessie with clang++ and libstdc++.
2018-11-04 19:46:06 +01:00
85ada4dd2b Fix build on not-my-system 2018-11-03 15:23:31 +01:00
c065238e75 Reliability improvement 2018-11-03 15:01:19 +01:00
579e4c9a34 Make confirming a search choose the item 2018-11-02 22:12:34 +01:00
081b4db5c3 Fix level popping 2018-11-02 20:22:50 +01:00
36454fb90c Fix history loading 2018-11-02 18:30:36 +01:00
6b1ff048b8 Flash column when sorting is changed 2018-11-02 18:30:35 +01:00
3790f8dfa0 Allow changing the sort column
Directories always come first and the .. entry even before that.
2018-11-02 18:07:06 +01:00
5c086016b5 Allow hiding so-called hidden files 2018-11-02 17:45:18 +01:00
232ecffa2d Allow reversing the sort 2018-11-02 17:25:10 +01:00
f3fffe4b25 Add an action to quit without chdir
Also fixed ACTION_CHOOSE_FULL to quote properly.
2018-11-02 15:50:58 +01:00
5f2eaa88e0 Create the config directory if needed 2018-11-02 15:37:56 +01:00
d6846e6327 Add an action for chdir 2018-11-02 15:09:27 +01:00