Referenced by7
Labels7

Referencing ideas

IdeaStatusTagsSummaryKatz
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
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, reference_resolution_order, references_to_subidea, same_file_reference, simple_idea