From 2be8db31dc0406e149a89c62bd628cfa6756ab30 Mon Sep 17 00:00:00 2001 From: Philipp Gesang Date: Sat, 16 Nov 2013 22:36:37 +0100 Subject: [db] use tput to determine the terminal size if appropriate --- luaotfload-database.lua | 40 ++++++++++++++++++++++++++++++++++++---- luaotfload-override.lua | 14 -------------- 2 files changed, 36 insertions(+), 18 deletions(-) diff --git a/luaotfload-database.lua b/luaotfload-database.lua index bccfd7b..714c37c 100644 --- a/luaotfload-database.lua +++ b/luaotfload-database.lua @@ -47,7 +47,6 @@ local C, Cc, Cf, Cg, Cs, Ct --- Luatex builtins local load = load local next = next -local pcall = pcall local require = require local tonumber = tonumber local unpack = table.unpack @@ -59,6 +58,7 @@ local fontloaderopen = fontloader.open local gzipopen = gzip.open local iolines = io.lines local ioopen = io.open +local iopopen = io.popen local kpseexpand_path = kpse.expand_path local kpseexpand_var = kpse.expand_var local kpsefind_file = kpse.find_file @@ -123,6 +123,26 @@ local luaotfloadconfig = config.luaotfload --- always present luaotfloadconfig.resolver = luaotfloadconfig.resolver or "normal" luaotfloadconfig.formats = luaotfloadconfig.formats or "otf,ttf,ttc,dfont" luaotfloadconfig.strip = luaotfloadconfig.strip == true +--- The “termwidth” value is only considered when printing +--- short status messages, e.g. when building the database +--- online. +if not luaotfloadconfig.termwidth then + local tw = 79 + if not ( os.type == "windows" --- Assume broken terminal. + or os.getenv "TERM" == "dumb") + and iopopen + then + local p = iopopen "tput cols" + if p then + result = p:read "*all" + p:close () + if result then + tw = tonumber (result) or tw + end + end + end + luaotfloadconfig.termwidth = tw +end --- this option allows for disabling updates --- during a TeX run @@ -1349,7 +1369,7 @@ local get_english_names = function (names, basename) local english_names if names then - inspect(names) + --inspect(names) for _, raw_namedata in next, names do if raw_namedata.lang == "English (US)" then english_names = raw_namedata.names @@ -2086,6 +2106,16 @@ local find_font_files = function (root, recurse) end end +--- truncate_string -- Cut the first part of a string to fit it +--- into a given terminal width. The parameter “restrict” (int) +--- indicates the number of characters already consumed on the +--- line. +local ellipsis = ".." +local truncate_string = function (str, restrict) + local wd = luaotfloadconfig.termwidth - restrict - 2 + return ellipsis .. stringsub(str, #str - wd) +end + --[[doc-- scan_dir() scans a directory and populates the list of fonts @@ -2131,10 +2161,12 @@ local scan_dir = function (dirname, currentnames, targetnames, local new if dry_run == true then + local truncated = truncate_string (fullname, 43) report_status ("both", "db", - "Would have been loading %q", fullname) + "Would have been loading %s", truncated) else - report_status ("both", "db", "Loading font %q", fullname) + local truncated = truncate_string (fullname, 32) + report_status ("both", "db", "Loading font %s", truncated) local new = read_font_names (fullname, currentnames, targetnames, texmf) if new == true then diff --git a/luaotfload-override.lua b/luaotfload-override.lua index 0e17f05..b1773fa 100644 --- a/luaotfload-override.lua +++ b/luaotfload-override.lua @@ -40,20 +40,6 @@ if tex and (tex.jobname or tex.formatname) then texjob = true end ---[[doc-- -We recreate the verbosity levels previously implemented in font-nms: - - ========================================================== - lvl arg trace_loading trace_search suppress_output - ---------------------------------------------------------- - (0) -> -q ⊥ ⊥ ⊤ - (1) -> ∅ ⊥ ⊥ ⊥ - (2) -> -v ⊤ ⊥ ⊥ - (>2) -> -vv ⊤ ⊤ ⊥ - ========================================================== - ---doc]]-- - local loglevel = 0 --- default local logout = "log" -- cgit v1.2.3