- the vendored nerdicons.lua was the pristine upstream copy, so installs relying on the packaged plugin lost the tuned icon rendering (fractional glyph size and default hinting made icons feel soft and uneven). Apply the same tuning as the user config: whole-pixel icon size, hinting off, scale-aware chevron offset. - default config (skel + first-run template) and this repo's users keep the status bar permanently visible: shown at startup, and the status-bar:hide/toggle commands are no-ops.
161 lines
6.4 KiB
Diff
161 lines
6.4 KiB
Diff
--- a/data/core/init.lua
|
|
+++ b/data/core/init.lua
|
|
@@ -475,79 +475,89 @@
|
|
local init_file = io.open(init_filename, "w")
|
|
if not init_file then error("cannot create file: \"" .. init_filename .. "\"") end
|
|
init_file:write([[
|
|
--- put user settings here
|
|
--- this module will be loaded after everything else when the application starts
|
|
--- it will be automatically reloaded when saved
|
|
+-- Default configuration shipped with the Lite XL package (VSCode-style dark
|
|
+-- theme). This file is written to USERDIR/init.lua on first run only; the
|
|
+-- system copy lives in /etc/skel/.config/lite-xl/init.lua.
|
|
+-- Lite XL default configuration (shipped via /etc/skel or the first-run
|
|
+-- template). This file is yours to edit; it is reloaded automatically on save.
|
|
+-- It gives the editor a VSCode-style dark look out of the box.
|
|
|
|
local core = require "core"
|
|
-local keymap = require "core.keymap"
|
|
+local common = require "core.common"
|
|
local config = require "core.config"
|
|
local style = require "core.style"
|
|
|
|
------------------------------- Themes ----------------------------------------
|
|
-
|
|
--- light theme:
|
|
--- core.reload_module("colors.summer")
|
|
-
|
|
---------------------------- Key bindings -------------------------------------
|
|
-
|
|
--- key binding:
|
|
--- keymap.add { ["ctrl+escape"] = "core:quit" }
|
|
-
|
|
--- pass 'true' for second parameter to overwrite an existing binding
|
|
--- keymap.add({ ["ctrl+pageup"] = "root:switch-to-previous-tab" }, true)
|
|
--- keymap.add({ ["ctrl+pagedown"] = "root:switch-to-next-tab" }, true)
|
|
-
|
|
-------------------------------- Fonts ----------------------------------------
|
|
-
|
|
--- customize fonts:
|
|
--- style.font = renderer.font.load(DATADIR .. "/fonts/FiraSans-Regular.ttf", 14 * SCALE)
|
|
--- style.code_font = renderer.font.load(DATADIR .. "/fonts/JetBrainsMono-Regular.ttf", 14 * SCALE)
|
|
---
|
|
--- DATADIR is the location of the installed Lite XL Lua code, default color
|
|
--- schemes and fonts.
|
|
--- USERDIR is the location of the Lite XL configuration directory.
|
|
---
|
|
--- font names used by lite:
|
|
--- style.font : user interface
|
|
--- style.big_font : big text in welcome screen
|
|
--- style.icon_font : icons
|
|
--- style.icon_big_font : toolbar icons
|
|
--- style.code_font : code
|
|
---
|
|
--- the function to load the font accept a 3rd optional argument like:
|
|
---
|
|
--- {antialiasing="grayscale", hinting="full", bold=true, italic=true, underline=true, smoothing=true, strikethrough=true}
|
|
---
|
|
--- possible values are:
|
|
--- antialiasing: grayscale, subpixel
|
|
--- hinting: none, slight, full
|
|
--- bold: true, false
|
|
--- italic: true, false
|
|
--- underline: true, false
|
|
--- smoothing: true, false
|
|
--- strikethrough: true, false
|
|
-
|
|
------------------------------- Plugins ----------------------------------------
|
|
-
|
|
--- disable plugin loading setting config entries:
|
|
-
|
|
--- disable plugin detectindent, otherwise it is enabled by default:
|
|
--- config.plugins.detectindent = false
|
|
-
|
|
----------------------------- Miscellaneous -------------------------------------
|
|
-
|
|
--- modify list of files to ignore when indexing the project:
|
|
--- config.ignore_files = {
|
|
--- -- folders
|
|
--- "^%.svn/", "^%.git/", "^%.hg/", "^CVS/", "^%.Trash/", "^%.Trash%-.*/",
|
|
--- "^node_modules/", "^%.cache/", "^__pycache__/",
|
|
--- -- files
|
|
--- "%.pyc$", "%.pyo$", "%.exe$", "%.dll$", "%.obj$", "%.o$",
|
|
--- "%.a$", "%.lib$", "%.so$", "%.dylib$", "%.ncb$", "%.sdf$",
|
|
--- "%.suo$", "%.pdb$", "%.idb$", "%.class$", "%.psd$", "%.db$",
|
|
--- "^desktop%.ini$", "^%.DS_Store$", "^%.directory$",
|
|
--- }
|
|
+------------------------------ Appearance -------------------------------------
|
|
+-- VSCode "Dark Modern" theme (shipped in /usr/share/lite-xl/colors).
|
|
+core.reload_module("colors.vscode_dark")
|
|
+
|
|
+-- Sharp text: grayscale antialiasing with light autohinting renders crisper
|
|
+-- than the defaults on high-DPI panels.
|
|
+local font_opts = { antialiasing = "grayscale", hinting = "slight", smoothing = true }
|
|
+
|
|
+-- Bump these for a bigger/smaller UI; ctrl+wheel also zooms live.
|
|
+local UI_FONT_SIZE = 15
|
|
+local CODE_FONT_SIZE = 16
|
|
+
|
|
+style.font = renderer.font.load(DATADIR .. "/fonts/FiraSans-Regular.ttf",
|
|
+ UI_FONT_SIZE * SCALE, font_opts)
|
|
+style.big_font = style.font:copy(46 * SCALE)
|
|
+style.code_font = renderer.font.load(
|
|
+ "/usr/share/fonts/truetype/jetbrains-mono/JetBrainsMono-Regular.ttf",
|
|
+ CODE_FONT_SIZE * SCALE, font_opts)
|
|
+
|
|
+------------------------------ Behavior ---------------------------------------
|
|
+
|
|
+config.line_height = 1.3 -- airy lines, like VSCode's default
|
|
+config.indent_size = 4
|
|
+config.plugins.lineguide = true -- indent guides, like VSCode
|
|
+
|
|
+------------------------------ Treeview sidebar -------------------------------
|
|
+-- Tighter rows and VSCode-style hover/selection highlight. Method overrides so
|
|
+-- the shared style.padding used by the editor margins is untouched.
|
|
+
|
|
+local TreeView = require "plugins.treeview"
|
|
+
|
|
+local tv_row_pad = common.round(3 * SCALE)
|
|
+function TreeView:get_item_height()
|
|
+ return style.font:get_height() + tv_row_pad
|
|
+end
|
|
+
|
|
+local tv_base_indent = common.round(8 * SCALE)
|
|
+local tv_level_indent = common.round(10 * SCALE)
|
|
+function TreeView:draw_item(item, active, hovered, x, y, w, h)
|
|
+ self:draw_item_background(item, active, hovered, x, y, w, h)
|
|
+ x = x + tv_base_indent + item.depth * tv_level_indent
|
|
+ x = x + self:draw_item_chevron(item, active, hovered, x, y, w, h)
|
|
+ self:draw_item_body(item, active, hovered, x, y, w, h)
|
|
+end
|
|
+
|
|
+function TreeView:get_item_text(item, active, hovered)
|
|
+ local color = (active or hovered)
|
|
+ and (style.treeview_text_active or style.accent)
|
|
+ or (style.treeview_text or style.text)
|
|
+ return item.name, style.font, color
|
|
+end
|
|
+
|
|
+function TreeView:draw_item_background(item, active, hovered, x, y, w, h)
|
|
+ if hovered then
|
|
+ local c = { table.unpack(style.treeview_hover_bg or style.line_highlight) }
|
|
+ c[4] = 160
|
|
+ renderer.draw_rect(x, y, w, h, c)
|
|
+ elseif active then
|
|
+ renderer.draw_rect(x, y, w, h, style.treeview_active_bg or style.line_highlight)
|
|
+ end
|
|
+end
|
|
+
|
|
+------------------------------ Status bar -------------------------------------
|
|
+-- Keep the status bar always visible: show it at startup and turn the
|
|
+-- status-bar:hide / status-bar:toggle commands into no-ops so it cannot
|
|
+-- be dismissed (from the command palette or by any plugin).
|
|
+
|
|
+core.status_view:show()
|
|
+local StatusView = require "core.statusview"
|
|
+function StatusView:toggle() self:show() end
|
|
+function StatusView:hide() self:show() end
|
|
|
|
]])
|
|
init_file:close()
|