From 5179bb10475ec26c411d4354a11586f9c2fdfe2e Mon Sep 17 00:00:00 2001 From: "asep.komarudin" Date: Wed, 22 May 2024 06:39:38 +0700 Subject: [PATCH] fix: support neovim v0.10 --- .stylua.toml | 6 - lazy-lock.json | 6 +- lua/config/{lazy.lua => lazy_lib.lua} | 118 ++++----- lua/core/init.lua | 2 +- lua/plugins/lsp.lua | 2 +- lua/user/chat_gpt.lua | 144 +++++------ lua/user/functions.lua | 42 ++-- lua/user/keymaps.lua | 82 +++---- lua/user/lsp/init.lua | 4 +- lua/user/lsp/{mason.lua => mason_cfg.lua} | 212 ++++++++-------- lua/user/lsp/{null-ls.lua => null-lscfg.lua} | 168 ++++++------- lua/user/startify.lua | 2 +- lua/user/winbar.lua | 240 ++++++++++--------- 13 files changed, 515 insertions(+), 513 deletions(-) delete mode 100644 .stylua.toml rename lua/config/{lazy.lua => lazy_lib.lua} (95%) rename lua/user/lsp/{mason.lua => mason_cfg.lua} (96%) rename lua/user/lsp/{null-ls.lua => null-lscfg.lua} (96%) diff --git a/.stylua.toml b/.stylua.toml deleted file mode 100644 index df96b7b..0000000 --- a/.stylua.toml +++ /dev/null @@ -1,6 +0,0 @@ -column_width = 120 -line_endings = "Unix" -indent_type = "Spaces" -indent_width = 2 -quote_style = "AutoPreferDouble" -no_call_parentheses = true diff --git a/lazy-lock.json b/lazy-lock.json index d94ae3e..4e19a10 100644 --- a/lazy-lock.json +++ b/lazy-lock.json @@ -2,7 +2,7 @@ "Comment.nvim": { "branch": "master", "commit": "e51f2b142d88bb666dcaa77d93a07f4b419aca70" }, "LuaSnip": { "branch": "master", "commit": "03c8e67eb7293c404845b3982db895d59c0d1538" }, "alpha-nvim": { "branch": "main", "commit": "41283fb402713fc8b327e60907f74e46166f4cfd" }, - "bufferline.nvim": { "branch": "main", "commit": "0dfc19b7a15a3bc47b975fcffde03859c46dd097" }, + "bufferline.nvim": { "branch": "main", "commit": "73edc1f2732678e7a681e3d3be49782610914f6b" }, "cmp-buffer": { "branch": "main", "commit": "3022dbc9166796b644a841a02de8dd1cc1d311fa" }, "cmp-cmdline": { "branch": "main", "commit": "d250c63aa13ead745e3a40f61fdd3470efde3923" }, "cmp-nvim-lsp": { "branch": "main", "commit": "39e2eda76828d88b773cc27a3f61d2ad782c922d" }, @@ -15,7 +15,7 @@ "friendly-snippets": { "branch": "main", "commit": "dd2fd1281d4b22e7b4a5bfafa3e142d958e251f2" }, "gitsigns.nvim": { "branch": "main", "commit": "76927d14d3fbd4ba06ccb5246e79d93b5442c188" }, "indent-blankline.nvim": { "branch": "master", "commit": "ece00d5fb44d196680a81fd2761062d2fa44663b" }, - "lazy.nvim": { "branch": "main", "commit": "758bb5de98b805acc5eeed8cdc8ac7f0bc4b0b86" }, + "lazy.nvim": { "branch": "main", "commit": "8f19915175395680808de529e4220da8dafc0759" }, "lsp-progress.nvim": { "branch": "main", "commit": "55a04895ea20c365b670051a3128265d43bdfa3d" }, "lualine.nvim": { "branch": "master", "commit": "0a5a66803c7407767b799067986b4dc3036e1983" }, "mason-lspconfig.nvim": { "branch": "main", "commit": "9ae570e206360e47d30b4c35a4550c165f4ea7b7" }, @@ -39,7 +39,7 @@ "nvim-tree.lua": { "branch": "master", "commit": "2bc725a3ebc23f0172fb0ab4d1134b81bcc13812" }, "nvim-treesitter": { "branch": "master", "commit": "73fb37ed77b18ac357ca8e6e35835a8db6602332" }, "nvim-treesitter-textobjects": { "branch": "master", "commit": "5f9bf4b1ead7707e4e74e5319ee56bdc81fb73db" }, - "nvim-ts-autotag": { "branch": "main", "commit": "6f38e4231c34497259121a007c61a0fd2f16403e" }, + "nvim-ts-autotag": { "branch": "main", "commit": "62db4b3054ec6847e5cb189b4dea452ce0c7ad7f" }, "nvim-ts-context-commentstring": { "branch": "main", "commit": "cbab9ad88036915beebd13b47e100743ff2ed2d5" }, "nvim-ufo": { "branch": "main", "commit": "a5390706f510d39951dd581f6d2a972741b3fa26" }, "nvim-web-devicons": { "branch": "master", "commit": "5b9067899ee6a2538891573500e8fd6ff008440f" }, diff --git a/lua/config/lazy.lua b/lua/config/lazy_lib.lua similarity index 95% rename from lua/config/lazy.lua rename to lua/config/lazy_lib.lua index d14e5d3..2d07515 100644 --- a/lua/config/lazy.lua +++ b/lua/config/lazy_lib.lua @@ -1,59 +1,59 @@ -local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" -if not (vim.uv or vim.loop).fs_stat(lazypath) then - -- bootstrap lazy.nvim - -- stylua: ignore - vim.fn.system({ - "git", "clone", - "--filter=blob:none", - "https://github.com/folke/lazy.nvim.git", - "--branch=stable", - lazypath - }) -end - -local icons = require("user.icons").ui -vim.opt.rtp:prepend(vim.env.LAZY or lazypath) -vim.g.mapleader = " " -vim.g.maplocalleader = " " -vim.diagnostic.config({ virtual_lines = false }) -require("lazy").setup({ - spec = { - { import = "plugins" }, - { import = "custom.plugins" }, - }, - defaults = { - lazy = true, -- every plugin is lazy-loaded by default - version = "*", -- try installing the latest stable version for plugins that support semver - }, - ui = { - backdrop = 100, - border = "rounded", - browser = "chrome", - throttle = 40, - custom_keys = { ["l"] = false }, - icons = { - ft = icons.ft, - lazy = icons.Bell .. " ", - loaded = icons.CheckCircle, - not_loaded = icons.not_loaded, - }, - }, - change_detection = { enabled = false, notify = false }, - checker = { enabled = true }, -- automatically check for plugin updates - performance = { - rtp = { - -- disable some rtp plugins - disabled_plugins = { - "gzip", - "matchit", - "matchparen", - "netrwPlugin", - "tarPlugin", - "tohtml", - "tutor", - "zipPlugin", - "lazyredraw", - }, - }, - }, -}) +local lazypath = vim.fn.stdpath("data") .. "/lazy/lazy.nvim" +if not (vim.uv or vim.loop).fs_stat(lazypath) then + -- bootstrap lazy.nvim + -- stylua: ignore + vim.fn.system({ + "git", "clone", + "--filter=blob:none", + "https://github.com/folke/lazy.nvim.git", + "--branch=stable", + lazypath + }) +end + +local icons = require("user.icons").ui +vim.opt.rtp:prepend(vim.env.LAZY or lazypath) +vim.g.mapleader = " " +vim.g.maplocalleader = " " +vim.diagnostic.config({ virtual_lines = false }) +require("lazy").setup({ + spec = { + { import = "plugins" }, + { import = "custom.plugins" }, + }, + defaults = { + lazy = true, -- every plugin is lazy-loaded by default + version = "*", -- try installing the latest stable version for plugins that support semver + }, + ui = { + backdrop = 100, + border = "rounded", + browser = "chrome", + throttle = 40, + custom_keys = { ["l"] = false }, + icons = { + ft = icons.ft, + lazy = icons.Bell .. " ", + loaded = icons.CheckCircle, + not_loaded = icons.not_loaded, + }, + }, + change_detection = { enabled = false, notify = false }, + checker = { enabled = true }, -- automatically check for plugin updates + performance = { + rtp = { + -- disable some rtp plugins + disabled_plugins = { + "gzip", + "matchit", + "matchparen", + "netrwPlugin", + "tarPlugin", + "tohtml", + "tutor", + "zipPlugin", + "lazyredraw", + }, + }, + }, +}) diff --git a/lua/core/init.lua b/lua/core/init.lua index bc53e28..05aa747 100644 --- a/lua/core/init.lua +++ b/lua/core/init.lua @@ -1,6 +1,6 @@ require("custom.default") require("custom.dashboard") -require("config.lazy") +require("config.lazy_lib") require("user.colorscheme") require("user.keymaps") -- require("user.snip") diff --git a/lua/plugins/lsp.lua b/lua/plugins/lsp.lua index 7bcb791..f4a1003 100644 --- a/lua/plugins/lsp.lua +++ b/lua/plugins/lsp.lua @@ -37,7 +37,7 @@ return { lazy = true, }, config = function() - require("user.lsp.null-ls") + require("user.lsp.null-lscfg") end, }, event = "InsertEnter", diff --git a/lua/user/chat_gpt.lua b/lua/user/chat_gpt.lua index ecb3bbc..d9f3672 100644 --- a/lua/user/chat_gpt.lua +++ b/lua/user/chat_gpt.lua @@ -1,74 +1,76 @@ local status_ok, chatgpt = pcall(require, "chatgpt") if not status_ok then - return + return end - -chatgpt.setup({ - welcome_message = WELCOME_MESSAGE, -- set to "" if you don't like the fancy godot robot - loading_text = "loading", - question_sign = "", -- you can use emoji if you want e.g. 🙂 - answer_sign = "ﮧ", -- 🤖 - max_line_length = 120, - yank_register = "+", - chat_layout = { - relative = "editor", - position = "50%", - size = { - height = "80%", - width = "80%", - }, - }, - settings_window = { - border = { - style = "rounded", - text = { - top = " Settings ", - }, - }, - }, - chat_window = { - filetype = "chatgpt", - border = { - highlight = "FloatBorder", - style = "rounded", - text = { - top = " ChatGPT ", - }, - }, - }, - chat_input = { - prompt = "  ", - border = { - highlight = "FloatBorder", - style = "rounded", - text = { - top_align = "center", - top = " Prompt ", - }, - }, - }, - openai_params = { - model = "text-davinci-003", - frequency_penalty = 0, - presence_penalty = 0, - max_tokens = 300, - temperature = 0, - top_p = 1, - n = 1, - }, - openai_edit_params = { - model = "code-davinci-edit-001", - temperature = 0, - top_p = 1, - n = 1, - }, - keymaps = { - close = { "", "" }, - yank_last = "", - scroll_up = "", - scroll_down = "", - toggle_settings = "", - new_session = "", - cycle_windows = "", - }, -}) +local WELCOME_MESSAGE = [[ +Welcome to ChatGPT. +]] +chatgpt.setup { + welcome_message = WELCOME_MESSAGE, -- set to "" if you don't like the fancy godot robot + loading_text = "loading", + question_sign = "", -- you can use emoji if you want e.g. 🙂 + answer_sign = "ﮧ", -- 🤖 + max_line_length = 120, + yank_register = "+", + chat_layout = { + relative = "editor", + position = "50%", + size = { + height = "80%", + width = "80%", + }, + }, + settings_window = { + border = { + style = "rounded", + text = { + top = " Settings ", + }, + }, + }, + chat_window = { + filetype = "chatgpt", + border = { + highlight = "FloatBorder", + style = "rounded", + text = { + top = " ChatGPT ", + }, + }, + }, + chat_input = { + prompt = "  ", + border = { + highlight = "FloatBorder", + style = "rounded", + text = { + top_align = "center", + top = " Prompt ", + }, + }, + }, + openai_params = { + model = "text-davinci-003", + frequency_penalty = 0, + presence_penalty = 0, + max_tokens = 300, + temperature = 0, + top_p = 1, + n = 1, + }, + openai_edit_params = { + model = "code-davinci-edit-001", + temperature = 0, + top_p = 1, + n = 1, + }, + keymaps = { + close = { "", "" }, + yank_last = "", + scroll_up = "", + scroll_down = "", + toggle_settings = "", + new_session = "", + cycle_windows = "", + }, +} diff --git a/lua/user/functions.lua b/lua/user/functions.lua index d68f5eb..a407305 100644 --- a/lua/user/functions.lua +++ b/lua/user/functions.lua @@ -1,33 +1,33 @@ local M = {} function M.smart_quit() - local bufnr = vim.api.nvim_get_current_buf() - local buf_windows = vim.call("win_findbuf", bufnr) - local modified = vim.api.nvim_buf_get_option(bufnr, "modified") - if modified and #buf_windows == 1 then - vim.ui.input({ - prompt = "You have unsaved changes. Quit anyway? (y/n) ", - }, function(input) - if input == "y" then - vim.cmd("q!") - end - end) - else - vim.cmd("q!") - end + local bufnr = vim.api.nvim_get_current_buf() + local buf_windows = vim.call("win_findbuf", bufnr) + local modified = vim.api.nvim_buf_get_var(bufnr, "modified") + if modified and #buf_windows == 1 then + vim.ui.input({ + prompt = "You have unsaved changes. Quit anyway? (y/n) ", + }, function(input) + if input == "y" then + vim.cmd "q!" + end + end) + else + vim.cmd "q!" + end end function M.isempty(s) - return s == nil or s == "" + return s == nil or s == "" end function M.get_buf_option(opt) - local status_ok, buf_option = pcall(vim.api.nvim_buf_get_option, 0, opt) - if not status_ok then - return nil - else - return buf_option - end + local status_ok, buf_option = pcall(vim.api.nvim_buf_get_var, 0, opt) + if not status_ok then + return nil + else + return buf_option + end end return M diff --git a/lua/user/keymaps.lua b/lua/user/keymaps.lua index 95916bc..6248dff 100644 --- a/lua/user/keymaps.lua +++ b/lua/user/keymaps.lua @@ -1,24 +1,24 @@ local opts = { noremap = true, silent = true } function _LIVE_SERVER() - local Terminal = require("toggleterm.terminal").Terminal - local live_server = Terminal:new({ - cmd = "live-server", - hidden = true, - direction = "tab", - }) - live_server:toggle() + local Terminal = require("toggleterm.terminal").Terminal + local live_server = Terminal:new { + cmd = "live-server", + hidden = true, + direction = "tab", + } + live_server:toggle() end function _CLOSE_BUFFER() - local buf = vim.api.nvim_get_current_buf() - -- delete current buffer - require("bufdelete").bufdelete(buf, true) + local buf = vim.api.nvim_get_current_buf() + -- delete current buffer + require("bufdelete").bufdelete(buf, true) end function _OPEN_ALACRITTY() - -- open alacritty new windows current directory - vim.cmd("silent !alacritty --working-directory " .. vim.fn.getcwd()) + -- open alacritty new windows current directory + vim.cmd("silent !alacritty --working-directory " .. vim.fn.getcwd()) end local term_opts = { silent = true } @@ -151,39 +151,39 @@ keymap("x", "", ":move '>+1gv-gv", opts) keymap("x", "", ":move '<-2gv-gv", opts) local map = function(mode, lhs, rhs, desc) - if desc then - desc = desc - end - vim.keymap.set(mode, lhs, rhs, { silent = true, desc = desc, buffer = bufnr, noremap = true }) + if desc then + desc = desc + end + vim.keymap.set(mode, lhs, rhs, { silent = true, desc = desc, buffer = 0, noremap = true }) end -- if pcall(require, "dap") then -- modified function keys found with `showkey -a` in the terminal to get key code -- run `nvim -V3log +quit` and search through the "Terminal info" in the `log` file for the correct keyname -if vim.fn.has("win32") == 0 then - map("n", "", function() - require("dap").continue() - end, "") - map("n", "", function() - require("dap").terminate() - end, "") -- Shift+F5 - map("n", "", function() - require("dap").restart_frame() - end, "") -- Control+F5 - map("n", "", function() - require("dap").pause() - end, "") - map("n", "", function() - require("dap").toggle_breakpoint() - end, "") - map("n", "", function() - require("dap").step_over() - end, "") - map("n", "", function() - require("dap").step_into() - end, "") - map("n", "", function() - require("dap").step_out() - end, "") -- Shift+F11 +if vim.fn.has "win32" == 0 then + map("n", "", function() + require("dap").continue() + end, "") + map("n", "", function() + require("dap").terminate() + end, "") -- Shift+F5 + map("n", "", function() + require("dap").restart_frame() + end, "") -- Control+F5 + map("n", "", function() + require("dap").pause() + end, "") + map("n", "", function() + require("dap").toggle_breakpoint() + end, "") + map("n", "", function() + require("dap").step_over() + end, "") + map("n", "", function() + require("dap").step_into() + end, "") + map("n", "", function() + require("dap").step_out() + end, "") -- Shift+F11 end -- Terminal -- diff --git a/lua/user/lsp/init.lua b/lua/user/lsp/init.lua index da094cd..1a6bd2e 100644 --- a/lua/user/lsp/init.lua +++ b/lua/user/lsp/init.lua @@ -3,7 +3,7 @@ if not status_ok then return end -require("user.lsp.mason") +require("user.lsp.mason_cfg") --require("user.lsp.config") -- ini hanya untuk windows supaya jdtls jalan, kalau pakai linu x remark saja require("user.lsp.handlers").setup() ---require("user.lsp.null-ls") +--require("user.lsp.null-lscfg") diff --git a/lua/user/lsp/mason.lua b/lua/user/lsp/mason_cfg.lua similarity index 96% rename from lua/user/lsp/mason.lua rename to lua/user/lsp/mason_cfg.lua index 8c67945..40547b1 100644 --- a/lua/user/lsp/mason.lua +++ b/lua/user/lsp/mason_cfg.lua @@ -1,106 +1,106 @@ -local servers = { - "lua_ls", -} - -local function idxOf(array, value) - for i, v in ipairs(array) do - if v == value then - return i - end - end - return nil -end - -local mason_install = vim.g.pcode_mason_ensure_installed or {} -for _, client in pairs(mason_install) do - table.insert(servers, client) -end - -local unregis_lsp = vim.g.pcode_unregister_lsp or {} -local icons = vim.g.pcode_icons.ui - -local settings = { - ui = { - -- border = "none", - border = icons.Border, - icons = { - package_pending = icons.DotCircle, - package_installed = icons.CheckCircle, - package_uninstalled = icons.BlankCircle, - }, - keymaps = { - -- Keymap to expand a server in the UI - toggle_server_expand = "", - -- Keymap to install the server under the current cursor position - install_server = "i", - -- Keymap to reinstall/update the server under the current cursor position - update_server = "u", - -- Keymap to check for new version for the server under the current cursor position - check_server_version = "c", - -- Keymap to update all installed servers - update_all_servers = "U", - -- Keymap to check which installed servers are outdated - check_outdated_servers = "C", - -- Keymap to uninstall a server - uninstall_server = "X", - }, - }, - log_level = vim.log.levels.INFO, - max_concurrent_installers = 4, -} - -require("mason").setup(settings) --- * buka remark ini jika akan menggunakan list serverrs diatas dan remark config dibawah -require("mason-lspconfig").setup({ - ensure_installed = servers, - automatic_installation = true, -}) --- --- * buka remark ini jika ingin menjalankan dengan cara install dan remark config diatas (pilih satu) --- require("mason-lspconfig").setup() - -local lspconfig_status_ok, lspconfig = pcall(require, "lspconfig") -if not lspconfig_status_ok then - return -end - -local opts = {} - -require("mason-lspconfig").setup_handlers({ - function(server_name) -- default handler (optional) - local is_skip = false - local my_index = idxOf(unregis_lsp, server_name) - if my_index ~= nil then - is_skip = true - end - if not is_skip then - opts = { - on_attach = require("user.lsp.handlers").on_attach, - capabilities = require("user.lsp.handlers").capabilities, - } - - server_name = vim.split(server_name, "@")[1] - - local require_ok, conf_opts = pcall(require, "user.lsp.settings." .. server_name) - if require_ok then - opts = vim.tbl_deep_extend("force", conf_opts, opts) - end - lspconfig[server_name].setup(opts) - end - end, - -- Next, you can provide targeted overrides for specific servers. - -- ["rust_analyzer"] = function() - -- require("rust-tools").setup({}) - -- end, - -- ["lua_ls"] = function() - -- lspconfig.sumneko_lua.setup({ - -- settings = { - -- Lua = { - -- diagnostics = { - -- globals = { "vim" }, - -- }, - -- }, - -- }, - -- }) - -- end, -}) +local servers = { + "lua_ls", +} + +local function idxOf(array, value) + for i, v in ipairs(array) do + if v == value then + return i + end + end + return nil +end + +local mason_install = vim.g.pcode_mason_ensure_installed or {} +for _, client in pairs(mason_install) do + table.insert(servers, client) +end + +local unregis_lsp = vim.g.pcode_unregister_lsp or {} +local icons = vim.g.pcode_icons.ui + +local settings = { + ui = { + -- border = "none", + border = icons.Border, + icons = { + package_pending = icons.DotCircle, + package_installed = icons.CheckCircle, + package_uninstalled = icons.BlankCircle, + }, + keymaps = { + -- Keymap to expand a server in the UI + toggle_server_expand = "", + -- Keymap to install the server under the current cursor position + install_server = "i", + -- Keymap to reinstall/update the server under the current cursor position + update_server = "u", + -- Keymap to check for new version for the server under the current cursor position + check_server_version = "c", + -- Keymap to update all installed servers + update_all_servers = "U", + -- Keymap to check which installed servers are outdated + check_outdated_servers = "C", + -- Keymap to uninstall a server + uninstall_server = "X", + }, + }, + log_level = vim.log.levels.INFO, + max_concurrent_installers = 4, +} + +require("mason").setup(settings) +-- * buka remark ini jika akan menggunakan list serverrs diatas dan remark config dibawah +require("mason-lspconfig").setup({ + ensure_installed = servers, + automatic_installation = true, +}) +-- +-- * buka remark ini jika ingin menjalankan dengan cara install dan remark config diatas (pilih satu) +-- require("mason-lspconfig").setup() + +local lspconfig_status_ok, lspconfig = pcall(require, "lspconfig") +if not lspconfig_status_ok then + return +end + +local opts = {} + +require("mason-lspconfig").setup_handlers({ + function(server_name) -- default handler (optional) + local is_skip = false + local my_index = idxOf(unregis_lsp, server_name) + if my_index ~= nil then + is_skip = true + end + if not is_skip then + opts = { + on_attach = require("user.lsp.handlers").on_attach, + capabilities = require("user.lsp.handlers").capabilities, + } + + server_name = vim.split(server_name, "@")[1] + + local require_ok, conf_opts = pcall(require, "user.lsp.settings." .. server_name) + if require_ok then + opts = vim.tbl_deep_extend("force", conf_opts, opts) + end + lspconfig[server_name].setup(opts) + end + end, + -- Next, you can provide targeted overrides for specific servers. + -- ["rust_analyzer"] = function() + -- require("rust-tools").setup({}) + -- end, + -- ["lua_ls"] = function() + -- lspconfig.sumneko_lua.setup({ + -- settings = { + -- Lua = { + -- diagnostics = { + -- globals = { "vim" }, + -- }, + -- }, + -- }, + -- }) + -- end, +}) diff --git a/lua/user/lsp/null-ls.lua b/lua/user/lsp/null-lscfg.lua similarity index 96% rename from lua/user/lsp/null-ls.lua rename to lua/user/lsp/null-lscfg.lua index f5cdd17..417ec21 100644 --- a/lua/user/lsp/null-ls.lua +++ b/lua/user/lsp/null-lscfg.lua @@ -1,84 +1,84 @@ -local null_ls_status_ok, null_ls = pcall(require, "null-ls") -if not null_ls_status_ok then - return -end - --- https://github.com/jose-elias-alvarez/null-ls.nvim/tree/main/lua/null-ls/builtins/formatting -local formatting = null_ls.builtins.formatting --- https://github.com/jose-elias-alvarez/null-ls.nvim/tree/main/lua/null-ls/builtins/diagnostics -local diagnostics = null_ls.builtins.diagnostics - -local augroup = vim.api.nvim_create_augroup("LspFormatting", {}) - -local sources = {} -local ensure_installed = {} - -local data_ok, data_sources = pcall(require, "custom.null-ls") -if data_ok then - for _, cfg in pairs(data_sources.sources) do - table.insert(sources, cfg) - end -end - --- load data null-ls -local nullls_data = vim.g.pcode_null_ls_ensure_installed or {} -for _, nullls in pairs(nullls_data) do - table.insert(ensure_installed, nullls) -end - -local mason_ok, mason_null_ls = pcall(require, "mason-null-ls") -if mason_ok then - mason_null_ls.setup({ - ensure_installed = ensure_installed, - }) -end - -local run = 0 -local frmt = vim.g.pcode_format_on_save or 0 -if frmt == 1 then - run = 1 -end - -if run == 1 then - null_ls.setup({ - debug = false, - ensure_installed = ensure_installed, - sources = sources, - --sources = { - --formatting.prettier.with({ extra_args = { "--no-semi", "--single-quote", "--jsx-single-quote" } }), - --formatting.prettier, - -- formatting.prettierd, - -- formatting.black.with({ extra_args = { "--fast" } }), - -- formatting.stylua, - -- formatting.eslint_d, - -- formatting.google_java_format, - -- formatting.phpcbf, - -- formatting.clang_format, - -- diagnostics.flake8 - -- diagnostics.eslint_d, - --}, - - on_attach = function(client, bufnr) - --if client.resolved_capabilities.document_formatting then - --vim.cmd("autocmd BufWritePre lua vim.lsp.buf.format{async=true}") - --end - if client.supports_method("textDocument/formatting") then - vim.api.nvim_clear_autocmds({ group = augroup, buffer = bufnr }) - vim.api.nvim_create_autocmd("BufWritePre", { - group = augroup, - buffer = bufnr, - callback = function() - vim.lsp.buf.format({ bufnr = bufnr }) - -- vim.lsp.buf.formatting_sync() - end, - }) - end - end, - }) -else - null_ls.setup({ - debug = false, - ensure_installed = ensure_installed, - sources = sources, - }) -end +local null_ls_status_ok, null_ls = pcall(require, "null-ls") +if not null_ls_status_ok then + return +end + +-- https://github.com/jose-elias-alvarez/null-ls.nvim/tree/main/lua/null-ls/builtins/formatting +local formatting = null_ls.builtins.formatting +-- https://github.com/jose-elias-alvarez/null-ls.nvim/tree/main/lua/null-ls/builtins/diagnostics +local diagnostics = null_ls.builtins.diagnostics + +local augroup = vim.api.nvim_create_augroup("LspFormatting", {}) + +local sources = {} +local ensure_installed = {} + +local data_ok, data_sources = pcall(require, "custom.null-ls") +if data_ok then + for _, cfg in pairs(data_sources.sources) do + table.insert(sources, cfg) + end +end + +-- load data null-ls +local nullls_data = vim.g.pcode_null_ls_ensure_installed or {} +for _, nullls in pairs(nullls_data) do + table.insert(ensure_installed, nullls) +end + +local mason_ok, mason_null_ls = pcall(require, "mason-null-ls") +if mason_ok then + mason_null_ls.setup({ + ensure_installed = ensure_installed, + }) +end + +local run = 0 +local frmt = vim.g.pcode_format_on_save or 0 +if frmt == 1 then + run = 1 +end + +if run == 1 then + null_ls.setup({ + debug = false, + ensure_installed = ensure_installed, + sources = sources, + --sources = { + --formatting.prettier.with({ extra_args = { "--no-semi", "--single-quote", "--jsx-single-quote" } }), + --formatting.prettier, + -- formatting.prettierd, + -- formatting.black.with({ extra_args = { "--fast" } }), + -- formatting.stylua, + -- formatting.eslint_d, + -- formatting.google_java_format, + -- formatting.phpcbf, + -- formatting.clang_format, + -- diagnostics.flake8 + -- diagnostics.eslint_d, + --}, + + on_attach = function(client, bufnr) + --if client.resolved_capabilities.document_formatting then + --vim.cmd("autocmd BufWritePre lua vim.lsp.buf.format{async=true}") + --end + if client.supports_method("textDocument/formatting") then + vim.api.nvim_clear_autocmds({ group = augroup, buffer = bufnr }) + vim.api.nvim_create_autocmd("BufWritePre", { + group = augroup, + buffer = bufnr, + callback = function() + vim.lsp.buf.format({ bufnr = bufnr }) + -- vim.lsp.buf.formatting_sync() + end, + }) + end + end, + }) +else + null_ls.setup({ + debug = false, + ensure_installed = ensure_installed, + sources = sources, + }) +end diff --git a/lua/user/startify.lua b/lua/user/startify.lua index 5f722ca..6f5ccd2 100644 --- a/lua/user/startify.lua +++ b/lua/user/startify.lua @@ -23,7 +23,6 @@ startify.section.top_buttons.val = { startify.button("t", "󰊄 Find text", ":Telescope live_grep "), startify.button("c", " Configuration", ":e $MYVIMRC "), startify.button("z", "󰒲 Lazy", ":Lazy"), - -- startify.button("q", " Quit Neovim", ":qa"), } -- disable MRU startify.section.mru.val = { { type = "padding", val = 4 } } @@ -70,6 +69,7 @@ vim.api.nvim_create_autocmd({ "User" }, { end, }) -- ignore filetypes in MRU +local default_mru_ignore = {} startify.mru_opts.ignore = function(path, ext) return (string.find(path, "COMMIT_EDITMSG")) or (vim.tbl_contains(default_mru_ignore, ext)) end diff --git a/lua/user/winbar.lua b/lua/user/winbar.lua index 9cb60f0..ffaac70 100644 --- a/lua/user/winbar.lua +++ b/lua/user/winbar.lua @@ -1,151 +1,157 @@ local active = true local icons = vim.g.pcode_icons local excludes = function() - return vim.tbl_contains({ - "help", - "startify", - "dashboard", - "packer", - "neo-tree", - "neogitstatus", - "NvimTree", - "Trouble", - "alpha", - "lir", - "Outline", - "spectre_panel", - "toggleterm", - "DressingSelect", - "Jaq", - "harpoon", - "dap-repl", - "dap-terminal", - "dapui_console", - "dapui_hover", - "lab", - "notify", - "noice", - "", - } or {}, vim.bo.filetype) + return vim.tbl_contains({ + "help", + "startify", + "dashboard", + "packer", + "neo-tree", + "neogitstatus", + "NvimTree", + "Trouble", + "alpha", + "lir", + "Outline", + "spectre_panel", + "toggleterm", + "DressingSelect", + "Jaq", + "harpoon", + "dap-repl", + "dap-terminal", + "dapui_console", + "dapui_hover", + "lab", + "notify", + "noice", + "", + } or {}, vim.bo.filetype) end local get_filename = function() - local filename = vim.fn.expand("%:t") - local extension = vim.fn.expand("%:e") - local f = require("user.functions") + local filename = vim.fn.expand "%:t" + local extension = vim.fn.expand "%:e" + local f = require "user.functions" - if not f.isempty(filename) then - local file_icon, hl_group = require("nvim-web-devicons").get_icon(filename, extension, { default = true }) + if not f.isempty(filename) then + local file_icon, hl_group = require("nvim-web-devicons").get_icon(filename, extension, { default = true }) - if f.isempty(file_icon) then - file_icon = icons.kind.File - end + if f.isempty(file_icon) then + file_icon = icons.kind.File + end - local buf_ft = vim.bo.filetype + local buf_ft = vim.bo.filetype - if buf_ft == "dapui_breakpoints" then - file_icon = icons.ui.Bug - end + if buf_ft == "dapui_breakpoints" then + file_icon = icons.ui.Bug + end - if buf_ft == "dapui_stacks" then - file_icon = icons.ui.Stacks - end + if buf_ft == "dapui_stacks" then + file_icon = icons.ui.Stacks + end - if buf_ft == "dapui_scopes" then - file_icon = icons.ui.Scopes - end + if buf_ft == "dapui_scopes" then + file_icon = icons.ui.Scopes + end - if buf_ft == "dapui_watches" then - file_icon = icons.ui.Watches - end + if buf_ft == "dapui_watches" then + file_icon = icons.ui.Watches + end - -- if buf_ft == "dapui_console" then - -- file_icon = lvim.icons.ui.DebugConsole - -- end + -- if buf_ft == "dapui_console" then + -- file_icon = lvim.icons.ui.DebugConsole + -- end - local navic_text = vim.api.nvim_get_hl_by_name("Normal", true) - vim.api.nvim_set_hl(0, "Winbar", { fg = navic_text.foreground }) + -- local navic_text = vim.api.nvim_get_hl_by_name("Normal", true) + -- vim.api.nvim_set_hl(0, "Winbar", { fg = navic_text.foreground }) + -- Dapatkan definisi highlight group "Normal" + local normal_hl = vim.fn.getcompletion("Normal", "highlight")[1] + -- Dapatkan warna foreground dan background + local fg_color = vim.fn.synIDattr(vim.fn.hlID(normal_hl), "fg") + local bg_color = vim.fn.synIDattr(vim.fn.hlID(normal_hl), "bg") + vim.api.nvim_set_hl(0, "Winbar", { fg = fg_color, bg = bg_color }) - return " " .. "%#" .. hl_group .. "#" .. file_icon .. "%*" .. " " .. "%#Winbar#" .. filename .. "%*" - end + return " " .. "%#" .. hl_group .. "#" .. file_icon .. "%*" .. " " .. "%#Winbar#" .. filename .. "%*" + end end local get_gps = function() - local status_gps_ok, gps = pcall(require, "nvim-navic") - if not status_gps_ok then - return "" - end + local status_gps_ok, gps = pcall(require, "nvim-navic") + if not status_gps_ok then + return "" + end - local status_ok, gps_location = pcall(gps.get_location, {}) - if not status_ok then - return "" - end + local status_ok, gps_location = pcall(gps.get_location, {}) + if not status_ok then + return "" + end - if not gps.is_available() or gps_location == "error" then - return "" - end + if not gps.is_available() or gps_location == "error" then + return "" + end - if not require("user.functions").isempty(gps_location) then - return "%#NavicSeparator#" .. icons.ui.ChevronRight .. "%* " .. gps_location - else - return "" - end + if not require("user.functions").isempty(gps_location) then + return "%#NavicSeparator#" .. icons.ui.ChevronRight .. "%* " .. gps_location + else + return "" + end end local get_winbar = function() - if excludes() then - return - end - local f = require("user.functions") - local value = get_filename() + if excludes() then + return + end + local f = require "user.functions" + local value = get_filename() - local gps_added = false - if not f.isempty(value) then - local gps_value = get_gps() - value = value .. " " .. gps_value - if not f.isempty(gps_value) then - gps_added = true - end - end + local gps_added = false + if not f.isempty(value) then + local gps_value = get_gps() + value = value .. " " .. gps_value + if not f.isempty(gps_value) then + gps_added = true + end + end - if not f.isempty(value) and f.get_buf_option("mod") then - -- TODO: replace with circle - local mod = "%#LspCodeLens#" .. icons.ui.Circle .. "%*" - if gps_added then - value = value .. " " .. mod - else - value = value .. mod - end - end + if not f.isempty(value) and f.get_buf_option "mod" then + -- TODO: replace with circle + local mod = "%#LspCodeLens#" .. icons.ui.Circle .. "%*" + if gps_added then + value = value .. " " .. mod + else + value = value .. mod + end + end - local num_tabs = #vim.api.nvim_list_tabpages() + local num_tabs = #vim.api.nvim_list_tabpages() - if num_tabs > 1 and not f.isempty(value) then - local tabpage_number = tostring(vim.api.nvim_tabpage_get_number(0)) - value = value .. "%=" .. tabpage_number .. "/" .. tostring(num_tabs) - end + if num_tabs > 1 and not f.isempty(value) then + local tabpage_number = tostring(vim.api.nvim_tabpage_get_number(0)) + value = value .. "%=" .. tabpage_number .. "/" .. tostring(num_tabs) + end - local status_ok, _ = pcall(vim.api.nvim_set_option_value, "winbar", value, { scope = "local" }) - if not status_ok then - return - end + local status_ok, _ = pcall(vim.api.nvim_set_option_value, "winbar", value, { scope = "local" }) + if not status_ok then + return + end end vim.api.nvim_create_augroup("_winbar", {}) -if vim.fn.has("nvim-0.8") == 1 then - vim.api.nvim_create_autocmd( - { "CursorHoldI", "CursorHold", "BufWinEnter", "BufFilePost", "InsertEnter", "BufWritePost", "TabClosed" }, - { - group = "_winbar", - callback = function() - if active then - local status_ok, _ = pcall(vim.api.nvim_buf_get_var, 0, "lsp_floating_window") - if not status_ok then - -- TODO: - get_winbar() - end - end - end, - } - ) +if vim.fn.has "nvim-0.8" == 1 then + vim.api.nvim_create_autocmd( + { "CursorHoldI", "CursorHold", "BufWinEnter", "BufFilePost", "InsertEnter", "BufWritePost", "TabClosed" }, + { + group = "_winbar", + callback = function() + if active then + local status_ok, _ = pcall(vim.api.nvim_buf_get_var, 0, "lsp_floating_window") + if not status_ok then + -- TODO: + get_winbar() + end + end + end, + } + ) end