Initial commit
This commit is contained in:
168
nvim/lua/darcula/setup/100_coc.lua
Normal file
168
nvim/lua/darcula/setup/100_coc.lua
Normal file
@@ -0,0 +1,168 @@
|
||||
-- The MIT License (MIT)
|
||||
--
|
||||
-- Copyright © 2026 Scott E. Graves <scott.e.graves@protonmail.com>
|
||||
--
|
||||
-- Permission is hereby granted, free of charge, to any person obtaining a copy of this software
|
||||
-- and associated documentation files (the “Software”), to deal in the Software without restriction,
|
||||
-- including without limitation the rights to use, copy, modify, merge, publish, distribute,
|
||||
-- sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
|
||||
-- furnished to do so, subject to the following conditions:
|
||||
--
|
||||
-- The above copyright notice and this permission notice shall be included in all copies or
|
||||
-- substantial portions of the Software.
|
||||
--
|
||||
-- THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
|
||||
-- BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
-- NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
||||
-- DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
-- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
--
|
||||
if not NV_DARCULA_ENABLE_COC then
|
||||
return
|
||||
end
|
||||
|
||||
require("darcula.utils.table")
|
||||
|
||||
local coc_config = vim.fn["coc#config"]
|
||||
local utils = require("darcula.utils")
|
||||
local utils_os = require("darcula.utils.os")
|
||||
|
||||
utils.copy_file(
|
||||
utils.iff(
|
||||
utils_os.is_windows,
|
||||
vim.fs.joinpath(vim.fn.stdpath("config"), "coc-settings.windows.json"),
|
||||
vim.fs.joinpath(vim.fn.stdpath("config"), "coc-settings.unix.json")
|
||||
),
|
||||
vim.fs.joinpath(vim.fn.stdpath("config"), "coc-settings.json")
|
||||
)
|
||||
|
||||
vim.g.coc_data_home = vim.fs.joinpath(vim.fn.stdpath("data"), "coc")
|
||||
|
||||
-- local coc_get_config = vim.fn["coc#util#get_config"]
|
||||
-- M.plug_end = function(lua_library_list)
|
||||
-- utils.augroup_with_autocmd(
|
||||
-- "coc_config_lua_cfg",
|
||||
-- "User",
|
||||
-- "CocNvimInit",
|
||||
-- function()
|
||||
-- local workspace = coc_get_config("Lua").workspace or {}
|
||||
-- local library = workspace.library or {}
|
||||
--
|
||||
-- for _, name in pairs(lua_library_list) do
|
||||
-- local lib = vim.fs.joinpath(vim.g.plug_home, name, "lua")
|
||||
-- if not table.contains(library, lib) then
|
||||
-- table.insert(library, lib)
|
||||
-- end
|
||||
-- end
|
||||
--
|
||||
-- table.insert(library, "/usr/share/awesome/lib")
|
||||
--
|
||||
-- coc_config("Lua.workspace", {library = library})
|
||||
-- end
|
||||
-- )
|
||||
-- end
|
||||
|
||||
local symbols = require("darcula.utils.symbols")
|
||||
|
||||
vim.g.coc_global_extensions = NV_DARCULA_COC_EXTENSIONS
|
||||
vim.g.coc_snippet_next = "<tab>"
|
||||
vim.g.coc_snippet_prev = "<s-tab>"
|
||||
|
||||
local float_config = {
|
||||
winblend = 0,
|
||||
border = true,
|
||||
rounded = true,
|
||||
maxWidth = 120
|
||||
}
|
||||
coc_config("Lua.codeLens.enable", NV_DARCULA_ENABLE_CODE_LENS)
|
||||
coc_config("Lua.completion.callSnippet", "Replace")
|
||||
coc_config("Lua.diagnostics.globals", NV_DARCULA_LUA_GLOBALS)
|
||||
coc_config("Lua.diagnostics.workspaceDelay", 30000)
|
||||
coc_config("Lua.hint.enable", NV_DARCULA_ENABLE_INLAY_HINTS)
|
||||
coc_config("Lua.telemetry.enable", false)
|
||||
coc_config("Lua.workspace.checkThirdParty", false)
|
||||
coc_config("Lua.workspace.maxPreload", 10000)
|
||||
coc_config("Lua.workspace.preloadFileSize", 3000)
|
||||
coc_config("cSpell.enabledLanguageIds", NV_DARCULA_CSPELL_LANGUAGES)
|
||||
coc_config("cSpell.import", {"./"})
|
||||
coc_config("clangd.arguments", NV_DARCULA_CLANGD_ARGS)
|
||||
if utils_os.is_windows then
|
||||
coc_config("clangd.path", "c:\\bin\\clangd.cmd")
|
||||
end
|
||||
coc_config("clangd.inlayHint.enable", NV_DARCULA_ENABLE_INLAY_HINTS)
|
||||
coc_config("coc.preferences.colorSupport", false)
|
||||
coc_config("coc.preferences.maxFileSize", "10MB")
|
||||
coc_config("codeLens.enable", NV_DARCULA_ENABLE_CODE_LENS)
|
||||
coc_config("diagnostic.enableHighlightLineNumber", true)
|
||||
coc_config("diagnostic.errorSign", symbols.line.errors)
|
||||
coc_config("diagnostic.floatConfig", float_config)
|
||||
coc_config("diagnostic.hintSign", symbols.line.hints)
|
||||
coc_config("diagnostic.infoSign", symbols.line.info)
|
||||
coc_config("diagnostic.level", "hint")
|
||||
coc_config("diagnostic.virtualText", NV_DARCULA_ENABLE_VIRTUAL_TEXT)
|
||||
coc_config("diagnostic.virtualTextPrefix", symbols.line.info .. " ")
|
||||
coc_config("diagnostic.warningSign", symbols.line.warnings)
|
||||
coc_config("highlight.colorNames.enable", false)
|
||||
coc_config("highlight.colors.enable", false)
|
||||
coc_config("highlight.document.enable", false)
|
||||
coc_config("hover.autoHide", false)
|
||||
coc_config("hover.floatConfig", float_config)
|
||||
coc_config("inlayHint.display", NV_DARCULA_ENABLE_INLAY_HINTS)
|
||||
coc_config("inlayHint.enable", NV_DARCULA_ENABLE_INLAY_HINTS)
|
||||
coc_config("inlayHint.enableParameter", NV_DARCULA_ENABLE_INLAY_HINTS)
|
||||
coc_config("inlayHint.refreshOnInsertMode", NV_DARCULA_ENABLE_INLAY_HINTS)
|
||||
if not utils_os.is_windows then
|
||||
coc_config("jedi.executable.command", "jedi-language-server")
|
||||
end
|
||||
coc_config("java.import.maven.enabled", true)
|
||||
coc_config("java.jdt.ls.lombokSupport.enabled", true)
|
||||
coc_config(
|
||||
"java.jdt.ls.vmargs",
|
||||
"-XX:+UseParallelGC -XX:GCTimeRatio=4 -XX:AdaptiveSizePolicyWeight=90 -Dsun.zip.disableMemoryMapping=true -Xmx4G -Xms4G -Xlog:disable"
|
||||
)
|
||||
coc_config("java.maven.downloadSources", false)
|
||||
coc_config("java.maven.updateSnapshots", true)
|
||||
coc_config("java.referencesCodeLens.enabled", NV_DARCULA_ENABLE_CODE_LENS)
|
||||
coc_config("java.trace.server", "verbose")
|
||||
coc_config("lightbulb.enableSign", not NV_DARCULA_ENABLE_VIRTUAL_TEXT)
|
||||
coc_config("lightbulb.enableVirtualText", NV_DARCULA_ENABLE_VIRTUAL_TEXT)
|
||||
coc_config(
|
||||
"lightbulb.text",
|
||||
{default = symbols.status.info, quickfix = symbols.status.fix}
|
||||
)
|
||||
coc_config("notification.border", true)
|
||||
coc_config("notification.highlightGroup", "CocFloating")
|
||||
coc_config("notification.statusLineProgress", true)
|
||||
coc_config("notification.winblend", 0)
|
||||
coc_config("signature.floatConfig", float_config)
|
||||
coc_config("signature.hideOnTextChange", false)
|
||||
coc_config("suggest.floatConfig", float_config)
|
||||
coc_config("suggest.keepCompleteopt", true)
|
||||
coc_config("suggest.noselect", true)
|
||||
coc_config("suggest.virtualText", NV_DARCULA_ENABLE_VIRTUAL_TEXT)
|
||||
coc_config("sumneko-lua.enableNvimLuaDev", true)
|
||||
|
||||
coc_config(
|
||||
"languageserver",
|
||||
{
|
||||
vala = {
|
||||
command = "vala-language-server",
|
||||
filetypes = {"vala", "genie"}
|
||||
}
|
||||
}
|
||||
)
|
||||
|
||||
if utils_os.is_windows then
|
||||
coc_config(
|
||||
"sh.commandPath",
|
||||
vim.fs.joinpath(
|
||||
vim.g.coc_data_home,
|
||||
"extensions",
|
||||
"node_modules",
|
||||
"coc-sh",
|
||||
"node_modules",
|
||||
".bin",
|
||||
"bash-language-server.cmd"
|
||||
)
|
||||
)
|
||||
end
|
||||
Reference in New Issue
Block a user