Add command to remove a directory from the project
In addition directories can be removed with a mouse middle-click in the tree view pane.
This commit is contained in:
@@ -166,7 +166,7 @@ command.add(nil, {
|
||||
end,
|
||||
|
||||
["core:add-directory"] = function()
|
||||
core.command_view:enter("Open Project", function(text)
|
||||
core.command_view:enter("Add Directory", function(text)
|
||||
text = common.home_expand(text)
|
||||
local path_stat, err = system.get_file_info(text)
|
||||
if not path_stat then
|
||||
@@ -182,4 +182,19 @@ command.add(nil, {
|
||||
end, suggest_directory)
|
||||
end,
|
||||
|
||||
["core:remove-directory"] = function()
|
||||
local dir_list = {}
|
||||
local n = #core.project_directories
|
||||
for i = n, 1, -1 do
|
||||
dir_list[n - i + 1] = core.project_directories[i].name
|
||||
end
|
||||
core.command_view:enter("Remove Directory", function(text)
|
||||
if not core.remove_project_directory(text) then
|
||||
core.error("The project has no directory %q", text)
|
||||
end
|
||||
end, function(text)
|
||||
text = common.home_expand(text)
|
||||
return home_encode_list(common.dir_list_suggest(text, dir_list))
|
||||
end)
|
||||
end,
|
||||
})
|
||||
|
||||
@@ -117,6 +117,18 @@ function common.dir_path_suggest(text)
|
||||
end
|
||||
|
||||
|
||||
function common.dir_list_suggest(text, dir_list)
|
||||
local path, name = text:match("^(.-)([^/\\]*)$")
|
||||
local res = {}
|
||||
for _, dir_path in ipairs(dir_list) do
|
||||
if dir_path:lower():find(text:lower(), nil, true) == 1 then
|
||||
table.insert(res, dir_path)
|
||||
end
|
||||
end
|
||||
return res
|
||||
end
|
||||
|
||||
|
||||
function common.match_pattern(text, pattern, ...)
|
||||
if type(pattern) == "string" then
|
||||
return text:find(pattern, ...)
|
||||
|
||||
@@ -274,6 +274,7 @@ function core.load_user_directory()
|
||||
end)
|
||||
end
|
||||
|
||||
|
||||
function core.add_project_directory(path)
|
||||
-- top directories has a file-like "item" but the item.filename
|
||||
-- will be simply the name of the directory, without its path.
|
||||
@@ -285,6 +286,18 @@ function core.add_project_directory(path)
|
||||
})
|
||||
end
|
||||
|
||||
|
||||
function core.remove_project_directory(path)
|
||||
for i, dir in ipairs(core.project_directories) do
|
||||
if dir.name == path then
|
||||
table.remove(core.project_directories, i)
|
||||
return true
|
||||
end
|
||||
end
|
||||
return false
|
||||
end
|
||||
|
||||
|
||||
function core.init()
|
||||
command = require "core.command"
|
||||
keymap = require "core.keymap"
|
||||
|
||||
Reference in New Issue
Block a user