diff --git a/ftplugin/cpp.lua b/ftplugin/cpp.lua new file mode 100644 index 0000000..74fc947 --- /dev/null +++ b/ftplugin/cpp.lua @@ -0,0 +1,51 @@ +-- local lspconfig_status_ok, lspconfig = pcall(require, "lspconfig") +-- if not lspconfig_status_ok then +-- return +-- end +-- +-- local status_ok, configs = pcall(require, "nvim-treesitter.configs") +-- if not status_ok then +-- return +-- end +-- +-- local mason_ok, mason_lsp = pcall(require, "mason-lspconfig") +-- if not mason_ok then +-- return +-- end +-- +-- mason_lsp.setup({ +-- ensure_installed = { "clangd" }, +-- automatic_installation = true, +-- }) +-- +-- lspconfig.clangd.setup({ +-- on_attach = require("user.lsp.handlers").on_attach, +-- capabilities = require("user.lsp.handlers").capabilities, +-- root_dir = require("lspconfig.util").root_pattern( +-- "build", +-- "compile_commands.json", +-- ".git", +-- "mvnw", +-- "gradlew", +-- "pom.xml", +-- "build.gradle" +-- ) or vim.loop.cwd() or vim.fn.getcwd(), +-- }) +-- +-- configs.setup({ +-- ensure_installed = { "cpp" }, -- pastikan parser TypeScript terinstal +-- highlight = { +-- enable = true, -- aktifkan highlight berbasis treesitter +-- additional_vim_regex_highlighting = false, +-- }, +-- rainbow = { +-- enable = false, +-- }, +-- incremental_selection = { enable = true }, +-- indent = { enable = true, disable = { "python", "css" } }, +-- autopairs = { +-- enable = true, +-- }, +-- }) +-- +-- require("nvim-ts-autotag").setup() diff --git a/ftplugin/kotlin.lua b/ftplugin/kotlin.lua index a7cd09d..c753d86 100644 --- a/ftplugin/kotlin.lua +++ b/ftplugin/kotlin.lua @@ -8,6 +8,21 @@ if not lspconfig_status_ok then return end +local status_ok, configs = pcall(require, "nvim-treesitter.configs") +if not status_ok then + return +end + +local mason_ok, mason_lsp = pcall(require, "mason-lspconfig") +if not mason_ok then + return +end + +mason_lsp.setup({ + ensure_installed = { "kotlin_language_server" }, + automatic_installation = true, +}) + lspconfig.kotlin_language_server.setup({ on_attach = require("user.lsp.handlers").on_attach, capabilities = require("user.lsp.handlers").capabilities, @@ -24,3 +39,21 @@ lspconfig.kotlin_language_server.setup({ ".git" ), }) + +configs.setup({ + ensure_installed = { "kotlin" }, -- pastikan parser TypeScript terinstal + highlight = { + enable = true, -- aktifkan highlight berbasis treesitter + additional_vim_regex_highlighting = false, + }, + rainbow = { + enable = false, + }, + incremental_selection = { enable = true }, + indent = { enable = true, disable = { "python", "css" } }, + autopairs = { + enable = true, + }, +}) + +require("nvim-ts-autotag").setup() diff --git a/ftplugin/typescriptreact.lua b/ftplugin/typescriptreact.lua index cf6ff46..ee27db9 100644 --- a/ftplugin/typescriptreact.lua +++ b/ftplugin/typescriptreact.lua @@ -3,61 +3,87 @@ if not lspconfig_status_ok then return end -lspconfig.tsserver.setup({ - on_attach = require("user.lsp.handlers").on_attach, - capabilities = require("user.lsp.handlers").capabilities, - -- add cmd - cmd = { "typescript-language-server", "--stdio" }, - -- add file type support - filetypes = { - "javascript", - "javascriptreact", - "javascript.jsx", - "typescript", - "typescriptreact", - "typescript.tsx", - }, - -- add dynamic root dir support - root_dir = require("lspconfig.util").root_pattern("package.json", "tsconfig.json", "jsconfig.json", ".git"), - init_options = { - hostInfo = "neovim", - }, -}) +local function idxOf(array, value) + for i, v in ipairs(array) do + if v == value then + return i + end + end + return nil +end -lspconfig.emmet_ls.setup({ - on_attach = require("user.lsp.handlers").on_attach, - capabilities = require("user.lsp.handlers").capabilities, - -- add cmd - cmd = { "emmet-ls", "-c", "--stdio" }, - -- add file type support - filetypes = { - "javascript", - "javascriptreact", - "javascript.jsx", - "typescript", - "typescriptreact", - "typescript.tsx", - }, - -- add dynamic root dir support - root_dir = require("lspconfig.util").root_pattern("package.json", "tsconfig.json", "jsconfig.json", ".git"), -}) +local unregis_lsp = {} +local data_ok, unregis = pcall(require, "core.config") +if data_ok then + if unregis.unregister_lsp ~= nil then + unregis_lsp = unregis.unregister_lsp + end +end -lspconfig.eslint.setup({ - on_attach = require("user.lsp.handlers").on_attach, - capabilities = require("user.lsp.handlers").capabilities, - -- add cmd - cmd = { "vscode-eslint-language-server", "--stdio" }, -- add file type support - filetypes = { - "javascript", - "javascriptreact", - "javascript.jsx", - "typescript", - "typescriptreact", - "typescript.tsx", - }, - -- add dynamic root dir support - root_dir = require("lspconfig.util").root_pattern("package.json", "tsconfig.json", "jsconfig.json", ".git"), -}) +local idxts = idxOf(unregis_lsp, "tsserver") +if idxts ~= nil then + lspconfig.tsserver.setup({ + on_attach = require("user.lsp.handlers").on_attach, + capabilities = require("user.lsp.handlers").capabilities, + -- add cmd + cmd = { "typescript-language-server", "--stdio" }, + -- add file type support + filetypes = { + "javascript", + "javascriptreact", + "javascript.jsx", + "typescript", + "typescriptreact", + "typescript.tsx", + }, + -- add dynamic root dir support + root_dir = require("lspconfig.util").root_pattern("package.json", "tsconfig.json", "jsconfig.json", ".git"), + init_options = { + hostInfo = "neovim", + }, + }) +end + +local idxemmet = idxOf(unregis_lsp, "emmet_ls") +if idxemmet ~= nil then + lspconfig.emmet_ls.setup({ + on_attach = require("user.lsp.handlers").on_attach, + capabilities = require("user.lsp.handlers").capabilities, + -- add cmd + cmd = { "emmet-ls", "-c", "--stdio" }, + -- add file type support + filetypes = { + "javascript", + "javascriptreact", + "javascript.jsx", + "typescript", + "typescriptreact", + "typescript.tsx", + }, + -- add dynamic root dir support + root_dir = require("lspconfig.util").root_pattern("package.json", "tsconfig.json", "jsconfig.json", ".git"), + }) +end + +local idxeslint = idxOf(unregis_lsp, "eslint") +if idxeslint ~= nil then + lspconfig.eslint.setup({ + on_attach = require("user.lsp.handlers").on_attach, + capabilities = require("user.lsp.handlers").capabilities, + -- add cmd + cmd = { "vscode-eslint-language-server", "--stdio" }, -- add file type support + filetypes = { + "javascript", + "javascriptreact", + "javascript.jsx", + "typescript", + "typescriptreact", + "typescript.tsx", + }, + -- add dynamic root dir support + root_dir = require("lspconfig.util").root_pattern("package.json", "tsconfig.json", "jsconfig.json", ".git"), + }) +end local status_ok, configs = pcall(require, "nvim-treesitter.configs") if not status_ok then