ludic-lsp: every declaration by its own kind, every field a child, attribute arguments resolve
documentSymbol named `export property X` and `export registry` a function called "property" / "registry": `export`, `unsafe` and leading @attributes are now a lead-in to the declaration after them, which keeps its doc comment and is marked exported. A record's field default was skipped with padv, which crosses lines, so a property showed only its first field; a member now ends at a comma, the brace or its line, past a fn type's parameters and a generic's arguments, and an attribute's arguments are skipped rather than read as fields. New symbols: state, event (and cancellable), action and port as records (struct, event, event, interface) with their members; registry (with its record, for go-to-type, and its line as detail); enum and its members; component and view with props, state, fields, functions and events; reducer, named "S on A"; a module-level let as a constant; def and bind bodies, module / friend / numbers lines read past. A member of a component is not a name for the whole unit. Hover and definition on an attribute's argument: @Node(model) / @Clip / @Material to the field of the record it is written in, @Ref(Kits) to the registry (as any top-level name), and hover on the attribute shows its docs/language page. A fn-typed or generic field's type is shown whole. lsp_test (test-lsp) holds all of it on a module file with each kind of declaration. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
2ad6edaae3
commit
eb2d6106af
3 changed files with 321 additions and 21 deletions
|
|
@ -166,7 +166,8 @@ function sym_hover_code(O: Doc, si: int) -> pointer {
|
|||
function record_hover_code(O: Doc, si: int) -> pointer {
|
||||
let y = O.syms[si]
|
||||
let b = buf_new()
|
||||
if y.kind == LS_COMPONENT { buf_puts(b, "property ") } else { buf_puts(b, "model ") }
|
||||
if not (y.decl == "") { buf_puts(b, y.decl); buf_puts(b, " ") }
|
||||
else if y.kind == LS_COMPONENT { buf_puts(b, "property ") } else { buf_puts(b, "model ") }
|
||||
buf_puts(b, y.name)
|
||||
buf_puts(b, " {")
|
||||
var n = 0
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue