Skip to content

Commit e467eb8

Browse files
authored
Output written pages in build summary (#1692)
Resolves #107
1 parent ff49c84 commit e467eb8

File tree

5 files changed

+18
-10
lines changed

5 files changed

+18
-10
lines changed

LaTeXTools Build Output.sublime-syntax

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -106,5 +106,5 @@ contexts:
106106
scope: meta.summary.failure.build.latextools message.error.build.latextools
107107
- match: ^\[Build cancelled by user!\]$\n?
108108
scope: meta.summary.failure.build.latextools message.warning.build.latextools
109-
- match: ^\[(?:Build skipped!|Finished in .+)\]$\n?
109+
- match: ^\[(?:Build skipped!|Finished\b.+)\]$\n?
110110
scope: meta.summary.success.build.latextools message.info.build.latextools

latextools/make_pdf.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@ def worker(self, activity_indicator):
169169
else:
170170
log_file = os.path.join(self.caller.builder.tex_dir, log_filename)
171171

172-
errors, warnings, badboxes = parse_log_file(log_file)
172+
errors, warnings, badboxes, num_pages = parse_log_file(log_file)
173173

174174
except FileNotFoundError:
175175
# If no log file was created, and all processes finished with exit code 0,
@@ -292,7 +292,7 @@ def worker(self, activity_indicator):
292292
elapsed = time.strftime("%M:%S", time.gmtime(elapsed))
293293
else:
294294
elapsed = f"{elapsed:0.1f}s"
295-
self.caller.output(f"\n\n[Finished in {elapsed}]")
295+
self.caller.output(f"\n\n[Finished, {num_pages} pages written in {elapsed}]")
296296

297297
self.caller.errors = errors
298298
self.caller.warnings = warnings

latextools/preview/preview_math.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ def _create_image(
223223
err_log.append("No log file found.")
224224
else:
225225
try:
226-
errors, warnings, _ = parse_log_file(log_file)
226+
errors, warnings, *_ = parse_log_file(log_file)
227227
except Exception as e:
228228
err_log.append(f"Error while parsing log file: {e}")
229229
errors = warnings = []

latextools/utils/tex_log.py

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,7 @@ class WarningLogRule(ErrorLogRule):
125125
selector = "meta.warning.log - markup.warning"
126126

127127

128-
def parse_log_view(view: sublime.View) -> tuple[list[str], list[str], list[str]]:
128+
def parse_log_view(view: sublime.View) -> tuple[list[str], list[str], list[str], int]:
129129
"""
130130
Extract errors, warnings and badbox messages from a `sublime.View`.
131131
@@ -175,15 +175,23 @@ def format_items(items):
175175
for fname, line, msg in sorted(items)
176176
]
177177

178+
pattern = r"Output written on [^\(]+\(([\d\n]+) pages?\b"
179+
region = view.find(pattern, 0)
180+
if region and (match := re.match(pattern, view.substr(region).replace("\n", ""))):
181+
pages = int(match.group(1))
182+
else:
183+
pages = 0
184+
178185
# gather log items
179186
return (
180187
format_items(chain(*map(extract_items, (ExceptionLogRule, ErrorLogRule)))),
181188
format_items(extract_items(WarningLogRule)),
182189
format_items(extract_items(BadboxLogRule)),
190+
pages,
183191
)
184192

185193

186-
def parse_log_file(logfile: str | os.PathLike[str]) -> tuple[list[str], list[str], list[str]]:
194+
def parse_log_file(logfile: str | os.PathLike[str]) -> tuple[list[str], list[str], list[str], int]:
187195
"""
188196
Extract errors, warnings and badbox messages from tex build log.
189197

tests/syntax/syntax_test_build.log

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -82,10 +82,10 @@ C:\Data\LaTeX\test-1400\.aux\test-index.log:1: Double-click here to open the ful
8282
# <- meta.summary.success.build.latextools message.info.build.latextools - meta.messages - meta.logfile
8383
#^^^^^^^^^^^^^^^^ meta.summary.success.build.latextools message.info.build.latextools - meta.messages - meta.logfile
8484

85-
[Finished in 3.4s]
85+
[Finished, 3 pages written in 3.4s]
8686
# <- meta.summary.success.build.latextools message.info.build.latextools - meta.messages - meta.logfile
87-
#^^^^^^^^^^^^^^^^^ meta.summary.success.build.latextools message.info.build.latextools - meta.messages - meta.logfile
87+
#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.summary.success.build.latextools message.info.build.latextools - meta.messages - meta.logfile
8888

89-
[Finished in 14:25]
89+
[Finished, 152 pages written in 14:25]
9090
# <- meta.summary.success.build.latextools message.info.build.latextools - meta.messages - meta.logfile
91-
#^^^^^^^^^^^^^^^^^^ meta.summary.success.build.latextools message.info.build.latextools - meta.messages - meta.logfile
91+
#^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.summary.success.build.latextools message.info.build.latextools - meta.messages - meta.logfile

0 commit comments

Comments
 (0)