-
Notifications
You must be signed in to change notification settings - Fork 1
/
completion_keywords.go
88 lines (83 loc) · 1.3 KB
/
completion_keywords.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
package project
import (
"strings"
"github.com/laytan/go-lsp-protocol/pkg/lsp/protocol"
"github.com/laytan/phpls/pkg/functional"
)
// Source: https://www.php.net/manual/en/reserved.keywords.php
var Keywords = []string{
"abstract",
"and",
"as",
"break",
"callable",
"case",
"catch",
"class",
"clone",
"const",
"continue",
"declare",
"default",
"die",
"do",
"echo",
"else",
"elseif",
"enddeclare",
"endfor",
"endforeach",
"endif",
"endswitch",
"endwhile",
"exit",
"extends",
"final",
"finally",
"fn",
"for",
"foreach",
"function",
"global",
"goto",
"if",
"implements",
"include",
"include_once",
"instanceof",
"insteadof",
"interface",
"match",
"namespace",
"new",
"or",
"print",
"private",
"protected",
"public",
"readonly",
"require",
"require_once",
"return",
"static",
"switch",
"throw",
"trait",
"try",
"use",
"var",
"while",
"xor",
"yield",
"yield from",
}
var KeywordItems = functional.Map(Keywords, func(keyword string) protocol.CompletionItem {
return protocol.CompletionItem{Label: keyword, Kind: protocol.KeywordCompletion}
})
func AddKeywordsWithPrefix(list *protocol.CompletionList, prefix string) {
for i := range KeywordItems {
if strings.HasPrefix(KeywordItems[i].Label, prefix) {
list.Items = append(list.Items, KeywordItems[i])
}
}
}