diff options
| author | Kyren223 <ulmliad223@gmail.com> | 2024-02-18 14:34:15 +0200 |
|---|---|---|
| committer | Kyren223 <ulmliad223@gmail.com> | 2024-02-18 14:34:15 +0200 |
| commit | 82351a4e9fd086e54190f3ab3a08b737dddf2146 (patch) | |
| tree | 2e8840d1d4bf2e019e747d27e3888d6af238db85 | |
| parent | b11d3305fa409d3ec3f2c9a0f43b1667f8c64cb5 (diff) | |
Changed version to 1.0
Added an Icon
Added README.md
Added TODO.md
Added LICENSE
| -rw-r--r-- | .gitignore | 4 | ||||
| -rw-r--r-- | .idea/codeStyles/Project.xml | 15 | ||||
| -rw-r--r-- | .idea/codeStyles/codeStyleConfig.xml | 5 | ||||
| -rw-r--r-- | LICENSE | 21 | ||||
| -rw-r--r-- | README.md | 108 | ||||
| -rw-r--r-- | TOOD.md | 10 | ||||
| -rw-r--r-- | build.gradle.kts | 10 | ||||
| -rw-r--r-- | src/main/resources/META-INF/pluginIcon.svg | 36 |
8 files changed, 192 insertions, 17 deletions
@@ -39,4 +39,6 @@ bin/ .vscode/ ### Mac OS ### -.DS_Store
\ No newline at end of file +.DS_Store + +/certificate/ diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml new file mode 100644 index 0000000..72eb968 --- /dev/null +++ b/.idea/codeStyles/Project.xml @@ -0,0 +1,15 @@ +<component name="ProjectCodeStyleConfiguration"> + <code_scheme name="Project" version="173"> + <JetCodeStyleSettings> + <option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" /> + </JetCodeStyleSettings> + <codeStyleSettings language="JAVA"> + <indentOptions> + <option name="KEEP_INDENTS_ON_EMPTY_LINES" value="true" /> + </indentOptions> + </codeStyleSettings> + <codeStyleSettings language="kotlin"> + <option name="CODE_STYLE_DEFAULTS" value="KOTLIN_OFFICIAL" /> + </codeStyleSettings> + </code_scheme> +</component>
\ No newline at end of file diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml new file mode 100644 index 0000000..79ee123 --- /dev/null +++ b/.idea/codeStyles/codeStyleConfig.xml @@ -0,0 +1,5 @@ +<component name="ProjectCodeStyleConfiguration"> + <state> + <option name="USE_PER_PROJECT_SETTINGS" value="true" /> + </state> +</component>
\ No newline at end of file @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Kyren223 + +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.
\ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..7f2ba7f --- /dev/null +++ b/README.md @@ -0,0 +1,108 @@ +<div align="center"> + +# Harpoon for JetBrains +##### Getting you where you want with the fewest keystrokes. +</div> + +## 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 <leader>a :action HarpoonAppend<CR> + +" Open the Harpoon quick menu +map <C-h> :action HarpoonToggleQuickMenu<CR> + +" Select the given file (from the Quick Menu) and open it +map <leader>o :action HarpoonQuickMenuSelect<CR> + +" Hotkeys to open the first 4 items in the Harpoon list +map <C-h> :action HarpoonSelect1<CR> +map <C-t> :action HarpoonSelect2<CR> +map <C-n> :action HarpoonSelect3<CR> +map <C-s> :action HarpoonSelect4<CR> + +" Toggle previous & next buffers stored within Harpoon list +map <C-S-P> :action HarpoonSelectPrev<CR> +map <C-S-N> :action HarpoonSelectNext<CR> +``` + +### My .ideavimrc Configuration +```vimrc +map <leader>a :action HarpoonAppend<CR> +map <C-e> :action HarpoonToggleQuickMenu<CR> +" I am Using "Enter" from settings so no need to map it here + +map <C-1> :action HarpoonSelect1<CR> +map <C-2> :action HarpoonSelect2<CR> +map <C-3> :action HarpoonSelect3<CR> +map <C-4> :action HarpoonSelect4<CR> +``` + +### 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 + @@ -0,0 +1,10 @@ + +* Add $ syntax for quick menu, dollar syntax means there can only be one file with that name in the project and it will always know how to find it that way it can show only `$Main.java` rather than entire path +* Add # syntax for quick menu, which will use some per-project configured path similar to `...` for project path, `#` will be replaced with the configured project-specific path +* Look into having an option to have no extention to files +* Fix "out of window" issue with quick menu enter press +* Add a setting to allow you to keep in memory the line you were on when you opened the quick menu between quick menu opens +* Add a Global Quick Menu (and maybe actions too?) for global files like .ideavimrc +* Consider adding a local (and global) "shortcut" list where you can assign a name (prefixed with $) to a path, ex: $Kotlin -> src/main/kotlin +* Add an option (or an action) to create a shortcut automatically when adding a file, so "path/to/file.java" -> "$file" +* Add a shortcut menu like the quick menu but for the list of shortcuts diff --git a/build.gradle.kts b/build.gradle.kts index 7824a69..09291f4 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -5,7 +5,7 @@ plugins { } group = "me.kyren223" -version = "0.1" +version = "1.0" repositories { mavenCentral() @@ -36,12 +36,12 @@ tasks { } signPlugin { - certificateChain.set(System.getenv("CERTIFICATE_CHAIN")) - privateKey.set(System.getenv("PRIVATE_KEY")) - password.set(System.getenv("PRIVATE_KEY_PASSWORD")) + certificateChainFile.set(file("certificate/chain.crt")) + privateKeyFile.set(file("certificate/private.pem")) + password.set(providers.environmentVariable("PRIVATE_KEY_PASSWORD")) } publishPlugin { - token.set(System.getenv("PUBLISH_TOKEN")) + token.set(providers.environmentVariable("PUBLISH_TOKEN")) } } diff --git a/src/main/resources/META-INF/pluginIcon.svg b/src/main/resources/META-INF/pluginIcon.svg index dcf6b99..e79cf98 100644 --- a/src/main/resources/META-INF/pluginIcon.svg +++ b/src/main/resources/META-INF/pluginIcon.svg @@ -1,12 +1,26 @@ <svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg"> - <path d="M32.0845 7.94025V4H24.0203V7.9896H16.029V4H7.91553V7.94025H4V36H16.0044V32.0045C16.0058 30.9457 16.4274 29.9308 17.1766 29.1826C17.9258 28.4345 18.9412 28.0143 20 28.0143C21.0588 28.0143 22.0743 28.4345 22.8234 29.1826C23.5726 29.9308 23.9942 30.9457 23.9956 32.0045V36H36V7.94025H32.0845Z" - fill="url(#paint0_linear)"/> - <defs> - <linearGradient id="paint0_linear" x1="2.94192" y1="4.89955" x2="37.7772" y2="39.7345" - gradientUnits="userSpaceOnUse"> - <stop offset="0.15937" stop-color="#3BEA62"/> - <stop offset="0.5404" stop-color="#3C99CC"/> - <stop offset="0.93739" stop-color="#6B57FF"/> - </linearGradient> - </defs> -</svg>
\ No newline at end of file +<path d="M19.4431 20.5569V23.4283H16.5717V20.5569H19.4431Z" fill="#2B3339"/> +<path d="M18.022 21.9781V24.8495H15.1506V21.9781H18.022Z" fill="#2B3339"/> +<path d="M16.6008 23.3994V26.2708H13.7295V23.3994H16.6008Z" fill="#2B3339"/> +<path d="M15.1797 24.8207V27.6921H12.3083V24.8207H15.1797Z" fill="#2B3339"/> +<path d="M13.7581 26.2419V29.1133H10.8867V26.2419H13.7581Z" fill="#2B3339"/> +<path d="M12.3372 27.6631V30.5345H9.46578V27.6631H12.3372Z" fill="#2B3339"/> +<path d="M10.9155 29.0844V31.9557H8.04415V29.0844H10.9155Z" fill="#2B3339"/> +<path d="M9.49463 30.5059V33.3772H6.62326V30.5059H9.49463Z" fill="#2B3339"/> +<path d="M8.07324 31.9271V34.7985H5.20187V31.9271H8.07324Z" fill="#2B3339"/> +<path d="M6.6521 33.3483V36.2196H3.78073V33.3483H6.6521Z" fill="#2B3339"/> +<path d="M5.23071 34.7695V37.6409H2.35934V34.7695H5.23071Z" fill="#2B3339"/> +<path d="M27.7678 12.2323V15.1037H24.8964V12.2323H27.7678Z" fill="#487494"/> +<path d="M37.5647 12.2831V15.1545H34.6933V12.2831H37.5647Z" fill="#487494"/> +<path d="M32.6411 7.3595V10.2309H29.7697V7.3595H32.6411Z" fill="#487494"/> +<path d="M32.6917 17.1559V20.0273H29.8203V17.1559H32.6917Z" fill="#487494"/> +<path d="M22.8953 17.1055V19.9768H20.0239V17.1055H22.8953Z" fill="#487494"/> +<path d="M22.8442 7.30872V10.1801H19.9729V7.30872H22.8442Z" fill="#487494"/> +<path d="M27.7173 2.43579V5.30716H24.8459V2.43579H27.7173Z" fill="#487494"/> +<path d="M17.9717 12.1818V15.0531H15.1003V12.1818H17.9717Z" fill="#487494"/> +<path d="M27.8188 22.0291V24.9004H24.9475V22.0291H27.8188Z" fill="#487494"/> +<path d="M25.5708 3.1322L26.9921 4.55346L15.2667 16.2788L13.8454 14.8576L25.5708 3.1322Z" fill="#487494"/> +<path d="M35.4182 12.9795L36.8395 14.4007L25.1141 26.1261L23.6928 24.7049L35.4182 12.9795Z" fill="#487494"/> +<path d="M30.4944 8.05591L31.9156 9.47717L20.1903 21.2025L18.769 19.7813L30.4944 8.05591Z" fill="#487494"/> +<path d="M13.8452 14.8575L25.1138 26.1261L23.6417 27.5981L12.3732 16.3296L13.8452 14.8575Z" fill="#487494"/> +</svg> |
