Skip to content

A LanguageServer implementation in GO for the scripting language daedalus

License

Notifications You must be signed in to change notification settings

kirides/DaedalusLanguageServer

Repository files navigation

Build

Usage

see: https://github.com/kirides/vscode-daedalus

Custom externals

The server looks for a _externals\ directory located in the workspace root.
When there is a _externals\externals.src it will try to parse it and all referenced files right after parsing the built-in externals and before parsing user scripts.

  • If there is no _externals\externals.src we look for a _externals\externals.d and try to parse that.

This externals should be provided from Union plugins such as zParserExtender.

Aknowledgements

Gothic Classic - Nintendo Switch

g1_nx_credits_h264.mp4

neovim configuration

Minimum configuration needed to run the language server

somewhere in init.lua or any lua script

vim.api.nvim_create_autocmd("FileType", {
    pattern = "d",
    callback = function(ev)
        local root_dir = vim.fs.dirname(
            vim.fs.find({ 'Gothic.src', 'Camera.src', 'Menu.src', 'Music.src', 'ParticleFX.src', 'SFX.src', 'VisualFX.src' }, { upward = true })[1]
        )

        local client = vim.lsp.start({
          name = 'DLS',
          cmd = {'C:/.../DaedalusLanguageServer.exe'},
          root_dir = root_dir,
          -- configure language server specific options
          settings = {
            daedalusLanguageServer = {
              loglevel = 'debug',
              inlayHints = { constants = true },
              numParserThreads = 16,
              fileEncoding = 'Windows-1252',
              srcFileEncoding ='Windows-1252',
            },
          },
        })

        vim.lsp.buf_attach_client(0, client)
    end
})


vim.cmd([[highlight! link LspSignatureActiveParameter Search]])