`vscode-html-language-server` fails to start on Windows (missing `.cmd` suffix)


i can use python but it cant work in html file.
my config:


--Enable (broadcasting) snippet capability for completion
local capabilities = vim.lsp.protocol.make_client_capabilities()
capabilities.textDocument.completion.completionItem.snippetSupport = true

require'lspconfig'.html.setup {
  capabilities = capabilities,
    cmd = { "vscode-html-language-server", "--stdio" },
    filetypes = { "html" },
    init_options = {
      configurationSection = { "html", "css", "javascript" },
      embeddedLanguages = {
        css = true,
        javascript = true,
      },
    },
    root_dir = function(startpath)
        return M.search_ancestors(startpath, matcher)
      end,
    settings = {},
    single_file_support = true,
}

HELP needed

I had to dig through 4 of your posts to piece together what happened. Do not copy the the default configuration out of server_configurations.md.

Change your config from this:

require'lspconfig'.html.setup {
  capabilities = capabilities,
    cmd = { "vscode-html-language-server", "--stdio" },
    filetypes = { "html" },
    init_options = {
      configurationSection = { "html", "css", "javascript" },
      embeddedLanguages = {
        css = true,
        javascript = true,
      },
    },
    root_dir = function(startpath)
        return M.search_ancestors(startpath, matcher)
      end,
    settings = {},
    single_file_support = true,
}

to this:

require'lspconfig'.html.setup {
  capabilities = capabilities,
}

Same error occurs. I don’t know why.

Paste the entire unaltered file.

language_server.lua

--Enable (broadcasting) snippet capability for completion
local capabilities = vim.lsp.protocol.make_client_capabilities()
capabilities.textDocument.completion.completionItem.snippetSupport = true

require'lspconfig'.html.setup {
  capabilities = capabilities,
}

plugins.lua

    -- Treesitter
    use {
        'nvim-treesitter/nvim-treesitter',
        run = ':TSUpdate'
    }
    use {'windwp/nvim-ts-autotag'}
    use {'p00f/nvim-ts-rainbow'}
    use {'windwp/nvim-autopairs'}
    

    -- Statusline
    use {
      'nvim-lualine/lualine.nvim',
      requires = {'kyazdani42/nvim-web-devicons', opt = true}
    }

    -- Telescope
    use {
      'nvim-telescope/telescope.nvim',
      requires = { {'nvim-lua/plenary.nvim'} }
    }
    
    -- Bufferline
    use {'akinsho/bufferline.nvim', requires = 'kyazdani42/nvim-web-devicons'}

    -- Colorizer
    use 'norcalli/nvim-colorizer.lua'

    -- Dashboard 
    use 'glepnir/dashboard-nvim'

    -- LSP
    use 'neovim/nvim-lspconfig'
    use 'hrsh7th/nvim-cmp'
    use 'hrsh7th/cmp-nvim-lsp'
    use 'hrsh7th/cmp-buffer'
    use 'hrsh7th/cmp-path'
    use 'onsails/lspkind-nvim'
    use 'L3MON4D3/LuaSnip'
    use 'saadparwaiz1/cmp_luasnip'

cmp.lua

vim.g.completeopt="menu,menuone,noselect,noinsert"
local has_words_before = function()
  local line, col = unpack(vim.api.nvim_win_get_cursor(0))
  return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil
end

local feedkey = function(key, mode)
  vim.api.nvim_feedkeys(vim.api.nvim_replace_termcodes(key, true, true, true), mode, true)
end
-- Setup nvim-cmp.
local cmp = require'cmp'
local lspkind = require('lspkind')
local luasnip = require("luasnip")
cmp.setup({
    snippet = {
      expand = function(args)
        require('luasnip').lsp_expand(args.body)
    end,
    },
   mapping = {
      ['<C-b>'] = cmp.mapping(cmp.mapping.scroll_docs(-4), { 'i', 'c' }),
      ['<C-f>'] = cmp.mapping(cmp.mapping.scroll_docs(4), { 'i', 'c' }),
      ['<C-Space>'] = cmp.mapping(cmp.mapping.complete(), { 'i', 'c' }),
      ['<C-y>'] = cmp.config.disable,
      ['<C-e>'] = cmp.mapping({
        i = cmp.mapping.abort(),
        c = cmp.mapping.close(),
      }),
      ['<CR>'] = cmp.mapping.confirm({ select = true }),
    ["<Tab>"] = cmp.mapping(function(fallback)
      if cmp.visible() then
        cmp.select_next_item()
      elseif luasnip.expand_or_jumpable() then
        luasnip.expand_or_jump()
      elseif has_words_before() then
        cmp.complete()
      else
        fallback()
      end
    end, { "i", "s" }),

    ["<S-Tab>"] = cmp.mapping(function(fallback)
      if cmp.visible() then
        cmp.select_prev_item()
      elseif luasnip.jumpable(-1) then
        luasnip.jump(-1)
      else
        fallback()
      end
    end, { "i", "s" }),
    },
    experimental = {
      ghost_text = true,
    },
    formatting = {
      format = lspkind.cmp_format {
        with_text = true,
        menu = {
          buffer = "[buf]",
          nvim_lsp = "[LSP]",
          nvim_lua = "[api]",
          path = "[path]",
          luasnip = "[snip]",
        },
      },
    },
    snippet = {
      expand = function(args)
        require("luasnip").lsp_expand(args.body)
      end,
    },
    sources = cmp.config.sources({
      { name = 'nvim_lsp' },
      { name = 'lspkind' },
      { name = 'luasnip' },
      { name = 'buffer' },
      }),
    })
    cmp.setup.cmdline('/', {
      sources = {
        { name = 'buffer' }
      }
    })

Now the exact error.

Error detected while processing FileType Autocommands for "html":
E5108: Error executing lua ...ppData\Local\nvim\share\nvim\runtime\lua\vim\lsp\rpc.lua:384: start `vscode-html-language-server` failed: ENOENT: no such file or directory
E5108: Error executing lua ...ppData\Local\nvim\share\nvim\runtime\lua\vim\lsp\rpc.lua:384: start `vscode-html-language-server` failed: ENOENT: no such file or directory
Press ENTER or type command to continue

There is also no syntax highlight for html when i add this block of code in…

This is a different error than before, so progress :slight_smile:

Try

require'lspconfig'.html.setup {
  cmd = { "vscode-html-language-server.cmd", "--stdio" },
  capabilities = capabilities,
}

What about scss? I have treesitter installed. But when i open it there is no syntax highlight

Is this a question about lsp or treesitter? Did you call :TSInstall scss?

i did install scss using treesitter

And there is no syntax highlighting?

as i said. yes there is none… which is odd

for ur info, when i add the line of code. neovim always say that the file exist for scss

You should probably start a separate thread for that

seperate thread at? treesitter or here?

Here, on discourse. It helps visibility (your first issue was about LSP, this one is now about treesitter on which I am not an expert)

Ah wait, it may be related, add:

require'lspconfig'.cssls.setup {
  cmd = { "vscode-css-language-server.cmd", "--stdio" },
  capabilities = capabilities,
}

to your config instead of whatever you had for cssls before.

Thank you so much. It worked finally. But the code you gave me is the same as the readme right?

Nope, I customized the command (postfixed with .cmd)