mirror of
https://github.com/pojokcodeid/nvim-lazy.git
synced 2025-06-21 16:39:04 +02:00
Compare commits
No commits in common. "main" and "v2.5.56" have entirely different histories.
31 changed files with 676 additions and 1375 deletions
26
README.md
26
README.md
|
@ -67,14 +67,14 @@
|
|||
## Basic Requirement
|
||||
|
||||
2. Install Neovim 0.95+ https://github.com/neovim/neovim/releases/tag/stable
|
||||
1. C++ https://www.msys2.org/
|
||||
1. GIT https://git-scm.com/download/win
|
||||
1. NodeJs https://nodejs.org/en/
|
||||
1. Ripgrep https://github.com/BurntSushi/ripgrep
|
||||
1. Lazygit https://github.com/jesseduffield/lazygit
|
||||
1. Nerd Font https://www.nerdfonts.com/ or https://github.com/ryanoasis/nerd-fonts
|
||||
1. Windows Terminal (Windows) https://apps.microsoft.com/store/detail/windows-terminal/9N0DX20HK701?hl=en-id&gl=id
|
||||
1. Powershell (windows) https://apps.microsoft.com/store/detail/powershell/9MZ1SNWT0N5D?hl=en-id&gl=id
|
||||
3. C++ https://www.msys2.org/
|
||||
4. GIT https://git-scm.com/download/win
|
||||
5. NodeJs https://nodejs.org/en/
|
||||
6. Ripgrep https://github.com/BurntSushi/ripgrep
|
||||
7. Lazygit https://github.com/jesseduffield/lazygit
|
||||
8. Nerd Font https://www.nerdfonts.com/ or https://github.com/ryanoasis/nerd-fonts
|
||||
9. Windows Terminal (Windows) https://apps.microsoft.com/store/detail/windows-terminal/9N0DX20HK701?hl=en-id&gl=id
|
||||
10. Powershell (windows) https://apps.microsoft.com/store/detail/powershell/9MZ1SNWT0N5D?hl=en-id&gl=id
|
||||
|
||||
# Windows
|
||||
|
||||
|
@ -92,21 +92,15 @@ git clone https://github.com/pojokcodeid/neovim-starter.git ~/.config/nvim
|
|||
# Uninstall
|
||||
|
||||
```bash
|
||||
# Linux / MacOS (unix)
|
||||
# Linux / Macos (unix)
|
||||
rm -rf ~/.config/nvim
|
||||
rm -rf ~/.local/state/nvim
|
||||
rm -rf ~/.local/share/nvim
|
||||
|
||||
# Flatpak (linux)
|
||||
rm -rf ~/.var/app/io.neovim.nvim/config/nvim
|
||||
rm -rf ~/.var/app/io.neovim.nvim/data/nvim
|
||||
rm -rf ~/.var/app/io.neovim.nvim/.local/state/nvim
|
||||
|
||||
# Windows CMD
|
||||
rd -r ~\AppData\Local\nvim
|
||||
rd -r ~\AppData\Local\nvim-data
|
||||
|
||||
# Windows PowerShell
|
||||
# Window PowerShell
|
||||
rm -Force ~\AppData\Local\nvim
|
||||
rm -Force ~\AppData\Local\nvim-data
|
||||
```
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"Comment.nvim": { "branch": "master", "commit": "e30b7f2008e52442154b66f7c519bfd2f1e32acb" },
|
||||
"Eva-Theme.nvim": { "branch": "master", "commit": "9d743346eb0e7647d79468fff6f57352cd102655" },
|
||||
"FixCursorHold.nvim": { "branch": "master", "commit": "1900f89dc17c603eec29960f57c00bd9ae696495" },
|
||||
"LuaSnip": { "branch": "master", "commit": "458560534a73f7f8d7a11a146c801db00b081df0" },
|
||||
"LuaSnip": { "branch": "master", "commit": "5271933f7cea9f6b1c7de953379469010ed4553a" },
|
||||
"alpha-nvim": { "branch": "main", "commit": "a35468cd72645dbd52c0624ceead5f301c566dff" },
|
||||
"auto-bufferline.nvim": { "branch": "main", "commit": "f5835a4b62bfb6f6c829f8f050e5102ccf230b3e" },
|
||||
"auto-conform.nvim": { "branch": "main", "commit": "5f0897235e84bf2f8ff9d634e81678d5bfa63ab8" },
|
||||
|
@ -17,53 +17,51 @@
|
|||
"cmp-nvim-lua": { "branch": "main", "commit": "f12408bdb54c39c23e67cab726264c10db33ada8" },
|
||||
"cmp-path": { "branch": "main", "commit": "c6635aae33a50d6010bf1aa756ac2398a2d54c32" },
|
||||
"cmp_luasnip": { "branch": "master", "commit": "98d9cb5c2c38532bd9bdb481067b20fea8f32e90" },
|
||||
"code_runner.nvim": { "branch": "main", "commit": "65c8d11f507073b915f10faa88ea05bd4fbf69ce" },
|
||||
"code_runner.nvim": { "branch": "main", "commit": "386bcaa8aa7ae8703281afce4465ecfdb7c44e65" },
|
||||
"codeium.vim": { "branch": "main", "commit": "272c6e2755e8faa90e26bcdcd9fde6b9e61751ea" },
|
||||
"conform.nvim": { "branch": "master", "commit": "8132ec733eed3bf415b97b76797ca41b59f51d7d" },
|
||||
"conform.nvim": { "branch": "master", "commit": "0e93e0d12d2f7ebdea9e3e444dfaff0050cefbe6" },
|
||||
"dressing.nvim": { "branch": "master", "commit": "2d7c2db2507fa3c4956142ee607431ddb2828639" },
|
||||
"friendly-snippets": { "branch": "main", "commit": "572f5660cf05f8cd8834e096d7b4c921ba18e175" },
|
||||
"gitsigns.nvim": { "branch": "main", "commit": "1b0350ab707713b2bc6c236151f1a324175347b1" },
|
||||
"gitsigns.nvim": { "branch": "main", "commit": "d0f90ef51d4be86b824b012ec52ed715b5622e51" },
|
||||
"inc-rename.nvim": { "branch": "main", "commit": "a3e31af13844534c66041ce92f29af7745883875" },
|
||||
"indent-blankline.nvim": { "branch": "master", "commit": "005b56001b2cb30bfa61b7986bc50657816ba4ba" },
|
||||
"lazy.nvim": { "branch": "main", "commit": "6c3bda4aca61a13a9c63f1c1d1b16b9d3be90d7a" },
|
||||
"lualine.nvim": { "branch": "master", "commit": "a94fc68960665e54408fe37dcf573193c4ce82c9" },
|
||||
"mason-lspconfig.nvim": { "branch": "main", "commit": "f54e3c11fc9ebfcfc27e696182b0295b071d0811" },
|
||||
"mason-lspconfig.nvim": { "branch": "main", "commit": "bef29b653ba71d442816bf56286c2a686210be04" },
|
||||
"mason-nvim-dap.nvim": { "branch": "main", "commit": "4c2cdc69d69fe00c15ae8648f7e954d99e5de3ea" },
|
||||
"mason.nvim": { "branch": "main", "commit": "8024d64e1330b86044fed4c8494ef3dcd483a67c" },
|
||||
"menu": { "branch": "main", "commit": "7a0a4a2896b715c066cfbe320bdc048091874cc6" },
|
||||
"mini.indentscope": { "branch": "main", "commit": "5fdc3edf7bb1b6365980c2c47dac2f19ec93c97b" },
|
||||
"mini.indentscope": { "branch": "main", "commit": "8af2569a7d7fd37300dfa760e44e71efbbf322fd" },
|
||||
"minty": { "branch": "main", "commit": "aafc9e8e0afe6bf57580858a2849578d8d8db9e0" },
|
||||
"neotest": { "branch": "master", "commit": "ef492755730e59e1d8122c461abbd086bee4c76b" },
|
||||
"neotest-golang": { "branch": "main", "commit": "0a0acff3cf9a0bf140c84ea9e66d818df7c2608f" },
|
||||
"neotest-jest": { "branch": "main", "commit": "dd82016c01704d9bbd5188749fe0586b3b620693" },
|
||||
"neotest-golang": { "branch": "main", "commit": "c452301848418baf244e2da34491157bca7614c1" },
|
||||
"neotest-plenary": { "branch": "master", "commit": "3523adcf9ffaad1911960c5813b0136c1b63a2ec" },
|
||||
"neotest-vim-test": { "branch": "master", "commit": "75c4228882ae4883b11bfce9b8383e637eb44192" },
|
||||
"noice.nvim": { "branch": "main", "commit": "0427460c2d7f673ad60eb02b35f5e9926cf67c59" },
|
||||
"nui.nvim": { "branch": "main", "commit": "de740991c12411b663994b2860f1a4fd0937c130" },
|
||||
"nvim-autopairs": { "branch": "master", "commit": "2647cce4cb64fb35c212146663384e05ae126bdf" },
|
||||
"nui.nvim": { "branch": "main", "commit": "7cd18e73cfbd70e1546931b7268b3eebaeff9391" },
|
||||
"nvim-autopairs": { "branch": "master", "commit": "4d74e75913832866aa7de35e4202463ddf6efd1b" },
|
||||
"nvim-cmp": { "branch": "main", "commit": "b5311ab3ed9c846b585c0c15b7559be131ec4be9" },
|
||||
"nvim-colorizer.lua": { "branch": "master", "commit": "517df88cf2afb36652830df2c655df2da416a0ae" },
|
||||
"nvim-dap": { "branch": "master", "commit": "2edd6375692d9ac1053d50acfe415c1eb2ba92d0" },
|
||||
"nvim-dap": { "branch": "master", "commit": "ea82027c3447dc1a022be9a9884de276c05cd33a" },
|
||||
"nvim-dap-go": { "branch": "main", "commit": "8763ced35b19c8dc526e04a70ab07c34e11ad064" },
|
||||
"nvim-dap-ui": { "branch": "master", "commit": "73a26abf4941aa27da59820fd6b028ebcdbcf932" },
|
||||
"nvim-dap-virtual-text": { "branch": "master", "commit": "fbdb48c2ed45f4a8293d0d483f7730d24467ccb6" },
|
||||
"nvim-dap-vscode-js": { "branch": "main", "commit": "03bd29672d7fab5e515fc8469b7d07cc5994bbf6" },
|
||||
"nvim-lint": { "branch": "master", "commit": "2b0039b8be9583704591a13129c600891ac2c596" },
|
||||
"nvim-lspconfig": { "branch": "master", "commit": "69a1624aff5dc30dddd0c59d99a947b63c80bf2a" },
|
||||
"nvim-lint": { "branch": "master", "commit": "cc26ae6a620298bb3f33b0e0681f99a10ae57781" },
|
||||
"nvim-lspconfig": { "branch": "master", "commit": "a182334ba933e58240c2c45e6ae2d9c7ae313e00" },
|
||||
"nvim-material-icon": { "branch": "main", "commit": "38fc13fe4811c4bf62533180ff5e7bbd237c5ef5" },
|
||||
"nvim-navic": { "branch": "master", "commit": "f887d794a0f4594882814d7780980a949200a238" },
|
||||
"nvim-nio": { "branch": "master", "commit": "21f5324bfac14e22ba26553caf69ec76ae8a7662" },
|
||||
"nvim-notify": { "branch": "master", "commit": "b5825cf9ee881dd8e43309c93374ed5b87b7a896" },
|
||||
"nvim-scrollview": { "branch": "main", "commit": "095181bc2adb64af670dae73208871a731f0bb86" },
|
||||
"nvim-tree.lua": { "branch": "master", "commit": "b0b49552c9462900a882fe772993b01d780445fe" },
|
||||
"nvim-scrollview": { "branch": "main", "commit": "23db9bbd210fed942085070071fdac921837a55f" },
|
||||
"nvim-tree.lua": { "branch": "master", "commit": "1c733e8c1957dc67f47580fe9c458a13b5612d5b" },
|
||||
"nvim-treesitter": { "branch": "master", "commit": "42fc28ba918343ebfd5565147a42a26580579482" },
|
||||
"nvim-ts-autotag": { "branch": "main", "commit": "a1d526af391f6aebb25a8795cbc05351ed3620b5" },
|
||||
"nvim-ts-context-commentstring": { "branch": "main", "commit": "1b212c2eee76d787bbea6aa5e92a2b534e7b4f8f" },
|
||||
"nvim-web-devicons": { "branch": "master", "commit": "19d6211c78169e78bab372b585b6fb17ad974e82" },
|
||||
"nvim-web-devicons": { "branch": "master", "commit": "1fb58cca9aebbc4fd32b086cb413548ce132c127" },
|
||||
"plenary.nvim": { "branch": "master", "commit": "857c5ac632080dba10aae49dba902ce3abf91b35" },
|
||||
"rainbow-delimiters.nvim": { "branch": "master", "commit": "55ad4fb76ab68460f700599b7449385f0c4e858e" },
|
||||
"showkeys": { "branch": "main", "commit": "cb0a50296f11f1e585acffba8c253b9e8afc1f84" },
|
||||
"smart-splits.nvim": { "branch": "master", "commit": "0098e376638602bc6aaf779bb8531b840a3fe26e" },
|
||||
"telescope-diff.nvim": { "branch": "master", "commit": "c797b722516e871b51def7e69266f0cc9875bacf" },
|
||||
"refactoring.nvim": { "branch": "master", "commit": "9cd0186ffe76fe6abc64c0aafb775c8f776ab5ee" },
|
||||
"smart-splits.nvim": { "branch": "master", "commit": "9af865e451e55a9835fae6862dd7c55396870ecb" },
|
||||
"telescope-treesitter-info.nvim": { "branch": "master", "commit": "4bed952c3c33015c4402007f179b478843d5aa3b" },
|
||||
"telescope.nvim": { "branch": "master", "commit": "b4da76be54691e854d3e0e02c36b0245f945c2c7" },
|
||||
"tiny-devicons-auto-colors.nvim": { "branch": "main", "commit": "51f548421f8a74680eff27d283c9d5ea6e8d0074" },
|
||||
|
@ -71,8 +69,8 @@
|
|||
"vim-illuminate": { "branch": "master", "commit": "0d1e93684da00ab7c057410fecfc24f434698898" },
|
||||
"vim-visual-multi": { "branch": "master", "commit": "a6975e7c1ee157615bbc80fc25e4392f71c344d4" },
|
||||
"virt-column.nvim": { "branch": "master", "commit": "b87e3e0864211a32724a2ebf3be37e24e9e2fa99" },
|
||||
"volt": { "branch": "main", "commit": "7b8c5e790120d9f08c8487dcb80692db6d2087a1" },
|
||||
"vscode-js-debug": { "branch": "main", "commit": "a3279c2abc1162069b0f5c014542b8b849cefa70" },
|
||||
"volt": { "branch": "main", "commit": "c45d5f48da8e802e608b5c6da471ca4d84276dfb" },
|
||||
"which-key.nvim": { "branch": "main", "commit": "370ec46f710e058c9c1646273e6b225acf47cbed" },
|
||||
"yanky.nvim": { "branch": "main", "commit": "04775cc6e10ef038c397c407bc17f00a2f52b378" }
|
||||
"yanky.nvim": { "branch": "main", "commit": "04775cc6e10ef038c397c407bc17f00a2f52b378" },
|
||||
"zen-mode.nvim": { "branch": "main", "commit": "863f150ca321b3dd8aa1a2b69b5f411a220e144f" }
|
||||
}
|
||||
|
|
|
@ -8,7 +8,7 @@ return {
|
|||
lazy = true,
|
||||
cmd = {
|
||||
"TSInstall",
|
||||
-- "TSInstallInfo",
|
||||
"TSInstallInfo",
|
||||
"TSInstallSync",
|
||||
"TSUpdate",
|
||||
"TSUpdateSync",
|
||||
|
@ -42,9 +42,6 @@ return {
|
|||
end, opts.ensure_installed)
|
||||
end
|
||||
require("nvim-treesitter.configs").setup(opts)
|
||||
vim.api.nvim_create_user_command("TSInstallInfo", function()
|
||||
vim.cmd("Telescope treesitter_info")
|
||||
end, {})
|
||||
end,
|
||||
},
|
||||
}
|
||||
|
|
|
@ -2,8 +2,6 @@ return {
|
|||
{
|
||||
"L3MON4D3/LuaSnip",
|
||||
event = "InsertEnter",
|
||||
version = "v2.*",
|
||||
build = "make install_jsregexp",
|
||||
opts = {
|
||||
history = true,
|
||||
delete_check_events = "TextChanged",
|
||||
|
|
|
@ -12,27 +12,15 @@ local rfile = {
|
|||
cpp = "cd $dir && g++ $fileName -o $fileNameWithoutExt && $dir/$fileNameWithoutExt",
|
||||
scss = "sass $dir/$fileName $dir/$fileNameWithoutExt.css",
|
||||
javascript = 'node "$dir/$fileName"',
|
||||
-- go = "go run .",
|
||||
go = "go run $fileName",
|
||||
go = "go run .",
|
||||
}
|
||||
|
||||
local runProject = {}
|
||||
local cwd = vim.fn.getcwd()
|
||||
local go_mod_path = cwd .. "/go.mod"
|
||||
if vim.fn.filereadable(go_mod_path) ~= 0 then
|
||||
runProject[cwd] = {
|
||||
name = "Go Project (cwd)",
|
||||
command = "go run .",
|
||||
}
|
||||
end
|
||||
|
||||
return {
|
||||
"CRAG666/code_runner.nvim",
|
||||
lazy = true,
|
||||
cmd = { "RunCode", "RunFile", "RunProject", "RunClose" },
|
||||
opts = {
|
||||
filetype = rfile,
|
||||
project = runProject,
|
||||
mode = "float",
|
||||
focus = true,
|
||||
startinsert = true,
|
||||
|
|
34
lua/pcode/plugins/dressing.lua
Normal file
34
lua/pcode/plugins/dressing.lua
Normal file
|
@ -0,0 +1,34 @@
|
|||
return {
|
||||
"stevearc/dressing.nvim",
|
||||
lazy = true,
|
||||
init = function()
|
||||
---@diagnostic disable-next-line: duplicate-set-field
|
||||
vim.ui.select = function(...)
|
||||
require("lazy").load({ plugins = { "dressing.nvim" } })
|
||||
return vim.ui.select(...)
|
||||
end
|
||||
---@diagnostic disable-next-line: duplicate-set-field
|
||||
vim.ui.input = function(...)
|
||||
require("lazy").load({ plugins = { "dressing.nvim" } })
|
||||
return vim.ui.input(...)
|
||||
end
|
||||
end,
|
||||
opts = {
|
||||
input = {
|
||||
title_pos = "center",
|
||||
relative = "editor",
|
||||
default_prompt = "➤ ",
|
||||
win_options = { winhighlight = "Normal:Normal,NormalNC:Normal" },
|
||||
prefer_width = 30,
|
||||
max_width = { 140, 0.9 },
|
||||
min_width = { 50, 0.2 },
|
||||
},
|
||||
select = {
|
||||
backend = { "telescope", "builtin" },
|
||||
builtin = { win_options = { winhighlight = "Normal:Normal,NormalNC:Normal" } },
|
||||
},
|
||||
},
|
||||
config = function(_, opts)
|
||||
require("dressing").setup(opts)
|
||||
end,
|
||||
}
|
|
@ -1,35 +0,0 @@
|
|||
return {
|
||||
"pojokcodeid/dressing.nvim",
|
||||
lazy = true,
|
||||
init = function()
|
||||
---@diagnostic disable-next-line: duplicate-set-field
|
||||
vim.ui.select = function(...)
|
||||
require("lazy").load({ plugins = { "dressing.nvim" } })
|
||||
return vim.ui.select(...)
|
||||
end
|
||||
---@diagnostic disable-next-line: duplicate-set-field
|
||||
-- vim.ui.input = function(...)
|
||||
-- require("lazy").load({ plugins = { "dressing.nvim" } })
|
||||
-- return vim.ui.input(...)
|
||||
-- end
|
||||
end,
|
||||
opts = {
|
||||
input = {
|
||||
enabled = false,
|
||||
title_pos = "center",
|
||||
relative = "editor",
|
||||
default_prompt = "➤ ",
|
||||
win_options = { winhighlight = "Normal:Normal,NormalNC:Normal" },
|
||||
prefer_width = 30,
|
||||
max_width = { 140, 0.9 },
|
||||
min_width = { 50, 0.2 },
|
||||
},
|
||||
select = {
|
||||
backend = { "telescope", "builtin" },
|
||||
builtin = { win_options = { winhighlight = "Normal:Normal,NormalNC:Normal" } },
|
||||
},
|
||||
},
|
||||
config = function(_, opts)
|
||||
require("dressing").setup(opts)
|
||||
end,
|
||||
}
|
|
@ -1,14 +0,0 @@
|
|||
return {
|
||||
"j-hui/fidget.nvim",
|
||||
lazy = true,
|
||||
tag = "legacy",
|
||||
event = "BufRead",
|
||||
config = function()
|
||||
require("fidget").setup({
|
||||
window = {
|
||||
blend = 0,
|
||||
relative = "editor",
|
||||
},
|
||||
})
|
||||
end,
|
||||
}
|
|
@ -23,9 +23,6 @@ return {
|
|||
"toggleterm",
|
||||
"Trouble",
|
||||
"trouble",
|
||||
"term",
|
||||
"terminal",
|
||||
"zsh",
|
||||
},
|
||||
callback = function()
|
||||
vim.b.miniindentscope_disable = true
|
||||
|
|
|
@ -1,13 +1,12 @@
|
|||
return {
|
||||
{
|
||||
"nvzone/menu",
|
||||
"nvchad/menu",
|
||||
lazy = true,
|
||||
event = { "VeryLazy" },
|
||||
dependencies = {
|
||||
{ "nvzone/volt", lazy = true },
|
||||
{ "nvzone/showkeys", cmd = "ShowkeysToggle", lazy = true },
|
||||
{ "nvchad/volt", lazy = true },
|
||||
{
|
||||
"nvzone/minty",
|
||||
"nvchad/minty",
|
||||
cmd = { "Shades", "Huefy" },
|
||||
lazy = true,
|
||||
},
|
||||
|
@ -23,12 +22,10 @@ return {
|
|||
end, {})
|
||||
|
||||
-- mouse users + nvimtree users!
|
||||
vim.keymap.set({ "n", "v" }, "<RightMouse>", function()
|
||||
require("menu.utils").delete_old_menus()
|
||||
vim.keymap.set("n", "<RightMouse>", function()
|
||||
vim.cmd.exec('"normal! \\<RightMouse>"')
|
||||
|
||||
local buf = vim.api.nvim_win_get_buf(vim.fn.getmousepos().winid)
|
||||
local options = vim.bo[buf].ft == "NvimTree" and "nvimtree" or "default"
|
||||
local options = vim.bo.ft == "NvimTree" and "nvimtree" or "default"
|
||||
require("menu").open(options, opts)
|
||||
end, {})
|
||||
end,
|
||||
|
|
|
@ -1,26 +0,0 @@
|
|||
return {
|
||||
"nvim-telescope/telescope.nvim",
|
||||
dependencies = {
|
||||
"nvim-lua/plenary.nvim",
|
||||
"jemag/telescope-diff.nvim",
|
||||
},
|
||||
config = function()
|
||||
require("telescope").load_extension("diff")
|
||||
end,
|
||||
keys = {
|
||||
{
|
||||
"<leader>sd",
|
||||
function()
|
||||
require("telescope").extensions.diff.diff_files({ hidden = true })
|
||||
end,
|
||||
desc = "Diff 2 Files",
|
||||
},
|
||||
{
|
||||
"<leader>sD",
|
||||
function()
|
||||
require("telescope").extensions.diff.diff_current({ hidden = true })
|
||||
end,
|
||||
desc = "Diff Current File",
|
||||
},
|
||||
},
|
||||
}
|
|
@ -1,22 +0,0 @@
|
|||
return {
|
||||
"rachartier/tiny-inline-diagnostic.nvim",
|
||||
event = "VeryLazy", -- Or `LspAttach`
|
||||
priority = 1000, -- needs to be loaded in first
|
||||
config = function()
|
||||
require("tiny-inline-diagnostic").setup({
|
||||
preset = "powerline",
|
||||
-- signs = {
|
||||
-- left = "",
|
||||
-- right = "",
|
||||
-- diag = "●",
|
||||
-- arrow = " ",
|
||||
-- up_arrow = " ",
|
||||
-- vertical = " │",
|
||||
-- vertical_end = " └",
|
||||
-- },
|
||||
blend = {
|
||||
factor = 0.22,
|
||||
},
|
||||
})
|
||||
end,
|
||||
}
|
|
@ -21,8 +21,6 @@ return {
|
|||
"WinBar",
|
||||
"WinBarNC",
|
||||
"NotifyBackground",
|
||||
"TabLine",
|
||||
"TabLineFill",
|
||||
},
|
||||
exclude_groups = {
|
||||
-- disable active selection backgroun
|
||||
|
@ -55,10 +53,6 @@ return {
|
|||
-- create auto command to set transparent
|
||||
vim.cmd("TransparentDisable")
|
||||
vim.cmd("TransparentEnable")
|
||||
vim.api.nvim_set_hl(0, "MasonHeader", { bold = true, bg = "NONE", fg = "#838FA7" })
|
||||
vim.api.nvim_set_hl(0, "MasonMutedBlock", { bg = "NONE", fg = "#838FA7" })
|
||||
vim.api.nvim_set_hl(0, "MasonHighlightBlockBold", { bold = true, bg = "NONE", fg = "#ABB2BF" })
|
||||
vim.api.nvim_set_hl(0, "LazyH1", { bold = true, bg = "NONE", fg = "#ABB2BF" })
|
||||
end,
|
||||
},
|
||||
{
|
||||
|
|
|
@ -11,46 +11,6 @@ return {
|
|||
opts = function(_, opts)
|
||||
opts.ensure_installed = opts.ensure_installed or {}
|
||||
vim.list_extend(opts.ensure_installed, { "gopls" })
|
||||
vim.api.nvim_create_user_command("GoRun", function()
|
||||
local filename = vim.fn.expand("%:p") -- path lengkap file aktif
|
||||
if not filename:match("%.go$") then
|
||||
vim.notify("current file is not a go file.", vim.log.levels.WARN, { title = "GoRun" })
|
||||
return
|
||||
end
|
||||
|
||||
local Terminal = require("toggleterm.terminal").Terminal
|
||||
local go_runner = Terminal:new({
|
||||
cmd = "go run " .. filename,
|
||||
direction = "float",
|
||||
close_on_exit = false,
|
||||
hidden = true,
|
||||
})
|
||||
|
||||
go_runner:toggle()
|
||||
end, {})
|
||||
vim.api.nvim_create_user_command("GoBuild", function()
|
||||
local cwd = vim.fn.getcwd()
|
||||
local go_mod_path = cwd .. "/go.mod"
|
||||
if vim.fn.filereadable(go_mod_path) == 0 then
|
||||
vim.notify("current project is not a go project.", vim.log.levels.WARN, { title = "GoBuild" })
|
||||
return
|
||||
end
|
||||
|
||||
local Terminal = require("toggleterm.terminal").Terminal
|
||||
-- create file exe jika os adalah windows
|
||||
local filename = "output"
|
||||
if vim.fn.has("win32") == 1 then
|
||||
filename = "output.exe"
|
||||
end
|
||||
local go_runner = Terminal:new({
|
||||
cmd = "go build -o " .. filename .. " && ./" .. filename,
|
||||
direction = "float",
|
||||
close_on_exit = false,
|
||||
hidden = true,
|
||||
})
|
||||
|
||||
go_runner:toggle()
|
||||
end, {})
|
||||
end,
|
||||
},
|
||||
{
|
||||
|
|
|
@ -4,7 +4,10 @@ local M = {
|
|||
"nvim-treesitter/nvim-treesitter",
|
||||
opts = function(_, opts)
|
||||
opts.ensure_installed = opts.ensure_installed or {}
|
||||
vim.list_extend(opts.ensure_installed, { "html", "javascript", "typescript", "tsx", "css", "json", "jsonc" })
|
||||
vim.list_extend(
|
||||
opts.ensure_installed,
|
||||
{ "html", "javascript", "typescript", "tsx", "css", "json", "jsonc" }
|
||||
)
|
||||
end,
|
||||
},
|
||||
{
|
||||
|
@ -60,7 +63,8 @@ local M = {
|
|||
virtual_text = {
|
||||
format = function(diagnostic)
|
||||
-- Replace newline and tab characters with space for more compact diagnostics
|
||||
local message = diagnostic.message:gsub("\n", " "):gsub("\t", " "):gsub("%s+", " "):gsub("^%s+", "")
|
||||
local message =
|
||||
diagnostic.message:gsub("\n", " "):gsub("\t", " "):gsub("%s+", " "):gsub("^%s+", "")
|
||||
return message
|
||||
end,
|
||||
},
|
||||
|
@ -94,7 +98,6 @@ local M = {
|
|||
end
|
||||
|
||||
require("neotest").setup(opts)
|
||||
require("pcode.user.npmrun").setup("npm run dev")
|
||||
end,
|
||||
-- stylua: ignore
|
||||
keys = {
|
||||
|
|
|
@ -6,24 +6,9 @@ return {
|
|||
},
|
||||
opts = function(_, opts)
|
||||
local icons = require("pcode.user.icons")
|
||||
opts.auto_reload_on_write = false
|
||||
opts.disable_netrw = false
|
||||
opts.hijack_cursor = false
|
||||
opts.hijack_netrw = true
|
||||
opts.hijack_unnamed_buffer_when_opening = false
|
||||
opts.disable_netrw = true
|
||||
opts.hijack_cursor = true
|
||||
opts.sync_root_with_cwd = true
|
||||
opts.sort = {
|
||||
sorter = "name",
|
||||
folders_first = true,
|
||||
files_first = false,
|
||||
}
|
||||
opts.root_dirs = {}
|
||||
opts.prefer_startup_root = false
|
||||
opts.sync_root_with_cwd = true
|
||||
opts.reload_on_bufenter = false
|
||||
opts.respect_buf_cwd = false
|
||||
opts.on_attach = "default"
|
||||
opts.select_prompts = false
|
||||
opts.update_focused_file = {
|
||||
enable = true,
|
||||
update_root = false,
|
||||
|
@ -127,44 +112,6 @@ return {
|
|||
return opts
|
||||
end,
|
||||
config = function(_, opts)
|
||||
if pcode.nvimtree_float then
|
||||
-- set nvimtree float view (default left side)
|
||||
opts.view = {
|
||||
adaptive_size = false,
|
||||
centralize_selection = true,
|
||||
side = "left",
|
||||
preserve_window_proportions = false,
|
||||
number = false,
|
||||
relativenumber = false,
|
||||
signcolumn = "yes",
|
||||
float = {
|
||||
enable = true,
|
||||
open_win_config = function()
|
||||
local screen_w = vim.opt.columns:get()
|
||||
---@diagnostic disable-next-line: undefined-field
|
||||
local screen_h = vim.opt.lines:get() - vim.opt.cmdheight:get()
|
||||
local window_w = screen_w * 0.5
|
||||
local window_h = screen_h * 0.9
|
||||
local window_w_int = math.floor(window_w)
|
||||
local window_h_int = math.floor(window_h)
|
||||
local center_x = (screen_w - window_w) / 2
|
||||
---@diagnostic disable-next-line: undefined-field
|
||||
local center_y = ((vim.opt.lines:get() - window_h) / 2) - vim.opt.cmdheight:get()
|
||||
return {
|
||||
border = "rounded",
|
||||
relative = "editor",
|
||||
row = center_y,
|
||||
col = center_x,
|
||||
width = window_w_int,
|
||||
height = window_h_int,
|
||||
}
|
||||
end,
|
||||
},
|
||||
width = function()
|
||||
return math.floor(vim.opt.columns:get() * 0.5)
|
||||
end,
|
||||
}
|
||||
end
|
||||
require("nvim-tree").setup(opts)
|
||||
local api = require("nvim-tree.api")
|
||||
api.events.subscribe(api.events.Event.FileCreated, function(file)
|
||||
|
|
|
@ -49,7 +49,6 @@ return {
|
|||
Normal = { fg = colors.text, bg = transparent and colors.none or colors.base },
|
||||
NormalNC = { fg = colors.text, bg = transparent and colors.none or colors.base },
|
||||
StatusLine = { fg = colors.text, bg = colors.none },
|
||||
MasonBackdrop = { link = "NormalFloat" },
|
||||
}
|
||||
end,
|
||||
highlight_overrides = {
|
||||
|
|
|
@ -50,7 +50,6 @@ return {
|
|||
LspReferenceWrite = { bg = "#3b4261" },
|
||||
WinBar = { bg = colors.bg },
|
||||
WinBarNC = { fg = colors.fg, bg = colors.bg },
|
||||
MasonBackdrop = { link = "NormalFloat" },
|
||||
},
|
||||
transparent_bg = false,
|
||||
}
|
||||
|
|
|
@ -23,7 +23,6 @@ return {
|
|||
hi(0, "NormalFloat", { bg = color.background })
|
||||
hi(0, "TabLine", { bg = color.background })
|
||||
hi(0, "NormalNC", { bg = color.background })
|
||||
hi(0, "MasonBackdrop", { link = "NormalFloat" })
|
||||
hi(0, "@tag.delimiter.javascript", { fg = color.punctuation })
|
||||
hi(0, "@tag.delimiter.tsx", { fg = color.punctuation })
|
||||
-- git
|
||||
|
|
|
@ -53,7 +53,6 @@ return {
|
|||
specs = {},
|
||||
groups = {
|
||||
all = {
|
||||
MasonBackdrop = { link = "NormalFloat" },
|
||||
illuminatedWord = { bg = "#3b4261" },
|
||||
illuminatedCurWord = { bg = "#3b4261" },
|
||||
IlluminatedWordText = { bg = "#3b4261" },
|
||||
|
|
|
@ -18,7 +18,6 @@ return {
|
|||
["FoldColumn"] = { bg = "NONE" },
|
||||
["Folded"] = { bg = "NONE" },
|
||||
["SignColumn"] = { bg = "NONE" },
|
||||
["MasonBackdrop"] = { link = "NormalFloat" },
|
||||
},
|
||||
}
|
||||
end,
|
||||
|
|
|
@ -33,7 +33,6 @@ return {
|
|||
hi(0, "TelescopePromptNormal", { bg = colors.dark, fg = colors.grey })
|
||||
hi(0, "TelescopePromptPrefix", { bg = colors.dark, fg = colors.red })
|
||||
hi(0, "TelescopeResultsTitle", { bg = colors.olive_green, fg = colors.very_dark_gray })
|
||||
hi(0, "MasonBackdrop", { link = "NormalFloat" })
|
||||
end,
|
||||
})
|
||||
local colorscheme = pcode.themes.jetbrains or "darcula-dark"
|
||||
|
|
|
@ -116,7 +116,6 @@ return {
|
|||
NormalNC = { fg = "${fg}", bg = is_transparent and "NONE" or "${bg}" },
|
||||
FloatBorder = { fg = "${fg}", bg = is_transparent and "NONE" or "${bg}" },
|
||||
NonText = { bg = "NONE", fg = "#3E4450" },
|
||||
MasonBackdrop = { link = "NormalFloat" },
|
||||
},
|
||||
})
|
||||
local colorscheme = pcode.themes.onedarkpro or "onedark"
|
||||
|
|
|
@ -12,7 +12,6 @@ return {
|
|||
-- custom hilights
|
||||
local hi = vim.api.nvim_set_hl
|
||||
hi(0, "FoldColumn", { bg = colors.bg2 })
|
||||
hi(0, "MasonBackdrop", { link = "NormalFloat" })
|
||||
end,
|
||||
})
|
||||
end,
|
||||
|
|
|
@ -71,7 +71,6 @@ return {
|
|||
highlights["@tag.attribute"] = { fg = colors.green1, italic = true }
|
||||
-- highlights["@keyword.function"] = { fg = colors.blue, italic = true }
|
||||
-- highlights["@function"] = { fg = colors.blue, italic = true }
|
||||
highlights.MasonBackdrop = { link = "NormalFloat" }
|
||||
end,
|
||||
})
|
||||
end,
|
||||
|
|
|
@ -124,234 +124,3 @@ vim.api.nvim_create_autocmd("ExitPre", {
|
|||
-- vim.api.nvim_set_keymap("n", "<leader>rg", "<cmd>terminal<cr>gradle run<cr>", { noremap = true, silent = true })
|
||||
-- end,
|
||||
-- })
|
||||
|
||||
-- Extras
|
||||
local function lsp_status()
|
||||
local bufnr = vim.api.nvim_get_current_buf()
|
||||
local clients = vim.lsp.get_clients and vim.lsp.get_clients({ bufnr = bufnr })
|
||||
or vim.lsp.get_active_clients({ bufnr = bufnr })
|
||||
|
||||
if #clients == 0 then
|
||||
print(" No LSP clients attached")
|
||||
return
|
||||
end
|
||||
|
||||
print(" LSP Status for buffer " .. bufnr .. ":")
|
||||
print("─────────────────────────────────")
|
||||
|
||||
for i, client in ipairs(clients) do
|
||||
print(string.format(" Client %d: %s (ID: %d)", i, client.name, client.id))
|
||||
print(" Root: " .. (client.config.root_dir or "N/A"))
|
||||
print(" Filetypes: " .. table.concat(client.config.filetypes or {}, ", "))
|
||||
|
||||
-- Check capabilities
|
||||
local caps = client.server_capabilities
|
||||
local features = {}
|
||||
if caps.completionProvider then
|
||||
table.insert(features, "completion")
|
||||
end
|
||||
if caps.hoverProvider then
|
||||
table.insert(features, "hover")
|
||||
end
|
||||
if caps.definitionProvider then
|
||||
table.insert(features, "definition")
|
||||
end
|
||||
if caps.referencesProvider then
|
||||
table.insert(features, "references")
|
||||
end
|
||||
if caps.renameProvider then
|
||||
table.insert(features, "rename")
|
||||
end
|
||||
if caps.codeActionProvider then
|
||||
table.insert(features, "code_action")
|
||||
end
|
||||
if caps.documentFormattingProvider then
|
||||
table.insert(features, "formatting")
|
||||
end
|
||||
|
||||
print(" Features: " .. table.concat(features, ", "))
|
||||
print("")
|
||||
end
|
||||
end
|
||||
|
||||
vim.api.nvim_create_user_command("LspStatus", lsp_status, { desc = "Show detailed LSP status" })
|
||||
|
||||
local function check_lsp_capabilities()
|
||||
local bufnr = vim.api.nvim_get_current_buf()
|
||||
local clients = vim.lsp.get_clients and vim.lsp.get_clients({ bufnr = bufnr })
|
||||
or vim.lsp.get_active_clients({ bufnr = bufnr })
|
||||
|
||||
if #clients == 0 then
|
||||
print("No LSP clients attached")
|
||||
return
|
||||
end
|
||||
|
||||
for _, client in ipairs(clients) do
|
||||
print("Capabilities for " .. client.name .. ":")
|
||||
local caps = client.server_capabilities
|
||||
|
||||
local capability_list = {
|
||||
{ "Completion", caps.completionProvider },
|
||||
{ "Hover", caps.hoverProvider },
|
||||
{ "Signature Help", caps.signatureHelpProvider },
|
||||
{ "Go to Definition", caps.definitionProvider },
|
||||
{ "Go to Declaration", caps.declarationProvider },
|
||||
{ "Go to Implementation", caps.implementationProvider },
|
||||
{ "Go to Type Definition", caps.typeDefinitionProvider },
|
||||
{ "Find References", caps.referencesProvider },
|
||||
{ "Document Highlight", caps.documentHighlightProvider },
|
||||
{ "Document Symbol", caps.documentSymbolProvider },
|
||||
{ "Workspace Symbol", caps.workspaceSymbolProvider },
|
||||
{ "Code Action", caps.codeActionProvider },
|
||||
{ "Code Lens", caps.codeLensProvider },
|
||||
{ "Document Formatting", caps.documentFormattingProvider },
|
||||
{ "Document Range Formatting", caps.documentRangeFormattingProvider },
|
||||
{ "Rename", caps.renameProvider },
|
||||
{ "Folding Range", caps.foldingRangeProvider },
|
||||
{ "Selection Range", caps.selectionRangeProvider },
|
||||
}
|
||||
|
||||
for _, cap in ipairs(capability_list) do
|
||||
local status = cap[2] and "✓" or "✗"
|
||||
print(string.format(" %s %s", status, cap[1]))
|
||||
end
|
||||
print("")
|
||||
end
|
||||
end
|
||||
|
||||
vim.api.nvim_create_user_command("LspCapabilities", check_lsp_capabilities, { desc = "Show LSP capabilities" })
|
||||
|
||||
local function lsp_diagnostics_info()
|
||||
local bufnr = vim.api.nvim_get_current_buf()
|
||||
local diagnostics = vim.diagnostic.get(bufnr)
|
||||
|
||||
local counts = { ERROR = 0, WARN = 0, INFO = 0, HINT = 0 }
|
||||
|
||||
for _, diagnostic in ipairs(diagnostics) do
|
||||
local severity = vim.diagnostic.severity[diagnostic.severity]
|
||||
counts[severity] = counts[severity] + 1
|
||||
end
|
||||
|
||||
print(" Diagnostics for current buffer:")
|
||||
print(" Errors: " .. counts.ERROR)
|
||||
print(" Warnings: " .. counts.WARN)
|
||||
print(" Info: " .. counts.INFO)
|
||||
print(" Hints: " .. counts.HINT)
|
||||
print(" Total: " .. #diagnostics)
|
||||
end
|
||||
|
||||
vim.api.nvim_create_user_command("LspDiagnostics", lsp_diagnostics_info, { desc = "Show LSP diagnostics count" })
|
||||
|
||||
local function lsp_info()
|
||||
local bufnr = vim.api.nvim_get_current_buf()
|
||||
local clients = vim.lsp.get_clients and vim.lsp.get_clients({ bufnr = bufnr })
|
||||
or vim.lsp.get_active_clients({ bufnr = bufnr })
|
||||
|
||||
print("═══════════════════════════════════")
|
||||
print(" LSP INFORMATION ")
|
||||
print("═══════════════════════════════════")
|
||||
print("")
|
||||
|
||||
-- Basic info
|
||||
print(" Language client log: " .. vim.lsp.get_log_path())
|
||||
print(" Detected filetype: " .. vim.bo.filetype)
|
||||
print(" Buffer: " .. bufnr)
|
||||
print(" Root directory: " .. (vim.fn.getcwd() or "N/A"))
|
||||
print("")
|
||||
|
||||
if #clients == 0 then
|
||||
print(" No LSP clients attached to buffer " .. bufnr)
|
||||
print("")
|
||||
print("Possible reasons:")
|
||||
print(" • No language server installed for " .. vim.bo.filetype)
|
||||
print(" • Language server not configured")
|
||||
print(" • Not in a project root directory")
|
||||
print(" • File type not recognized")
|
||||
return
|
||||
end
|
||||
|
||||
print(" LSP clients attached to buffer " .. bufnr .. ":")
|
||||
print("─────────────────────────────────")
|
||||
|
||||
for i, client in ipairs(clients) do
|
||||
print(string.format(" Client %d: %s", i, client.name))
|
||||
print(" ID: " .. client.id)
|
||||
print(" Root dir: " .. (client.config.root_dir or "Not set"))
|
||||
print(" Command: " .. table.concat(client.config.cmd or {}, " "))
|
||||
print(" Filetypes: " .. table.concat(client.config.filetypes or {}, ", "))
|
||||
|
||||
-- Server status
|
||||
if client.is_stopped() then
|
||||
print(" Status: Stopped")
|
||||
else
|
||||
print(" Status: Running")
|
||||
end
|
||||
|
||||
-- Workspace folders
|
||||
if client.workspace_folders and #client.workspace_folders > 0 then
|
||||
print(" Workspace folders:")
|
||||
for _, folder in ipairs(client.workspace_folders) do
|
||||
print(" • " .. folder.name)
|
||||
end
|
||||
end
|
||||
|
||||
-- Attached buffers count
|
||||
local attached_buffers = {}
|
||||
for buf, _ in pairs(client.attached_buffers or {}) do
|
||||
table.insert(attached_buffers, buf)
|
||||
end
|
||||
print(" Attached buffers: " .. #attached_buffers)
|
||||
|
||||
-- Key capabilities
|
||||
local caps = client.server_capabilities
|
||||
local key_features = {}
|
||||
if caps.completionProvider then
|
||||
table.insert(key_features, "completion")
|
||||
end
|
||||
if caps.hoverProvider then
|
||||
table.insert(key_features, "hover")
|
||||
end
|
||||
if caps.definitionProvider then
|
||||
table.insert(key_features, "definition")
|
||||
end
|
||||
if caps.documentFormattingProvider then
|
||||
table.insert(key_features, "formatting")
|
||||
end
|
||||
if caps.codeActionProvider then
|
||||
table.insert(key_features, "code_action")
|
||||
end
|
||||
|
||||
if #key_features > 0 then
|
||||
print(" Key features: " .. table.concat(key_features, ", "))
|
||||
end
|
||||
|
||||
print("")
|
||||
end
|
||||
|
||||
-- Diagnostics summary
|
||||
local diagnostics = vim.diagnostic.get(bufnr)
|
||||
if #diagnostics > 0 then
|
||||
print(" Diagnostics Summary:")
|
||||
local counts = { ERROR = 0, WARN = 0, INFO = 0, HINT = 0 }
|
||||
|
||||
for _, diagnostic in ipairs(diagnostics) do
|
||||
local severity = vim.diagnostic.severity[diagnostic.severity]
|
||||
counts[severity] = counts[severity] + 1
|
||||
end
|
||||
|
||||
print(" Errors: " .. counts.ERROR)
|
||||
print(" Warnings: " .. counts.WARN)
|
||||
print(" Info: " .. counts.INFO)
|
||||
print(" Hints: " .. counts.HINT)
|
||||
print(" Total: " .. #diagnostics)
|
||||
else
|
||||
print(" No diagnostics")
|
||||
end
|
||||
|
||||
print("")
|
||||
print("Use :LspLog to view detailed logs")
|
||||
print("Use :LspCapabilities for full capability list")
|
||||
end
|
||||
|
||||
-- Create command
|
||||
vim.api.nvim_create_user_command("LspInfo2", lsp_info, { desc = "Show comprehensive LSP information" })
|
||||
|
|
|
@ -47,23 +47,7 @@ return {
|
|||
"williamboman/mason-lspconfig.nvim",
|
||||
opts = function(_, opts)
|
||||
vim.list_extend(opts.skip_config, {})
|
||||
opts.virtual_text = false
|
||||
vim.diagnostic.config({ virtual_lines = { current_line = true } })
|
||||
-- sample custom diagnostic icon
|
||||
vim.diagnostic.config({
|
||||
underline = false,
|
||||
virtual_text = false,
|
||||
update_in_insert = false,
|
||||
severity_sort = true,
|
||||
signs = {
|
||||
text = {
|
||||
[vim.diagnostic.severity.ERROR] = " ",
|
||||
[vim.diagnostic.severity.WARN] = " ",
|
||||
[vim.diagnostic.severity.HINT] = " ",
|
||||
[vim.diagnostic.severity.INFO] = " ",
|
||||
},
|
||||
},
|
||||
})
|
||||
opts.virtual_text = true
|
||||
end,
|
||||
},
|
||||
-- add whichkey mappings
|
||||
|
|
|
@ -9,7 +9,7 @@ pcode.lang = {
|
|||
java2 = false,
|
||||
java3 = false,
|
||||
java4 = false,
|
||||
javascript = true,
|
||||
javascript = false,
|
||||
kotlin = false,
|
||||
markdown = false,
|
||||
php = false,
|
||||
|
@ -27,12 +27,12 @@ pcode.extras = {
|
|||
minianimate = false,
|
||||
neoscroll = false,
|
||||
nvimufo = false,
|
||||
refactoring = false,
|
||||
refactoring = true,
|
||||
rest = false,
|
||||
treesittercontex = false,
|
||||
codeium = true,
|
||||
colorizer = true,
|
||||
dap = false,
|
||||
dap = true,
|
||||
deviconcolor = true,
|
||||
illuminate = true,
|
||||
indentscupe = true,
|
||||
|
@ -44,13 +44,9 @@ pcode.extras = {
|
|||
verticalcolumn = true,
|
||||
visualmulti = true,
|
||||
yanky = true,
|
||||
zenmode = false,
|
||||
zenmode = true,
|
||||
lspsignatur = false,
|
||||
telescopetreesiterinfo = true,
|
||||
fidget = false,
|
||||
tinydignostic = false,
|
||||
dressing = true,
|
||||
telescopediff = true,
|
||||
}
|
||||
-- activate config themes
|
||||
pcode.themes = {
|
||||
|
@ -99,4 +95,3 @@ pcode.themes = {
|
|||
pcode.transparent = false
|
||||
pcode.localcode = true
|
||||
pcode.snippets_path = vim.fn.stdpath("config") .. "/mysnippets"
|
||||
pcode.nvimtree_float = false
|
||||
|
|
|
@ -91,80 +91,3 @@ keymap("n", "<A-l>", "<cmd>terminal live-server<cr>", opts)
|
|||
|
||||
-- close current buffer
|
||||
keymap("n", "<S-t>", "<cmd>lua require('auto-bufferline.configs.utils').bufremove()<cr>", opts)
|
||||
|
||||
-- vim.keymap.set("n", "<leader>ti", function()
|
||||
-- local api = vim.api
|
||||
-- local parser_configs = require("nvim-treesitter.parsers").get_parser_configs()
|
||||
-- local parsers = vim.tbl_keys(parser_configs)
|
||||
-- table.sort(parsers)
|
||||
--
|
||||
-- local choices = {}
|
||||
-- local lookup = {}
|
||||
--
|
||||
-- for _, parser in ipairs(parsers) do
|
||||
-- local is_installed = #api.nvim_get_runtime_file("parser/" .. parser .. ".so", false) > 0
|
||||
--
|
||||
-- local label = (is_installed and "[✓] " or "[✗] ") .. parser
|
||||
-- table.insert(choices, label)
|
||||
-- lookup[label] = parser
|
||||
-- end
|
||||
--
|
||||
-- vim.ui.select(choices, {
|
||||
-- prompt = "Treesitter ([✓]= installed, [✗] = not installed)",
|
||||
-- }, function(choice)
|
||||
-- if choice then
|
||||
-- local parser_name = lookup[choice]
|
||||
-- if parser_name then
|
||||
-- vim.cmd("TSInstall " .. parser_name)
|
||||
-- end
|
||||
-- end
|
||||
-- end)
|
||||
-- end, { desc = "Install Treesitter" })
|
||||
--
|
||||
-- vim.keymap.set("n", "<leader>tu", function()
|
||||
-- local parsers = require("nvim-treesitter.info").installed_parsers()
|
||||
-- table.sort(parsers)
|
||||
-- local choices = {}
|
||||
-- local lookup = {}
|
||||
--
|
||||
-- for _, parser in ipairs(parsers) do
|
||||
-- local label = "[✓] " .. parser
|
||||
-- table.insert(choices, label)
|
||||
-- lookup[label] = parser
|
||||
-- end
|
||||
--
|
||||
-- vim.ui.select(choices, {
|
||||
-- prompt = "Uninstall Treesitter",
|
||||
-- }, function(choice)
|
||||
-- if choice then
|
||||
-- local parser_name = lookup[choice]
|
||||
-- if parser_name then
|
||||
-- vim.cmd("TSUninstall " .. parser_name)
|
||||
-- end
|
||||
-- end
|
||||
-- end)
|
||||
-- end, { desc = "Uninstall Treesitter" })
|
||||
|
||||
vim.api.nvim_create_user_command("TSIsInstalled", function()
|
||||
local parsers = require("nvim-treesitter.info").installed_parsers()
|
||||
table.sort(parsers)
|
||||
local choices = {}
|
||||
local lookup = {}
|
||||
|
||||
for _, parser in ipairs(parsers) do
|
||||
local label = "[✓] " .. parser
|
||||
table.insert(choices, label)
|
||||
lookup[label] = parser
|
||||
end
|
||||
|
||||
vim.ui.select(choices, {
|
||||
prompt = "Uninstall Treesitter",
|
||||
}, function(choice)
|
||||
if choice then
|
||||
local parser_name = lookup[choice]
|
||||
if parser_name then
|
||||
vim.cmd("TSUninstall " .. parser_name)
|
||||
end
|
||||
end
|
||||
end)
|
||||
end, {})
|
||||
|
|
|
@ -1,171 +0,0 @@
|
|||
local function open_new_buffer(name)
|
||||
local buf = vim.api.nvim_create_buf(true, false)
|
||||
vim.api.nvim_set_current_buf(buf)
|
||||
vim.api.nvim_buf_set_option(buf, "modifiable", true)
|
||||
if name then
|
||||
vim.api.nvim_buf_set_name(buf, name)
|
||||
end
|
||||
return buf
|
||||
end
|
||||
|
||||
local M = {}
|
||||
|
||||
local main_cmd = "npm run dev" -- default
|
||||
|
||||
local function log(message, level)
|
||||
vim.notify(string.format("npm-dev-runner: %s", message), vim.log.levels[level])
|
||||
end
|
||||
|
||||
-- Cache: dir -> { job_id=..., buf=... }
|
||||
local job_cache = {}
|
||||
|
||||
local function find_cached_dir(dir)
|
||||
if not dir then
|
||||
vim.notify("npm-dev-runner: No directory provided to find_cached_dir()", vim.log.levels.ERROR)
|
||||
return
|
||||
end
|
||||
|
||||
local cur = dir
|
||||
while not job_cache[cur] do
|
||||
if cur == "/" or string.match(cur, "^[A-Z]:\\$") then
|
||||
return
|
||||
end
|
||||
cur = vim.fn.fnamemodify(cur, ":h")
|
||||
end
|
||||
return cur
|
||||
end
|
||||
|
||||
local function is_running(dir)
|
||||
local cached_dir = find_cached_dir(dir)
|
||||
return cached_dir and job_cache[cached_dir]
|
||||
end
|
||||
|
||||
local function is_windows()
|
||||
return vim.loop.os_uname().version:match("Windows")
|
||||
end
|
||||
|
||||
M.toggle = function(dir)
|
||||
local running = is_running(dir)
|
||||
if not running then
|
||||
M.start(dir)
|
||||
return
|
||||
end
|
||||
M.stop(dir)
|
||||
end
|
||||
|
||||
--- Fungsi setup menerima argumen command utama, contoh: require("npmrun").setup("pnpm dev")
|
||||
M.setup = function(cmd)
|
||||
main_cmd = cmd or "npm run dev"
|
||||
if not vim.fn.executable(main_cmd:match("%S+")) then
|
||||
log(main_cmd .. " is not executable. Make sure it is installed and in PATH.", "ERROR")
|
||||
return
|
||||
end
|
||||
|
||||
local function find_dir(args)
|
||||
local dir = args ~= "" and args or "%:p:h"
|
||||
return vim.fn.expand(vim.fn.fnamemodify(vim.fn.expand(dir), ":p"))
|
||||
end
|
||||
|
||||
vim.api.nvim_create_user_command("DevStart", function(opts)
|
||||
M.start(find_dir(opts.args))
|
||||
end, { nargs = "?" })
|
||||
|
||||
vim.api.nvim_create_user_command("DevStop", function(opts)
|
||||
M.stop(find_dir(opts.args))
|
||||
end, { nargs = "?" })
|
||||
|
||||
vim.api.nvim_create_user_command("DevToggle", function(opts)
|
||||
M.toggle(find_dir(opts.args))
|
||||
end, { nargs = "?" })
|
||||
end
|
||||
|
||||
M.start = function(dir)
|
||||
if is_running(dir) then
|
||||
log(main_cmd .. " already running", "INFO")
|
||||
return
|
||||
end
|
||||
|
||||
local cmd
|
||||
if is_windows() then
|
||||
cmd = { "cmd.exe", "/C" }
|
||||
for word in main_cmd:gmatch("%S+") do
|
||||
table.insert(cmd, word)
|
||||
end
|
||||
else
|
||||
cmd = {}
|
||||
for word in main_cmd:gmatch("%S+") do
|
||||
table.insert(cmd, word)
|
||||
end
|
||||
end
|
||||
|
||||
local buffer_name = "npmrun.txt"
|
||||
local output_buf = open_new_buffer(buffer_name)
|
||||
vim.api.nvim_buf_set_lines(output_buf, 0, -1, false, {})
|
||||
|
||||
local function append_to_buffer(lines)
|
||||
if not lines then
|
||||
return
|
||||
end
|
||||
if not vim.api.nvim_buf_is_valid(output_buf) then
|
||||
return
|
||||
end
|
||||
local filtered = {}
|
||||
for _, l in ipairs(lines) do
|
||||
if l ~= "" then
|
||||
table.insert(filtered, l)
|
||||
end
|
||||
end
|
||||
if #filtered > 0 then
|
||||
local line_count = vim.api.nvim_buf_line_count(output_buf)
|
||||
vim.api.nvim_buf_set_lines(output_buf, line_count, line_count, false, filtered)
|
||||
end
|
||||
end
|
||||
|
||||
local function close_output_buffer()
|
||||
if output_buf and vim.api.nvim_buf_is_valid(output_buf) then
|
||||
vim.api.nvim_buf_delete(output_buf, { force = true })
|
||||
end
|
||||
end
|
||||
|
||||
local job_id = vim.fn.jobstart(cmd, {
|
||||
cwd = dir,
|
||||
stdout_buffered = false, -- streaming mode
|
||||
stderr_buffered = false,
|
||||
on_stdout = function(_, data)
|
||||
append_to_buffer(data)
|
||||
end,
|
||||
on_stderr = function(_, data)
|
||||
append_to_buffer(vim.tbl_map(function(l)
|
||||
return "[ERR] " .. l
|
||||
end, data))
|
||||
end,
|
||||
on_exit = function(_, code)
|
||||
append_to_buffer({ string.format(main_cmd .. " exited with code %d", code) })
|
||||
close_output_buffer()
|
||||
job_cache[dir] = nil
|
||||
end,
|
||||
})
|
||||
|
||||
job_cache[dir] = { job_id = job_id, buf = output_buf }
|
||||
log(main_cmd .. " started", "INFO")
|
||||
end
|
||||
|
||||
M.stop = function(dir)
|
||||
local running = is_running(dir)
|
||||
if running then
|
||||
local cached_dir = find_cached_dir(dir)
|
||||
if cached_dir then
|
||||
local job_entry = job_cache[cached_dir]
|
||||
if job_entry then
|
||||
vim.fn.jobstop(job_entry.job_id)
|
||||
if job_entry.buf and vim.api.nvim_buf_is_valid(job_entry.buf) then
|
||||
vim.api.nvim_buf_delete(job_entry.buf, { force = true })
|
||||
end
|
||||
end
|
||||
job_cache[cached_dir] = nil
|
||||
log(main_cmd .. " stopped", "INFO")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return M
|
|
@ -61,7 +61,7 @@ vim.loader.enable()
|
|||
|
||||
-- Disable statusline in dashboard
|
||||
vim.api.nvim_create_autocmd("FileType", {
|
||||
pattern = { "dbout", "dbui", "http", "httpResult", "checkhealth", "qf", "help", "lazy" },
|
||||
pattern = { "dbout", "dbui", "http", "httpResult" },
|
||||
callback = function()
|
||||
local opt = vim.opt
|
||||
opt.number = false -- Print line number
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue