diff --git a/lua/cosmic/core/user.lua b/lua/cosmic/core/user.lua index a380468..1eac956 100644 --- a/lua/cosmic/core/user.lua +++ b/lua/cosmic/core/user.lua @@ -1,3 +1,4 @@ +-- DEFAULT USER SETTINGS local ok, user_config = pcall(require, 'cosmic.config.config') if not ok then @@ -16,6 +17,7 @@ local default_config = { jsonls = { format = false, }, + pyright = true, sumneko_lua = { format = false, }, diff --git a/lua/cosmic/lsp/providers/defaults.lua b/lua/cosmic/lsp/providers/defaults.lua index 39f3d55..33667d3 100644 --- a/lua/cosmic/lsp/providers/defaults.lua +++ b/lua/cosmic/lsp/providers/defaults.lua @@ -57,6 +57,6 @@ end M.autostart = true -M.single_file_mode = true +M.single_file_support = true return M diff --git a/lua/cosmic/lsp/providers/init.lua b/lua/cosmic/lsp/providers/init.lua index e26b0c9..3f72e47 100644 --- a/lua/cosmic/lsp/providers/init.lua +++ b/lua/cosmic/lsp/providers/init.lua @@ -58,6 +58,8 @@ lsp_installer.on_server_ready(function(server) opts = u.merge(opts, require('cosmic.lsp.providers.tsserver')) elseif server.name == 'jsonls' then opts = u.merge(opts, require('cosmic.lsp.providers.jsonls')) + elseif server.name == 'pyright' then + opts = u.merge(opts, require('cosmic.lsp.providers.pyright')) elseif server.name == 'sumneko_lua' then opts = u.merge(opts, require('cosmic.lsp.providers.sumneko_lua')) end diff --git a/lua/cosmic/lsp/providers/pyright.lua b/lua/cosmic/lsp/providers/pyright.lua new file mode 100644 index 0000000..c200baa --- /dev/null +++ b/lua/cosmic/lsp/providers/pyright.lua @@ -0,0 +1,25 @@ +local path = require('lspconfig/util').path + +local function get_python_path(workspace) + -- Use activated virtualenv. + if vim.env.VIRTUAL_ENV then + return path.join(vim.env.VIRTUAL_ENV, 'bin', 'python') + end + + -- Find and use virtualenv in workspace directory. + for _, pattern in ipairs({ '*', '.*' }) do + local match = vim.fn.glob(path.join(workspace, pattern, 'pyvenv.cfg')) + if match ~= '' then + return path.join(path.dirname(match), 'bin', 'python') + end + end + + -- Fallback to system Python. + return exepath('python3') or exepath('python') or 'python' +end + +return { + before_init = function(_, config) + config.settings.python.pythonPath = get_python_path(config.root_dir) + end, +}