diff --git a/lua/user/configs/lang/jupynium.lua b/lua/user/configs/lang/jupynium.lua new file mode 100644 index 000000000..5cdc76228 --- /dev/null +++ b/lua/user/configs/lang/jupynium.lua @@ -0,0 +1,105 @@ +return { + --- For Conda environment named "jupynium", + -- python_host = { "conda", "run", "--no-capture-output", "-n", "jupynium", "python" }, + python_host = vim.g.python3_host_prog, + + default_notebook_URL = "localhost:8888/nbclassic", + + -- Write jupyter command but without "notebook" + -- When you call :JupyniumStartAndAttachToServer and no notebook is open, + -- then Jupynium will open the server for you using this command. (only when notebook_URL is localhost) + jupyter_command = "jupyter", + --- For Conda, maybe use base environment + --- then you can `conda install -n base nb_conda_kernels` to switch environment in Jupyter Notebook + -- jupyter_command = { "conda", "run", "--no-capture-output", "-n", "base", "jupyter" }, + + -- Used when notebook is launched by using jupyter_command. + -- If nil or "", it will open at the git directory of the current buffer, + -- but still navigate to the directory of the current buffer. (e.g. localhost:8888/nbclassic/tree/path/to/buffer) + notebook_dir = nil, + + -- Used to remember the last session (password etc.). + -- e.g. '~/.mozilla/firefox/profiles.ini' + -- or '~/snap/firefox/common/.mozilla/firefox/profiles.ini' + firefox_profiles_ini_path = nil, + -- nil means the profile with Default=1 + -- or set to something like 'default-release' + firefox_profile_name = nil, + + -- Open the Jupynium server if it is not already running + -- which means that it will open the Selenium browser when you open this file. + -- Related command :JupyniumStartAndAttachToServer + auto_start_server = { + enable = false, + file_pattern = { "*.ju.*" }, + }, + + -- Attach current nvim to the Jupynium server + -- Without this step, you can't use :JupyniumStartSync + -- Related command :JupyniumAttachToServer + auto_attach_to_server = { + enable = true, + file_pattern = { "*.ju.*", "*.md" }, + }, + + -- Automatically open an Untitled.ipynb file on Notebook + -- when you open a .ju.py file on nvim. + -- Related command :JupyniumStartSync + auto_start_sync = { + enable = true, + file_pattern = { "*.ju.*", "*.md" }, + }, + + -- Automatically keep filename.ipynb copy of filename.ju.py + -- by downloading from the Jupyter Notebook server. + -- WARNING: this will overwrite the file without asking + -- Related command :JupyniumDownloadIpynb + auto_download_ipynb = false, + + -- Automatically close tab that is in sync when you close buffer in vim. + auto_close_tab = true, + + -- Always scroll to the current cell. + -- Related command :JupyniumScrollToCell + autoscroll = { + enable = true, + mode = "always", -- "always" or "invisible" + cell = { + top_margin_percent = 20, + }, + }, + + scroll = { + page = { step = 0.5 }, + cell = { + top_margin_percent = 20, + }, + }, + + -- Files to be detected as a jupynium file. + -- Add highlighting, keybindings, commands (e.g. :JupyniumStartAndAttachToServer) + -- Modify this if you already have lots of files in Jupytext format, for example. + jupynium_file_pattern = { "*.ju.*" }, + + use_default_keybindings = true, + textobjects = { + use_default_keybindings = true, + }, + + syntax_highlight = { + enable = true, + }, + + -- Dim all cells except the current one + -- Related command :JupyniumShortsightedToggle + shortsighted = false, + + -- Configure floating window options + -- Related command :JupyniumKernelHover + kernel_hover = { + floating_win_opts = { + max_width = 84, + border = "none", + }, + }, +} diff --git a/lua/user/plugins/lang.lua b/lua/user/plugins/lang.lua index 3bd41a18b..9b35a468f 100644 --- a/lua/user/plugins/lang.lua +++ b/lua/user/plugins/lang.lua @@ -14,5 +14,15 @@ lang["dhruvasagar/vim-table-mode"] = { lazy = true, ft = "markdown", } +lang["kiyoon/jupynium.nvim"] = { + lazy = true, + ft = "python", + build = function() + if not vim.fn.filereadable("/etc/NIXOS") then + return "pip install --user ." + end + end, + config = require("user.configs.lang.jupynium"), +} return lang