Allow configuring lsp server list

This commit is contained in:
Zachary Yedidia
2020-08-13 13:06:37 -04:00
parent a26dd63d93
commit 3821a7a075
3 changed files with 26 additions and 7 deletions

View File

@@ -253,6 +253,11 @@ func main() {
screen.TermMessage(err)
}
err = lsp.Init()
if err != nil {
screen.TermMessage(err)
}
// flag options
for k, v := range optionFlags {
if *v != "" {

View File

@@ -3,10 +3,13 @@ package lsp
import (
"errors"
"io"
"log"
"io/ioutil"
"os"
"os/exec"
"path/filepath"
"strings"
"github.com/zyedidia/micro/v2/internal/config"
"gopkg.in/yaml.v2"
)
@@ -32,12 +35,23 @@ func GetLanguage(lang string) (Language, bool) {
return Language{}, false
}
func init() {
func Init() error {
var servers []byte
var err error
conf, err = LoadConfig([]byte(servers))
if err != nil {
log.Println("[micro-lsp]", err)
filename := filepath.Join(config.ConfigDir, "lsp.yaml")
if _, e := os.Stat(filename); e == nil {
servers, err = ioutil.ReadFile(filename)
if err != nil {
servers = servers_internal
}
} else {
err = ioutil.WriteFile(filename, servers_internal, 0644)
servers = servers_internal
}
conf, err = LoadConfig(servers)
return err
}
func LoadConfig(data []byte) (*Config, error) {

View File

@@ -1,6 +1,6 @@
package lsp
var servers = `language:
var servers_internal = []byte(`language:
rust:
command: rls
install: [["rustup", "update"], ["rustup", "component", "add", "rls", "rust-analysis", "rust-src"]]
@@ -64,4 +64,4 @@ var servers = `language:
install: [["cargo", "install", "svls"]]
d:
command: serve-d
`
`)