annotate src/luan_editor/editor.luan @ 57:f91c336cdde5

for windows
author Franklin Schmidt <fschmidt@gmail.com>
date Thu, 29 May 2025 22:29:34 -0600
parents 6059b4e22d47
children 824f6d74b1d4
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
37
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
1 local Luan = require "luan:Luan.luan"
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
2 local error = Luan.error
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
3 local ipairs = Luan.ipairs or error()
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
4 local String = require "luan:String.luan"
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
5 local contains = String.contains or error()
53
d5681da8ece8 add website
Franklin Schmidt <fschmidt@gmail.com>
parents: 37
diff changeset
6 local to_number = String.to_number or error()
37
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
7 local Io = require "luan:Io.luan"
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
8 local new_file = Io.schemes.file or error()
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
9 local Rpc = require "luan:Rpc.luan"
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
10 local Swing = require "luan:swing/Swing.luan"
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
11 local swing_run = Swing.run or error()
56
6059b4e22d47 almost fix to front
Franklin Schmidt <fschmidt@gmail.com>
parents: 53
diff changeset
12 local swing_run_later = Swing.run_later or error()
6059b4e22d47 almost fix to front
Franklin Schmidt <fschmidt@gmail.com>
parents: 53
diff changeset
13 local Window = require "classpath:luan_editor/Window.luan"
6059b4e22d47 almost fix to front
Franklin Schmidt <fschmidt@gmail.com>
parents: 53
diff changeset
14 local new_window = Window.new_window or error()
6059b4e22d47 almost fix to front
Franklin Schmidt <fschmidt@gmail.com>
parents: 53
diff changeset
15 local open_windows = Window.open_windows or error()
53
d5681da8ece8 add website
Franklin Schmidt <fschmidt@gmail.com>
parents: 37
diff changeset
16 local Java = require "classpath:luan_editor/Java.luan"
37
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
17 local Logging = require "luan:logging/Logging.luan"
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
18 local logger = Logging.logger "editor/editor"
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
19
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
20
53
d5681da8ece8 add website
Franklin Schmidt <fschmidt@gmail.com>
parents: 37
diff changeset
21 local port = Java.port
d5681da8ece8 add website
Franklin Schmidt <fschmidt@gmail.com>
parents: 37
diff changeset
22 if port == nil then
d5681da8ece8 add website
Franklin Schmidt <fschmidt@gmail.com>
parents: 37
diff changeset
23 port = 56587
d5681da8ece8 add website
Franklin Schmidt <fschmidt@gmail.com>
parents: 37
diff changeset
24 else
d5681da8ece8 add website
Franklin Schmidt <fschmidt@gmail.com>
parents: 37
diff changeset
25 port = to_number(port) or error("bad port: "..port)
d5681da8ece8 add website
Franklin Schmidt <fschmidt@gmail.com>
parents: 37
diff changeset
26 end
37
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
27
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
28 Rpc.cipher_suites = nil
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
29 local server_socket
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
30 try
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
31 server_socket = Rpc.new_server_socket(port)
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
32 catch e
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
33 --logger.info(e.get_message())
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
34 if not contains( e.get_message(), "java.net.BindException" ) then
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
35 e.throw()
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
36 end
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
37 local host = Rpc.remote("localhost",port)
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
38 local args = Luan.arg
56
6059b4e22d47 almost fix to front
Franklin Schmidt <fschmidt@gmail.com>
parents: 53
diff changeset
39 local file_paths = {}
37
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
40 for _, arg in ipairs(args) do
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
41 local file = new_file(arg)
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
42 file = file.canonical().to_string()
56
6059b4e22d47 almost fix to front
Franklin Schmidt <fschmidt@gmail.com>
parents: 53
diff changeset
43 file_paths[#file_paths+1] = file
37
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
44 end
56
6059b4e22d47 almost fix to front
Franklin Schmidt <fschmidt@gmail.com>
parents: 53
diff changeset
45 host.open_windows(file_paths)
37
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
46 host.close()
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
47 return
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
48 end
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
49
56
6059b4e22d47 almost fix to front
Franklin Schmidt <fschmidt@gmail.com>
parents: 53
diff changeset
50 Rpc.functions.open_windows = open_windows
37
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
51
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
52 swing_run(function()
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
53 local args = Luan.arg
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
54 if #args == 0 then
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
55 new_window()
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
56 else
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
57 for _, arg in ipairs(args) do
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
58 local file = new_file(arg)
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
59 new_window(file)
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
60 end
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
61 end
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
62 end)
b7ff52d45b9a copy from luan
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
63
56
6059b4e22d47 almost fix to front
Franklin Schmidt <fschmidt@gmail.com>
parents: 53
diff changeset
64 Rpc.serve_socket(server_socket,nil,function(socket,fns)
6059b4e22d47 almost fix to front
Franklin Schmidt <fschmidt@gmail.com>
parents: 53
diff changeset
65 swing_run_later(Rpc.new_server_fn(socket,fns))
6059b4e22d47 almost fix to front
Franklin Schmidt <fschmidt@gmail.com>
parents: 53
diff changeset
66 end)