# editor: Improve code completion filtering to provide fewer and more accurate suggestions \(\#32928\) · gitcafe/zed

[View on GitCafe](https://git.cafe/gitcafe/zed/commit/131f2857a5b3c2315965c605019486d666b7b6f1)

Repository: [gitcafe/zed](https://git.cafe/gitcafe/zed)

Visibility: public

Requested revision: 131f2857a5b3c2315965c605019486d666b7b6f1

Requested commit: 131f2857a5b3c2315965c605019486d666b7b6f1

Commit: 131f2857a5b3c2315965c605019486d666b7b6f1

Tree: 481b6a7ae64c6385efc8373171cbade7d748dfa3

Author: Smit Barmase

Committer: GitHub

## Message

```
editor: Improve code completion filtering to provide fewer and more accurate suggestions (#32928)

Closes #32756

- Uses `filter_text` from LSP source to filter items in completion list.
This fixes noisy lists like on typing `await` in Rust, it would suggest
`await.or`, `await.and`, etc., which are bad suggestions. Fallbacks to
label.
- Add `penalize_length` flag to fuzzy matcher, which was the default
behavior across. Now, this flag is set to `false` just for code
completion fuzzy matching. This fixes the case where if the query is
`unreac` and the completion items are `unreachable` and
`unreachable!()`, the item with a shorter length would have a larger
score than the other one, which is not right in the case of
auto-complete context. Now these two items will have the same fuzzy
score, and LSP `sort_text` will take over in finalizing its ranking.
- Updated test to be more utility based rather than example based. This
will help to iterate/verify logic faster on what's going on.

Before/After:

await: 
<img width="600" alt="before-await"
src="https://github.com/user-attachments/assets/384138dd-a90d-4942-a430-6ae15df37268"
/>
<img width="600" alt="after-await"
src="https://github.com/user-attachments/assets/d05a10fa-bae5-49bd-9fe7-9933ff215f29"
/>

iter:
<img width="600" alt="before-iter"
src="https://github.com/user-attachments/assets/6e57ffe9-007d-4b17-9cc2-d48fc0176c8e"
/>
<img width="600" alt="after-iter"
src="https://github.com/user-attachments/assets/a8577a9f-dcc8-4fd6-9ba0-b7590584ec31"
/>

opt:
<img width="600" alt="opt-before"
src="https://github.com/user-attachments/assets/d45b6c52-c9ee-4bf3-8552-d5e3fdbecbff"
/>
<img width="600" alt="opt-after"
src="https://github.com/user-attachments/assets/daac11a8-9699-48f8-b441-19fe9803848d"
/>

Release Notes:

- Improved code completion filtering to provide fewer and more accurate
suggestions.
```

## Parents

- [65067dad9e81e1cb906f58e8cfdfe6c9f9df33a1](https://git.cafe/gitcafe/zed/commit/65067dad9e81e1cb906f58e8cfdfe6c9f9df33a1?format=markdown)

[Source at this commit](https://git.cafe/gitcafe/zed/tree/131f2857a5b3c2315965c605019486d666b7b6f1?format=markdown)
