diff options
Diffstat (limited to 'ftplugin/typescriptreact.lua')
-rw-r--r-- | ftplugin/typescriptreact.lua | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/ftplugin/typescriptreact.lua b/ftplugin/typescriptreact.lua new file mode 100644 index 00000000..40c68c51 --- /dev/null +++ b/ftplugin/typescriptreact.lua @@ -0,0 +1,88 @@ +-- npm install -g typescript typescript-language-server +-- require'snippets'.use_suggested_mappings() +-- local capabilities = vim.lsp.protocol.make_client_capabilities() +-- capabilities.textDocument.completion.completionItem.snippetSupport = true; +-- local on_attach_common = function(client) +-- print("LSP Initialized") +-- require'completion'.on_attach(client) +-- require'illuminate'.on_attach(client) +-- end +require'lspconfig'.tsserver.setup { + cmd = { + DATA_PATH .. + "/lspinstall/typescript/node_modules/.bin/typescript-language-server", + "--stdio" + }, + filetypes = { + "javascript", "javascriptreact", "javascript.jsx", "typescript", + "typescriptreact", "typescript.tsx" + }, + on_attach = require'lsp'.tsserver_on_attach, + -- This makes sure tsserver is not used for formatting (I prefer prettier) + -- on_attach = require'lsp'.common_on_attach, + root_dir = require('lspconfig/util').root_pattern("package.json", + "tsconfig.json", + "jsconfig.json", ".git"), + settings = {documentFormatting = false}, + handlers = { + ["textDocument/publishDiagnostics"] = vim.lsp.with( + vim.lsp.diagnostic.on_publish_diagnostics, { + virtual_text = O.lang.tsserver.diagnostics.virtual_text, + signs = O.lang.tsserver.diagnostics.signs, + underline = O.lang.tsserver.diagnostics.underline, + update_in_insert = true + + }) + } +} + +if O.lang.tsserver.autoformat then + require('lv-utils').define_augroups({ + _javascript_autoformat = { + { + + 'BufWritePre', '*.js', + 'lua vim.lsp.buf.formatting_sync(nil, 1000)' + } + }, + _javascriptreact_autoformat = { + { + 'BufWritePre', '*.jsx', + 'lua vim.lsp.buf.formatting_sync(nil, 1000)' + } + }, + _typescript_autoformat = { + { + 'BufWritePre', '*.ts', + 'lua vim.lsp.buf.formatting_sync(nil, 1000)' + } + }, + _typescriptreact_autoformat = { + { + 'BufWritePre', '*.tsx', + 'lua vim.lsp.buf.formatting_sync(nil, 1000)' + } + } + }) +end +vim.cmd("setl ts=2 sw=2") + +local nvim_lsp = require'lspconfig' +local configs = require'lspconfig/configs' +local capabilities = vim.lsp.protocol.make_client_capabilities() +capabilities.textDocument.completion.completionItem.snippetSupport = true + +configs.emmet_ls = { + default_config = { + cmd = {'emmet-ls', '--stdio'}; + filetypes = {'html', 'css', 'javascript', 'javascriptreact', 'typescript', 'typescriptreact'}; + root_dir = function() + return vim.loop.cwd() + end; + settings = {}; + }; +} + +nvim_lsp.emmet_ls.setup{ + -- on_attach = on_attach; +} |