Bundle curated community plugins (2.1.8-4)
Vendored from upstream, pinned by commit (see debian/extra/README.source): - gitstatus, gitopen, fontconfig, open_ext, select_colorscheme, smoothcaret, nerdicons (font mapping patched to DATADIR, Ships the Symbols Nerd Font Mono TTF, SIL OFL 1.1) - lite-xl-lsp (complete LSP client; idle until a language server is configured) plus the lite-xl-widgets library it requires - 104 language syntax plugins (none duplicate the nine bundled in core) settings GUI left out upstream is broken: it requires a libraries.widget.fonts widget that does not exist in lite-xl-widgets at any revision. Co-developed-with: ZCode (Z.ai)
This commit is contained in:
Vendored
+210
@@ -0,0 +1,210 @@
|
||||
-- mod-version:3
|
||||
-- Orginal Author: Jipok
|
||||
-- Modified by: techie-guy
|
||||
-- Doesn't work well with scaling mode == "ui"
|
||||
|
||||
-- This is an extension/modification of the nonicons plugin, https://github.com/lite-xl/lite-xl-plugins/blob/master/plugins/nonicons.lua
|
||||
|
||||
-- Any icon can be searched with nerdfonts.com/cheat-sheet
|
||||
|
||||
local common = require "core.common"
|
||||
local config = require "core.config"
|
||||
local style = require "core.style"
|
||||
local TreeView = require "plugins.treeview"
|
||||
local Node = require "core.node"
|
||||
|
||||
local nerdfonts_symbols = require "libraries.font_symbols_nerdfont_mono_regular"
|
||||
|
||||
-- Config
|
||||
config.plugins.nerdicons = common.merge({
|
||||
use_default_dir_icons = false,
|
||||
use_default_chevrons = false,
|
||||
draw_treeview_icons = true,
|
||||
draw_tab_icons = true,
|
||||
-- The config specification used by the settings gui
|
||||
config_spec = {
|
||||
name = "Nerdicons",
|
||||
{
|
||||
label = "Use Default Directory Icons",
|
||||
description = "When enabled does not use nerdicon directory icons.",
|
||||
path = "use_default_dir_icons",
|
||||
type = "toggle",
|
||||
default = false
|
||||
},
|
||||
{
|
||||
label = "Use Default Chevrons",
|
||||
description = "When enabled does not use nerdicon expand/collapse arrow icons.",
|
||||
path = "use_default_chevrons",
|
||||
type = "toggle",
|
||||
default = false
|
||||
},
|
||||
{
|
||||
label = "Draw Treeview Icons",
|
||||
description = "Enables file related icons on the treeview.",
|
||||
path = "draw_treeview_icons",
|
||||
type = "toggle",
|
||||
default = true
|
||||
},
|
||||
{
|
||||
label = "Draw Tab Icons",
|
||||
description = "Adds file related icons to tabs.",
|
||||
path = "draw_tab_icons",
|
||||
type = "toggle",
|
||||
default = true
|
||||
},
|
||||
}
|
||||
}, config.plugins.nerdicons)
|
||||
|
||||
local icon_font = renderer.font.load(nerdfonts_symbols.path, 18.5 * SCALE)
|
||||
local map = nerdfonts_symbols.utf8
|
||||
local chevron_width = icon_font:get_width(map["oct-chevron_down"])
|
||||
local previous_scale = SCALE
|
||||
|
||||
|
||||
local extension_icons = {
|
||||
[".hxml"] = { "#d3d3d3", "seti-config" }, -- Haxe
|
||||
[".hx"] = { "#f68712", "seti-haxe" },
|
||||
[".d"] = { "#ff3333", "dev-dlang" }, -- D
|
||||
[".di"] = { "#ff6666", "dev-dlang" },
|
||||
[".lua"] = { "#405af0", "seti-lua" },
|
||||
[".md"] = { "#519aba", "dev-markdown" }, -- Markdown
|
||||
[".powershell"] = { "#519aba", "cod-terminal_powershell" },
|
||||
[".bat"] = { "#cbcb41", "cod-terminal_cmd" },
|
||||
[".txt"] = { "#ffffff", "fa-file_text" },
|
||||
[".cpp"] = { "#519aba", "custom-cpp" },
|
||||
[".c"] = { "#599eff", "custom-c" },
|
||||
[".h"] = { "#79029b", "fa-header" },
|
||||
[".hpp"] = { "#79029b", "fa-header" },
|
||||
[".py"] = { "#3572A5", "md-language_python" }, -- Python
|
||||
[".pyc"] = { "#519aba", "md-language_python" },
|
||||
[".pyd"] = { "#519aba", "md-language_python" },
|
||||
[".php"] = { "#a074c4", "md-language_php" },
|
||||
[".cs"] = { "#596706", "md-language_csharp" }, -- C#
|
||||
[".conf"] = { "#6d8086", "seti-config" },
|
||||
[".cfg"] = { "#6d8086", "seti-config" },
|
||||
[".toml"] = { "#6d8086", "seti-config" },
|
||||
[".yaml"] = { "#6d8086", "seti-yml" },
|
||||
[".yml"] = { "#6d8086", "seti-yml" },
|
||||
[".json"] = { "#854CC7", "seti-json" },
|
||||
[".css"] = { "#519abc", "dev-css3" },
|
||||
[".html"] = { "#e34c26", "dev-html5" },
|
||||
[".js"] = { "#cbcb41", "dev-javascript_badge" },
|
||||
[".cjs"] = { "#cbcb41", "dev-javascript_badge" },
|
||||
[".mjs"] = { "#cbcb41", "dev-javascript_badge" }, -- JavaScript
|
||||
[".ejs"] = { "#ffea7f", "seti-ejs" },
|
||||
[".pug"] = { "#a86454", "seti-pug" },
|
||||
[".go"] = { "#519aba", "seti-go" },
|
||||
[".jpg"] = { "#a074c4", "fa-image" },
|
||||
[".png"] = { "#a074c4", "fa-image" },
|
||||
[".sh"] = { "#4d5a5e", "cod-terminal_bash" },
|
||||
[".bash"] = { "#4d5a5e", "cod-terminal_bash" }, -- Shell
|
||||
[".java"] = { "#cc3e44", "dev-java" },
|
||||
[".scala"] = { "#cc3e44", "dev-scala" },
|
||||
[".kt"] = { "#F88A02", "custom-kotlin" }, -- Kotlin
|
||||
[".pl"] = { "#519aba", "dev-perl" }, -- Perl
|
||||
[".pm"] = { "#519aba", "dev-perl" }, -- Perl
|
||||
[".rb"] = { "#701516", "dev-ruby_rough" }, -- Ruby
|
||||
[".rs"] = { "#c95625", "dev-rust" }, -- Rust
|
||||
[".rss"] = { "#cc3e44", "fa-rss_square" },
|
||||
[".sql"] = { "#dad8d8", "dev-sqllite" },
|
||||
[".swift"] = { "#e37933", "dev-swift" },
|
||||
[".ts"] = { "#519aba", "md-language_typescript" }, -- TypeScript
|
||||
[".diff"] = { "#41535b", "oct-diff" },
|
||||
[".exe"] = { "#cc3e55", "cod-file_binary" },
|
||||
[".make"] = { "#d0bf41", "dev-gnu" },
|
||||
[".svg"] = { "#f7ca39", "md-svg" },
|
||||
[".ttf"] = { "#dad8d4", "fa-font" },
|
||||
[".otf"] = { "#dad8d4", "fa-font" },
|
||||
[".vim"] = { "#8f00ff", "custom-vim" },
|
||||
[".pdf"] = { "#E53935", "fa-file_pdf_o" },
|
||||
[".jl"] = { "#4063d8", "seti-julia" },
|
||||
[".mp4"] = { "#e85e00", "oct-video" },
|
||||
[".jld2"] = { "#888888", "fa-database" },
|
||||
[".ipynb"] = { "#F37726", "seti-notebook" },
|
||||
}
|
||||
|
||||
|
||||
local known_filenames_icons = {
|
||||
["dockerfile"] = { "#296478", "linux-docker" },
|
||||
[".gitignore"] = { "#cc3e55", "dev-git" },
|
||||
[".gitmodules"] = { "#cc3e56", "dev-git" },
|
||||
["PKGBUILD"] = { "#6d8ccc", "md-package" },
|
||||
["license"] = { "#d0bf41", "seti-license" },
|
||||
["copying"] = { "#d0bf41", "seti-license" },
|
||||
["makefile"] = { "#d0bf41", "dev-gnu" },
|
||||
["cmakelists.txt"] = { "#cc3e55", "md-triangle_outline" },
|
||||
}
|
||||
|
||||
-- Preparing colors
|
||||
for _, v in pairs(extension_icons) do
|
||||
v[1] = { common.color(v[1]) }
|
||||
end
|
||||
for _, v in pairs(known_filenames_icons) do
|
||||
v[1] = { common.color(v[1]) }
|
||||
end
|
||||
|
||||
-- Override function to change default icons for dirs, special extensions and names
|
||||
local TreeView_get_item_icon = TreeView.get_item_icon
|
||||
function TreeView:get_item_icon(item, active, hovered)
|
||||
local icon, font, color = TreeView_get_item_icon(self, item, active, hovered)
|
||||
if previous_scale ~= SCALE then
|
||||
icon_font:set_size(
|
||||
icon_font:get_size() * (SCALE / previous_scale)
|
||||
)
|
||||
chevron_width = icon_font:get_width(map["oct-chevron_down"])
|
||||
previous_scale = SCALE
|
||||
end
|
||||
if not config.plugins.nerdicons.use_default_dir_icons then
|
||||
icon = map["cod-file"] -- hex ea7b
|
||||
font = icon_font
|
||||
color = style.text
|
||||
if item.type == "dir" then
|
||||
icon = item.expanded and map["fa-folder_open"] or map["fa-folder"] -- hex f07c and f07b
|
||||
end
|
||||
end
|
||||
if config.plugins.nerdicons.draw_treeview_icons then
|
||||
local custom_icon = known_filenames_icons[item.name:lower()]
|
||||
if custom_icon == nil then
|
||||
custom_icon = extension_icons[item.name:match("^.+(%..+)$")]
|
||||
end
|
||||
if custom_icon ~= nil then
|
||||
color = custom_icon[1]
|
||||
icon = map[custom_icon[2]]
|
||||
font = icon_font
|
||||
end
|
||||
if active or hovered then
|
||||
color = style.accent
|
||||
end
|
||||
end
|
||||
return icon, font, color
|
||||
end
|
||||
|
||||
-- Override function to draw chevrons if setting is disabled
|
||||
local TreeView_draw_item_chevron = TreeView.draw_item_chevron
|
||||
function TreeView:draw_item_chevron(item, active, hovered, x, y, w, h)
|
||||
if not config.plugins.nerdicons.use_default_chevrons then
|
||||
if item.type == "dir" then
|
||||
local chevron_icon = item.expanded and "oct-chevron_down" or "oct-chevron_right"
|
||||
local chevron_color = hovered and style.accent or style.text
|
||||
common.draw_text(icon_font, chevron_color, map[chevron_icon], nil, x+8, y, 0, h) -- added 8 to x to draw the chevron closer to the icon
|
||||
end
|
||||
return chevron_width + style.padding.x
|
||||
end
|
||||
return TreeView_draw_item_chevron(self, item, active, hovered, x, y, w, h)
|
||||
end
|
||||
|
||||
-- Override function to draw icons in tabs titles if setting is enabled
|
||||
local Node_draw_tab_title = Node.draw_tab_title
|
||||
function Node:draw_tab_title(view, font, is_active, is_hovered, x, y, w, h)
|
||||
if config.plugins.nerdicons.draw_tab_icons then
|
||||
local padx = chevron_width + style.padding.x/2
|
||||
local tx = x + padx/16 -- Space for icon
|
||||
w = w + padx
|
||||
Node_draw_tab_title(self, view, font, is_active, is_hovered, tx, y, w, h)
|
||||
if (view == nil) or (view.doc == nil) then return end
|
||||
local item = { type = "file", name = view.doc:get_name() }
|
||||
TreeView:draw_item_icon(item, false, is_hovered, x, y, w, h)
|
||||
else
|
||||
Node_draw_tab_title(self, view, font, is_active, is_hovered, x, y, w, h)
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user