js-ts-ls.lua 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. -- npm install -g typescript typescript-language-server
  2. -- require'snippets'.use_suggested_mappings()
  3. -- local capabilities = vim.lsp.protocol.make_client_capabilities()
  4. -- capabilities.textDocument.completion.completionItem.snippetSupport = true;
  5. -- local on_attach_common = function(client)
  6. -- print("LSP Initialized")
  7. -- require'completion'.on_attach(client)
  8. -- require'illuminate'.on_attach(client)
  9. -- end
  10. require'lspconfig'.tsserver.setup {
  11. cmd = {
  12. DATA_PATH ..
  13. "/lspinstall/typescript/node_modules/.bin/typescript-language-server",
  14. "--stdio"
  15. },
  16. filetypes = {
  17. "javascript", "javascriptreact", "javascript.jsx", "typescript",
  18. "typescriptreact", "typescript.tsx"
  19. },
  20. on_attach = require'lsp'.tsserver_on_attach,
  21. -- This makes sure tsserver is not used for formatting (I prefer prettier)
  22. -- on_attach = require'lsp'.common_on_attach,
  23. root_dir = require('lspconfig/util').root_pattern("package.json",
  24. "tsconfig.json",
  25. "jsconfig.json", ".git"),
  26. settings = {documentFormatting = false},
  27. handlers = {
  28. ["textDocument/publishDiagnostics"] = vim.lsp.with(
  29. vim.lsp.diagnostic.on_publish_diagnostics, {
  30. virtual_text = O.lang.tsserver.diagnostics.virtual_text,
  31. signs = O.lang.tsserver.diagnostics.signs,
  32. underline = O.lang.tsserver.diagnostics.underline,
  33. update_in_insert = true
  34. })
  35. }
  36. }
  37. if O.lang.tsserver.autoformat then
  38. require('lv-utils').define_augroups({
  39. _javascript_autoformat = {
  40. {
  41. 'BufWritePre', '*.js',
  42. 'lua vim.lsp.buf.formatting_sync(nil, 1000)'
  43. }
  44. },
  45. _javascriptreact_autoformat = {
  46. {
  47. 'BufWritePre', '*.jsx',
  48. 'lua vim.lsp.buf.formatting_sync(nil, 1000)'
  49. }
  50. },
  51. _typescript_autoformat = {
  52. {
  53. 'BufWritePre', '*.ts',
  54. 'lua vim.lsp.buf.formatting_sync(nil, 1000)'
  55. }
  56. },
  57. _typescriptreact_autoformat = {
  58. {
  59. 'BufWritePre', '*.tsx',
  60. 'lua vim.lsp.buf.formatting_sync(nil, 1000)'
  61. }
  62. }
  63. })
  64. end