Do not close command view on open-file is file is invalid or it is a directory
Added in a validation function which fires before submitting a command enter; found it incredibly irritating to try to open something, hit enter, only to be told I'd selected a directory, and then have to go through the whole process again. (#175)
This commit is contained in:
parent
fa99d5401e
commit
4c42dd4adc
|
@ -94,6 +94,15 @@ command.add(nil, {
|
||||||
core.root_view:open_doc(core.open_doc(common.home_expand(text)))
|
core.root_view:open_doc(core.open_doc(common.home_expand(text)))
|
||||||
end, function (text)
|
end, function (text)
|
||||||
return common.home_encode_list(common.path_suggest(common.home_expand(text)))
|
return common.home_encode_list(common.path_suggest(common.home_expand(text)))
|
||||||
|
end, nil, function(text)
|
||||||
|
local path_stat, err = system.get_file_info(common.home_expand(text))
|
||||||
|
if err then
|
||||||
|
core.error("Cannot open file %q: %q", text, err)
|
||||||
|
elseif path_stat.type == 'dir' then
|
||||||
|
core.error("Cannot open %q, is a folder", text)
|
||||||
|
else
|
||||||
|
return true
|
||||||
|
end
|
||||||
end)
|
end)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
|
|
|
@ -23,6 +23,7 @@ local default_state = {
|
||||||
submit = noop,
|
submit = noop,
|
||||||
suggest = noop,
|
suggest = noop,
|
||||||
cancel = noop,
|
cancel = noop,
|
||||||
|
validate = function() return true end
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -97,13 +98,15 @@ end
|
||||||
function CommandView:submit()
|
function CommandView:submit()
|
||||||
local suggestion = self.suggestions[self.suggestion_idx]
|
local suggestion = self.suggestions[self.suggestion_idx]
|
||||||
local text = self:get_text()
|
local text = self:get_text()
|
||||||
|
if self.state.validate(text) then
|
||||||
local submit = self.state.submit
|
local submit = self.state.submit
|
||||||
self:exit(true)
|
self:exit(true)
|
||||||
submit(text, suggestion)
|
submit(text, suggestion)
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
function CommandView:enter(text, submit, suggest, cancel)
|
function CommandView:enter(text, submit, suggest, cancel, validate)
|
||||||
if self.state ~= default_state then
|
if self.state ~= default_state then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
@ -111,6 +114,7 @@ function CommandView:enter(text, submit, suggest, cancel)
|
||||||
submit = submit or noop,
|
submit = submit or noop,
|
||||||
suggest = suggest or noop,
|
suggest = suggest or noop,
|
||||||
cancel = cancel or noop,
|
cancel = cancel or noop,
|
||||||
|
validate = validate or function() return true end
|
||||||
}
|
}
|
||||||
core.set_active_view(self)
|
core.set_active_view(self)
|
||||||
self:update_suggestions()
|
self:update_suggestions()
|
||||||
|
|
Loading…
Reference in New Issue