Skip to content

Namespaces and "go to definition" #82

@gregdvd

Description

@gregdvd

Describe the bug
The Go to Definition functionality doesn't seem to work when using functions inside a namespace.

To Reproduce

  • In the working folder, create a namespace folder and a function inside it
projectFolder
├── mainfunc.m
├── +mynamep
    ├── nsfunc.m
  • Import and use nsfunc in mainfunc
function out = mainfunc()
    import mynamesp.nsfunc

    out = nsfunc(in);
end
  • Move the cursor on nsfunc (either on the import or on the function call) and call the Go to Definition LSP function.
  • The LSP returns a No LSP defintion found warning.

Expected behavior
Upon calling Go to Definition, LSP should open the file +mynamesp/nsfunc.m.

Note that Go to Definition works correctly if I call the function directly without importing it first, as in

out = mynamesp.nsfunc(in);

Useful Information

  • MATLAB Language Server Version: 1.3.9 (commit 19438c8)
  • MATLAB Version: R2025b
  • OS Version: Linux
  • Language Server Client: Neovim 0.11.6

Additional context

  • The Function Signature Help LSP functionality seems to work well in both cases, suggesting that nsfunc is indexed.
  • While writing the out = mynamesp.nsfunc(in); line, the code completion suggests mynamesp is a function, not a namespace.
  • A similar faulty behavior also appears with other functions defined outside of the current file, for instance with class methods (when using the @class-folder class definition) or when creating stub functions that override built-in ones (e.g., when working with matlab.unittest.fixtures.PathFixture).

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions