Skip to content

Commit 737792d

Browse files
authored
refactor!: go from promises to co-routines (#30)
1 parent f16b08b commit 737792d

File tree

8 files changed

+76
-74
lines changed

8 files changed

+76
-74
lines changed

lua/java.lua

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,32 @@
1-
local deps = require('java.dependencies')
2-
local java_mason = require('java.mason')
3-
local java_dap = require('java.dap.api')
4-
local java_lspconfig = require('java.lspconfig')
1+
local deps = require('java.utils.dependencies')
2+
local mason = require('java.utils.mason')
3+
local lspconfig = require('java.utils.lspconfig')
4+
5+
local dap = require('java.dap.api')
56
local ts = require('java.treesitter')
67

78
local M = {}
89

910
function M.setup()
1011
deps.check()
11-
java_mason.install_dependencies()
12-
java_lspconfig.wrap_lspconfig_setup()
13-
java_lspconfig.register_class_file_decomplier()
14-
java_dap.setup_dap_on_lsp_attach()
12+
mason.install_dependencies()
13+
lspconfig.wrap_lspconfig_setup()
14+
lspconfig.register_class_file_decomplier()
15+
dap.setup_dap_on_lsp_attach()
1516
end
1617

1718
----------------------------------------------------------------------
1819
-- DAP APIs --
1920
----------------------------------------------------------------------
2021
M.dap = {}
21-
M.dap.config_dap = java_dap.config_dap
22+
M.dap.config_dap = dap.config_dap
2223

2324
----------------------------------------------------------------------
2425
-- Test APIs --
2526
----------------------------------------------------------------------
2627
M.test = {}
27-
M.test.run_current_test_class = java_dap.run_current_test_class
28-
M.test.debug_current_test_class = java_dap.debug_current_test_class
28+
M.test.run_current_test_class = dap.run_current_test_class
29+
M.test.debug_current_test_class = dap.debug_current_test_class
2930

3031
----------------------------------------------------------------------
3132
-- Manipulate --

lua/java/dap/api.lua

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
local JavaDap = require('java.dap')
22

33
local log = require('java.utils.log')
4-
local notify = require('java-core.utils.notify')
54
local get_error_handler = require('java.handlers.error')
6-
local jdtls = require('java.jdtls')
5+
local jdtls = require('java.utils.jdtls')
6+
local async = require('java-core.utils.async').sync
77

88
local M = {}
99

@@ -19,24 +19,36 @@ function M.setup_dap_on_lsp_attach()
1919
})
2020
end
2121

22-
---Runs the current test class
2322
function M.run_current_test_class()
24-
return JavaDap:new(jdtls()):execute_current_test_class({ noDebug = true })
23+
log.info('run current test class')
24+
25+
return async(function()
26+
return JavaDap:new(jdtls()):execute_current_test_class({ noDebug = true })
27+
end)
28+
.catch(get_error_handler('failed to run the current test class'))
29+
.run()
2530
end
2631

2732
function M.debug_current_test_class()
28-
return JavaDap:new(jdtls()):execute_current_test_class({})
33+
log.info('debug current test class')
34+
35+
return async(function()
36+
return JavaDap:new(jdtls()):execute_current_test_class({})
37+
end)
38+
.catch(get_error_handler('failed to debug the current test class'))
39+
.run()
2940
end
3041

31-
---Configures the dap
3242
function M.config_dap()
33-
return JavaDap:new(jdtls())
34-
:config_dap()
35-
:catch(get_error_handler('failed to configure dap'))
43+
log.info('configuring dap')
44+
45+
return async(function()
46+
JavaDap:new(jdtls()):config_dap()
47+
end)
48+
.catch(get_error_handler('dap configuration failed'))
49+
.run()
3650
end
3751

38-
---@private
39-
---@param ev any
4052
function M.on_jdtls_attach(ev)
4153
local client = vim.lsp.get_client_by_id(ev.data.client_id)
4254

lua/java/dap/init.lua

Lines changed: 14 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
local log = require('java.utils.log')
2-
local get_error_handler = require('java.handlers.error')
2+
local async = require('java-core.utils.async').sync
33

4-
local Promise = require('java-core.utils.promise')
54
local JavaCoreDap = require('java-core.dap')
65
local JavaCoreTestApi = require('java-core.api.test')
76

@@ -34,36 +33,27 @@ end
3433
---Run the current test class
3534
---@param config JavaCoreDapLauncherConfigOverridable
3635
function M:execute_current_test_class(config)
37-
log.info('running the current class')
36+
log.debug('running the current class')
3837

3938
local buffer = vim.api.nvim_get_current_buf()
4039

41-
return self.test_api
42-
:run_class_by_buffer(buffer, config)
43-
:catch(get_error_handler('failed to run current test class'))
40+
return self.test_api:run_class_by_buffer(buffer, config)
4441
end
4542

4643
function M:config_dap()
47-
return Promise.resolve()
48-
:thenCall(function()
49-
log.debug('set dap adapter callback function')
44+
log.debug('set dap adapter callback function')
5045

51-
-- setting java adapter
52-
require('dap').adapters.java = function(callback)
53-
self.dap
54-
:get_dap_adapter()
55-
:thenCall(callback)
56-
:catch(get_error_handler('failed to set DAP adapter'))
57-
end
46+
require('dap').adapters.java = function(callback)
47+
async(function()
48+
local adapter = self.dap:get_dap_adapter()
49+
callback(adapter --[[@as Adapter]])
50+
end).run()
51+
end
5852

59-
-- setting java config
60-
return self.dap:get_dap_config()
61-
end)
62-
:thenCall(function(dap_config)
63-
log.debug('set dap config: ', dap_config)
64-
require('dap').configurations.java = dap_config
65-
end)
66-
:catch(get_error_handler('failed to set DAP configuration'))
53+
local dap_config = self.dap:get_dap_config()
54+
55+
log.debug('set dap config: ', dap_config)
56+
require('dap').configurations.java = dap_config
6757
end
6858

6959
return M

lua/java/handlers/error.lua

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,8 @@ end
1212

1313
---Returns a error handler
1414
---@param msg string messages to show in the error
15-
---@param ...? any values for place holders in the message
1615
---@return fun(err: any) # function that log and notify the error
17-
local function get_error_handler(msg, ...)
18-
msg = string.format(msg, ...)
19-
16+
local function get_error_handler(msg)
2017
return function(err)
2118
local trace = debug.traceback()
2219

Lines changed: 26 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
1-
local log = require('java.utils.log')
21
local lspconfig = require('lspconfig')
3-
local server = require('java-core.ls.servers.jdtls')
4-
local jdtls = require('java.jdtls')
2+
3+
local log = require('java.utils.log')
4+
local jdtls = require('java.utils.jdtls')
55
local get_error_handler = require('java.handlers.error')
66

7+
local server = require('java-core.ls.servers.jdtls')
8+
local async = require('java-core.utils.async').sync
9+
710
local JavaCoreJdtlsClient = require('java-core.ls.clients.jdtls-client')
811

912
local M = {}
@@ -41,39 +44,38 @@ end
4144
---@field file string name of the file
4245
---@field id integer event id?
4346
---@field match string matched pattern in autocmd match
47+
4448
function M.register_class_file_decomplier()
4549
vim.api.nvim_create_autocmd('BufReadCmd', {
4650
pattern = 'jdt://*',
4751
---@param opts BufReadCmdCallbackArgs
4852
callback = function(opts)
49-
---@type boolean
5053
local done = false
51-
local client_obj = jdtls()
52-
local buffer = opts.buf
5354

54-
local function handle_file_content(text)
55-
local lines = vim.split(text, '\n')
56-
vim.api.nvim_buf_set_lines(buffer, 0, -1, true, lines)
55+
async(function()
56+
local client_obj = jdtls()
57+
local buffer = opts.buf
58+
59+
local text = JavaCoreJdtlsClient:new(client_obj)
60+
:java_decompile(opts.file)
5761

58-
vim.bo[buffer].swapfile = false
59-
vim.bo[buffer].filetype = 'java'
60-
vim.bo[buffer].modifiable = false
62+
local lines = vim.split(text, '\n')
63+
vim.api.nvim_buf_set_lines(buffer, 0, -1, true, lines)
6164

62-
if not vim.lsp.buf_is_attached(buffer, client_obj.client.id) then
63-
vim.lsp.buf_attach_client(buffer, client_obj.client.id)
64-
end
65+
vim.bo[buffer].swapfile = false
66+
vim.bo[buffer].filetype = 'java'
67+
vim.bo[buffer].modifiable = false
6568

66-
done = true
67-
end
69+
if not vim.lsp.buf_is_attached(buffer, client_obj.client.id) then
70+
vim.lsp.buf_attach_client(buffer, client_obj.client.id)
71+
end
6872

69-
JavaCoreJdtlsClient:new(client_obj)
70-
:java_decompile(opts.file)
71-
:thenCall(handle_file_content)
72-
:catch(
73-
get_error_handler('failed to decompile the class at %s', opts.file)
74-
)
73+
done = true
74+
end)
75+
.catch(get_error_handler('decompilation failed for ' .. opts.file))
76+
.run()
7577

76-
vim.wait(10000, function()
78+
vim.wait(3000, function()
7779
return done
7880
end)
7981
end,

0 commit comments

Comments
 (0)