Add lsp's for many different languages and minor fixes
This commit is contained in:
@@ -30,6 +30,7 @@ struct LSPInstance {
|
||||
int stdin_fd{-1};
|
||||
int stdout_fd{-1};
|
||||
bool initialized = false;
|
||||
bool incremental_sync = true;
|
||||
uint32_t last_id = 0;
|
||||
Queue<json> inbox;
|
||||
Queue<json> outbox;
|
||||
|
||||
188
include/maps.h
188
include/maps.h
@@ -19,41 +19,177 @@ static const std::unordered_map<uint8_t, LSP> kLsps = {
|
||||
"--log=error",
|
||||
nullptr,
|
||||
}}},
|
||||
{2,
|
||||
{"ruby-lsp",
|
||||
{
|
||||
"ruby-lsp",
|
||||
nullptr,
|
||||
}}},
|
||||
{3,
|
||||
{"solargraph",
|
||||
{
|
||||
"solargraph",
|
||||
"stdio",
|
||||
nullptr,
|
||||
}}},
|
||||
{4,
|
||||
{"bash-language-server",
|
||||
{
|
||||
"bash-language-server",
|
||||
"start",
|
||||
nullptr,
|
||||
}}},
|
||||
{5,
|
||||
{"vscode-css-language-server",
|
||||
{
|
||||
"vscode-css-language-server",
|
||||
"--stdio",
|
||||
nullptr,
|
||||
}}},
|
||||
{6,
|
||||
{"vscode-json-language-server",
|
||||
{
|
||||
"vscode-json-language-server",
|
||||
"--stdio",
|
||||
nullptr,
|
||||
}}},
|
||||
{7,
|
||||
{"fish-lsp",
|
||||
{
|
||||
"fish-lsp",
|
||||
"start",
|
||||
nullptr,
|
||||
}}},
|
||||
{8,
|
||||
{"gopls",
|
||||
{
|
||||
"gopls",
|
||||
"serve",
|
||||
nullptr,
|
||||
}}},
|
||||
{9,
|
||||
{"haskell-language-server",
|
||||
{
|
||||
"haskell-language-server",
|
||||
"lsp",
|
||||
nullptr,
|
||||
}}},
|
||||
{10,
|
||||
{"emmet-ls",
|
||||
{
|
||||
"emmet-ls",
|
||||
"--stdio",
|
||||
nullptr,
|
||||
}}},
|
||||
{11,
|
||||
{"typescript-language-server",
|
||||
{
|
||||
"typescript-language-server",
|
||||
"--stdio",
|
||||
nullptr,
|
||||
}}},
|
||||
{12,
|
||||
{"lua-language-server",
|
||||
{
|
||||
"lua-language-server",
|
||||
nullptr,
|
||||
}}},
|
||||
{13,
|
||||
{"pyright-langserver",
|
||||
{
|
||||
"pyright-langserver",
|
||||
"--stdio",
|
||||
nullptr,
|
||||
}}},
|
||||
{14,
|
||||
{"rust-analyzer",
|
||||
{
|
||||
"rust-analyzer",
|
||||
nullptr,
|
||||
}}},
|
||||
{15,
|
||||
{"intelephense",
|
||||
{
|
||||
"intelephense",
|
||||
"--stdio",
|
||||
nullptr,
|
||||
}}},
|
||||
{16,
|
||||
{"marksman",
|
||||
{
|
||||
"marksman",
|
||||
"server",
|
||||
nullptr,
|
||||
}}},
|
||||
{17,
|
||||
{"nginx-language-server",
|
||||
{
|
||||
"nginx-language-server",
|
||||
nullptr,
|
||||
}}},
|
||||
{18,
|
||||
{"taplo",
|
||||
{
|
||||
"taplo",
|
||||
"lsp",
|
||||
"stdio",
|
||||
nullptr,
|
||||
}}},
|
||||
{19,
|
||||
{"yaml-language-server",
|
||||
{
|
||||
"yaml-language-server",
|
||||
"--stdio",
|
||||
nullptr,
|
||||
}}},
|
||||
{20,
|
||||
{"sqls",
|
||||
{
|
||||
"sqls",
|
||||
"serve",
|
||||
nullptr,
|
||||
}}},
|
||||
{21,
|
||||
{"make-language-server",
|
||||
{
|
||||
"make-language-server",
|
||||
nullptr,
|
||||
}}},
|
||||
};
|
||||
|
||||
static const std::unordered_map<std::string, Language> kLanguages = {
|
||||
{"bash", {"bash", LANG(bash)}},
|
||||
{"bash", {"bash", LANG(bash), 4}},
|
||||
{"c", {"c", LANG(cpp), 1}},
|
||||
{"cpp", {"cpp", LANG(cpp), 1}},
|
||||
{"h", {"h", LANG(cpp), 1}},
|
||||
{"css", {"css", LANG(css)}},
|
||||
{"fish", {"fish", LANG(fish)}},
|
||||
{"go", {"go", LANG(go)}},
|
||||
{"haskell", {"haskell", LANG(haskell)}},
|
||||
{"html", {"html", LANG(html)}},
|
||||
{"javascript", {"javascript", LANG(javascript)}},
|
||||
{"json", {"json", LANG(json)}},
|
||||
{"lua", {"lua", LANG(lua)}},
|
||||
{"make", {"make", LANG(make)}},
|
||||
{"python", {"python", LANG(python)}},
|
||||
{"ruby", {"ruby", LANG(ruby)}},
|
||||
{"rust", {"rust", LANG(rust)}},
|
||||
{"css", {"css", LANG(css), 5}},
|
||||
{"fish", {"fish", LANG(fish), 7}},
|
||||
{"go", {"go", LANG(go), 8}},
|
||||
{"gomod", {"gomod", LANG(gomod), 8}},
|
||||
{"haskell", {"haskell", LANG(haskell), 9}},
|
||||
{"html", {"html", LANG(html), 10}},
|
||||
{"javascript", {"javascript", LANG(javascript), 11}},
|
||||
{"json", {"json", LANG(json), 6}},
|
||||
{"erb", {"erb", LANG(embedded_template), 10}},
|
||||
{"ruby", {"ruby", LANG(ruby), 3}},
|
||||
{"lua", {"lua", LANG(lua), 12}},
|
||||
{"python", {"python", LANG(python), 13}},
|
||||
{"rust", {"rust", LANG(rust), 14}},
|
||||
{"php", {"php", LANG(php), 15}},
|
||||
{"markdown", {"markdown", LANG(markdown), 16}},
|
||||
{"markdown_inline", {"markdown_inline", LANG(markdown_inline), 16}},
|
||||
{"nginx", {"nginx", LANG(nginx), 17}},
|
||||
{"toml", {"toml", LANG(toml), 18}},
|
||||
{"yaml", {"yaml", LANG(yaml), 19}},
|
||||
{"sql", {"sql", LANG(sql), 20}},
|
||||
{"make", {"make", LANG(make), 21}},
|
||||
{"gdscript", {"gdscript", LANG(gdscript)}}, // TODO: connect to godot
|
||||
{"diff", {"diff", LANG(diff)}},
|
||||
{"embedded_template", {"embedded_template", LANG(embedded_template)}},
|
||||
{"gdscript", {"gdscript", LANG(gdscript)}},
|
||||
{"gitattributes", {"gitattributes", LANG(gitattributes)}},
|
||||
{"gitignore", {"gitignore", LANG(gitignore)}},
|
||||
{"gomod", {"gomod", LANG(gomod)}},
|
||||
{"ini", {"ini", LANG(ini)}},
|
||||
{"markdown", {"markdown", LANG(markdown)}},
|
||||
{"markdown_inline", {"markdown_inline", LANG(markdown_inline)}},
|
||||
{"nginx", {"nginx", LANG(nginx)}},
|
||||
{"php", {"php", LANG(php)}},
|
||||
{"query", {"query", LANG(query)}},
|
||||
{"regex", {"regex", LANG(regex)}},
|
||||
{"sql", {"sql", LANG(sql)}},
|
||||
{"toml", {"toml", LANG(toml)}},
|
||||
{"yaml", {"yaml", LANG(yaml)}},
|
||||
{"ini", {"ini", LANG(ini)}},
|
||||
};
|
||||
|
||||
static const std::unordered_map<std::string, std::string> kExtToLang = {
|
||||
@@ -85,8 +221,7 @@ static const std::unordered_map<std::string, std::string> kExtToLang = {
|
||||
{"rs", "rust"},
|
||||
{"diff", "diff"},
|
||||
{"patch", "diff"},
|
||||
{"erb", "embedded_template"},
|
||||
{"etlua", "embedded_template"},
|
||||
{"erb", "erb"},
|
||||
{"gd", "gdscript"},
|
||||
{"gitattributes", "gitattributes"},
|
||||
{"gitignore", "gitignore"},
|
||||
@@ -120,7 +255,6 @@ static const std::unordered_map<std::string, std::string> kMimeToLang = {
|
||||
{"text/x-rust", "rust"},
|
||||
{"text/x-lua", "lua"},
|
||||
{"text/x-diff", "diff"},
|
||||
{"text/x-embedded-template", "embedded_template"},
|
||||
{"text/x-gdscript", "gdscript"},
|
||||
{"text/x-gitattributes", "gitattributes"},
|
||||
{"text/x-gitignore", "gitignore"},
|
||||
|
||||
@@ -52,6 +52,7 @@ struct Coord {
|
||||
bool operator>=(const Coord &other) const { return !(*this < other); }
|
||||
};
|
||||
|
||||
std::string percent_encode(const std::string &s);
|
||||
std::string path_abs(const std::string &path_str);
|
||||
std::string path_to_file_uri(const std::string &path_str);
|
||||
int display_width(const char *str, size_t len);
|
||||
|
||||
Reference in New Issue
Block a user