HTML_OPEN("p");
WRITE("This looks like a valid extension");
- text_stream *rubric = Extensions::get_rubric(Extensions::from_copy(C));
+ text_stream *rubric = Extensions::get_rubric(Extensions::from_copy(C));
if (Str::len(rubric) > 0) {
WRITE(", and says this about itself:");
HTML_CLOSE("p");
diff --git a/docs/supervisor-module/7-tm.html b/docs/supervisor-module/7-tm.html
index 722e97667..cec00d055 100644
--- a/docs/supervisor-module/7-tm.html
+++ b/docs/supervisor-module/7-tm.html
@@ -219,7 +219,7 @@
if (F == NULL) return;
pathname *P = Filenames::up(F);
if (Pathnames::create_in_file_system(P) == 0) return;
- compiled_documentation *doc = Extensions::get_documentation(E);
+ compiled_documentation *doc = Extensions::get_documentation(E);
TEMPORARY_TEXT(OUT)
#ifdef CORE_MODULE
TEMPORARY_TEXT(details)
diff --git a/inbuild/supervisor-module/Chapter 5/Extension Services.w b/inbuild/supervisor-module/Chapter 5/Extension Services.w
index 0ec67dbf4..42a8ed45e 100644
--- a/inbuild/supervisor-module/Chapter 5/Extension Services.w
+++ b/inbuild/supervisor-module/Chapter 5/Extension Services.w
@@ -819,6 +819,16 @@ then its sentences will go to the extension's own tree.
E->body_text, E->as_copy, project);
E->body_text_unbroken = FALSE;
+@ And here's the top line:
+
+=
+source_location Extensions::top_line_location(inform_extension *E) {
+ source_location sl;
+ sl.file_of_origin = E->read_into_file;
+ sl.line_number = 1;
+ return sl;
+}
+
@ In directory extensions, documentation can be stored separately:
=
diff --git a/inbuild/supervisor-module/Chapter 7/Extensions Index Page.w b/inbuild/supervisor-module/Chapter 7/Extensions Index Page.w
index 704d89579..de76f5512 100644
--- a/inbuild/supervisor-module/Chapter 7/Extensions Index Page.w
+++ b/inbuild/supervisor-module/Chapter 7/Extensions Index Page.w
@@ -338,7 +338,18 @@ the usual ones seen in Mac OS X applications such as iTunes.
@;
@ =
+ inform_extension *E = Extensions::from_copy(res->copy);
+
HTML::begin_span(OUT, I"extensionindexentry");
+ if (LinkedLists::len(res->copy->errors_reading_source_text) == 0) {
+ source_location sl = Extensions::top_line_location(E);
+ if (sl.file_of_origin) {
+ ExtensionIndex::add_to_key(key_list, REVEAL_SYMBOL,
+ I"Open source (left of title: the whole extension; right: where it is Included");
+ SourceLinks::link(OUT, sl, FALSE);
+ WRITE(" ");
+ }
+ }
if (d != SORT_CE_BY_AUTHOR) {
WRITE("%S", res->copy->edition->work->raw_title);
if (Nests::get_tag(res->nest) != INTERNAL_NEST_TAG)
@@ -364,14 +375,14 @@ the usual ones seen in Mac OS X applications such as iTunes.
HTML_CLOSE("a");
}
- inform_extension *E = Extensions::from_copy(res->copy);
parse_node *at = Extensions::get_inclusion_sentence(E);
if (at) {
wording W = Node::get_text(at);
source_location sl = Lexer::word_location(Wordings::first_wn(W));
if (sl.file_of_origin) {
SourceLinks::link(OUT, sl, TRUE);
- ExtensionIndex::add_to_key(key_list, REVEAL_SYMBOL, I"Included here (click to see)");
+ ExtensionIndex::add_to_key(key_list, REVEAL_SYMBOL,
+ I"Open source (left of title: the whole extension; right: where it is Included");
}
}
@@ -379,14 +390,16 @@ the usual ones seen in Mac OS X applications such as iTunes.
WRITE(" ");
HTML_TAG_WITH("img", "%s", PROBLEM_SYMBOL);
ExtensionIndex::add_to_key(key_list, PROBLEM_SYMBOL, I"Has errors (see below)");
- } else if (usage_state == FALSE) {
- WRITE(" ");
- TEMPORARY_TEXT(inclusion_text)
- WRITE_TO(inclusion_text, "Include %X.\n\n\n", res->copy->edition->work);
- ExtensionWebsite::paste_button(OUT, inclusion_text);
- DISCARD_TEXT(inclusion_text)
- ExtensionIndex::add_to_key(key_list, PASTE_SYMBOL,
- I"Source text to Include this (click to paste in)");
+ } else {
+ if (usage_state == FALSE) {
+ WRITE(" ");
+ TEMPORARY_TEXT(inclusion_text)
+ WRITE_TO(inclusion_text, "Include %X.\n\n\n", res->copy->edition->work);
+ ExtensionWebsite::paste_button(OUT, inclusion_text);
+ DISCARD_TEXT(inclusion_text)
+ ExtensionIndex::add_to_key(key_list, PASTE_SYMBOL,
+ I"Source text to Include this (click to paste in)");
+ }
}
compatibility_specification *C = res->copy->edition->compatibility;
diff --git a/inform7/Figures/memory-diagnostics.txt b/inform7/Figures/memory-diagnostics.txt
index 4a704a254..24d047dbc 100644
--- a/inform7/Figures/memory-diagnostics.txt
+++ b/inform7/Figures/memory-diagnostics.txt
@@ -1,4 +1,4 @@
-Total memory consumption was 139117K = 136 MB
+Total memory consumption was 139118K = 136 MB
---- was used for 2123163 objects, in 374917 frames in 0 x 800K = 0K = 0 MB:
@@ -261,9 +261,9 @@ Total memory consumption was 139117K = 136 MB
---- tree_type 1 object, 40 bytes
---- I6_generation_data 1 object, 40 bytes
-99.9% was used for memory not allocated for objects:
+100.0% was used for memory not allocated for objects:
- 62.1% text stream storage 88591296 bytes in 508365 claims
+ 62.1% text stream storage 88592392 bytes in 508366 claims
3.8% dictionary storage 5480960 bytes in 7754 claims
---- sorting 2624 bytes in 531 claims
5.0% source text 7200000 bytes in 3 claims
diff --git a/inform7/Figures/timings-diagnostics.txt b/inform7/Figures/timings-diagnostics.txt
index accd5f382..c45645508 100644
--- a/inform7/Figures/timings-diagnostics.txt
+++ b/inform7/Figures/timings-diagnostics.txt
@@ -1,8 +1,8 @@
100.0% in inform7 run
- 67.5% in compilation to Inter
- 45.9% in //Sequence::undertake_queued_tasks//
+ 67.4% in compilation to Inter
+ 45.5% in //Sequence::undertake_queued_tasks//
4.2% in //MajorNodes::pre_pass//
- 3.8% in //MajorNodes::pass_1//
+ 3.4% in //MajorNodes::pass_1//
1.9% in //ImperativeDefinitions::assess_all//
1.5% in //RTKindConstructors::compile//
1.5% in //RTPhrasebook::compile_entries//
@@ -14,11 +14,11 @@
0.3% in //Sequence::undertake_queued_tasks//
0.3% in //Sequence::undertake_queued_tasks//
0.3% in //World::stage_V//
- 4.6% not specifically accounted for
- 28.1% in running Inter pipeline
- 9.6% in step 14/15: generate inform6 -> auto.inf
- 6.9% in step 5/15: load-binary-kits
- 5.7% in step 6/15: make-synoptic-module
+ 5.4% not specifically accounted for
+ 28.3% in running Inter pipeline
+ 9.5% in step 14/15: generate inform6 -> auto.inf
+ 6.8% in step 5/15: load-binary-kits
+ 6.1% in step 6/15: make-synoptic-module
1.9% in step 9/15: make-identifiers-unique
0.3% in step 12/15: eliminate-redundant-operations
0.3% in step 4/15: compile-splats
diff --git a/inform7/Internal/Inter/Architecture16Kit/kit_metadata.json b/inform7/Internal/Inter/Architecture16Kit/kit_metadata.json
index f55190924..c75fb4a7a 100644
--- a/inform7/Internal/Inter/Architecture16Kit/kit_metadata.json
+++ b/inform7/Internal/Inter/Architecture16Kit/kit_metadata.json
@@ -2,7 +2,7 @@
"is": {
"type": "kit",
"title": "Architecture16Kit",
- "version": "10.2.0-beta+6W92"
+ "version": "10.2.0-beta+6W93"
},
"compatibility": "16-bit",
"kit-details": {
diff --git a/inform7/Internal/Inter/Architecture32Kit/kit_metadata.json b/inform7/Internal/Inter/Architecture32Kit/kit_metadata.json
index 42b991fe7..f505095ca 100644
--- a/inform7/Internal/Inter/Architecture32Kit/kit_metadata.json
+++ b/inform7/Internal/Inter/Architecture32Kit/kit_metadata.json
@@ -2,7 +2,7 @@
"is": {
"type": "kit",
"title": "Architecture32Kit",
- "version": "10.2.0-beta+6W92"
+ "version": "10.2.0-beta+6W93"
},
"compatibility": "32-bit",
"kit-details": {
diff --git a/inform7/Internal/Inter/BasicInformKit/kit_metadata.json b/inform7/Internal/Inter/BasicInformKit/kit_metadata.json
index 7ec238ea3..c59a63d1e 100644
--- a/inform7/Internal/Inter/BasicInformKit/kit_metadata.json
+++ b/inform7/Internal/Inter/BasicInformKit/kit_metadata.json
@@ -2,7 +2,7 @@
"is": {
"type": "kit",
"title": "BasicInformKit",
- "version": "10.2.0-beta+6W92"
+ "version": "10.2.0-beta+6W93"
},
"needs": [ {
"need": {
diff --git a/inform7/Internal/Inter/CommandParserKit/kit_metadata.json b/inform7/Internal/Inter/CommandParserKit/kit_metadata.json
index b2d0abe29..1ecc0b9af 100644
--- a/inform7/Internal/Inter/CommandParserKit/kit_metadata.json
+++ b/inform7/Internal/Inter/CommandParserKit/kit_metadata.json
@@ -2,7 +2,7 @@
"is": {
"type": "kit",
"title": "CommandParserKit",
- "version": "10.2.0-beta+6W92"
+ "version": "10.2.0-beta+6W93"
},
"needs": [ {
"need": {
diff --git a/inform7/Internal/Inter/EnglishLanguageKit/kit_metadata.json b/inform7/Internal/Inter/EnglishLanguageKit/kit_metadata.json
index 2823f7428..f24887f60 100644
--- a/inform7/Internal/Inter/EnglishLanguageKit/kit_metadata.json
+++ b/inform7/Internal/Inter/EnglishLanguageKit/kit_metadata.json
@@ -2,7 +2,7 @@
"is": {
"type": "kit",
"title": "EnglishLanguageKit",
- "version": "10.2.0-beta+6W92"
+ "version": "10.2.0-beta+6W93"
},
"needs": [ {
"need": {
diff --git a/inform7/Internal/Inter/WorldModelKit/kit_metadata.json b/inform7/Internal/Inter/WorldModelKit/kit_metadata.json
index 682cfa747..3e0dfb24b 100644
--- a/inform7/Internal/Inter/WorldModelKit/kit_metadata.json
+++ b/inform7/Internal/Inter/WorldModelKit/kit_metadata.json
@@ -2,7 +2,7 @@
"is": {
"type": "kit",
"title": "WorldModelKit",
- "version": "10.2.0-beta+6W92"
+ "version": "10.2.0-beta+6W93"
},
"needs": [ {
"need": {