Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
deca81c
Refactor fuzzy grep to a more sane architecture
MituuZ Dec 16, 2025
4d5835a
Add tests for command creation
MituuZ Dec 16, 2025
e149d0a
Add tests for backend resolver
MituuZ Dec 16, 2025
e880fe8
Move file opening logic to a shared functon
MituuZ Dec 16, 2025
4ba3290
Add new actions
MituuZ Dec 16, 2025
12398b7
Some more refactoring
MituuZ Dec 16, 2025
3fe5c8e
Fix tests
MituuZ Dec 16, 2025
ef07112
Update IntelliJ platform plugin and add non IC variants
MituuZ Dec 16, 2025
6ff6196
Handle parsing and secondary field through the backend
MituuZ Dec 16, 2025
9f87c49
Handle absolute paths when grepping
MituuZ Dec 17, 2025
98be19d
Add better explanations
MituuZ Dec 17, 2025
53edfb5
Add windows to the test matrix
MituuZ Dec 17, 2025
55cae91
Add invalid input tests and remove unnecessary safe guard
MituuZ Dec 17, 2025
f96ebe7
Handle popup title dynamically
MituuZ Dec 17, 2025
6b72ad1
Only handle relative paths when creating row containers
MituuZ Dec 17, 2025
453b2e6
Update changelog and default list movement binds
MituuZ Dec 17, 2025
20ef547
Fix tests
MituuZ Dec 17, 2025
f86e373
Update changelog
MituuZ Dec 17, 2025
67dd4b0
Use single alarm for fuzzy grep
MituuZ Dec 17, 2025
4d8a724
Only upload a single artifact
MituuZ Dec 17, 2025
7b41ad2
Fix file separator discrepancy
MituuZ Dec 17, 2025
0b6e9fd
Add a separate job for preview
MituuZ Dec 17, 2025
c253e19
Add placeholder text
MituuZ Dec 17, 2025
ae9fd3c
Replace JSlitPane with JBSplitter
MituuZ Dec 18, 2025
fb373b3
Remove manual sizing
MituuZ Dec 18, 2025
1592027
Fix styling
MituuZ Dec 18, 2025
b90af7e
Add support for secondary field logic for each grep variation
MituuZ Dec 18, 2025
c8e6216
Add explicit close behaviour
MituuZ Dec 18, 2025
d9bf8c3
Update changelog
MituuZ Dec 18, 2025
72cbc15
Add concurrency limit to reduce unnecessary runtime
MituuZ Dec 18, 2025
b338fb2
Fix file extension handlin
MituuZ Dec 18, 2025
64bec99
Add test for file glob handling
MituuZ Dec 18, 2025
0963615
Update readme
MituuZ Dec 18, 2025
1ee303e
Remove support for old actions and change version to 2.0.0
MituuZ Dec 18, 2025
65a3290
Update action examples
MituuZ Dec 18, 2025
96a6691
Add normal map
MituuZ Dec 18, 2025
91b019d
Fix example
MituuZ Dec 18, 2025
74ad4bb
Use better example mappings
MituuZ Dec 18, 2025
815e0d7
Update features
MituuZ Dec 18, 2025
ee4462e
Increase default size a bit
MituuZ Dec 18, 2025
6c13be7
Cleanup
MituuZ Dec 18, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 10 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,12 +6,19 @@ on:
pull_request:
branches: [ "main" ]

concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true

permissions:
contents: read

jobs:
test:
runs-on: ubuntu-latest
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ ubuntu-latest, windows-latest ]
steps:
- uses: actions/checkout@v4

Expand All @@ -25,6 +32,8 @@ jobs:
run: ./gradlew koverXmlReport

- name: Upload coverage report artifact
# Only upload one artifact
if: matrix.os == 'ubuntu-latest'
uses: actions/upload-artifact@v4
with:
name: kover-report
Expand Down
65 changes: 57 additions & 8 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ import org.jetbrains.kotlin.gradle.dsl.JvmTarget
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

