diff --git a/SYNTAX.rst b/SYNTAX.rst
index 260823521..7476f4470 100644
--- a/SYNTAX.rst
+++ b/SYNTAX.rst
@@ -512,6 +512,17 @@ These are defined in df-code.lisp:
but allows the GUI to display it as a list.
+````
+
+ Defines a DF-style linked list node. This translates to::
+
+
+
+
+
+
+
+ with some extra code to make it easier to interact with.
Class type definition
=====================
diff --git a/StructType.pm b/StructType.pm
index cfc6a6962..d45991348 100644
--- a/StructType.pm
+++ b/StructType.pm
@@ -191,6 +191,7 @@ sub render_struct_type {
my $tag_name = $tag->getAttribute('ld:meta');
my $is_class = ($tag_name eq 'class-type');
+ my $is_linked_list = (($tag->getAttribute('ld:subtype') or '') eq 'df-linked-list-type');
my $custom_methods = is_attr_true($tag, 'custom-methods') || $tag->findnodes('custom-methods/cmethod');
my $has_methods = $is_class || is_attr_true($tag, 'has-methods');
my $inherits = $tag->getAttribute('inherits-from');
@@ -206,6 +207,8 @@ sub render_struct_type {
$ispec = ' : '.$inherits;
} elsif ($is_class) {
$ispec = ' : virtual_class';
+ } elsif ($is_linked_list) {
+ $ispec = ' : DfLinkedList<'.$typename.', '.$tag->getAttribute('item-type').'>';
}
with_struct_block {
diff --git a/df.jobs.xml b/df.jobs.xml
index 320e18cb9..3cecca9ab 100644
--- a/df.jobs.xml
+++ b/df.jobs.xml
@@ -45,12 +45,7 @@
-
- (describe-obj $.item)
-
-
-
-
+
diff --git a/df.map.xml b/df.map.xml
index 35719bc6f..faa4223b3 100644
--- a/df.map.xml
+++ b/df.map.xml
@@ -220,11 +220,7 @@
-
-
-
-
-
+
@@ -328,11 +324,7 @@
-
-
-
-
-
+
diff --git a/df.projectile.xml b/df.projectile.xml
index 5d88559ea..f64722cca 100644
--- a/df.projectile.xml
+++ b/df.projectile.xml
@@ -5,11 +5,7 @@
-
-
-
-
-
+
diff --git a/lower-1.xslt b/lower-1.xslt
index 0337b5b35..1bada0651 100644
--- a/lower-1.xslt
+++ b/lower-1.xslt
@@ -61,6 +61,21 @@
+
+
+ (describe-obj $.item)
+
+
+
+
+
+
+
+
+
+
+
+