Giter VIP home page Giter VIP logo

coc-tsserver's Introduction

coc-tsserver

Tsserver language server extension for coc.nvim.

Tsserver is part of TypeScript which provide rich features for javascript and typescript.

This extension is a fork of typescript-language-features extension which is bundled with VSCode.

Note: for React to work as expected, you need your JSX filetype to be javascript.jsx or javascriptreact and your TSX filetype to be typescript.jsx or typescript.tsx or typescriptreact. In coc.nvim, these filetypes are mapped to javascriptreact and typescriptreact because that's what tsserver uses. For filetype like typescript.javascript, you need configure g:coc_filetype_map variable in vimrc.

Note for javascript project, configure jsconfig.json to make tsserver understand your code.

Note: for rename import on file rename, you have to install watchman in your $PATH.

Note: for nvm users, you need configure tsserver.npm to your global npm path or configure "tsserver.disableAutomaticTypeAcquisition": false to disable automatic typings installation.

Note: tsserver could be quite slow to initialize on big project, exclude unnecessary files in your jsconfig.json/tsconfig.json.

Note: if you're using WSL, copy you project files from mounted dirs to linux home otherwise tsserver will not work properly.

Supporting

If you like my extension, consider supporting me on Patreon or PayPal:

Patreon donate button PayPal donate button

Install

In your vim/neovim, run command:

:CocInstall coc-tsserver

For yarn2 ( >= v2.0.0-rc.36) user want to use local typescript module:

  • Run command yarn dlx @yarnpkg/sdks vim, which will generate .vim/coc-settings.json, with content:

    {
      "eslint.packageManager": "yarn",
      "eslint.nodePath": ".yarn/sdks",
      "workspace.workspaceFolderCheckCwd": false,
      "tsserver.tsdk": ".yarn/sdks/typescript/lib"
    }

Features

