Referenced by12
Labels12

Referencing ideas

IdeaStatusTagsSummaryKatz
configuration_import_root_aliasAn import path may start with an alias string, then `/`, then a relative path under that alias's import-root directory. Default alias string: `@`, written as `@/` plus a path relative to the import root. Default import-root directory: the workspace folder that contains the `.rq` file ( not the document directory ). The path after `/` is joined to that alias's import-root directory; the alias itself must be followed by `/` ( e. g. `@reqs` is not aliased ). Alias strings and import-root directories are configured as [configuration.configuration_import_roots] in the applying `.reqlan/config.json` from [configuration.configuration_location]. A configured relative `root` resolves against the base root ( parent of `.reqlan` ); an omitted `root` keeps the workspace-folder default. When several configured aliases could match a path, the longest alias wins. Related path forms: [import_paths], ["../extension/language/comment-references/functional-code-comment-references.rq".comment_reference_import_root_alias]. Completion: ["../extension/language/syntax/features-syntax.rq".code_completion]. File references and the language server use the same locate rule as ["../core_analysis/check.rq".check]: load `importRoots` from the applying `.reqlan/config.json` for the source file ( [configuration.configuration_location] ), then `resolve_rq_path` and join the workspace when the result is relative — including paths with spaces such as `["@/my file.ts"]`.0.296
wildcard_referencesdoneQualified path + idea-pattern references match multiple ideas across files. Surface forms: bracket `[…]` and wikilink `[[…]]` ( same `WildcardReference` target ). Path is a quoted string that may include shell-style globs ( `*`, `**`, `?` ) and `@/` import-root aliases ( [configuration_import_root_alias] ). Relative globs resolve against the defining document directory; `.` / `..` segments are collapsed before matching. Idea pattern is an unquoted `WILDCARD_NAME` that must contain at least one `*` or `?` Exact quoted-path plus idea stays ["./syntax.rq".reference_qualified]. Matching uses anchored globs ( not full JS regex ): path `*` is one segment, `**` crosses segments; idea `*` / `?` match within the idea name. Zero matches produce a warning diagnostic. One match also produces a warning — a wildcard is for many ideas; use a concrete ["./syntax.rq".reference_qualified] when only one idea matches ( ["../core_analysis/check.rq".check_wildcard_one] ). Path segment `/**/` must not be lexed as an empty block comment — see ["./syntax.rq".comments]. Lexer note: `ID` is a prefix of many wildcard names ( `import_` vs `import_*` ); the token builder sets `ID.LONGER_ALT = WILDCARD_NAME` so `import_*` is one token. Body prose `*` tokens are accepted via `WILDCARD_NAME` in PlainText so ordinary `*` characters still parse. Without that longer-alt, a live wildcard inside a block body can fail Idea recovery and leave later top-level ideas unindexed ( soft mtime sync will not rebuild until the `.rq` file changes ). Navigation does not emit N LocationLinks. A document-link click opens `reqlan.openWildcardReference` with `{ pathPattern, ideaPattern, fromUri }` ( see [wildcard_references_webview] ). Go-to-definition does not open that panel. Indexing fans out per ["../indexer/indexer.rq".wildcard_reference_edges] ( owned under ["../indexer/indexer.rq".index] ): native extract writes one `wildcard_reference` edge per catalog match; empty catalog / zero matches → one unresolved edge of that kind labeled with the pattern text. ["../core_analysis/check.rq".check] handles 0 - match and 1 - match fan-out through ["../core_analysis/check.rq".check_wildcard_zero] and ["../core_analysis/check.rq".check_wildcard_one] ( ["../core_analysis/check.rq".check_wildcard_sparse] ). Ideas Summary graph toggles those edges via ["../extension/workspace-summary/ideas_summary/graphical_graph.rq".wildcard_refs_toggle]. The server can answer `reqlan/wildcardReferenceAt`. Go-to-definition does not call it. Related: ["./syntax.rq".reference_embedding], ["./syntax.rq".reference_brackets], ["./syntax.rq".reference_wikilink], ["../indexer/indexer.rq".wildcard_reference_edges], ["../core_analysis/check.rq".check_wildcard_sparse], ["../core_analysis/check.rq".check_wildcard_zero], ["../core_analysis/check.rq".check_wildcard_one]. Illustrative forms ( fenced so this file does not embed live wildcards ):0.486
attribute_formsA bare attribute name after @ denotes a true flag or render keyword. A negated flag uses a trailing bang after the attribute name. A valued attribute uses a space after the attribute name followed by a value. A colon after the attribute name is optional legacy syntax and is not part of the value. Common attributes include plan, status, priority, criticality, confirmation, owner, log, tags, and references with the @ prefix. Any custom attribute name is allowed.0.049
attribute_namespacingdoneA bracket link `[idea.attribute]` targets one attribute of that idea. The first name is the idea name. The second name is the attribute name. The grammar types that name as an attribute or an idea declaration. `[attribute_namespacing.example]` targets the `example` attribute of this idea. The form `[ideaset.member]` still targets an ideaset member. See [references_to_subidea]. The editor opens the attribute when the first name is an idea. The editor reports an error when that idea has no attribute with the second name. The link target is only that attribute on that idea. HTML export uses the same link form. The export link opens that attribute on the idea page. See [attribute_namespacing.example]. Related: [reference_brackets], [attribute_marker], ["../core_analysis/html_export.rq".html_export_internal_links].0.129
block_ideaA block idea is a name followed by curly braces that contain a body and optional attributes. The opening `{` may share the line with the closing `}` ( `name {}`, `name {hello}` ). The opening `{` may also sit at the end of the name line, with the closer on a later line. `{` starts a block only when it is immediately after the name ( optional spaces ). If other text is between the name and `{`, the line is a [simple_idea] and the braces are body text. The first unstructured text in an idea body is the main description when no other body attribute is marked.0.099
code_snippetsIdea bodies and block attribute values may embed fenced code blocks delimited by triple backticks. An opening fence is three backticks as the first non-whitespace characters on a line, optionally followed by a language tag such as python or rq. A closing fence is three backticks as the first non-whitespace characters on a line. Three backticks in the middle of a line are prose. They do not open a fence. Everything between the fences is literal opaque text — it is not parsed as reqlan syntax. Keywords, imports, attributes, braces, and quotes inside a fence are inert for the parser and may be shown as examples without parse errors. Fenced blocks may span multiple lines and preserve their inner content verbatim. Brace-depth tracking must skip fence interiors so example braces cannot desync surrounding structure ( [no_name_idea_safe_warning] ). Related: ["../core_analysis/rust_port.rq".comment_span_align].0.113
inline_codedoneSingle-backtick spans ( `…` ) are opaque `INLINE_CODE`. They may show example syntax such as a quoted path plus idea. The grammar does not parse bracket or file references inside the span. Check and the language server must not report those examples as unresolved ["../reference_types.rq".file_reference] or idea refs. Related: [code_snippets], ["../core_analysis/rust_port.rq".comment_span_align].0.165
open_file_reference_sequencingdoneWhen the editor opens a `.rq` buffer, reference marks follow ["../extension/language/support/open-file-sequencing.rq".open_file_algorithm]. The open buffer stays file-local ( ["../indexer/indexer.rq".local_symbolic_analysis] ). Cross-file inbound waits for ["../indexer/cache-reuse.rq".unify_inbound_indexes] and ["../extension/language/support/open-file-sequencing.rq".lazy_features_after_outbound].0.193
reference_resolution_orderdoneFor each `.rq` file, identify the names in local scope, then resolve references. Sequence: 1. Collect all idea, one-liner, and ideaset declarations in the file. Declaration order does not change which names are in scope. 2. Collect reference candidates in the file. 3. Resolve each candidate against those local declarations. 4. Resolve imports only for candidates that have no local match. Stop import lookup for a candidate when a local match exists. The language server and the indexer must use this sequence. Open-file editor underlines follow [open_file_reference_sequencing]. Related: [same_file_reference], [ideaset], ["./imports.rq".import_tokenisation], ["../indexer/indexer.rq".local_symbolic_analysis].0.053
references_to_subideadoneIt is valid to reference a member of an [ideaset] as `[ideaset.member]`, for example [example_ideaset.subidea1]. The indexer must record that reference on the namespace leaf node. In this example the leaf is [subidea1], not [example_ideaset]. Related: [reference_brackets], [same_file_reference], ["../reference_types.rq".idea_reference], ["../indexer/indexer.rq".index].0.167
same_file_reference[reference_brackets] and [reference_wikilink] may target an idea, one-liner, or [ideaset] in the same file. The target may be declared before or after the reference. Forward references are valid. Circular references between declarations in the same file are valid. Resolution order: [reference_resolution_order].0.100
simple_ideaA one-liner idea is written as a name followed by unstructured body text on the same line. A name-only idea is a one-liner with just the name and no body text. One-liner ideas do not continue onto subsequent lines. A `{` that is not immediately after the name is body text, not a block opener — see ["./syntax-edge-cases.rq".one_liner_curly_brace_context]. `name {}` and `name {hello}` are [block_idea] forms, not one-liners.0.075

Reference labels

attribute_forms, attribute_namespacing, block_idea, code_snippets, configuration_import_root_alias, inline_code, open_file_reference_sequencing, reference_resolution_order, references_to_subidea, same_file_reference, simple_idea, wildcard_references