irongit

A Neovim plugin enabling you to solve LeetCode problems.

65 lines1.4 KBLua
1---@diagnostic disable: invisible, duplicate-set-field
2
3local leetcode = require("leetcode")
4local config = require("leetcode.config")
5
6local is_standalone = true
7local prev_cwd = nil
8
9---@param on_vimenter boolean
10leetcode.start = function(on_vimenter)
11 local skip, standalone = leetcode.should_skip(on_vimenter)
12 if skip then
13 return false
14 end
15
16 config.setup()
17
18 leetcode.setup_cmds()
19
20 local theme = require("leetcode.theme")
21 theme.setup()
22
23 if not on_vimenter then
24 if not standalone then
25 prev_cwd = vim.fn.getcwd()
26 vim.cmd.tabe()
27 else
28 vim.cmd.enew()
29 end
30
31 is_standalone = standalone ---@diagnostic disable-line: cast-local-type
32 end
33
34 vim.api.nvim_set_current_dir(config.storage.home:absolute())
35
36 local Menu = require("leetcode-ui.renderer.menu")
37 Menu():mount()
38
39 local utils = require("leetcode.utils")
40 utils.exec_hooks("enter")
41
42 return true
43end
44
45leetcode.stop = vim.schedule_wrap(function()
46 if is_standalone then
47 return vim.cmd("qa!")
48 end
49
50 _Lc_state.menu:unmount()
51
52 vim.api.nvim_create_user_command("Leet", require("leetcode.command").start_with_cmd, {
53 bar = true,
54 bang = true,
55 desc = "Open leetcode.nvim",
56 })
57
58 local utils = require("leetcode.utils")
59 utils.exec_hooks("leave")
60
61 if prev_cwd then
62 vim.api.nvim_set_current_dir(prev_cwd)
63 prev_cwd = nil
64 end
65end)