Metadata-Version: 2.1
Name: xontrib-jump-to-dir
Version: 0.2.1
Summary: Jump to used before directory by part of the path. Lightweight zero-dependency implementation of autojump or zoxide projects functionality.
Author-email: anki-code <no@no.no>
License: MIT License
        
        Copyright (c) 2023, anki-code
        
        Permission is hereby granted, free of charge, to any person obtaining a copy
        of this software and associated documentation files (the "Software"), to deal
        in the Software without restriction, including without limitation the rights
        to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
        copies of the Software, and to permit persons to whom the Software is
        furnished to do so, subject to the following conditions:
        
        The above copyright notice and this permission notice shall be included in all
        copies or substantial portions of the Software.
        
        THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
        IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
        FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
        AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
        LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
        OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
        SOFTWARE.
        
Project-URL: Homepage, https://github.com/anki-code/xontrib-jump-to-dir
Project-URL: Documentation, https://github.com/anki-code/xontrib-jump-to-dir/blob/master/README.md
Project-URL: Code, https://github.com/anki-code/xontrib-jump-to-dir
Project-URL: Issue tracker, https://github.com/anki-code/xontrib-jump-to-dir/issues
Platform: any
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Topic :: System :: Shells
Classifier: Topic :: System :: System Shells
Classifier: Topic :: Terminals
Requires-Python: >=3.8
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: xonsh>=0.12.5
Provides-Extra: dev
Requires-Dist: pytest>=7.0; extra == "dev"

<p align="center">
Jump to used before directory by part of the path in xonsh shell. <br>Lightweight zero-dependency implementation of <a href="https://github.com/wting/autojump">autojump</a> or <a href="https://github.com/ajeetdsouza/zoxide">zoxide</a> projects functionality. 
</p>

<p align="center">  
If you like the idea click ⭐ on the repo and <a href="https://twitter.com/intent/tweet?text=Nice%20xontrib%20for%20the%20xonsh%20shell!&url=https://github.com/anki-code/xontrib-jump-to-dir" target="_blank">tweet</a>.
</p>

## Note

This xontrib is using [xonsh sqlite history backend](https://xon.sh/tutorial_hist.html#sqlite-history-backend) to get statistics by directories you're used to run commands.

## Installation

To install use pip:

```bash
xpip install xontrib-jump-to-dir
# OR: xpip install -U git+https://github.com/anki-code/xontrib-jump-to-dir
```

## Usage

Init:
```xsh
# Check that you're using sqlite history in ~/.xonshrc
$XONSH_HISTORY_BACKEND = 'sqlite'
xontrib load jump_to_dir
```
Jump to directory by path:
```xsh
mkdir -p /tmp/hello /tmp/world
cd /tmp/hello
echo 1
echo 2
echo 3
cd /tmp/world
echo 1
cd /

j           # Jump to most frequent directory i.e. `/tmp/hello/` because 3 `echo` commands were executed.
j wor       # Jump to directory with `*wor*` in path i.e. `/tmp/world/`.
j t he      # Jump to directory with `*t*he*` in path i.e. `/tmp/hello/`.
```
Jump to directory by command:
```xsh
cd /tmp
echo 112233
cd /
jc 22       # Jump to the directory where `*22*` command executed i.e. `/tmp`.
```

Custom shortcut:
```xsh
$XONTRIB_JUMP_TO_DIR_SHORTCUT = 'z'
xontrib load jump_to_dir
z tm            # Jump to previous directory with `*tm*` in path e.g. `/tmp/`
zc git commit   #Jump to previous directory where `*git*commit*` command executed e.g. `/git/`
```

## How it works

The history database has the commands you run and the directory where you was. The xontrib sorts the directories from history database by count of executed commands and filter them by mask e.g. the `j tm` command will find the directories by mask `*tm*`. Then you jump into the existing directory with the highest number of executed commands or if you already there to the previous directory by statistics. So if you have no commands that were executed in `/example` directory please avoid expectation that you can jump to it by running `j ex`.

If you want to add fallback functionality to jump to any directory by partial path in case of zero result in history database (e.g. `j o lo bi` will jump to `/opt/local/bin`) feel free to create PR.

## Environment variables

* `XONTRIB_JUMP_TO_DIR_SHORTCUT` - shortcut string. Default `j`.
* `XONTRIB_JUMP_TO_DIR_WARNING` - show warnings from xontrib. Default `True`.

## Credits

This package was created with [xontrib template](https://github.com/xonsh/xontrib-template).
