-
Notifications
You must be signed in to change notification settings - Fork 0
Editor Setup
Install the server first — either grab a prebuilt binary from the
releases page
(x86_64/aarch64 Linux tarballs), or cargo build --release and put
target/release/kamailio-lsp on PATH.
All examples pass the same four initializationOptions documented
in docs/ADMIN.md.
Novice? Use the Getting Started guide instead — one-command install and full usage walkthrough. The notes below are for building the extension from source.
Use the bundled extension in client/:
cd client && npm install && npm run compile
npx @vscode/vsce package # produces kamailio-lsp-ext-<version>.vsix
code --install-extension kamailio-lsp-ext-*.vsixSettings: kamailioLsp.serverPath, kamailioLsp.kamailioPath,
kamailioLsp.kamailioSrc, kamailioLsp.kamailioWiki,
kamailioLsp.checkTimeoutMs.
vim.filetype.add({ filename = { ["kamailio.cfg"] = "kamailio-cfg" } })
vim.api.nvim_create_autocmd("FileType", {
pattern = "kamailio-cfg",
callback = function()
vim.lsp.start({
name = "kamailio-lsp",
cmd = { "kamailio-lsp" },
init_options = {
kamailioPath = "/usr/sbin/kamailio",
kamailioSrc = "/path/to/kamailio",
kamailioWiki = "/path/to/kamailio-wiki",
checkTimeoutMs = 10000,
},
})
end,
})~/.config/helix/languages.toml:
[language-server.kamailio-lsp]
command = "kamailio-lsp"
[language-server.kamailio-lsp.config]
kamailioPath = "/usr/sbin/kamailio"
kamailioSrc = "/path/to/kamailio"
kamailioWiki = "/path/to/kamailio-wiki"
[[language]]
name = "kamailio-cfg"
scope = "source.kamailio"
file-types = [{ glob = "kamailio.cfg" }]
comment-token = "#"
language-servers = ["kamailio-lsp"](define-derived-mode kamailio-cfg-mode prog-mode "Kamailio-cfg"
(setq-local comment-start "# "))
(add-to-list 'auto-mode-alist '("kamailio\\.cfg\\'" . kamailio-cfg-mode))
(with-eval-after-load 'eglot
(add-to-list 'eglot-server-programs
`(kamailio-cfg-mode
. ("kamailio-lsp"
:initializationOptions
(:kamailioPath "/usr/sbin/kamailio"
:kamailioSrc "/path/to/kamailio"
:kamailioWiki "/path/to/kamailio-wiki"
:checkTimeoutMs 10000)))))if executable('kamailio-lsp')
au User lsp_setup call lsp#register_server({
\ 'name': 'kamailio-lsp',
\ 'cmd': {server_info->['kamailio-lsp']},
\ 'initialization_options': {
\ 'kamailioPath': '/usr/sbin/kamailio',
\ 'kamailioSrc': '/path/to/kamailio',
\ 'kamailioWiki': '/path/to/kamailio-wiki'},
\ 'allowlist': ['kamailio-cfg'],
\ })
endif
au BufRead,BufNewFile kamailio.cfg setfiletype kamailio-cfgPreferences → Package Settings → LSP → Settings:
{
"clients": {
"kamailio-lsp": {
"enabled": true,
"command": ["kamailio-lsp"],
"selector": "source.kamailio",
"initializationOptions": {
"kamailioPath": "/usr/sbin/kamailio",
"kamailioSrc": "/path/to/kamailio",
"kamailioWiki": "/path/to/kamailio-wiki"
}
}
}
}Settings → Configure Kate → LSP Client → User Server Settings:
{
"servers": {
"kamailio-cfg": {
"command": ["kamailio-lsp"],
"highlightingModeRegex": "^INI Files$",
"initializationOptions": {
"kamailioPath": "/usr/sbin/kamailio",
"kamailioSrc": "/path/to/kamailio",
"kamailioWiki": "/path/to/kamailio-wiki"
}
}
}
}Clients that cannot pass initializationOptions can export:
export KAMAILIO_LSP_BIN=/usr/sbin/kamailio
export KAMAILIO_LSP_SRC=/path/to/kamailio
export KAMAILIO_LSP_WIKI=/path/to/kamailio-wiki
export KAMAILIO_LSP_CHECK_TIMEOUT_MS=10000Generated from the repository docs — edit docs/ in the repo, not the wiki.