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
|
-- Maximum amount of symbols to cache per document
|
||||||
max_symbols = 4000,
|
max_symbols = 4000,
|
||||||
-- Font size of the description box
|
-- 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)
|
}, config.plugins.autocomplete)
|
||||||
|
|
||||||
local autocomplete = {}
|
local autocomplete = {}
|
||||||
|
|
|
@ -8,7 +8,17 @@ local common = require "core.common"
|
||||||
local dirwatch = require "core.dirwatch"
|
local dirwatch = require "core.dirwatch"
|
||||||
|
|
||||||
config.plugins.autoreload = common.merge({
|
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)
|
}, config.plugins.autoreload)
|
||||||
|
|
||||||
local watch = dirwatch.new()
|
local watch = dirwatch.new()
|
||||||
|
|
|
@ -22,7 +22,50 @@ config.plugins.linewrapping = common.merge({
|
||||||
-- Whether or not to enable wrapping by default when opening files.
|
-- Whether or not to enable wrapping by default when opening files.
|
||||||
enable_by_default = false,
|
enable_by_default = false,
|
||||||
-- Requires tokenization
|
-- 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)
|
}, config.plugins.linewrapping)
|
||||||
|
|
||||||
local LineWrapping = {}
|
local LineWrapping = {}
|
||||||
|
|
|
@ -9,8 +9,43 @@ local RootView = require "core.rootview"
|
||||||
local CommandView = require "core.commandview"
|
local CommandView = require "core.commandview"
|
||||||
|
|
||||||
config.plugins.scale = common.merge({
|
config.plugins.scale = common.merge({
|
||||||
|
-- The method used to apply the scaling: "code", "ui"
|
||||||
mode = "code",
|
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)
|
}, config.plugins.scale)
|
||||||
|
|
||||||
local scale_steps = 0.05
|
local scale_steps = 0.05
|
||||||
|
@ -89,11 +124,16 @@ command.add(nil, {
|
||||||
keymap.add {
|
keymap.add {
|
||||||
["ctrl+0"] = "scale:reset",
|
["ctrl+0"] = "scale:reset",
|
||||||
["ctrl+-"] = "scale:decrease",
|
["ctrl+-"] = "scale:decrease",
|
||||||
["ctrl+="] = "scale:increase",
|
["ctrl+="] = "scale:increase"
|
||||||
["ctrl+wheelup"] = "scale:increase",
|
|
||||||
["ctrl+wheeldown"] = "scale:decrease"
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if config.plugins.scale.use_mousewheel then
|
||||||
|
keymap.add {
|
||||||
|
["ctrl+wheelup"] = "scale:increase",
|
||||||
|
["ctrl+wheeldown"] = "scale:decrease"
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
return {
|
return {
|
||||||
["set"] = set_scale,
|
["set"] = set_scale,
|
||||||
["get"] = get_scale,
|
["get"] = get_scale,
|
||||||
|
|
|
@ -762,6 +762,38 @@ keymap.add {
|
||||||
["ctrl+lclick"] = "treeview:new-folder"
|
["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
|
-- Return the treeview with toolbar and contextmenu to allow
|
||||||
-- user or plugin modifications
|
-- user or plugin modifications
|
||||||
view.toolbar = toolbar_view
|
view.toolbar = toolbar_view
|
||||||
|
|
Loading…
Reference in New Issue