aboutsummaryrefslogtreecommitdiffstats
path: root/lua/lspconfig/configs/delphi_ls.lua
blob: 51dd91bdca5de627e02c844f6eb9895e9028ab51 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-- This config is DEPRECATED.
-- Use the configs in `lsp/` instead (requires Nvim 0.11).
--
-- ALL configs in `lua/lspconfig/configs/` will be DELETED.
-- They exist only to support Nvim 0.10 or older.
-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
local util = require 'lspconfig.util'

return {
  default_config = {
    cmd = { 'DelphiLSP.exe' },
    filetypes = { 'pascal' },
    root_dir = util.root_pattern '*.dpr',
    single_file_support = false,
  },
  docs = {
    description = [[
Language server for Delphi from Embarcadero.
https://marketplace.visualstudio.com/items?itemName=EmbarcaderoTechnologies.delphilsp

Note, the '*.delphilsp.json' file is required, more details at:
https://docwiki.embarcadero.com/RADStudio/Alexandria/en/Using_DelphiLSP_Code_Insight_with_Other_Editors

Below, you'll find a sample configuration for the lazy manager.
When on_attach is triggered, it signals DelphiLSP to load settings from a configuration file.
Without this step, DelphiLSP initializes but remains non-functional:

```lua
"neovim/nvim-lspconfig",
lazy = false,
config = function()
  local capabilities = require("cmp_nvim_lsp").default_capabilities()
  local lspconfig = require("lspconfig")

  lspconfig.delphi_ls.setup({
    capabilities = capabilities,

    on_attach = function(client)
      local lsp_config = vim.fs.find(function(name)
        return name:match(".*%.delphilsp.json$")
      end, { type = "file", path = client.config.root_dir, upward = false })[1]

      if lsp_config then
        client.config.settings = { settingsFile = lsp_config }
        client.notify("workspace/didChangeConfiguration", { settings = client.config.settings })
      else
        vim.notify_once("delphi_ls: '*.delphilsp.json' config file not found")
      end
    end,
  })
end,
```
]],
  },
}