aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrancesco Abbate <francesco.bbt@gmail.com>2022-01-09 20:22:39 +0100
committerFrancesco Abbate <francesco.bbt@gmail.com>2022-01-09 23:26:11 +0100
commit656a89c4945aa77698ebd2462575f490e233a242 (patch)
tree321a79297e177ffbb8c59ce20802b0906247ae20
parent827f3f876dedab369643795a3c13cbc20eba405b (diff)
downloadlite-xl-656a89c4945aa77698ebd2462575f490e233a242.tar.gz
lite-xl-656a89c4945aa77698ebd2462575f490e233a242.zip
Fix checks when opening new project directory
-rw-r--r--data/core/commands/core.lua35
1 files changed, 24 insertions, 11 deletions
diff --git a/data/core/commands/core.lua b/data/core/commands/core.lua
index 2ea34b2d..524352fc 100644
--- a/data/core/commands/core.lua
+++ b/data/core/commands/core.lua
@@ -15,6 +15,15 @@ local function suggest_directory(text)
core.recent_projects or common.dir_path_suggest(text))
end
+local function check_directory_path(path)
+ local abs_path = system.absolute_path(path)
+ local info = abs_path and system.get_file_info(abs_path)
+ if not info or info.type ~= 'dir' then
+ return nil
+ end
+ return abs_path
+end
+
command.add(nil, {
["core:quit"] = function()
core.quit()
@@ -156,17 +165,17 @@ command.add(nil, {
core.command_view:set_text(common.home_encode(dirname) .. PATHSEP)
end
core.command_view:enter("Change Project Folder", function(text)
- text = system.absolute_path(common.home_expand(text))
- if text == core.project_dir then return end
- local path_stat = system.get_file_info(text)
- if not path_stat or path_stat.type ~= 'dir' then
- core.error("Cannot open folder %q", text)
+ local path = common.home_expand(text)
+ local abs_path = check_directory_path(path)
+ if not abs_path then
+ core.error("Cannot open directory %q", path)
return
end
+ if abs_path == core.project_dir then return end
core.confirm_close_docs(core.docs, function(dirpath)
core.close_current_project()
core.open_folder_project(dirpath)
- end, text)
+ end, abs_path)
end, suggest_directory)
end,
@@ -176,13 +185,17 @@ command.add(nil, {
core.command_view:set_text(common.home_encode(dirname) .. PATHSEP)
end
core.command_view:enter("Open Project", function(text)
- text = common.home_expand(text)
- local path_stat = system.get_file_info(text)
- if not path_stat or path_stat.type ~= 'dir' then
- core.error("Cannot open folder %q", text)
+ local path = common.home_expand(text)
+ local abs_path = check_directory_path(path)
+ if not abs_path then
+ core.error("Cannot open directory %q", path)
+ return
+ end
+ if abs_path == core.project_dir then
+ core.error("Directory %q is currently opened", abs_path)
return
end
- system.exec(string.format("%q %q", EXEFILE, text))
+ system.exec(string.format("%q %q", EXEFILE, abs_path))
end, suggest_directory)
end,