summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xMaster/texmf/scripts/texlive/texdoc.tlu66
1 files changed, 40 insertions, 26 deletions
diff --git a/Master/texmf/scripts/texlive/texdoc.tlu b/Master/texmf/scripts/texlive/texdoc.tlu
index d3cf9bbcdad..4055d25d384 100755
--- a/Master/texmf/scripts/texlive/texdoc.tlu
+++ b/Master/texmf/scripts/texlive/texdoc.tlu
@@ -113,9 +113,8 @@ function deluaficate(oldpat)
return newpat
end --deluaficate
-docdirs = {}
-docfiles = {}
function pattern_search (pattern)
+ docdirs, docfiles = {}, {} -- should not be local (used in recurse_tree)
pattern = deluaficate(pattern)
-- populate docdirs and doclines list
for database in get_lsr_files() do
@@ -131,7 +130,9 @@ function pattern_search (pattern)
-- the next file lines are in docdir "this_dir"
is_docline = true
-- save it in the docdirs table
- table.insert(docdirs,this_dir)
+ if string.match(this_dir, pattern) then
+ table.insert(docdirs,this_dir)
+ end
else
is_docline = false
end -- docdir
@@ -140,41 +141,52 @@ function pattern_search (pattern)
-- now we have only file lines left, are they a docline?
elseif is_docline then
local fullpath = this_dir .. line
- -- print(fullpath)
- table.insert(docfiles,fullpath)
+ if string.match(fullpath, pattern) then
+ if lfs.isfile(fullpath) then -- cannot know form ls-R
+ table.insert(docfiles,fullpath)
+ end
+ end
end -- line starting with ./
end -- for line
end -- for database
for no_lsr_dir in list_iter(no_lsr_doctrees) do
- recurse_tree(no_lsr_dir)
+ recurse_tree(no_lsr_dir, pattern)
end
--
- print("Directories that match:")
+ print("\tDirectories that match:")
for dir in list_iter(docdirs) do
- if string.match(dir,pattern) then
- print (dir)
- end
- end -- for dir
- print()
- print("Files that match:")
- for file in list_iter(docfiles) do
- if string.match(file,pattern) then
- print (file)
+ print (dir)
+ end
+ print("\tFiles that match:")
+ for _, ext in ipairs (config.ext_list) do
+ if ext == '' then
+ ext_pattern = '/[^.]*$'
+ elseif ext == '*' then
+ ext_pattern = ''
+ else
+ ext_pattern = '%.'..ext..'$'
end
- end -- for file
+ for file in list_iter(docfiles) do
+ if string.match (file, ext_pattern) then print (file) end
+ end
+ end
end -- function pattern_search()
-function recurse_tree (path)
+function recurse_tree (path, pattern)
for file in lfs.dir(path) do
if file ~= "." and file ~= ".." then
local f = path..'/'..file
local attr = lfs.attributes (f)
if attr then -- else stale symlink
if attr.mode == "directory" then
- table.insert(docdirs,f)
- recurse_tree (f)
+ if string.match (f, pattern) then
+ table.insert(docdirs,f)
+ end
+ recurse_tree (f, pattern)
else
- table.insert(docfiles,f)
+ if string.match (f, pattern) then
+ table.insert(docfiles,f)
+ end
end
end
end
@@ -533,11 +545,13 @@ setup_config_from_env ()
setup_config_from_files ()
setup_config_from_defaults ()
--- we want an empty string for ext at the beginning, so that it works
--- to specify the complete filename. Doesn't matter when there's one
--- more empty string, but we can easily avoid two in a row
-if not (config.ext_list[1] == '') then
- table.insert(config.ext_list,1,'')
+-- we want an empty string for ext at the beginning, so that it works to specify
+-- the complete filename (at least in list or view mode). Doesn't matter when
+-- there's one more empty string, but we can easily avoid two in a row
+if (config.mode == 'view' or config.mode == 'list') then
+ if not (config.ext_list[1] == '') then
+ table.insert(config.ext_list,1,'')
+ end
end
-- the main loop over the args