60 lines
1.5 KiB
Lua
60 lines
1.5 KiB
Lua
local cmd = vim.cmd
|
|
local util = require "vim.lsp.util"
|
|
local utils = require("utils")
|
|
|
|
function tablelength(T)
|
|
local count = 0
|
|
for _ in pairs(T) do
|
|
count = count + 1
|
|
end
|
|
return count
|
|
end
|
|
|
|
local function select_client(method)
|
|
local all_clients = vim.tbl_values(vim.lsp.buf_get_clients())
|
|
|
|
local supported_client
|
|
local found_client = false
|
|
for _, client in ipairs(all_clients) do
|
|
local supports = client.supports_method(method)
|
|
if supports then
|
|
found_client = true
|
|
supported_client = client
|
|
end
|
|
end
|
|
|
|
if not found_client then
|
|
return nil
|
|
end
|
|
|
|
return supported_client
|
|
end
|
|
|
|
function FormattingSync()
|
|
vim.cmd("Neoformat")
|
|
|
|
-- local client = select_client("textDocument/formatting")
|
|
-- if client == nil then
|
|
-- vim.notify("No LSP Client with formatting connected")
|
|
-- end
|
|
|
|
-- vim.notify("Formatting with LSP")
|
|
|
|
-- local params = util.make_formatting_params({})
|
|
-- local result, err = client.request_sync("textDocument/formatting", params, 500, vim.api.nvim_get_current_buf())
|
|
-- if result and result.result then
|
|
-- util.apply_text_edits(result.result)
|
|
-- elseif err then
|
|
-- vim.notify("vim.lsp.buf.formatting_sync: " .. err, vim.log.levels.WARN)
|
|
-- end
|
|
end
|
|
|
|
vim.cmd [[command! Format lua FormattingSync()]]
|
|
|
|
cmd [[
|
|
augroup auto_format
|
|
au!
|
|
au BufWritePre * lua FormattingSync()
|
|
augroup END
|
|
]]
|