* Fix replace dialog for symlinks
If the oldPath is a symlink to the newPath or vice versa, than os.Stat()
would resolve this symlink, and both the oldStat and newStat would be
the same. Hence, the replace dialog would not appear and the newPath
file would be overwritten by the oldPath file whilst the oldPath would
be deleted.
It is the same story when the oldPath and newPath are both symlinks to
the same file.
* Fix completion in the case of broken symlinks
If the current directory contains broken symlinks then matchFile() would
return at first broken symlink.
Let's consider the following example:
$ ls -F ~/
broken@ dir/ file
The broken@ is a symlink to ~/foo - non existent file.
If one would enter the following command in lf:
:cd ~/<tab>
it would not suggest possible completion options because matchFile()
would return as soon as it meet the broken symlink.
* Don't resolve symlinks when move files/dirs (#571)
This will allow to move broken symlinks.
* Fix symlinks copying/moving (#571)
Copy symlinks, do not try to resolve it and copy the file pointed by
this symlink. Also this allows to copy symlink to directory.
* Use chan struct{} in place of chan bool
* Revert "nav.checkReg now returns a boolean instead of calling nav.preview"
* Guarantee preview/previewClear ordering
* Pass the file path to the cleaner script
* Return early on error in nav.preview
* nav.checkReg now returns a boolean instead of calling nav.preview
* Pass width, height, x, and y parameters to preview script
* Check previewer for exit code
If non-zero the preview will be assumed to have side-effects.
* Add the cleaner option
This is called upon selection changes if the previous preview was
volatile. To this end, volatilePreview was added to the nav struct
* utility modulus function
* ui adapt for tab menu cycle
* refactor(listMatches) for tab menu cycle
* refactor(draw) handle tab menu selection highlight
* refactor(eval) cmd-complete cycle + reset handles
* feat: added backtab counter-cycle in the completition menu
* cleanup
* docs changes
* refactor: make tab cycle own commands
* docs: tab cycle documentation
* bug: the matches list was not complete because index +2 after row end
* refactor(tab cycle): handle the complete menu command print
* refactor(tab cycle): make the cmdTmp varibale mymic cmdAccLeft + check for partial commands
* refactor(tab cycle): fix how to handle the menu completiton from different events
* fix(tab cycle): fix cmd-complete so that it works with new tab cycle commands
* style: changed puprle to reverse
* cleaned up cycle logic + reverted listMatches
* cleaned up eval logic for cycle feat.
* cleanup
Co-authored-by: 2pac <tarasyarema@pm.me>
Fix colour construction issue
This also has a test to mitigate it in the future
Remove `colormode` option
The original issue it was trying to solve is no longer present with
tcell (it being a holdover from `color256` on termbox) so it is not
needed.
retire gitter channel in favor of irc/matrix
Export options as environment variables (#448)
* Export options as environment variables
Any options from gOpts are available via lf_OPTION environment
variables. For now it works only on booleans, integers and strings (no
array support)
* Do not export some of the options
* Add support for arrays and fix numbers
* Fix comments
* Replace 1 and 0 with true and false
* Export hidden,reverse,dirfirst and sortby options
* Fix comments
* Little fix
* Simplify boolean conversion
log readlink errors instead of fail
Related #447 and #374
* Add truncatechar option
* Add ability to set truncatechar via `set` command
* Add completion for truncatechar option
* Actually use truncatechar option when truncating
* Add truncatechar option to docs
* Fixed issue #346 and changed the format of numbers when both relativenumber and number are set.
* Fixed issue #349 (incorrect replacement of '~' with user's home direcotry).
* Changed where appropriate so that tilde replacements happens correctly.
* Added a function to replace tilde with user's home directory, only when it should.
* Renamed ReplaceTilde to replaceTilde so that it won't get exported and removed some ';' at the end of some lines.
* Add possibility to execute commands when cwd changes (on_chdir)
* Renamed function and special command on_chdir (onChdir, on-cd), support select command
Currently, renaming a file without changing the name will prompt for
replacing and then delete the file. This will instead cancel the
renaming if the old and new names are the same.
* Asynchronous deletion, similar to moving
* Reversed some sloppy new lines from previous commit
* Move delete operations to delete.go
* Simplify to use RemoveAll before
* Send errors directly to ui.exprChan directly
- preserve natural ordering of filenames if extensions are the same
or are missing
- files without extensions rank higher on ascending sort and lower
on descending sort
- Add access time and change time as sort by types. This is
powered by github.com/djherbis/times.
- Fall back to modification time if access time and change time
cannot be determined.
- Add `sa` and `sc` as default bindings for sort by access time and
sort by change time respectively.
- Add access time and change time to info types allowing them to be
displayed by the file list in the ui
This will make the prompt shown when running the delete command more descriptive.
Before: `delete?[y/N]:`
Now when deleting one file: `delete /tmp/abc [y/N]?`
Now when deleting selection: `delete 3 items [y/N]?`
* basic structure
* working rename, without making dir's and selection change
* mkdirAll if necessary
* updated TODO's
* rename with replace prompting
* path prompt and moved functionality to nav.rename()
* renewing now (no set period is needed)
* documentation, keybidning change, load file info after renaming
* go generate