aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrancesco Abbate <francesco.bbt@gmail.com>2021-12-30 23:57:23 +0100
committerFrancesco Abbate <francesco.bbt@gmail.com>2021-12-30 23:57:23 +0100
commit85d26adb6276fad3e3fe6091941c9b512fb10c55 (patch)
treecc3fb032a4631d82cf4b3881416ed1926c7fcc48
parent68aea8851014206654f1195dc0e50799718110e3 (diff)
downloadlite-xl-85d26adb6276fad3e3fe6091941c9b512fb10c55.tar.gz
lite-xl-85d26adb6276fad3e3fe6091941c9b512fb10c55.zip
Fix project's module loading when changing project
Fix a bag of subtle problem about when loading the project module. We need to load the project's module before to scan the project directory.
-rw-r--r--data/core/init.lua50
1 files changed, 22 insertions, 28 deletions
diff --git a/data/core/init.lua b/data/core/init.lua
index 24083f0a..922715c4 100644
--- a/data/core/init.lua
+++ b/data/core/init.lua
@@ -52,18 +52,14 @@ local function update_recents_project(action, dir_path_abs)
end
-function core.set_project_dir(new_dir, change_project_fn, defer_add)
+function core.set_project_dir(new_dir, change_project_fn)
local chdir_ok = pcall(system.chdir, new_dir)
if chdir_ok then
if change_project_fn then change_project_fn() end
core.project_dir = common.normalize_volume(new_dir)
core.project_directories = {}
- if not defer_add then
- core.add_project_directory(new_dir)
- end
- return true
end
- return false
+ return chdir_ok
end
function core.close_current_project()
@@ -83,13 +79,22 @@ function core.close_current_project()
end
end
+
+local function reload_customizations()
+ core.reload_module("core.style")
+ core.reload_module("core.config")
+ core.reload_module("core.keymap")
+ core.load_user_directory()
+ core.load_project_module()
+end
+
+
function core.open_folder_project(dir_path_abs)
if core.set_project_dir(dir_path_abs, core.on_quit_project) then
core.root_view:close_all_docviews()
+ reload_customizations()
update_recents_project("add", dir_path_abs)
- if not core.load_project_module() then
- command.perform("core:open-log")
- end
+ core.add_project_directory(dir_path_abs)
core.on_enter_project(dir_path_abs)
end
end
@@ -570,10 +575,8 @@ end
local function project_scan_add_file(dir, filepath)
local fileinfo = get_project_file_info(dir.name, PATHSEP .. filepath)
- if not fileinfo_pass_filter(fileinfo) then return end
- if fileinfo then
- project_scan_add_entry(dir, fileinfo)
- end
+ if not fileinfo or not fileinfo_pass_filter(fileinfo) then return end
+ project_scan_add_entry(dir, fileinfo)
end
@@ -697,26 +700,16 @@ local function configure_borderless_window()
end
-local function reload_customizations()
- core.reload_module("core.style")
- core.reload_module("core.config")
- core.reload_module("core.keymap")
- core.load_user_directory()
- core.load_project_module()
- rescan_project_directories()
- configure_borderless_window()
-end
-
-
local function add_config_files_hooks()
-- auto-realod style when user's module is saved by overriding Doc:Save()
local doc_save = Doc.save
local user_filename = system.absolute_path(USERDIR .. PATHSEP .. "init.lua")
- local module_filename = system.absolute_path(".lite_project.lua")
function Doc:save(filename, abs_filename)
doc_save(self, filename, abs_filename)
- if self.abs_filename == user_filename or self.abs_filename == module_filename then
+ if self.abs_filename == user_filename or self.abs_filename == core.project_module_filename then
reload_customizations()
+ rescan_project_directories()
+ configure_borderless_window()
end
end
end
@@ -787,7 +780,7 @@ function core.init()
local project_dir_abs = system.absolute_path(project_dir)
-- We prevent set_project_dir below to effectively add and scan the directory becaese tha
-- project module and its ignore files is not yet loaded.
- local set_project_ok = project_dir_abs and core.set_project_dir(project_dir_abs, nil, true)
+ local set_project_ok = project_dir_abs and core.set_project_dir(project_dir_abs)
if set_project_ok then
if project_dir_explicit then
update_recents_project("add", project_dir_abs)
@@ -797,7 +790,7 @@ function core.init()
update_recents_project("remove", project_dir)
end
project_dir_abs = system.absolute_path(".")
- if not core.set_project_dir(project_dir_abs, nil, true) then
+ if not core.set_project_dir(project_dir_abs) then
system.show_fatal_error("Lite XL internal error", "cannot set project directory to cwd")
os.exit(1)
end
@@ -1028,6 +1021,7 @@ end
function core.load_project_module()
local filename = ".lite_project.lua"
+ core.project_module_filename = system.absolute_path(filename)
if system.get_file_info(filename) then
return core.try(function()
local fn, err = loadfile(filename)