// Use the same version and group for the jar and the plugin
val currentVersion = "1.15.0"
val currentVersion = "2.0.0"
val myGroup = "com.mituuz"
version = currentVersion
group = myGroup
Expand All @@ -39,15 +39,64 @@ intellijPlatform {

changeNotes = """
<h2>Version $currentVersion</h2>
<ul>
<li>Refactor file search to use coroutines</li>
<p>This version contains larger refactors and multiple new actions enabled by them.</p>
<p>I&#39;m updating the existing package structure to keep things nicer and not supporting the old actions to avoid possible problems in the future.</p>

<h3>Breaking changes</h3>
<p><strong>Rename existing actions</strong></p>
<ul>
<li>Handle list size limiting during processing instead of doing them separately</li>
<li><code>com.mituuz.fuzzier.FuzzyGrepCaseInsensitive</code> to <code>com.mituuz.fuzzier.grep.FuzzyGrepCI</code></li>
<li><code>com.mituuz.fuzzier.FuzzyGrep</code> to <code>com.mituuz.fuzzier.grep.FuzzyGrep</code></li>
<li><code>com.mituuz.fuzzier.Fuzzier</code> to <code>com.mituuz.fuzzier.search.Fuzzier</code></li>
<li><code>com.mituuz.fuzzier.FuzzierVCS</code> to <code>com.mituuz.fuzzier.search.FuzzierVCS</code></li>
<li><code>com.mituuz.fuzzier.FuzzyMover</code> to <code>com.mituuz.fuzzier.operation.FuzzyMover</code></li>
</ul>
<li>Add debouncing for fuzzy file preview using `SingleAlarm`</li>
<li>Refactor everything</li>
<li>Add auto sizing option for the popup (default)</li>
</ul>
<p><strong>Update default list movement keys</strong></p>
<ul>
<li>From <code>CTRL + j</code> and <code>CTRL + k</code> to <code>CTRL + n</code> and <code>CTRL + p</code></li>
</ul>

<h3>New actions</h3>
<p>Added some new grep variations</p>
<pre><code>com.mituuz.fuzzier.grep.FuzzyGrepOpenTabsCI
com.mituuz.fuzzier.grep.FuzzyGrepOpenTabs
com.mituuz.fuzzier.grep.FuzzyGrepCurrentBufferCI
com.mituuz.fuzzier.grep.FuzzyGrepCurrentBuffer</code></pre>

<h3>Example mappings</h3>
<pre><code>&quot; File search
nmap &lt;Leader&gt;sf &lt;action&gt;(com.mituuz.fuzzier.search.Fuzzier)
nmap &lt;Leader&gt;sg &lt;action&gt;(com.mituuz.fuzzier.search.FuzzierVCS)

&quot; Mover
nmap &lt;Leader&gt;fm &lt;action&gt;(com.mituuz.fuzzier.operation.FuzzyMover)

&quot; Grepping
nmap &lt;Leader&gt;ss &lt;action&gt;(com.mituuz.fuzzier.grep.FuzzyGrepCI)
nmap &lt;Leader&gt;sS &lt;action&gt;(com.mituuz.fuzzier.grep.FuzzyGrep)
nmap &lt;Leader&gt;st &lt;action&gt;(com.mituuz.fuzzier.grep.FuzzyGrepOpenTabsCI)
nmap &lt;Leader&gt;sT &lt;action&gt;(com.mituuz.fuzzier.grep.FuzzyGrepOpenTabs)
nmap &lt;Leader&gt;sb &lt;action&gt;(com.mituuz.fuzzier.grep.FuzzyGrepCurrentBufferCI)
nmap &lt;Leader&gt;sB &lt;action&gt;(com.mituuz.fuzzier.grep.FuzzyGrepCurrentBuffer)</code></pre>

<h3>New features</h3>
<ul>
<li>Popup now defaults to auto-sized, which scales with the current window</li>
<li>You can revert this from the settings</li>
</ul>

<h3>Other changes</h3>
<ul>
<li>Refactor file search to use coroutines
<ul>
<li>Handle list size limiting during processing instead of doing them separately</li>
</ul>
</li>
<li>Add debouncing for file preview using <code>SingleAlarm</code></li>
<li>Refactor everything</li>
<li>Remove manual handling of the divider location (use JBSplitter instead) and unify styling</li>
</ul>

""".trimIndent()

ideaVersion {
Expand Down
62 changes: 59 additions & 3 deletions changelog.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,68 @@
# Changelog

## Version 1.15.0
## Version 2.0.0

This version contains larger refactors and multiple new actions enabled by them.

I'm updating the existing package structure to keep things nicer and not supporting the old actions to avoid possible
problems in the future.

### Breaking changes

**Rename existing actions**

- `com.mituuz.fuzzier.FuzzyGrepCaseInsensitive` to `com.mituuz.fuzzier.grep.FuzzyGrepCI`
- `com.mituuz.fuzzier.FuzzyGrep` to `com.mituuz.fuzzier.grep.FuzzyGrep`
- `com.mituuz.fuzzier.Fuzzier` to `com.mituuz.fuzzier.search.Fuzzier`
- `com.mituuz.fuzzier.FuzzierVCS` to `com.mituuz.fuzzier.search.FuzzierVCS`
- `com.mituuz.fuzzier.FuzzyMover` to `com.mituuz.fuzzier.operation.FuzzyMover`

**Update default list movement keys**

- From `CTRL + j` and `CTRL + k` to `CTRL + n` and `CTRL + p`

### New actions

Added some new grep variations

```
com.mituuz.fuzzier.grep.FuzzyGrepOpenTabsCI
com.mituuz.fuzzier.grep.FuzzyGrepOpenTabs
com.mituuz.fuzzier.grep.FuzzyGrepCurrentBufferCI
com.mituuz.fuzzier.grep.FuzzyGrepCurrentBuffer
```

### Example mappings

```
" File search
nmap <Leader>sf <action>(com.mituuz.fuzzier.search.Fuzzier)
nmap <Leader>sg <action>(com.mituuz.fuzzier.search.FuzzierVCS)

" Mover
nmap <Leader>fm <action>(com.mituuz.fuzzier.operation.FuzzyMover)

" Grepping
nmap <Leader>ss <action>(com.mituuz.fuzzier.grep.FuzzyGrepCI)
nmap <Leader>sS <action>(com.mituuz.fuzzier.grep.FuzzyGrep)
nmap <Leader>st <action>(com.mituuz.fuzzier.grep.FuzzyGrepOpenTabsCI)
nmap <Leader>sT <action>(com.mituuz.fuzzier.grep.FuzzyGrepOpenTabs)
nmap <Leader>sb <action>(com.mituuz.fuzzier.grep.FuzzyGrepCurrentBufferCI)
nmap <Leader>sB <action>(com.mituuz.fuzzier.grep.FuzzyGrepCurrentBuffer)
```

### New features

- Popup now defaults to auto-sized, which scales with the current window
- You can revert this from the settings

### Other changes

- Refactor file search to use coroutines
- Handle list size limiting during processing instead of doing them separately
- Add debouncing for fuzzy file preview using `SingleAlarm`
- Add debouncing for file preview using `SingleAlarm`
- Refactor everything
- Add auto sizing option for the popup (default)
- Remove manual handling of the divider location (use JBSplitter instead) and unify styling

## Version 1.14.0

Expand Down
2 changes: 1 addition & 1 deletion gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
junit5 = "6.0.1"
junit4 = "4.13.2"
kotlin = "2.2.21"
intellijPlatform = "2.10.4"
intellijPlatform = "2.10.5"
kover = "0.9.3"
communityVersion = "2025.1"
mockk = "1.14.6"
Expand Down
33 changes: 22 additions & 11 deletions readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,11 +42,12 @@ List movement can be remapped from settings -> keymaps, but do not support chord

## Features

- Fuzzy file finder
- Search all except excluded files
- Search only from VCS-tracked files
- Fuzzy file search
- Search all except excluded files
- Search only from VCS-tracked files
- Text search leveraging [ripgrep](https://github.com/BurntSushi/ripgrep "Link to GitHub - ripgrep"), grep or findstr
- With file globbing support for ripgrep
- Support for searching from the whole project, within open tabs or the current buffer
- With file extension support for ripgrep in the secondary search field
- File mover

## Documentation
Expand All @@ -60,14 +61,23 @@ The goal is to have a central place for all the documentation and to keep the RE

### Adding ideavim mapping for the plugin

Example of a .ideavimrc-row to add a vim keybinding for the plugin
Example `.ideavimrc` rows to add a vim keybindings for the plugin

```
map <Leader>pf <action>(com.mituuz.fuzzier.Fuzzier)
map <Leader>gf <action>(com.mituuz.fuzzier.FuzzierVCS)
map <Leader>mf <action>(com.mituuz.fuzzier.FuzzyMover)
map <Leader>ff <action>(com.mituuz.fuzzier.FuzzyGrep)
map <Leader>ff <action>(com.mituuz.fuzzier.FuzzyGrepCaseInsensitive)
" File search
nmap <Leader>sf <action>(com.mituuz.fuzzier.search.Fuzzier)
nmap <Leader>sg <action>(com.mituuz.fuzzier.search.FuzzierVCS)

" Mover
nmap <Leader>fm <action>(com.mituuz.fuzzier.operation.FuzzyMover)

" Grepping
nmap <Leader>ss <action>(com.mituuz.fuzzier.grep.FuzzyGrepCI)
nmap <Leader>sS <action>(com.mituuz.fuzzier.grep.FuzzyGrep)
nmap <Leader>st <action>(com.mituuz.fuzzier.grep.FuzzyGrepOpenTabsCI)
nmap <Leader>sT <action>(com.mituuz.fuzzier.grep.FuzzyGrepOpenTabs)
nmap <Leader>sb <action>(com.mituuz.fuzzier.grep.FuzzyGrepCurrentBufferCI)
nmap <Leader>sB <action>(com.mituuz.fuzzier.grep.FuzzyGrepCurrentBuffer)
```

### Adding an editor shortcut
Expand All @@ -76,7 +86,8 @@ map <Leader>ff <action>(com.mituuz.fuzzier.FuzzyGrepCaseInsensitive)

## Installation

The plugin can be installed from the [JetBrains Marketplace](https://plugins.jetbrains.com/plugin/23451-fuzzier "Link to the JetBrains Marketplace - Fuzzier")
The plugin can be installed from
the [JetBrains Marketplace](https://plugins.jetbrains.com/plugin/23451-fuzzier "Link to the JetBrains Marketplace - Fuzzier")

## Contact

Expand Down
Loading
Loading