utils
This commit is contained in:
parent
316cd28587
commit
4db161c4c0
|
@ -1,31 +1,30 @@
|
||||||
local lspconfig = require "lspconfig"
|
local lspconfig = require 'lspconfig'
|
||||||
local lspsettings = require "custom.plugins.configs.lspsettings"
|
local lspsettings = require 'custom.plugins.configs.lspsettings'
|
||||||
|
|
||||||
-- these are using the defaults
|
-- these are using the defaults
|
||||||
local servers = {
|
local servers = {
|
||||||
"html",
|
'html',
|
||||||
"cssls",
|
'cssls',
|
||||||
"tsserver",
|
'tsserver',
|
||||||
"clangd",
|
'clangd',
|
||||||
"bashls",
|
'bashls',
|
||||||
"cmake",
|
'cmake',
|
||||||
"yamlls",
|
'yamlls',
|
||||||
"texlab",
|
'texlab',
|
||||||
"csharp_ls",
|
'csharp_ls',
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, lsp in ipairs(servers) do
|
for _, lsp in ipairs(servers) do
|
||||||
lspconfig[lsp].setup()
|
lspconfig[lsp].setup {}
|
||||||
end
|
end
|
||||||
|
|
||||||
local server_with_settings = {
|
local server_with_settings = {
|
||||||
-- "textlsp",
|
-- "textlsp",
|
||||||
"ltex",
|
'ltex',
|
||||||
"rust_analyzer",
|
'rust_analyzer',
|
||||||
"basedpyright",
|
'basedpyright',
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, lsp in ipairs(server_with_settings) do
|
for _, lsp in ipairs(server_with_settings) do
|
||||||
lspconfig[lsp].setup(lspsettings[lsp])
|
lspconfig[lsp].setup(lspsettings[lsp])
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,84 @@
|
||||||
|
local M = {}
|
||||||
|
--- this function will split a string into a table of tokens, like it would
|
||||||
|
--- be passed into the `argv` of a program that was executed from the commandline
|
||||||
|
---
|
||||||
|
--- @param raw string string of cli args that should be split
|
||||||
|
--- @return table tokens args as a table
|
||||||
|
M.tokenize_args = function(raw)
|
||||||
|
-- NOTE: string.gmatch is does not use regex, but a smaller pattern matcher!
|
||||||
|
-- A complete regex parser would be larger than lua itself. See
|
||||||
|
-- [Programming in Lua 20.2](https://www.lua.org/pil/20.2.html).
|
||||||
|
--
|
||||||
|
-- Notable differences:
|
||||||
|
-- '-' is ungreedy wildcard
|
||||||
|
-- '*?' does not work
|
||||||
|
-- '|' is not or
|
||||||
|
--
|
||||||
|
-- This means we're better of implementing the lexer with an algorithm.
|
||||||
|
local t = {}
|
||||||
|
local current = ""
|
||||||
|
local in_str = false
|
||||||
|
local str_seek
|
||||||
|
for c in string.gmatch(raw, ".") do -- iterate through all chars
|
||||||
|
if c == " " and not in_str then
|
||||||
|
if string.len(current) > 0 then
|
||||||
|
table.insert(t, current)
|
||||||
|
current = ""
|
||||||
|
end
|
||||||
|
elseif c == '"' and not in_str then
|
||||||
|
in_str = true
|
||||||
|
str_seek = '"'
|
||||||
|
elseif c == "'" and not in_str then
|
||||||
|
in_str = true
|
||||||
|
str_seek = "'"
|
||||||
|
elseif c == str_seek and in_str then
|
||||||
|
in_str = false
|
||||||
|
table.insert(t, current)
|
||||||
|
current = ""
|
||||||
|
else
|
||||||
|
current = current .. c
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if string.len(current) > 0 then
|
||||||
|
table.insert(t, current)
|
||||||
|
end
|
||||||
|
return t
|
||||||
|
end
|
||||||
|
|
||||||
|
--- dumps a variable into a string, so it can be printed. This is meant for
|
||||||
|
--- debug prints
|
||||||
|
--- @param t any variable
|
||||||
|
--- @return string t_dumped t dumped to string
|
||||||
|
M.dump = function(t)
|
||||||
|
if type(t) == "table" then
|
||||||
|
local s = "{ "
|
||||||
|
for k, v in pairs(t) do
|
||||||
|
if type(k) ~= "number" then
|
||||||
|
k = '"' .. k .. '"'
|
||||||
|
end
|
||||||
|
if k ~= 1 then
|
||||||
|
s = s .. ", "
|
||||||
|
end
|
||||||
|
s = s .. "[" .. k .. "] = '" .. M.dump(v) .. "'"
|
||||||
|
end
|
||||||
|
return s .. " }"
|
||||||
|
else
|
||||||
|
return tostring(t)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
--- Try to require a module
|
||||||
|
--- @param module string module name
|
||||||
|
--- @return boolean available is the module available?
|
||||||
|
--- @return any loaded_module the loaded module if it is available
|
||||||
|
M.try_require = function(module)
|
||||||
|
local available, loaded_module = pcall(require, module)
|
||||||
|
if not available then
|
||||||
|
return available, nil
|
||||||
|
else
|
||||||
|
return available, loaded_module
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
return M
|
||||||
|
|
Loading…
Reference in New Issue