Authentication-Results: mail-b.sr.ht; dkim=pass header.d=coderkalyan.com header.i=@coderkalyan.com; dkim=pass header.d=amazonses.com header.i=@amazonses.com Received: from a27-10.smtp-out.us-west-2.amazonses.com (a27-10.smtp-out.us-west-2.amazonses.com [54.240.27.10]) by mail-b.sr.ht (Postfix) with ESMTPS id 73DFC11EF74 for <~taiite/public-inbox@lists.sr.ht>; Wed, 15 Dec 2021 02:30:02 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/simple; s=gpyhluv5ivwmetqjf2ztt4rubjdrznne; d=coderkalyan.com; t=1639535400; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version:Content-Transfer-Encoding; bh=gGGrLIAyAshVLnL+0IVfpy+ijLIEbXpwUhW+ITd1xZU=; b=B46/vOEwTMvsXOPz3mh0m/Im9SWK9zIwjMEINPsWXy6N4gZyDMc/dfmKpleEpPFT TLK8xjhxiqscGUHFDQfmAsE86cuqbA0MXBCCzgQ9I0Lx0qGJxINzBXAxN1MIbC+aP76 hQ1/Nh7MnukpzUarrmYci2DX/mJ9Te9rHPLb2BCs= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/simple; s=7v7vs6w47njt4pimodk5mmttbegzsi6n; d=amazonses.com; t=1639535400; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version:Content-Transfer-Encoding:Feedback-ID; bh=gGGrLIAyAshVLnL+0IVfpy+ijLIEbXpwUhW+ITd1xZU=; b=C2WmWo6fhqLLhrp5jIYdLny4Q6xw2HAD89qfJLD5v7CdtP1ZofNFFvU3+525O60K kQTrUi50NPHL+lJf0404DN0Km7bwD6GqG/d5r6udo9bLjcQzh/pCYLOL6lrP+HdlBCi U4xynLdf6fAMKc4vIgiBDN1XbBcTJ5f2kIDkXyDA= From: Kalyan Sriram To: ~taiite/public-inbox@lists.sr.ht Cc: Kalyan Sriram Subject: [PATCH senpai] ui: add commands completion Date: Wed, 15 Dec 2021 02:30:00 +0000 Message-ID: <0101017dbbecd681-00366930-132c-4522-ad50-e0ce04ed3a91-000000@us-west-2.amazonses.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Feedback-ID: 1.us-west-2.6woXiZ10/hvs78i2LW4ugcJq1GLEuVeUxt3YeADpvNg=:AmazonSES X-SES-Outgoing: 2021.12.15-54.240.27.10 --- app.go | 1 + completions.go | 20 ++++++++++++++++++++ 2 files changed, 21 insertions(+) diff --git a/app.go b/app.go index 1144560..4706536 100644 --- a/app.go +++ b/app.go @@ -938,6 +938,7 @@ func (app *App) completions(cursorIdx int, text []rune) []ui.Completion { cs = app.completionsChannelMembers(cs, cursorIdx, text) } cs = app.completionsMsg(cs, cursorIdx, text) + cs = app.completionsCommands(cs, cursorIdx, text) if cs != nil { cs = append(cs, ui.Completion{ diff --git a/completions.go b/completions.go index 3e4a516..6f99a60 100644 --- a/completions.go +++ b/completions.go @@ -99,6 +99,26 @@ func (app *App) completionsMsg(cs []ui.Completion, cursorIdx int, text []rune) [ return cs } +func (app *App) completionsCommands(cs []ui.Completion, cursorIdx int, text []rune) []ui.Completion { + if !hasPrefix(text, []rune("/")) { + return cs + } + uText := strings.ToUpper(string(text[1:])) + for name, _ := range commands { + if strings.HasPrefix(name, uText) { + c := make([]rune, 1+len(name)) + copy(c[:1], []rune("/")) + copy(c[1:], []rune(name)) + + cs = append(cs, ui.Completion{ + Text: c, + CursorIdx: 1 + len(name), + }) + } + } + return cs +} + func hasPrefix(s, prefix []rune) bool { return len(prefix) <= len(s) && equal(prefix, s[:len(prefix)]) } -- 2.34.1