Basic non-compliant autocompletion via LSP

This commit is contained in:
Zachary Yedidia
2020-08-10 18:19:13 -04:00
parent f6ba76424a
commit 053134af1c
5 changed files with 193 additions and 58 deletions

View File

@@ -7,6 +7,7 @@ import (
"sort"
"strings"
lspt "github.com/sourcegraph/go-lsp"
"github.com/zyedidia/micro/v2/internal/util"
)
@@ -203,3 +204,34 @@ func BufferComplete(b *Buffer) ([]string, []string) {
return completions, suggestions
}
func LSPComplete(b *Buffer) ([]string, []string) {
c := b.GetActiveCursor()
_, argstart := GetWord(b)
if argstart == -1 {
return []string{}, []string{}
}
pos := lspt.Position{
Line: c.Y,
Character: c.X,
}
items, err := b.server.Completion(b.AbsPath, pos)
if err != nil {
return []string{}, []string{}
}
suggestions := make([]string, len(items))
for i, item := range items {
suggestions[i] = item.Label
}
completions := make([]string, len(suggestions))
for i := range suggestions {
completions[i] = util.SliceEndStr(suggestions[i], c.X-argstart)
}
return completions, suggestions
}