Show max files warning message for initial project
If the max number of files limit is achieved when the application is starting the StatusView is not yet configured so we cannot show the warning. We show the warning in the function scanning the directory only if the StatusView is up. On the other side, when the application starts it will check if the initial project dir hit the max files limit and show the warning if needed.
This commit is contained in:
parent
8e7d3c0f66
commit
31479a4ad7
|
@ -154,24 +154,25 @@ local function get_directory_files(root, path, t, recursive, begin_hook)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
local function show_max_files_warning()
|
||||||
|
core.status_view:show_message("!", style.accent,
|
||||||
|
"Too many files in project directory: stopped reading at "..
|
||||||
|
config.max_project_files.." files. For more information see "..
|
||||||
|
"usage.md at github.com/franko/lite-xl."
|
||||||
|
)
|
||||||
|
end
|
||||||
|
|
||||||
-- Populate a project folder top directory by scanning the filesystem.
|
-- Populate a project folder top directory by scanning the filesystem.
|
||||||
function core.scan_project_folder(index)
|
local function scan_project_folder(index)
|
||||||
local dir = core.project_directories[index]
|
local dir = core.project_directories[index]
|
||||||
local t, entries_count = get_directory_files(dir.name, "", {}, true)
|
local t, entries_count = get_directory_files(dir.name, "", {}, true)
|
||||||
if entries_count > config.max_project_files then
|
if entries_count > config.max_project_files then
|
||||||
dir.files_limit = true
|
dir.files_limit = true
|
||||||
if core.status_view then -- FIXME
|
if core.status_view then -- May be not yet initialized.
|
||||||
core.status_view:show_message("!", style.accent,
|
show_max_files_warning()
|
||||||
"Too many files in project directory: stopped reading at "..
|
|
||||||
config.max_project_files.." files. For more information see "..
|
|
||||||
"usage.md at github.com/franko/lite-xl."
|
|
||||||
)
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
dir.files = t
|
dir.files = t
|
||||||
if dir.name == core.project_dir then
|
|
||||||
core.project_files = dir.files
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
@ -181,15 +182,18 @@ function core.add_project_directory(path)
|
||||||
-- The field item.topdir will identify it as a top level directory.
|
-- The field item.topdir will identify it as a top level directory.
|
||||||
path = normalize_path(path)
|
path = normalize_path(path)
|
||||||
local watch_id = system.watch_dir(path);
|
local watch_id = system.watch_dir(path);
|
||||||
print("DEBUG watch_id:", watch_id)
|
local dir = {
|
||||||
table.insert(core.project_directories, {
|
|
||||||
name = path,
|
name = path,
|
||||||
item = {filename = common.basename(path), type = "dir", topdir = true},
|
item = {filename = common.basename(path), type = "dir", topdir = true},
|
||||||
files_limit = false,
|
files_limit = false,
|
||||||
is_dirty = true,
|
is_dirty = true,
|
||||||
watch_id = watch_id,
|
watch_id = watch_id,
|
||||||
})
|
}
|
||||||
core.scan_project_folder(#core.project_directories)
|
table.insert(core.project_directories, dir)
|
||||||
|
scan_project_folder(#core.project_directories)
|
||||||
|
if path == core.project_dir then
|
||||||
|
core.project_files = dir.files
|
||||||
|
end
|
||||||
core.redraw = true
|
core.redraw = true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -327,13 +331,11 @@ local function project_scan_remove_file(watch_id, filepath)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if not project_dir_entry then return end
|
if not project_dir_entry then return end
|
||||||
print("LOOKING for", filepath, " in", project_dir_entry and project_dir_entry.name)
|
|
||||||
local fileinfo = { filename = filepath }
|
local fileinfo = { filename = filepath }
|
||||||
for _, filetype in ipairs {"dir", "file"} do
|
for _, filetype in ipairs {"dir", "file"} do
|
||||||
fileinfo.type = filetype
|
fileinfo.type = filetype
|
||||||
local index, match = file_search(project_dir_entry.files, fileinfo)
|
local index, match = file_search(project_dir_entry.files, fileinfo)
|
||||||
if match then
|
if match then
|
||||||
print("FOUND", filepath, " at index", index)
|
|
||||||
table.remove(project_dir_entry.files, index)
|
table.remove(project_dir_entry.files, index)
|
||||||
project_dir_entry.is_dirty = true
|
project_dir_entry.is_dirty = true
|
||||||
return
|
return
|
||||||
|
@ -594,6 +596,12 @@ function core.init()
|
||||||
end
|
end
|
||||||
local got_project_error = not core.load_project_module()
|
local got_project_error = not core.load_project_module()
|
||||||
|
|
||||||
|
-- We assume we have just a single project directory here. Now that StatusView
|
||||||
|
-- is there show max files warning if needed.
|
||||||
|
if core.project_directories[1].files_limit then
|
||||||
|
show_max_files_warning()
|
||||||
|
end
|
||||||
|
|
||||||
for _, filename in ipairs(files) do
|
for _, filename in ipairs(files) do
|
||||||
core.root_view:open_doc(core.open_doc(filename))
|
core.root_view:open_doc(core.open_doc(filename))
|
||||||
end
|
end
|
||||||
|
@ -1001,7 +1009,6 @@ function core.on_event(type, ...)
|
||||||
elseif type == "focuslost" then
|
elseif type == "focuslost" then
|
||||||
core.root_view:on_focus_lost(...)
|
core.root_view:on_focus_lost(...)
|
||||||
elseif type == "dirchange" then
|
elseif type == "dirchange" then
|
||||||
print("DEBUG: dirchange", select(1, ...), select(2, ...), select(3, ...))
|
|
||||||
core.on_dir_change(...)
|
core.on_dir_change(...)
|
||||||
elseif type == "quit" then
|
elseif type == "quit" then
|
||||||
core.quit()
|
core.quit()
|
||||||
|
|
|
@ -1,3 +1,16 @@
|
||||||
|
|
||||||
|
`core.set_project_dir`:
|
||||||
|
Reset project directories and set its directory.
|
||||||
|
It chdir into the directory, empty the `core.project_directories` and add
|
||||||
|
the given directory.
|
||||||
|
`core.add_project_directory`:
|
||||||
|
Add a new top-level directory to the project.
|
||||||
|
Also called from modules and commands outside core.init.
|
||||||
|
`core.scan_project_folder`:
|
||||||
|
Scan all files for a given top-level project directory.
|
||||||
|
Can emit a warning about file limit.
|
||||||
|
Called only from within core.init module.
|
||||||
|
|
||||||
`core.scan_project_folder`: (renamed to `core.scan_project_subdir`)
|
`core.scan_project_folder`: (renamed to `core.scan_project_subdir`)
|
||||||
scan a single folder, without recursion. Used when too many files.
|
scan a single folder, without recursion. Used when too many files.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue