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