123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- local common = require("lsp.common-config")
- local keybindings = require("keybindings")
- local ts_utils = require("nvim-lsp-ts-utils")
- local opts = {
- flags = common.flags,
- capabilities = common.capabilities,
- -- https://github.com/jose-elias-alvarez/nvim-lsp-ts-utils/blob/main/lua/nvim-lsp-ts-utils/utils.lua
- -- 传入 tsserver 初始化参数
- -- make inlay hints work
- init_options = {
- hostInfo = "neovim",
- preferences = {
- includeInlayParameterNameHints = "all",
- includeInlayParameterNameHintsWhenArgumentMatchesName = true,
- includeInlayFunctionParameterTypeHints = true,
- includeInlayVariableTypeHints = true,
- includeInlayPropertyDeclarationTypeHints = true,
- includeInlayFunctionLikeReturnTypeHints = true,
- includeInlayEnumMemberValueHints = true,
- },
- },
- on_attach = function(client, bufnr)
- common.disableFormat(client)
- common.keyAttach(bufnr)
- -- defaults
- ts_utils.setup({
- debug = false,
- disable_commands = false,
- enable_import_on_completion = false,
- -- import all
- import_all_timeout = 5000, -- ms
- -- lower numbers = higher priority
- import_all_priorities = {
- same_file = 1, -- add to existing import statement
- local_files = 2, -- git files or files with relative path markers
- buffer_content = 3, -- loaded buffer content
- buffers = 4, -- loaded buffer names
- },
- import_all_scan_buffers = 100,
- import_all_select_source = false,
- -- if false will avoid organizing imports
- always_organize_imports = true,
- -- filter diagnostics
- filter_out_diagnostics_by_severity = {},
- -- https://github.com/microsoft/TypeScript/blob/main/src/compiler/diagnosticMessages.json
- filter_out_diagnostics_by_code = {
- 80001,
- },
- -- inlay hints
- auto_inlay_hints = true,
- inlay_hints_highlight = "Comment",
- inlay_hints_priority = 200, -- priority of the hint extmarks
- inlay_hints_throttle = 150, -- throttle the inlay hint request
- inlay_hints_format = { -- format options for individual hint kind
- Type = {},
- Parameter = {},
- Enum = {},
- -- Example format customization for `Type` kind:
- -- Type = {
- -- highlight = "Comment",
- -- text = function(text)
- -- return "->" .. text:sub(2)
- -- end,
- -- },
- },
- -- update imports on file move
- update_imports_on_move = false,
- require_confirmation_on_move = false,
- watch_dir = nil,
- })
- -- required to fix code action ranges and filter diagnostics
- ts_utils.setup_client(client)
- -- no default maps, so you may want to define some here
- keybindings.mapTsLSP(bufnr)
- end,
- }
- return {
- on_setup = function(server)
- server.setup(opts)
- end,
- }
|