Skip to content

Commit 3038152

Browse files
committed
feat: 🏷️ Update types
1 parent 0f0c9d2 commit 3038152

File tree

2 files changed

+40
-29
lines changed

2 files changed

+40
-29
lines changed

lua/code_runner/options.lua

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,20 @@
11
---@type CodeRunnerOptions
2-
local options = {
2+
local default_options = {
33
mode = "term", -- default display mode
44
hot_reload = true, -- hot reload enabled/disabled
55
focus = false, -- Focus window/viewport on the buffer (only works term and tab display mode)
66
startinsert = false, -- startinsert (see ':h inserting-ex')
77
insert_prefix = "", -- this key is controlled by startinsert
8-
term = {
9-
position = "vert", -- Position to open the terminal, this option is ignored if mode ~= term
10-
size = 64, -- window size, this option is ignored if mode == tab
8+
term = { -- this configs are ignored if mode ~= "term"
9+
position = "vert", -- Position to open the terminal,
10+
size = 64, -- window size, if position 'bot'(bottom) 8 is a good default
1111
},
1212
float = {
1313
close_key = "<ESC>",
1414
border = "solid", -- Window border (see ':h nvim_open_win()' ; /border)
1515

16-
height = 0.8, -- number from `0 - 1` for measurements
17-
width = 0.8, -- number from `0 - 1` for measurements
16+
height = 0.8,
17+
width = 0.8,
1818
x = 0.5,
1919
y = 0.5,
2020

@@ -23,9 +23,9 @@ local options = {
2323

2424
blend = 0, -- Transparency (see ':h winblend')
2525
},
26-
better_term = { -- Toggle mode replacement
26+
better_term = { -- Toggle mode replacement
2727
clean = false, -- Clean terminal before launch
28-
number = 10, -- Use nil for dynamic number and set init
28+
number = 10, -- Use nil for dynamic number and set init
2929
init = nil,
3030
},
3131
filetype_path = "",
@@ -75,18 +75,18 @@ local function concat(v)
7575
end
7676

7777
-- set user config
78-
---@param user_options table
78+
---@param user_options CodeRunnerUserOptions
7979
M.set = function(user_options)
8080
if user_options.startinsert then
8181
user_options.insert_prefix = "startinsert"
8282
end
83-
options = vim.tbl_deep_extend("force", options, user_options)
84-
options.filetype = vim.tbl_map(concat, options.filetype)
85-
options.prefix = string.format("%s %d new", options.term.position, options.term.size)
83+
default_options = vim.tbl_deep_extend("force", default_options, user_options)
84+
default_options.filetype = vim.tbl_map(concat, default_options.filetype)
85+
default_options.prefix = string.format("%s %d new", default_options.term.position, default_options.term.size)
8686
end
8787

8888
M.get = function()
89-
return options
89+
return default_options
9090
end
9191

9292
return M

types/options.lua

Lines changed: 27 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -3,49 +3,60 @@
33
--- Don't edit or require this file
44
error("Requiring a meta file")
55

6-
-- Definition Options
6+
-- Code Runner Options (Library)
77
---@class CodeRunnerOptions
88
---@field mode CodeRunnerDisplayMode
99
---@field hot_reload boolean
1010
---@field focus boolean
1111
---@field startinsert boolean
1212
---@field filetype table
1313
---@field prefix string
14-
---@field term table
14+
---@field term CodeRunnerOptionsTermTable
1515
---@field float CodeRunnerOptionsFloatTable
1616

17-
-- TODO: WIP improve typing
17+
---@type CodeRunnerDisplayMode
18+
---@alias CodeRunnerDisplayMode
19+
---|'"term"'
20+
---|'"float"'
21+
---|'"tab"'
22+
---|'"better_term"'
23+
---|'"toggleterm"'
24+
25+
-- configuration for term display mode
26+
---@class CodeRunnerOptionsTermTable
27+
---@field position ("vert"|"bot")
28+
---@field size number
29+
1830
---@class CodeRunnerOptionsFloatTable
1931
---@field close_key string keymap to close (default: <ESC>)
20-
---@field height number
21-
---@field width number
32+
---@field height number number from `0 - 1` e.g 0.8 for measurements
33+
---@field width number number from `0 - 1` e.g 0.8 for measurements
2234
---@field x number
2335
---@field y number
2436
---@field border ("none"|"single"|"double"|"rounded"|"solid"|"shadow") | string[] string[]: length must be 8 e.g {"", "" ,"", "", "", "", "", ""}
2537
---@field blend number
2638
---@field border_hl string
2739
---@field float_hl string
2840

29-
---@type CodeRunnerDisplayMode
3041

31-
---@alias CodeRunnerDisplayMode
32-
---|'"term"'
33-
---|'"float"'
34-
---|'"tab"'
35-
---|'"better_term"'
36-
---|'"toggleterm"'
37-
38-
-- User Options
42+
-- User Options (Client)
3943
---@class CodeRunnerUserOptions : CodeRunnerOptions
4044
---@field mode? CodeRunnerDisplayMode
4145
---@field hot_reload? boolean enabled/disabled (only works with 'term' or term like display modes)
4246
---@field focus? boolean Focus on runner window/viewport (only works on 'term' and 'tab' display mode)
47+
---@field insert_prefix? string
4348
---@field startinsert? boolean startinsert (see ':h inserting-ex') if focus is false has no effect unless display mode is 'float'
44-
---@field filetype? table
49+
---@field filetype? table ft entries, is unknown run :=vim.bo.ft
4550
---@field prefix? string
46-
---@field term? table
51+
---@field term? CodeRunnerUserOptionsTermTable
4752
---@field float? CodeRunnerUserOptionsFloatTable
4853

54+
-- configuration for term display mode
55+
---@class CodeRunnerUserOptionsTermTable
56+
---@field position? ("vert"|"bot")
57+
---@field size? number
58+
59+
-- configuration for float display mode
4960
---@class CodeRunnerUserOptionsFloatTable
5061
---@field close_key? string keymap to close (default: <ESC>)
5162
---@field height? number

0 commit comments

Comments
 (0)