I have 2 neovims, one with coc, and another with lua. In neovim with coc, intelephense works.

I am working with wordpress, and i need intelephense.

Nvim coc setup. plugins.vim

Plug 'yaegassy/coc-intelephense', {'do': 'yarn install --frozen-lockfile'}


  "intelephense.environment.includePaths": [

But for lua config i just use intelephense in lsp installer.

  -- LSP
  use {
      config = function()
        require("nvim-lsp-installer").setup {
          ensure_installed = { "cssls", "sumneko_lua" }, -- ensure these servers are always installed
          automatic_installation = true, -- automatically detect which servers to install (based on which servers are set up via lspconfig)
          ui = {
            icons = {
              server_installed = "✓",
              server_pending = "➜",
              server_uninstalled = "✗"
        --              local lspconfig = require("lspconfig")
        --             lspconfig.sumneko_lua.setup {}
        -- Add additional capabilities supported by nvim-cmp
        local capabilities = vim.lsp.protocol.make_client_capabilities()
        capabilities.textDocument.completion.completionItem.snippetSupport = true
        capabilities = require('cmp_nvim_lsp').update_capabilities(capabilities)
        -- Mappings.
        -- See `:help vim.diagnostic.*` for documentation on any of the below functions
        local opts = { noremap = true, silent = true }
        vim.api.nvim_set_keymap('n', '<space>dg', '<cmd>lua vim.diagnostic.open_float()<CR>', opts)
        vim.api.nvim_set_keymap('n', '[d', '<cmd>lua vim.diagnostic.goto_prev()<CR>', opts)
        vim.api.nvim_set_keymap('n', ']d', '<cmd>lua vim.diagnostic.goto_next()<CR>', opts)
        vim.api.nvim_set_keymap('n', '<space>l', '<cmd>lua vim.diagnostic.setloclist()<CR>', opts)

        -- Use an on_attach function to only map the following keys
        -- after the language server attaches to the current buffer
        local on_attach = function(client, bufnr)
          -- Enable completion triggered by <c-x><c-o>
          vim.api.nvim_buf_set_option(bufnr, 'omnifunc', 'v:lua.vim.lsp.omnifunc')

          -- Mappings.
          -- See `:help vim.lsp.*` for documentation on any of the below functions
          vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gD', '<cmd>lua vim.lsp.buf.declaration()<CR>', opts)
          vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gd', '<cmd>lua vim.lsp.buf.definition()<CR>', opts)
          vim.api.nvim_buf_set_keymap(bufnr, 'n', 'K', '<cmd>lua vim.lsp.buf.hover()<CR>', opts)
          vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gi', '<cmd>lua vim.lsp.buf.implementation()<CR>', opts)
          vim.api.nvim_buf_set_keymap(bufnr, 'n', '<C-k>', '<cmd>lua vim.lsp.buf.signature_help()<CR>', opts)
          vim.api.nvim_buf_set_keymap(bufnr, 'n', '<space>wa', '<cmd>lua vim.lsp.buf.add_workspace_folder()<CR>', opts)
          vim.api.nvim_buf_set_keymap(bufnr, 'n', '<space>wr', '<cmd>lua vim.lsp.buf.remove_workspace_folder()<CR>', opts)
          vim.api.nvim_buf_set_keymap(bufnr, 'n', '<space>wl', '<cmd>lua print(vim.inspect(vim.lsp.buf.list_workspace_folders()))<CR>', opts)
          vim.api.nvim_buf_set_keymap(bufnr, 'n', '<space>D', '<cmd>lua vim.lsp.buf.type_definition()<CR>', opts)
          vim.api.nvim_buf_set_keymap(bufnr, 'n', '<space>rn', '<cmd>lua vim.lsp.buf.rename()<CR>', opts)
          vim.api.nvim_buf_set_keymap(bufnr, 'n', '<space>ca', '<cmd>lua vim.lsp.buf.code_action()<CR>', opts)
          vim.api.nvim_buf_set_keymap(bufnr, 'n', 'gr', '<cmd>lua vim.lsp.buf.references()<CR>', opts)
          vim.api.nvim_buf_set_keymap(bufnr, 'n', '<M-l>', '<cmd>lua vim.lsp.buf.formatting()<CR>', opts)

        -- Use a loop to conveniently call 'setup' on multiple servers and
        -- map buffer local keybindings when the language server attaches
        local servers = { 'tsserver', 'sumneko_lua', 'cssls', 'emmet_ls', 'intelephense' }
        for _, lsp in pairs(servers) do
          require('lspconfig')[lsp].setup {
            on_attach = on_attach,
            capabilities = capabilities,

And i don't know how to config directories for wordpress files path.

Here i founded intelephense config https://github.com/neovim/nvim-lspconfig/blob/master/lua/lspconfig/server_configurations/intelephense.lua

I created already a file intelephense.lua and included in init.lua. But it is not working.

The settings are green.

lua code

Thanks in advice.

  • You say you have coc, did you try the vim command: :CocInstall @yaegassy/coc-intelephense? May 26, 2022 at 6:04
  • 1
    You don't understand. I have 2 neovims, one with coc, and another with lua. In neovim with coc intelephense work, but in neovim with lua, don't.
    – serii
    May 26, 2022 at 6:46

1 Answer 1


What i done. I saw how is setting ls_emmet and setup intelephese. Result.


local lspconfig = require 'lspconfig'
local configs = require 'lspconfig.configs'

local capabilities = vim.lsp.protocol.make_client_capabilities()
capabilities.textDocument.completion.completionItem.snippetSupport = true

if not configs.intelephense then
  configs.intelephense = {
    default_config = {
      cmd = { 'intelephense', '--stdio' };
      filetypes = { 'php' };
      root_dir = function(fname)
        return vim.loop.cwd()
      settings = {
        intelephense = {
          files = {
            maxSize = 1000000;
          environment = {
            includePaths = {

lspconfig.intelephense.setup { capabilities = capabilities }

  • There's a long code block here without much explanation of what is going on. Perhaps some explanation would help future readers? You can edit to expand your thoughts.
    – D. Ben Knoble
    Jun 2, 2022 at 18:02

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.