Mercurial Hosting > luan
changeset 1915:15dda75a887f default tip
save config
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Thu, 17 Apr 2025 19:02:49 -0600 |
parents | d5776185f9d7 |
children | |
files | src/luan/modules/editor/window.luan src/luan/modules/swing/Swing.luan |
diffstat | 2 files changed, 36 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/src/luan/modules/editor/window.luan Thu Apr 17 18:36:27 2025 -0600 +++ b/src/luan/modules/editor/window.luan Thu Apr 17 19:02:49 2025 -0600 @@ -7,6 +7,7 @@ local sub_string = String.sub or error() local replace = String.replace or error() local starts_with = String.starts_with or error() +local Io = require "luan:Io.luan" local new_text_area = require("luan:swing/Text_area.luan").new or error() local new_frame = require("luan:swing/Frame.luan").new or error() local new_panel = require("luan:swing/Component.luan").new_panel or error() @@ -20,6 +21,7 @@ local new_label = require("luan:swing/Label.luan").new or error() local make_find_panel = require "luan:editor/find.luan" local add_menu_bar = require "luan:editor/menu.luan" +local Swing = require "luan:swing/Swing.luan" local Logging = require "luan:logging/Logging.luan" local logger = Logging.logger "editor/window" @@ -27,12 +29,31 @@ local n_windows = 0 local documents = {} -local config = { - size = { width=700, height=700 } - line_wrap = true - whitespace_visible = false - tab_size = 4 -} +local function bool(val,default) + if val ~= nil then + return val + else + return default + end +end + +local config_file = Io.uri("file:"..Swing.home_dir.."/.luan_editor") +local config = {} +if config_file.exists() then + try + config = Luan.parse(config_file.read_text()) + catch e + logger.error(e) + end +end +config.size = config.size or { width=700, height=700 } +config.line_wrap = bool( config.line_wrap, true ) +config.whitespace_visible = bool( config.whitespace_visible, false ) +config.tab_size = config.tab_size or 4 + +local function save_config() + config_file.write_text( stringify(config).."\n" ) +end local function new_window(file) local window = {} @@ -95,10 +116,12 @@ frame.add_resize_stopped_listener( 200, function() --logger.info(stringify(frame.size)) config.size = frame.size + save_config() end) frame.add_move_stopped_listener( 200, function() --logger.info(stringify(frame.location)) config.location = frame.location + save_config() end) local function set_title() local s = title @@ -202,14 +225,17 @@ function window.set_line_wrap(line_wrap) text_area.line_wrap = line_wrap config.line_wrap = line_wrap + save_config() end function window.set_whitespace_visible(whitespace_visible) text_area.whitespace_visible = whitespace_visible config.whitespace_visible = whitespace_visible + save_config() end function window.set_tab_size(tab_size) text_area.tab_size = tab_size config.tab_size = tab_size + save_config() end add_menu_bar(window) frame.pack()
--- a/src/luan/modules/swing/Swing.luan Thu Apr 17 18:36:27 2025 -0600 +++ b/src/luan/modules/swing/Swing.luan Thu Apr 17 19:02:49 2025 -0600 @@ -9,6 +9,8 @@ local UIManager = require "java:javax.swing.UIManager" local FlatLightLaf = require "java:com.formdev.flatlaf.FlatLightLaf" local SwingLuan = require "java:luan.modules.swing.SwingLuan" +local Logging = require "luan:logging/Logging.luan" +local logger = Logging.logger "swing/Swing" local Swing = {} @@ -42,4 +44,6 @@ desktop.browse( URI.new(url) ) end +Swing.home_dir = System.getProperty("user.home") + return Swing