Skip to content

Commit

Permalink
refactor: add Config and UserConfig types
Browse files Browse the repository at this point in the history
  • Loading branch information
kiyoon committed Jul 9, 2024
1 parent e7d75fb commit 1e57296
Show file tree
Hide file tree
Showing 2 changed files with 137 additions and 0 deletions.
1 change: 1 addition & 0 deletions lua/jupynium/init.lua
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@ function M.default_keybindings(augroup)
})
end

---@param opts Jupynium.UserConfig?
function M.setup(opts)
-- NOTE: This may be called twice if you lazy load the plugin
-- The first time will be with the default opts.
Expand Down
136 changes: 136 additions & 0 deletions lua/jupynium/options.lua
Original file line number Diff line number Diff line change
@@ -1,9 +1,145 @@
---@alias Jupynium.NotifyCode "download_ipynb" | "error_download_ipynb" | "attach_and_init" | "error_close_main_page" | "notebook_closed"

---@class (exact) Jupynium.Config.AutoStartServer
---@field enable boolean
---@field file_pattern string[]

---@class (exact) Jupynium.Config.AutoAttachToServer
---@field enable boolean
---@field file_pattern string[]

---@class (exact) Jupynium.Config.AutoStartSync
---@field enable boolean
---@field file_pattern string[]

---@class (exact) Jupynium.Config.Scroll.Cell
---@field top_margin_percent number

---@class (exact) Jupynium.Config.Autoscroll
---@field enable boolean
---@field mode string
---@field cell Jupynium.Config.Scroll.Cell

---@class (exact) Jupynium.Config.Scroll.Page
---@field step number

---@class (exact) Jupynium.Config.Scroll
---@field page Jupynium.Config.Scroll.Page
---@field cell Jupynium.Config.Scroll.Cell

---@class (exact) Jupynium.Config.Textobjects
---@field use_default_keybindings boolean

---@class (exact) Jupynium.Config.SyntaxHighlight
---@field enable boolean

---@class (exact) Jupynium.Config.KernelHover.FloatingWinOpts
---@field max_width number
---@field border string

---@class (exact) Jupynium.Config.KernelHover
---@field floating_win_opts Jupynium.Config.KernelHover.FloatingWinOpts

---@class (exact) Jupynium.Config.Notify
---@field ignore Jupynium.NotifyCode[]

---@class (exact) Jupynium.Config
---@field python_host string|string[]
---@field default_notebook_URL string
---@field jupyter_command string|string[]
---@field notebook_dir string?
---@field firefox_profiles_ini_path string?
---@field firefox_profile_name string?
---@field auto_start_server Jupynium.Config.AutoStartServer
---@field auto_attach_to_server Jupynium.Config.AutoAttachToServer
---@field auto_start_sync Jupynium.Config.AutoStartSync
---@field auto_download_ipynb boolean
---@field auto_close_tab boolean
---@field autoscroll Jupynium.Config.Autoscroll
---@field scroll Jupynium.Config.Scroll
---@field jupynium_file_pattern string[]
---@field use_default_keybindings boolean
---@field textobjects Jupynium.Config.Textobjects
---@field syntax_highlight Jupynium.Config.SyntaxHighlight
---@field shortsighted boolean
---@field kernel_hover Jupynium.Config.KernelHover
---@field notify Jupynium.Config.Notify

---@class Jupynium.UserConfig.AutoStartServer
---@field enable boolean?
---@field file_pattern string[]?

---@class Jupynium.UserConfig.AutoAttachToServer
---@field enable boolean?
---@field file_pattern string[]?

---@class Jupynium.UserConfig.AutoStartSync
---@field enable boolean?
---@field file_pattern string[]?

---@class Jupynium.UserConfig.Scroll.Cell
---@field top_margin_percent number?

---@class Jupynium.UserConfig.Autoscroll
---@field enable boolean?
---@field mode string?
---@field cell Jupynium.UserConfig.Scroll.Cell?

---@class Jupynium.UserConfig.Scroll.Page
---@field step number?

---@class Jupynium.UserConfig.Scroll
---@field page Jupynium.UserConfig.Scroll.Page?
---@field cell Jupynium.UserConfig.Scroll.Cell?

---@class Jupynium.UserConfig.Textobjects
---@field use_default_keybindings boolean?

---@class Jupynium.UserConfig.SyntaxHighlight
---@field enable boolean?

---@class Jupynium.UserConfig.KernelHover.FloatingWinOpts
---@field max_width number?
---@field border string?

---@class Jupynium.UserConfig.KernelHover
---@field floating_win_opts Jupynium.UserConfig.KernelHover.FloatingWinOpts

---@class Jupynium.UserConfig.Notify
---@field ignore Jupynium.NotifyCode[]?

---@class Jupynium.UserConfig
---@field python_host string|string[]|nil
---@field default_notebook_URL string?
---@field jupyter_command string|string[]|nil
---@field notebook_dir string?
---@field firefox_profiles_ini_path string?
---@field firefox_profile_name string?
---@field auto_start_server Jupynium.UserConfig.AutoStartServer?
---@field auto_attach_to_server Jupynium.UserConfig.AutoAttachToServer?
---@field auto_start_sync Jupynium.UserConfig.AutoStartSync?
---@field auto_download_ipynb boolean?
---@field auto_close_tab boolean?
---@field autoscroll Jupynium.UserConfig.Autoscroll?
---@field scroll Jupynium.UserConfig.Scroll?
---@field jupynium_file_pattern string[]?
---@field use_default_keybindings boolean?
---@field textobjects Jupynium.UserConfig.Textobjects?
---@field syntax_highlight Jupynium.UserConfig.SyntaxHighlight?
---@field shortsighted boolean?
---@field kernel_hover Jupynium.UserConfig.KernelHover?
---@field notify Jupynium.UserConfig.Notify?

local M = {}

---@type Jupynium.Config
M.opts = {}

---@type Jupynium.Config
M.default_opts = {
--- For Conda environment named "jupynium",
-- python_host = { "conda", "run", "--no-capture-output", "-n", "jupynium", "python" },
---@type string|string[]
python_host = vim.g.python3_host_prog or "python3",

default_notebook_URL = "localhost:8888/nbclassic",
Expand Down

0 comments on commit 1e57296

Please sign in to comment.