view src/luan_editor/editor.luan @ 92:aefa7f8bb407 default tip

better open files
author Franklin Schmidt <fschmidt@gmail.com>
date Wed, 09 Jul 2025 22:59:59 -0600
parents 7f5b3824f4d4
children
line wrap: on
line source

local Luan = require "luan:Luan.luan"
local error = Luan.error
local ipairs = Luan.ipairs or error()
local stringify = Luan.stringify or error()
local String = require "luan:String.luan"
local to_number = String.to_number or error()
local Io = require "luan:Io.luan"
local new_file = Io.schemes.file or error()
local Thread = require "luan:Thread.luan"
local sleep = Thread.sleep or error()
local Swing_runner = require "luan:swing/Swing_runner.luan"
local swing_run = Swing_runner.run or error()
local Launcher = require "luan:swing/Launcher.luan"
local Java = require "classpath:luan_editor/Java.luan"
local Logging = require "luan:logging/Logging.luan"
local logger = Logging.logger "editor/editor"


local function open_args(args)
	local files = {}
	for _, arg in ipairs(args) do
		files[#files+1] = new_file(arg)
	end
	swing_run( function()
		local Window = require "classpath:luan_editor/Window.luan"
		Window.open_files(files)
	end )
end

local function open(args)
	if #args == 0 then
		swing_run( function()
			local Window = require "classpath:luan_editor/Window.luan"
			Window.new_window()
		end )
	else
		open_args(args)
	end
end

local function reopen(args)
	if #args == 0 then
		swing_run( function()
			local Window = require "classpath:luan_editor/Window.luan"
			Window.to_front()
		end )
	else
		open_args(args)
	end
end

local port = Java.port
if port ~= nil then
	Launcher.port = to_number(port) or error("bad port: "..port)
end

local args = {nil}
for _, arg in ipairs(Luan.arg) do
	local file = new_file(arg)
	file = file.canonical().to_string()
	args[#args+1] = file
end

Launcher.launch(open,reopen,args)