# Harpoon for JetBrains
##### Getting you where you want with the fewest keystrokes.
## Table of Contents
* [Features](#features)
* [Installation](#installation)
* [Getting Started](#getting-started)
* [Settings](#settings)
* [Contribution](#contribution)
* [License](#license)
* [Contact](#contact)
## Description
This plugin is inspired by the original [Harpoon](https://github.com/ThePrimeagen/harpoon) NeoVim plugin by ThePrimeagen
but aims to provide the same functionality for JetBrains IDEs.
## Features
* Navigate to your most used files with a single keystroke.
* Easily append files to your Harpoon list.
* Quick Menu
* Select a file from your Harpoon list and open it.
* Delete a file from your Harpoon list.
* Reorder / Move files in your Harpoon list.
* Add / Insert files to your Harpoon list.
* Project-relative file paths using `...` syntax.
* Per-project Harpoon lists.
* Configurable Vim & IDE keymaps for all actions.
## Installation
* Version 2023.1 or later of any IntelliJ-based IDE is required.
* Install the plugin from the [JetBrains Marketplace](https://plugins.jetbrains.com/plugin/23771-harpoonforjb).
## Getting Started
### Example .ideavimrc Configuration
```vimrc
" Append the current file to the Harpoon list
map a :action HarpoonAppend
" Open the Harpoon quick menu
map :action HarpoonToggleQuickMenu
" Select the given file (from the Quick Menu) and open it
map o :action HarpoonQuickMenuSelect
" Hotkeys to open the first 4 items in the Harpoon list
map :action HarpoonSelect1
map :action HarpoonSelect2
map :action HarpoonSelect3
map :action HarpoonSelect4
" Toggle previous & next buffers stored within Harpoon list
map :action HarpoonSelectPrev
map :action HarpoonSelectNext
```
### My .ideavimrc Configuration
```vimrc
map a :action HarpoonAppend
map :action HarpoonToggleQuickMenu
" I am Using "Enter" from settings so no need to map it here
map :action HarpoonSelect1
map :action HarpoonSelect2
map :action HarpoonSelect3
map :action HarpoonSelect4
```
### Settings
**Descriptions**
* Harpoon Width - Describes how wide the Harpoon Quick Menu should be.
* Harpoon Height - Describes how tall the Harpoon Quick Menu
* Harpoon Font Size - Describes the font size of the Harpoon Quick Menu
* Enter - When checked the Harpoon Quick Menu will open the file when you press enter, otherwise it will look for your .ideavimrc file for the keybinding.
**Defaults**
* Harpoon Width - 800
* Harpoon Height - 400
* Harpoon Font Size - 20
* Enter - true
## Contribution
This plugin is open-source and contributions are welcome.
Note to beginners or first-time contributors: I recommend starting by going to the issues tab and looking for issues to work on.
### Steps to contribute
1. Fork the repository.
2. Make your changes.
3. Push your changes to your fork.
4. Create a pull request.
5. Wait for the pull request to be reviewed.
## License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
The logo was design by me and is copyrighted.
You may not use it without my permission.
## Contact
* [GitHub](https://github.com/Kyren223)
* Kyren223 on Discord