plugins: added settings gui support
This commit is contained in:
parent
b9bb64a2f0
commit
8bbca7c0b0
|
@ -20,7 +20,55 @@ config.plugins.autocomplete = common.merge({
|
|||
-- Maximum amount of symbols to cache per document
|
||||
max_symbols = 4000,
|
||||
-- Font size of the description box
|
||||
desc_font_size = 12
|
||||
desc_font_size = 12,
|
||||
-- The config specification used by gui generators
|
||||
config_spec = {
|
||||
name = "Autocomplete",
|
||||
{
|
||||
label = "Minimum Length",
|
||||
description = "Amount of characters that need to be written for autocomplete to popup.",
|
||||
path = "min_len",
|
||||
type = "number",
|
||||
default = 3,
|
||||
min = 1,
|
||||
max = 5
|
||||
},
|
||||
{
|
||||
label = "Maximum Height",
|
||||
description = "The maximum amount of visible items.",
|
||||
path = "max_height",
|
||||
type = "number",
|
||||
default = 6,
|
||||
min = 1,
|
||||
max = 20
|
||||
},
|
||||
{
|
||||
label = "Maximum Suggestions",
|
||||
description = "The maximum amount of scrollable items.",
|
||||
path = "max_suggestions",
|
||||
type = "number",
|
||||
default = 100,
|
||||
min = 10,
|
||||
max = 10000
|
||||
},
|
||||
{
|
||||
label = "Maximum Symbols",
|
||||
description = "Maximum amount of symbols to cache per document.",
|
||||
path = "max_symbols",
|
||||
type = "number",
|
||||
default = 4000,
|
||||
min = 1000,
|
||||
max = 10000
|
||||
},
|
||||
{
|
||||
label = "Description Font Size",
|
||||
description = "Font size of the description box.",
|
||||
path = "desc_font_size",
|
||||
type = "number",
|
||||
default = 12,
|
||||
min = 8
|
||||
}
|
||||
}
|
||||
}, config.plugins.autocomplete)
|
||||
|
||||
local autocomplete = {}
|
||||
|
|
|
@ -8,7 +8,17 @@ local common = require "core.common"
|
|||
local dirwatch = require "core.dirwatch"
|
||||
|
||||
config.plugins.autoreload = common.merge({
|
||||
always_show_nagview = false
|
||||
always_show_nagview = false,
|
||||
config_spec = {
|
||||
name = "Autoreload",
|
||||
{
|
||||
label = "Always Show Nagview",
|
||||
description = "Alerts you if an opened file changes externally even if you haven't modified it.",
|
||||
path = "always_show_nagview",
|
||||
type = "toggle",
|
||||
default = false
|
||||
}
|
||||
}
|
||||
}, config.plugins.autoreload)
|
||||
|
||||
local watch = dirwatch.new()
|
||||
|
|
|
@ -22,7 +22,50 @@ config.plugins.linewrapping = common.merge({
|
|||
-- Whether or not to enable wrapping by default when opening files.
|
||||
enable_by_default = false,
|
||||
-- Requires tokenization
|
||||
require_tokenization = false
|
||||
require_tokenization = false,
|
||||
-- The config specification used by gui generators
|
||||
config_spec = {
|
||||
name = "Line Wrapping",
|
||||
{
|
||||
label = "Mode",
|
||||
description = "The type of wrapping to perform.",
|
||||
path = "mode",
|
||||
type = "selection",
|
||||
default = "letter",
|
||||
values = {
|
||||
{"Letters", "letter"},
|
||||
{"Words", "word"}
|
||||
}
|
||||
},
|
||||
{
|
||||
label = "Guide",
|
||||
description = "Whether or not to draw a guide.",
|
||||
path = "guide",
|
||||
type = "toggle",
|
||||
default = true
|
||||
},
|
||||
{
|
||||
label = "Indent",
|
||||
description = "Whether or not to follow the indentation of wrapped line.",
|
||||
path = "indent",
|
||||
type = "toggle",
|
||||
default = true
|
||||
},
|
||||
{
|
||||
label = "Enable by Default",
|
||||
description = "Whether or not to enable wrapping by default when opening files.",
|
||||
path = "enable_by_default",
|
||||
type = "toggle",
|
||||
default = false
|
||||
},
|
||||
{
|
||||
label = "Require Tokenization",
|
||||
description = "Use tokenization when applying wrapping.",
|
||||
path = "require_tokenization",
|
||||
type = "toggle",
|
||||
default = false
|
||||
}
|
||||
}
|
||||
}, config.plugins.linewrapping)
|
||||
|
||||
local LineWrapping = {}
|
||||
|
|
|
@ -9,8 +9,43 @@ local RootView = require "core.rootview"
|
|||
local CommandView = require "core.commandview"
|
||||
|
||||
config.plugins.scale = common.merge({
|
||||
-- The method used to apply the scaling: "code", "ui"
|
||||
mode = "code",
|
||||
use_mousewheel = true
|
||||
-- Allow using CTRL + MouseWheel for changing the scale.
|
||||
use_mousewheel = true,
|
||||
-- The config specification used by gui generators
|
||||
config_spec = {
|
||||
name = "Scale",
|
||||
{
|
||||
label = "Mode",
|
||||
description = "The method used to apply the scaling.",
|
||||
path = "mode",
|
||||
type = "selection",
|
||||
default = "code",
|
||||
values = {
|
||||
{"Code Only", "code"},
|
||||
{"Everything", "ui"}
|
||||
}
|
||||
},
|
||||
{
|
||||
label = "Use MouseWheel",
|
||||
description = "Allow using CTRL + MouseWheel for changing the scale.",
|
||||
path = "use_mousewheel",
|
||||
type = "toggle",
|
||||
default = true,
|
||||
on_apply = function(enabled)
|
||||
if enabled then
|
||||
keymap.add {
|
||||
["ctrl+wheelup"] = "scale:increase",
|
||||
["ctrl+wheeldown"] = "scale:decrease"
|
||||
}
|
||||
else
|
||||
keymap.unbind("ctrl+wheelup", "scale:increase")
|
||||
keymap.unbind("ctrl+wheeldown", "scale:decrease")
|
||||
end
|
||||
end
|
||||
}
|
||||
}
|
||||
}, config.plugins.scale)
|
||||
|
||||
local scale_steps = 0.05
|
||||
|
@ -89,10 +124,15 @@ command.add(nil, {
|
|||
keymap.add {
|
||||
["ctrl+0"] = "scale:reset",
|
||||
["ctrl+-"] = "scale:decrease",
|
||||
["ctrl+="] = "scale:increase",
|
||||
["ctrl+="] = "scale:increase"
|
||||
}
|
||||
|
||||
if config.plugins.scale.use_mousewheel then
|
||||
keymap.add {
|
||||
["ctrl+wheelup"] = "scale:increase",
|
||||
["ctrl+wheeldown"] = "scale:decrease"
|
||||
}
|
||||
}
|
||||
end
|
||||
|
||||
return {
|
||||
["set"] = set_scale,
|
||||
|
|
|
@ -762,6 +762,38 @@ keymap.add {
|
|||
["ctrl+lclick"] = "treeview:new-folder"
|
||||
}
|
||||
|
||||
-- The config specification used by gui generators
|
||||
config.plugins.treeview.config_spec = {
|
||||
name = "Treeview",
|
||||
{
|
||||
label = "Size",
|
||||
description = "Default treeview width.",
|
||||
path = "size",
|
||||
type = "number",
|
||||
default = math.ceil(toolbar_view:get_min_width() / SCALE),
|
||||
min = toolbar_view:get_min_width() / SCALE,
|
||||
get_value = function(value)
|
||||
return value / SCALE
|
||||
end,
|
||||
set_value = function(value)
|
||||
return value * SCALE
|
||||
end,
|
||||
on_apply = function(value)
|
||||
view:set_target_size("x", math.max(value, toolbar_view:get_min_width()))
|
||||
end
|
||||
},
|
||||
{
|
||||
label = "Hide on Startup",
|
||||
description = "Show or hide the treeview on startup.",
|
||||
path = "visible",
|
||||
type = "toggle",
|
||||
default = false,
|
||||
on_apply = function(value)
|
||||
view.visible = not value
|
||||
end
|
||||
}
|
||||
}
|
||||
|
||||
-- Return the treeview with toolbar and contextmenu to allow
|
||||
-- user or plugin modifications
|
||||
view.toolbar = toolbar_view
|
||||
|
|
Loading…
Reference in New Issue