coc-tsdetect v4.0.3
vim-tsdetect
vim-tsdetect/coc-tsdetect provides vim/neovim and coc.nvim extension to initialize workspace automatically for coc-tsserver and coc-deno.
Installation
Run :CocInstall coc-tsdetect in vim/neovim or install vim-tsdetect with your favorite plugin manager and build with pnpm install && pnpm run build. It is enough to install one of them.
How does this detect TS environments?
Checking following in order.
- If buffer name starts with
deno:/-> deno - If buffer name ends with
.js,.ts,.tsx-> check following in order
a. Shebang is present and includingnode-> node
b. Shebang is present and includingdeno-> deno
c.node_modules/directory is found in ancestors of (following) -> node
- If buffer name is not empty, search from that path.
- Otherwise, search from current working directory.
d. Otherwise. -> deno - -> Check following in order
a. Shebang is present and includingnode-> node
b. Shebang is present and includingdeno-> deno - Otherwise, nothing is detected.
When does this try to detect?
This tries to detect when following events occurred.
FileType javascript,javascriptreact,typescript,typescript.tsx,typescriptreactBufEnter,BufNewFile,BufWritePost *
Options
Please configure following if necessary by :CocConfig.
tsdetect.mode
Set this "manual" to disable auto initialization. Variable b:tsdetect_is_node remains available.
Values: "auto" | "manual"
Default:
{
"tsdetect.mode": "auto"
}tsdetect.doNotCreateOnNode
By default, in Node.js environment, tsdetect does not create a workspace configuration (.vim/coc-settings.json). Set this false to create configuration file whether the configuration exists.
Values: boolean
Default:
{
"tsdetect.doNotCreateOnNode": true
}tsdetect.nodeOverride
Workspace configuration to be set in Node.js environment. If you want to extend original configuration, you need to include default ones. Not recommended to touch deno.enable and tsserver.enable.
Values: object
Default:
{
"tsdetect.nodeOverride": {
"deno.lint": false,
"coc.source.file.trimSameExts": [
".js",
".ts"
],
"prettier.disableLanguages": []
}
}tsdetect.denoOverride
Workspace configuration to be set in Deno environment. If you want to extend original configuration, you need to include default ones. Not recommended not to touch deno.enable and tsserver.enable.
Values: object
Default:
{
"tsdetect.denoOverride": {
"deno.lint": true,
"coc.source.file.trimSameExts": [],
"prettier.disableLanguages": [
"javascript",
"javascriptreact",
"typescript",
"typescriptreact"
]
}
}Events
tsdetect#detect
Fired when the tsdetect detects TypeScript environment in the flow shown in above.
tsdetect#detect#node
Fired when tsdetect#detect is fired and environment was detected as node.
tsdetect#detect#deno
Fired when tsdetect#detect is fired and environment was detected as deno.
tsdetect#coc#auto#switch#node#after
Fired after the automatic switch to node triggered and finished.
tsdetect#coc#auto#switch#deno#after
Fired after the automatic switch to deno triggered and finished.
Variables
b:tsdetect_is_node
Set when tsdetect#detect is fired.
Limitations
- Not recommended to include
deno.enableandtsserver.enablesettings in user configuration (~/.vim/coc-settings.jsonthat can be opened by:CocConfig). - To prevent
.vim/directory being committed by VCS, you can globally ignore.vim/, or ignore one by one usinggit update-index --skip-worktree .vimfor git projects.
Example Configurations
Example for deno.cache on save if deno environment is detected:
function! s:my_coc_tsdetect_buf_write_post() abort
if !get(g:, 'coc_enabled', 0)
return
endif
if exists('b:tsdetect_is_node') && !b:tsdetect_is_node
CocCommand deno.cache
endif
endfunction
augroup my-coc-tsdetect
autocmd!
autocmd BufWritePost * call <SID>my_coc_tsdetect_buf_write_post()
augroup END