commit 99d65f0

delthas  ·  2024-07-16 18:08:32 +0000 UTC
parent fcd4e9d
Sort powered users by power level

Instead of just alphabetically between them.
3 files changed,  +18, -12
M app.go
M app.go
+1, -5
 1@@ -743,11 +743,7 @@ func (app *App) handleKeyEvent(ev vaxis.Key) {
 2 		if app.win.InputDeleteWord() {
 3 			app.typing()
 4 		}
 5-	} else if keyMatches(ev, vaxis.KeyBackspace, 0) {
 6-		if app.win.InputBackspace() {
 7-			app.typing()
 8-		}
 9-	} else if keyMatches(ev, vaxis.KeyBackspace, vaxis.ModShift) {
10+	} else if keyMatches(ev, vaxis.KeyBackspace, 0) || keyMatches(ev, vaxis.KeyBackspace, vaxis.ModShift) {
11 		if app.win.InputBackspace() {
12 			app.typing()
13 		}
+4, -1
 1@@ -298,7 +298,10 @@ func (s *Session) Names(target string) []Member {
 2 			Self: true,
 3 		})
 4 	}
 5-	sort.Sort(members(names))
 6+	sort.Sort(members{
 7+		m:        names,
 8+		prefixes: s.prefixSymbols,
 9+	})
10 	return names
11 }
12 
+13, -6
 1@@ -470,24 +470,31 @@ type Member struct {
 2 	Self         bool // Added by senpai
 3 }
 4 
 5-type members []Member
 6+type members struct {
 7+	m        []Member
 8+	prefixes string
 9+}
10 
11 func (m members) Len() int {
12-	return len(m)
13+	return len(m.m)
14 }
15 
16 func (m members) Less(i, j int) bool {
17-	if m[i].PowerLevel != "" && m[j].PowerLevel == "" {
18+	if m.m[i].PowerLevel != "" && m.m[j].PowerLevel == "" {
19 		return true
20-	} else if m[i].PowerLevel == "" && m[j].PowerLevel != "" {
21+	} else if m.m[i].PowerLevel == "" && m.m[j].PowerLevel != "" {
22 		return false
23+	} else if m.m[i].PowerLevel != m.m[j].PowerLevel {
24+		pi := strings.IndexByte(m.prefixes, m.m[i].PowerLevel[0])
25+		pj := strings.IndexByte(m.prefixes, m.m[j].PowerLevel[0])
26+		return pi < pj
27 	} else {
28-		return strings.ToLower(m[i].Name.Name) < strings.ToLower(m[j].Name.Name)
29+		return strings.ToLower(m.m[i].Name.Name) < strings.ToLower(m.m[j].Name.Name)
30 	}
31 }
32 
33 func (m members) Swap(i, j int) {
34-	m[i], m[j] = m[j], m[i]
35+	m.m[i], m.m[j] = m.m[j], m.m[i]
36 }
37 
38 // ParseNameReply parses the last parameter of RPL_NAMREPLY, according to the