diff --git a/cmd/vibes/lsp.go b/cmd/vibes/lsp.go index 128cb4f..e259ebf 100644 --- a/cmd/vibes/lsp.go +++ b/cmd/vibes/lsp.go @@ -7,6 +7,7 @@ import ( "io" "os" "regexp" + "slices" "sort" "strconv" "strings" @@ -345,15 +346,11 @@ func completionItems() []map[string]any { } func classifyWord(word string) string { - for _, keyword := range lspKeywords { - if keyword == word { - return "keyword" - } + if slices.Contains(lspKeywords, word) { + return "keyword" } - for _, builtin := range lspBuiltins { - if builtin == word { - return "builtin" - } + if slices.Contains(lspBuiltins, word) { + return "builtin" } return "symbol" } @@ -372,10 +369,7 @@ func wordAtPosition(source string, line, character int) string { if character < 0 { character = 0 } - character = utf16OffsetToRuneIndex(lineText, character) - if character > len(runes) { - character = len(runes) - } + character = min(utf16OffsetToRuneIndex(lineText, character), len(runes)) cursor := character if cursor == len(runes) { diff --git a/vibes/capability_contracts_cycles.go b/vibes/capability_contracts_cycles.go index f8c5e4e..3c938d8 100644 --- a/vibes/capability_contracts_cycles.go +++ b/vibes/capability_contracts_cycles.go @@ -1,5 +1,7 @@ package vibes +import "slices" + import "reflect" type capabilityCycleScanner struct { @@ -34,10 +36,8 @@ func (s *capabilityCycleScanner) containsCycle(val Value) bool { return true } s.visitingArrays[id] = struct{}{} - for _, item := range values { - if s.containsCycle(item) { - return true - } + if slices.ContainsFunc(values, s.containsCycle) { + return true } delete(s.visitingArrays, id) s.seenArrays[id] = struct{}{} diff --git a/vibes/execution_members_array_transforms.go b/vibes/execution_members_array_transforms.go index 00a00f1..1ae0974 100644 --- a/vibes/execution_members_array_transforms.go +++ b/vibes/execution_members_array_transforms.go @@ -192,10 +192,7 @@ func arrayMemberTransforms(property string) (Value, error) { } chunks := make([]Value, 0, chunkCapacity) for i := 0; i < len(arr); i += size { - end := i + size - if end > len(arr) { - end = len(arr) - } + end := min(i+size, len(arr)) part := make([]Value, end-i) copy(part, arr[i:end]) chunks = append(chunks, NewArray(part)) diff --git a/vibes/execution_members_string_helpers.go b/vibes/execution_members_string_helpers.go index ed938c3..a9ab2e1 100644 --- a/vibes/execution_members_string_helpers.go +++ b/vibes/execution_members_string_helpers.go @@ -198,7 +198,7 @@ func stringTemplateOption(kwargs map[string]Value) (bool, error) { func stringTemplateLookup(context Value, keyPath string) (Value, bool) { current := context - for _, segment := range strings.Split(keyPath, ".") { + for segment := range strings.SplitSeq(keyPath, ".") { if segment == "" { return NewNil(), false }