Almost the same as VSCode.

  • Supports javascript & typescript and jsx/tsx.
  • Installs typings automatically.
  • Commands to work with tsserver, including:
    • tsserver.reloadProjects
    • tsserver.openTsServerLog
    • tsserver.goToProjectConfig
    • tsserver.restart
    • tsserver.organizeImports
    • tsserver.watchBuild
    • tsserver.findAllFileReferences
  • Code completion support.
  • Go to definition (more info in microsoft/TypeScript#37777)
  • Code validation.
  • Document highlight.
  • Document symbols of current buffer.
  • Folding and folding range of current buffer.
  • Format current buffer, range format and format on type.
  • Hover for documentation.
  • Implementations codeLens and references codeLens.
  • Organize imports command.
  • Quickfix using code actions.
  • Code refactor using code actions.
  • Find references.
  • Signature help.
  • Call hierarchy.
  • Selection range.
  • Semantic tokens.
  • Rename symbols support.
  • Automatic tag closing.
  • Rename imports on file rename, require watchman installed in your $PATH.
  • Search for workspace symbols.
  • Inlay hints support using virtual text feature of neovim, which requires:
    • TypeScript >= 4.4.0
    • Neovim >= 0.4.0
    • Enabled by options starts with typescript.inlayHints or javascript.inlayHints.

Tsserver module first resolved from your local workspace. If it's not found, use tsserver from tsserver.tsdk configuration or use bundled tsserver with this extension.

Configuration options

Checkout using the configuration file for guide of coc.nvim's configuration.

  • tsserver.enable:Enable tsserver extension, default: true
  • tsserver.locale:Locale of tsserver, default: ""
  • tsserver.typingsCacheLocation:Folder path for cache typings, default: ""
  • tsserver.formatOnType:Run format on type special characters., default: true
  • tsserver.enableJavascript:Use tsserver for javascript files, default: true
  • tsserver.maxTsServerMemory:Set the maximum amount of memory to allocate to the TypeScript server process
  • tsserver.tsdk:Directory contains tsserver.js,, default: ""
  • tsserver.npm:Executable path of npm for download typings, default: ""
  • tsserver.log:Log level of tsserver, default: "off"
  • tsserver.trace.server:Trace level of tsserver, default: "off"
  • tsserver.pluginPaths:Folders contains tsserver plugins, default: []
  • tsserver.watchOptions:Configure which watching strategies should be used to keep track of files and directories. Requires using TypeScript 3.8+ in the workspace, default: undefined
  • tsserver.reportStyleChecksAsWarnings default: true
  • tsserver.implicitProjectConfig.checkJs:Enable checkJs for implicit project, default: false
  • tsserver.implicitProjectConfig.experimentalDecorators:Enable experimentalDecorators for implicit project, default: false
  • tsserver.disableAutomaticTypeAcquisition:Disable download of typings, default: false
  • tsserver.useBatchedBufferSync: use batched buffer synchronize support, default: true
  • tsserver.enableTracing: Enables tracing TS server performance to a directory. These trace files can be used to diagnose TS Server performance issues. The log may contain file paths, source code, and other potentially sensitive information from your project, default: false
  • typescript.check.npmIsInstalled: Check if npm is installed for Automatic Type Acquisition.
  • typescript.updateImportsOnFileMove.enable:Enable update imports on file move., default: true
  • typescript.implementationsCodeLens.enable:Enable codeLens for implementations, default: true
  • typescript.referencesCodeLens.enable:Enable codeLens for references, default: true
  • typescript.referencesCodeLens.showOnAllFunctions: Enable/disable references CodeLens on all functions in typescript files. Default: false
  • typescript.preferences.importModuleSpecifier default: "auto"
  • typescript.preferences.importModuleSpecifierEnding default: "auto"
  • typescript.preferences.quoteStyle default: "single"
  • typescript.preferences.includePackageJsonAutoImports: Enable/disable searching package.json dependencies for available auto imports, default: "auto"
  • typescript.suggestionActions.enabled:Enable/disable suggestion diagnostics for TypeScript files in the editor. Requires using TypeScript 2.8 or newer in the workspace., default: true
  • typescript.validate.enable:Enable/disable TypeScript validation., default: true
  • typescript.showUnused: show unused variable hint, default: true.
  • typescript.autoClosingTags: Enable/disable autoClosing of JSX tags, default: true
  • typescript.suggest.enabled default: true
  • typescript.suggest.paths:Enable/disable suggest paths in import statement and require calls, default: true
  • typescript.suggest.autoImports:Enable/disable auto import suggests, default: true
  • typescript.suggest.completeFunctionCalls:Enable snippet for method suggestion, default: true
  • typescript.suggest.includeCompletionsForImportStatements: Enable/disable auto-import-style completions on partially-typed import statements. Requires using TypeScript 4.3+ in the workspace, default: true
  • typescript.suggest.includeCompletionsWithSnippetText: Enable snippet completions from TS Server. Requires using TypeScript 4.3+ in the workspace, default: true
  • typescript.suggest.classMemberSnippets.enabled: Enable/disable snippet completions for class members. Requires using TypeScript 4.5+ in the workspace, default: true
  • typescript.suggest.jsdoc.generateReturns: Enable/disable generating @return annotations for JSDoc templates. Requires using TypeScript 4.2+ in the workspace. default: true
  • typescript.suggest.includeAutomaticOptionalChainCompletions: default: true
  • typescript.format.enabled:Enable/disable format of typescript files.
  • typescript.format.insertSpaceAfterCommaDelimiter default: true
  • typescript.format.insertSpaceAfterConstructor default: false
  • typescript.format.insertSpaceAfterSemicolonInForStatements default: true
  • typescript.format.insertSpaceBeforeAndAfterBinaryOperators default: true
  • typescript.format.insertSpaceAfterKeywordsInControlFlowStatements default: true
  • typescript.format.insertSpaceAfterFunctionKeywordForAnonymousFunctions default: true
  • typescript.format.insertSpaceBeforeFunctionParenthesis default: false
  • typescript.format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets default: false
  • typescript.format.insertSpaceAfterOpeningAndBeforeClosingEmptyBraces default: false
  • typescript.format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces default: false
  • typescript.format.insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis default: false
  • typescript.format.insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces default: false
  • typescript.format.insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces default: false
  • typescript.format.insertSpaceAfterTypeAssertion default: false
  • typescript.format.placeOpenBraceOnNewLineForFunctions default: false
  • typescript.format.placeOpenBraceOnNewLineForControlBlocks default: false
  • typescript.inlayHints: inlayHints related options.
  • javascript.format.enabled: Enable/disable format for javascript files, default: true
  • javascript.showUnused: show unused variable hint, default: true
  • javascript.autoClosingTags: Enable/disable autoClosing of JSX tags, default: true
  • javascript.updateImportsOnFileMove.enable default: true
  • javascript.implementationsCodeLens.enable default: true
  • javascript.referencesCodeLens.enable default: true
  • javascript.referencesCodeLens.showOnAllFunctions: Enable/disable references CodeLens on all functions in JavaScript files default: false
  • javascript.preferences.importModuleSpecifier default: "auto"
  • javascript.preferences.importModuleSpecifierEnding default: "auto"
  • javascript.preferences.quoteStyle default: "single"
  • javascript.validate.enable: Enable/disable JavaScript validation., default: true
  • javascript.suggestionActions.enabled: Enable/disable suggestion diagnostics for JavaScript files in the editor. Requires using TypeScript 2.8 or newer in the workspace., default: true
  • javascript.suggest.names: default true
  • javascript.suggest.enabled: default true
  • javascript.suggest.paths: Enable/disable suggest paths in import statement and require calls, default: true
  • javascript.suggest.autoImports: Enable/disable auto import suggests., default: true
  • javascript.suggest.completeFunctionCalls:Enable snippet for method suggestion, default: true
  • javascript.suggest.includeCompletionsForImportStatements: Enable/disable auto-import-style completions on partially-typed import statements. Requires using TypeScript 4.3+ in the workspace, default: true
  • javascript.suggest.jsdoc.generateReturns: Enable/disable generating @return annotations for JSDoc templates. Requires using TypeScript 4.2+ in the workspace. default: true
  • javascript.suggest.classMemberSnippets.enabled: Enable/disable snippet completions for class members. Requires using TypeScript 4.5+ in the workspace, default: true
  • javascript.suggest.includeAutomaticOptionalChainCompletions: default: true
  • javascript.format.insertSpaceAfterCommaDelimiter default: true
  • javascript.format.insertSpaceAfterConstructor default: false
  • javascript.format.insertSpaceAfterSemicolonInForStatements default: true
  • javascript.format.insertSpaceBeforeAndAfterBinaryOperators default: true
  • javascript.format.insertSpaceAfterKeywordsInControlFlowStatements default: true
  • javascript.format.insertSpaceAfterFunctionKeywordForAnonymousFunctions default: true
  • javascript.format.insertSpaceBeforeFunctionParenthesis default: false
  • javascript.format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets default: false
  • javascript.format.insertSpaceAfterOpeningAndBeforeClosingEmptyBraces default: false
  • javascript.format.insertSpaceAfterOpeningAndBeforeClosingNonemptyBraces default: false
  • javascript.format.insertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis default: false
  • javascript.format.insertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces default: false
  • javascript.format.insertSpaceAfterOpeningAndBeforeClosingJsxExpressionBraces default: false
  • javascript.format.insertSpaceAfterTypeAssertion default: false
  • javascript.format.placeOpenBraceOnNewLineForFunctions default: false
  • javascript.format.placeOpenBraceOnNewLineForControlBlocks default: false
  • javascript.inlayHints: inlayHints related options.

Configurations are the same as with VSCode. Install coc-json and try completion with tsserver, typescript or javascript in your coc-settings.json.

Related extensions

Troubleshooting

  • Add "tsserver.log": "verbose" to your coc-settings.json (opened by command :CocConfig)
  • To trace LSP communication, add "tsserver.trace.server": "verbose" to your coc-settings.json
  • Restart coc server by command :CocRestart
  • Make the issue happen.
  • Open tsserver log file by command CocCommand tsserver.openTsServerLog
  • Open tsserver output channel by command CocCommand workspace.showOutput tsserver

If you find any issues, please create an issue.

License

MIT

coc-tsserver's People

Contributors

alextes avatar anark avatar azemetre avatar bobylito avatar carlosala avatar chemzqm avatar chmln avatar ckipp01 avatar fabonreact avatar fannheyward avatar gavrilyak avatar homburg avatar ishanraychaudhuri avatar jpoppe avatar ksaveljev avatar meatwallace avatar mogulla3 avatar morgsmccauley avatar nateroling avatar rexagod avatar richchurcher avatar rschristian avatar seletskiy avatar simnalamburt avatar taylon avatar vegerot avatar weirongxu avatar wincent avatar xuanduc987 avatar yardnsm avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.