Arijit Basu
313c61db96
Optimize get_current_dir
...
Closes: https://github.com/sayanarijit/xplr/issues/628
2023-07-16 01:01:12 +05:30
Arijit Basu
33c5aa9f14
Bring back enqueue
2023-07-03 18:06:53 +05:30
Arijit Basu
cae50e4bcf
Remove unnecessary enqueue step
2023-07-03 10:24:58 +05:30
Arijit Basu
e0d683b13a
Release 0.21.0 ( #602 )
...
* Add xplr.util.lscolor and xplr.util.paint (#569 )
* Add xplr.util.lscolor and xplr.util.style
* Fix formatting
* Fix clippy suggestions
* Remove redundant closures
* Optimize, support NO_COLOR, and rename style to paint
* Use xplr.util.paint and xplr.util.color in init.lua
Co-authored-by: Noah Mayr <dev@noahmayr.com>
* Add utility function xplr.util.textwrap (#567 )
* Add utility function xplr.util.wrap
* Cleanup and fix formatting
* Update src/lua/util.rs
Co-authored-by: Arijit Basu <sayanarijit@users.noreply.github.com>
* Update wrap to return lines instead
* Fix doc
* Rename wrap -> text wrap
Co-authored-by: Arijit Basu <sayanarijit@users.noreply.github.com>
Co-authored-by: Arijit Basu <sayanarijit@gmail.com>
* Add xplr.util.relative_to and xplr.util.path_shorthand (#568 )
* Add xplr.util.relative_to and xplr.util.path_shorthand
* Remove duplicate slash at end
* Use pwd from env and remove pathdiff package
* Some fixes and improvements
* Generate docs
* Some more improvements
* Improve selection rendering
* Improve functions with test cases
* Update docs
* Minor doc fix
* Rename path_shorthand -> shortened
* Handle homedir edgecase
Also fix init.lua
* Minor fix
* Use config argument for relative and shortened paths
* Prefix relative paths with "." and fix edge cases where we're not showing the file name
* Use and_then instead of map and flatten
* WIP: Move selection rendering to lua
* Make selection renderer function configurable on lua side
* Some improvements
* Some impovements
* Minor doc fix
* Remove symlink style
---------
Co-authored-by: Arijit Basu <sayanarijit@gmail.com>
* Add xplr.util.layout_replaced (#574 )
Closes: https://github.com/sayanarijit/xplr/issues/573
* Improve selection operations (#575 )
- `:sl` to list selection.
- `:ss` to softlink.
- `:sh` to hardlink.
- Avoid conflict by adding suffix.
- Unselect individual path only on operation success.
Closes:
- https://github.com/sayanarijit/xplr/issues/572
- https://github.com/sayanarijit/xplr/issues/571
- https://github.com/sayanarijit/xplr/issues/570
* Minor updates
* Add more features (#581 )
* Add more features
- Key binding ":se" to edit selection list in $EDITOR
- New utility functions:
- xplr.util.clone
- xplr.util.exists
- xplr.util.is_dir
- xplr.util.is_file
- xplr.util.is_symlink
- xplr.util.is_absolute
- xplr.util.path_split
- xplr.util.node
Closes: https://github.com/sayanarijit/xplr/issues/580
Closes: https://github.com/sayanarijit/xplr/issues/579
Closes: https://github.com/sayanarijit/xplr/issues/577
* Fix edit selection list
* Fix clippy lints
* Fix layout link in doc
* xplr.util.shortened -> xplr.util.shorten
* Fix more clippy lints
* Fix xplr.util.shorten name change
* More UI utilities and improvements (#582 )
* More UI utilities and improvements
- Apply style only to the file column in the table.
- Properly quote paths.
- Expose the applicable style from config in the table renderer argument.
- Add utility functions:
- xplr.util.node_type
- xplr.util.style_mix
- xplr.util.shell_escape
* Make escaping play nice with shorten
* Fix tests
* Fix doc
* Some fixes
* Fix selection editor
* Fix clear selection for selection editor
* Add selection navigation (#583 )
* Add selection navigation
- FocusNextSelection (ctrl-n)
- FocusPreviousSelection (ctrl-p)
Also improve batch operations
* Minor doc fixes
* Minor doc fix
* Remove tab -> ctrl-i binding
* Improve batch operation interaction
- More robust focus operation.
- Focus on failed to delete paths.
* Fix Rust compatibility
* Fix panic on permission denial
Also, improve the error messages.
* More logging improvements
* Fix layout_replace only working with table parameters (#586 )
* Improve builtin search mode (#585 )
* Improve builtin search mode
* Remove commented out code
* Make search ranking and algorithm more extensible
* Flatten messages
BREAKING: xplr.config.general.sort_and_filter_ui.search_identifier -> xplr.config.general.sort_and_filter_ui.search_identifiers
Messages:
- Search
- SearchFromInput
- SearchFuzzy
- SearchFuzzyUnranked
- SearchFuzzyUnrankedFromInput
- SearchRegexUnrankedFromInput
- SearchRegex
- SearchRegexUnranked
- SearchRegexUnrankedFromInput
- SearchRegexUnrankedFromInput
- CycleSearchAlgorithm
- EnableRankedSearch
- DisableRankedSearch
- ToggleRankedSearch
Static config:
xplr.config.general.search.algorithm = "Fuzzy"
* Handle search ranking in search algorithm
* Make CycleSearchAlgorithm only cycle between algorithms, without changing ranking
* Separate algorithm and ordering
* Minor doc updates
* Some cleanup
* Final touch
* Cycle -> Toggle
---------
Co-authored-by: Arijit Basu <sayanarijit@gmail.com>
* Fix layout replace for unit layouts (#588 )
* Allow custom title and ui config in custom layout. (#589 )
* Allow custom title and ui config in custom layout.
Adds the following layouts:
- Static
- Dynamic
Deprecates `CustomContent` (but won't be removed to maintain compatibility).
Closes: https://github.com/sayanarijit/xplr/issues/563
* Delete init.lua
* Update docs/en/src/layout.md
* Update docs/en/src/layout.md
* Rename
- Paragraph => CustomParagraph
- List => CustomList
- Table => CustomTable
Also update init.lua
* Fix clippy errs
* Fix doc links
* Fix search order
* Improve working with file permissions (#591 )
* Improve working with file permissions
Implements:
- xplr.util.permissions_rwx
- xplr.util.permissions_octal
* Edit permissions
* Add permissions in Resolved Node (#592 )
* Add permissions in Relolved Node
And handle application/x-executable mime type.
* Fix bench
* Improve permissions editor
* More permissions editor improvements
* Doc updates
* Remove ResolvedNode.permissions (#593 )
Reason: Too much serialization making lua calls slow.
* Add workaround for macos with legacy coreutils (#595 )
Refs:
- https://github.com/sayanarijit/xplr/issues/594
- https://github.com/sayanarijit/xplr/issues/559
* Use H:M:S format to display logs (#596 )
* Keep the selection list and clear manually (#597 )
* Keep the selection list and clear manually
Ref: https://github.com/sayanarijit/map.xplr/issues/4
* Fix linting err
* Fix broken history (#599 )
* Fix broken hostory
Fixes: https://github.com/sayanarijit/xplr/issues/598
* Minor cleanup
* Slightly optimize selection retention (#600 )
* Update deps
* chrono -> time
* update: 0.20.2 -> 0.21.1
* Update post-install.md
* Upgrade guide
* Minor fix
* Fix tests
* Add missing doc
* Fix clippy lints
---------
Co-authored-by: Noah Mayr <dev@noahmayr.com>
2023-03-20 01:07:04 +05:30
Arijit Basu
0cd5a9163d
Minor fixes
2022-12-19 23:50:28 +05:30
Arijit Basu
053615b041
Fix linting errors
2022-11-13 02:06:04 +05:30
Arijit Basu
15979e4974
Release v0.20.0
2022-10-29 02:46:31 +05:30
Arijit Basu
01060ed025
Add $XPLR_INITIAL_PWD and 'gi' key binding
...
This will allow enable workspace like features, without using vroot.
2022-10-28 11:23:12 +05:30
Arijit Basu
5c4dec05ed
Don't restrict saving location outside vroot
2022-10-27 21:47:25 +05:30
Arijit Basu
e3a5f3c044
Add messages SetVroot and ResetVroot
2022-10-27 17:05:32 +05:30
Arijit Basu
a62b72bf2a
Add support for --vroot
...
--vroot helps isolating navigation of an xplr session inside a specific
directory. However, interaction still requires passing full paths
(`/tmp/vroot`). Shell scripts and Lua functions can still access files
outside the virtual root.
This PR also fixes unwanted dot (.) and extra slash (//) issues in paths.
2022-10-27 17:05:32 +05:30
Arijit Basu
bafe15e25e
Add more hooks
2022-10-27 11:22:36 +05:30
Arijit Basu
deb28fa14a
Add initial support for hooks
...
A new optional section of the configuration defined using the lua return
statement, which can be used to define append only things, such as hooks
and callbacks, specific to each config file.
Example
```lua
version = "0.0.0"
return {
-- Adds messages to pass when xplr loads (similar to `--on-load`)
on_load = {
{ LogInfo = "Hello xplr user," },
{ LogSuccess = "Configuration successfully loaded!" },
}
}
```
2022-10-27 00:55:12 +05:30
Arijit Basu
65eee2dc90
Use serde_yaml::with::singleton_map_recursive
2022-10-26 13:59:39 +05:30
Arijit Basu
1e820030a0
Implement subcommand -m / --pipe-msg-in
2022-10-26 04:15:33 +05:30
Arijit Basu
91e3990df1
Rename messages
2022-10-26 04:15:33 +05:30
Jeremy Cantrell
2b5755aa8a
An attempt at safer message passing.
2022-10-26 04:15:33 +05:30
Arijit Basu
c93202b649
Minor improvements
2022-10-24 10:03:16 +05:30
Arijit Basu
93bd53bbcb
Add quick scrolling
...
Not ideal, but better than nothing.
Closes: https://github.com/sayanarijit/xplr/issues/509
2022-10-06 20:42:23 +05:30
Arijit Basu
e04b0964ae
Use 89 chars line length
2022-06-02 22:45:19 +05:30
Arijit Basu
21b8c3e807
Make clippy happy
2022-06-02 18:13:33 +05:30
Arijit Basu
744b68197d
Some optimizations
2022-06-02 18:13:33 +05:30
Arijit Basu
61d3b1635e
Use NO_COLOR to disable OSC 7
2022-06-02 18:13:33 +05:30
Arijit Basu
d35a4c58cb
Write OSC 7 escaped codes on a the tui backend
2022-06-02 18:13:33 +05:30
Arijit Basu
1de737cefa
Add regex support and dynamic input prompt
...
- Add new regex filters
- `RelativePathDoesMatchRegex`
- `RelativePathDoesNotMatchRegex`
- `IRelativePathDoesMatchRegex`
- `IRelativePathDoesNotMatchRegex`
- `AbsolutePathDoesMatchRegex`
- `AbsolutePathDoesNotMatchRegex`
- `IAbsolutePathDoesMatchRegex`
- `IAbsolutePathDoesNotMatchRegex`
- Search mode now defaults to regex
- Added new message `SetInputPrompt` to set the input prompt
dynamically.
2022-05-21 00:12:58 +05:30
Arijit Basu
171c93dbb1
Fix ansi colors
...
Also upgrade deps and do some cleanup.
2022-05-04 09:43:14 +05:30
Arijit Basu
bb65870ee0
CLI for a better "cd on quit"
...
Use `--print-pwd-as-result` to print the last working directory instead
of the focused or selected nodes, when you quit using the `PrintResultAndQuit`
message (i.e. by pressing `enter`).
This helps with implementing the "cd on quit" functionality using a plain shell
alias.
Example:
```
alias xcd='cd "$(xplr --print-pwd-as-result)"'
```
With this alias set, you can navigate directories using xplr by entering
`xcd` command, and when you quit by pressing enter, you will enter the
directory.
You can of course, quit with plain `Quit` (i.e. by pressing `esc`) to
gracefully cancel "cd on quit".
2022-02-03 09:31:28 +05:30
Arijit Basu
7b9e4deff5
Support passing argument to LuaEval
and LuaEvalSilently
...
If the argument of `LuaEval` evaluates to a function, xplr will try to
pass Lua Context to it.
Example:
```lua
{ LuaEval = [[function(app) return { { LogInfo = app.pwd } } end]] }
```
Closes: https://github.com/sayanarijit/xplr/issues/394
2021-12-11 21:10:01 +05:30
Arijit Basu
8f5e5491f2
Optimize change directory performance
...
This PR breaks the custom layout renderer API by deprecating the
following heavyweight fields in the Lua Context passed to the renderer
functions.
The following fields are being deprecated:
- app.directory_buffer
- app.history
- app.last_modes
However, there's no change in the Lua Context passed to the functions
called via `CallLua*` messages.
Closes: https://github.com/sayanarijit/xplr/issues/418
2021-12-11 19:37:40 +05:30
Arijit Basu
b7d86ae1ec
Serialize None to nil
...
Fixes: https://github.com/sayanarijit/xplr/issues/417
2021-11-20 04:39:33 +05:30
Arijit Basu
5b710070a3
Optimize more
2021-11-15 18:08:03 +05:30
Arijit Basu
7c7351c2e8
Optimize optimization hack
2021-11-15 18:08:03 +05:30
Arijit Basu
5211e4fa40
Fix Lua API performance by caching
...
Fixes: https://github.com/sayanarijit/xplr/issues/412
2021-11-15 18:08:03 +05:30
Arijit Basu
6a3b26cc18
Add support for LuaEval(Silently) messages
...
This PR adds support for quickly executing arbitrary lua functions,
without needing to define a function.
Example:
```lua
xplr.config.modes.builtin.default.key_bindings.on_key["#"] = {
help = "test",
messages = {
{ LuaEvalSilently = [[return { { LogInfo = "foo" } }]] },
{ LuaEval = [[return { { LogInfo = io.read() } }]] },
},
}
```
Partly closes: https://github.com/sayanarijit/xplr/issues/394
2021-11-05 17:01:19 +05:30
Arijit Basu
ca6cefb1c1
Use tui-input to handle input buffer
...
New message: `UpdateInputBufferFromKey` to replace most
`BufferInputFromKey` usage.
This adds more functionalities to the input buffer and reduces
boilerplate code.
This commit also deprecates `config.general.cursor` as the cursor will
be set by the terminal from now.
Repo: https://github.com/sayanarijit/tui-input
2021-11-05 10:20:30 +05:30
Shunsuke Mie
f5131b08ab
Change to use PWD
env vairable to get current dir
...
Fixes 285.
2021-11-01 19:55:28 +05:30
Arijit Basu
de6f54f9bd
Fix bug with selection
2021-10-30 16:26:11 +05:30
Arijit Basu
a797d7b1c7
Format & lint code
2021-10-30 16:26:11 +05:30
Arijit Basu
2d7158afc0
Implement support path selection and force focus
...
Examples:
```bash
xplr $PWD /path/to/select1 path/to/select2
xplr -- $PWD /path/to/select1 path/to/select2
echo -e "$PWD\n/path/to/select1\npath/to/select2" | xplr -
ls -d /path/to/select1 path/to/select2 | xplr $PWD -
```
2021-10-30 16:26:11 +05:30
Arijit Basu
91675e28af
Some cleanup
2021-10-30 16:26:11 +05:30
Tom van Dijk
102832c65c
Fix suggestions and run clippy
2021-10-30 16:26:11 +05:30
Tom van Dijk
3c8de699ca
Fix everything @sayanarijit fed back.
2021-10-30 16:26:11 +05:30
Tom van Dijk
cbb244f9a0
Implement --select
2021-10-30 16:26:11 +05:30
Shunsuke Mie
13d046e6ad
Move definitions runner related functions
...
fn runner() and fn from_cli(cli: Cli) util functions are located to
app.rs. However, those are utils for runner. So this commit change the
functions to runner.rs.
2021-10-17 21:11:52 +05:30
Gilad Woloch
a2343c05ca
Correct clippy
error
2021-10-06 13:24:56 +05:30
Gilad Woloch
cc022e85ff
Fix cargo clippy
warnings and reformat
2021-10-06 13:24:56 +05:30
Gilad Woloch
c399236fd3
Reformat
2021-10-06 13:24:56 +05:30
Gilad Woloch
3f0e479f56
Remove trivial methods
2021-10-06 13:24:56 +05:30
Arijit Basu
bec80e98df
Improve input reading by eliminating pause
...
Stop the thread instead of pausing it. This improves the CPU usage and
responsiveness a slightly.
2021-10-05 23:28:32 +05:30
Arijit Basu
e0c1581a0a
Optimize silent calls
...
Silent calls don't need to pause input reading as they are non
interactive and quickly finish execution.
2021-10-05 16:50:17 +05:30