Krolyxon
Commit b101de2

Branches

Refs →

aurora.configquickshellauroraFuzzy.qml

25 lines · 851 B · QML

1pragma Singleton
2import QtQuick
3import Quickshell
4
5// fuzzel-style matching shared by PowerMenu and Runner.
6Singleton {
7 // query chars must appear in order; prefix > word start > contiguous > scattered. q must be lowercase.
8 function score(label, q) { return scoreLow(label.toLowerCase(), q) }
9 // same, for an already lowercased s (big dmenu lists lowercase once, not per keystroke)
10 function scoreLow(s, q) {
11 if (q === "") return 1
12 if (s.indexOf(q) === 0) return 1000
13 var w = s.indexOf(" " + q)
14 if (w >= 0) return 500
15 if (s.indexOf(q) >= 0) return 300
16 var pos = 0, gaps = 0
17 for (var i = 0; i < q.length; i++) {
18 var f = s.indexOf(q[i], pos)
19 if (f < 0) return 0
20 gaps += f - pos
21 pos = f + 1
22 }
23 return 100 - gaps
24 }
25}