diff options
| author | Francesco Abbate <francesco.bbt@gmail.com> | 2022-01-09 20:22:39 +0100 |
|---|---|---|
| committer | Francesco Abbate <francesco.bbt@gmail.com> | 2022-01-09 23:26:11 +0100 |
| commit | 656a89c4945aa77698ebd2462575f490e233a242 (patch) | |
| tree | 321a79297e177ffbb8c59ce20802b0906247ae20 | |
| parent | 827f3f876dedab369643795a3c13cbc20eba405b (diff) | |
| download | lite-xl-656a89c4945aa77698ebd2462575f490e233a242.tar.gz lite-xl-656a89c4945aa77698ebd2462575f490e233a242.zip | |
Fix checks when opening new project directory
| -rw-r--r-- | data/core/commands/core.lua | 35 |
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, |
