basic surgery

This commit is contained in:
wires 2025-03-05 09:03:20 -05:00
parent e3ad1d08f6
commit 3e4b37345d
Signed by: wires
SSH key fingerprint: SHA256:9GtP+M3O2IivPDlw1UY872UPUuJH2gI0yG6ExBxaaiM
63 changed files with 263 additions and 755 deletions

View file

@ -1,9 +1,31 @@
if vim.fn.has('nvim-0.11') == 0 then local cosmic_modules = {
error('Need Neovim v0.11+ (Nightly) in order to run Cosmic!') 'core.editor',
end 'core.pluginsInit',
'core.commands',
'lsp',
-- load mappings only after editor configs are loaded
'core.mappings',
}
local ok, err = pcall(require, 'cosmic') -- set up lazy.nvim to install plugins
local lazypath = vim.fn.stdpath('data') .. '/lazy/lazy.nvim'
if not ok then if not vim.uv.fs_stat(lazypath) then
error(('Error loading core...\n\n%s'):format(err)) vim.fn.system({
'git',
'clone',
'--filter=blob:none',
'--single-branch',
'https://github.com/folke/lazy.nvim.git',
lazypath,
})
end
vim.opt.runtimepath:prepend(lazypath)
-- set up cosmicnvim
for _, mod in ipairs(cosmic_modules) do
local ok, err = pcall(require, mod)
-- config files may or may not be present
if not ok then
error(('Error loading %s...\n\n%s'):format(mod, err))
end
end end

View file

@ -7,6 +7,6 @@ vim.api.nvim_create_autocmd('VimResized', {
}) })
vim.cmd([[ vim.cmd([[
command! CosmicUpdate lua require('cosmic.utils.cosmic').update() command! CosmicUpdate lua require('utils.cosmic').update()
command! CosmicDisableFormatOnSave lua require('cosmic.utils.lsp').toggle_format_on_save() command! CosmicDisableFormatOnSave lua require('utils.lsp').toggle_format_on_save()
]]) ]])

View file

@ -1,4 +1,4 @@
local map = require('cosmic.utils').set_keymap local map = require('utils').set_keymap
-- Quickfix mappings -- Quickfix mappings
map('n', '<leader>ck', ':cexpr []<cr>', { desc = 'Clear list' }) map('n', '<leader>ck', ':cexpr []<cr>', { desc = 'Clear list' })

View file

@ -1,7 +1,7 @@
local u = require('cosmic.utils.cosmic') local u = require('utils.cosmic')
local user_config = require('cosmic.core.user') local user_config = require('core.user')
require('lazy').setup('cosmic.plugins', { require('lazy').setup('plugins', {
lockfile = u.get_install_dir() .. '/lazy-lock.json', lockfile = u.get_install_dir() .. '/lazy-lock.json',
defaults = { lazy = true }, defaults = { lazy = true },
ui = { ui = {

19
lua/core/user.lua Normal file
View file

@ -0,0 +1,19 @@
local config = {
border = 'none',
disable_builtin_plugins = {},
add_plugins = {},
plugins = {},
lsp = {
inlay_hint = false,
format_timeout = 500,
rename_notification = true,
-- table of callbacks pushed via plugins
on_attach_mappings = {},
},
}
function config.lsp.add_on_attach_mapping(callback)
table.insert(config.lsp.on_attach_mappings, callback)
end
return config

View file

@ -1,124 +0,0 @@
-- Override Cosmic configuration options
local config = {
-- See :h nvim_open_win for possible border options
border = 'rounded',
-- LSP settings
lsp = {
-- Enable/disable inlay hints
inlay_hint = false,
-- Time in MS before format timeout
format_timeout = 3000,
-- Set to false to disable rename notification
rename_notification = true,
-- Enable non-default servers, use default lsp config
-- Check here for configs that will be used by default: https://github.com/williamboman/nvim-lsp-installer/tree/main/lua/nvim-lsp-installer/servers
-- lsp servers that should be installed
ensure_installed = {
'rust_analyzer',
},
-- See Cosmic defaults cosmic/plugins/null-ls/init.lua and https://github.com/jose-elias-alvarez/null-ls.nvim/
-- If adding additional sources, be sure to also copy the defaults that you would like to preserve from cosmic/plugins/null-ls/init.lua
null_ls = {
-- Disable default list of sources provided by CosmicNvim
default_cosmic_sources = false,
--disable formatting
format_on_save = false,
-- Add additional sources here
get_sources = function()
local null_ls = require('null-ls')
return {
null_ls.builtins.diagnostics.shellcheck,
null_ls.builtins.diagnostics.actionlint.with({
condition = function()
local cwd = vim.fn.expand('%:p:.')
return cwd:find('.github/workflows')
end,
}),
}
end,
},
-- lsp servers that should be enabled
servers = {
-- Enable rust_analyzer
rust_analyzer = true,
-- Enable ts_ls w/custom settings
ts_ls = {
-- Disable formatting (defaults to true)
format_on_save = false,
-- OR add/override server options
opts = {
on_attach = function(client, bufnr) end,
flags = {
debounce_text_changes = 150,
},
settings = {},
},
},
},
},
-- adjust default plugin settings
plugins = {
-- See https://github.com/rmagatti/auto-session#%EF%B8%8F-configuration
auto_session = {},
-- https://github.com/numToStr/Comment.nvim#configuration-optional
comment_nvim = {},
-- See https://github.com/CosmicNvim/cosmic-ui#%EF%B8%8F-configuration
cosmic_ui = {},
-- See :h vim.diagnostic.config for all diagnostic configuration options
diagnostic = {},
-- See :h gitsigns-usage
gitsigns = {},
-- See https://github.com/nvim-lualine/lualine.nvim#default-configuration
lualine = {},
-- See https://github.com/L3MON4D3/LuaSnip/blob/577045e9adf325e58f690f4d4b4a293f3dcec1b3/README.md#config
luasnip = {},
-- See :h telescope.setup
telescope = {},
-- See https://github.com/folke/todo-comments.nvim#%EF%B8%8F-configuration
todo_comments = {},
-- See :h nvim-treesitter-quickstart
treesitter = {},
-- See :h cmp-usage
nvim_cmp = {},
-- See :h nvim-tree.setup
nvim_tree = {},
},
-- Disable plugins default enabled by CosmicNvim
disable_builtin_plugins = {
--[[
'auto-session',
'colorizer',
'comment-nvim',
'dashboard',
'fugitive',
'gitsigns',
'lualine',
'noice',
'nvim-cmp',
'nvim-tree',
'telescope',
'terminal',
'theme',
'todo-comments',
'treesitter',
]]
},
-- Add additional plugins (lazy.nvim)
add_plugins = {
'ggandor/lightspeed.nvim',
{
'romgrk/barbar.nvim',
dependencies = { 'nvim-tree/nvim-web-devicons' },
},
},
}
return config

View file

@ -1,31 +0,0 @@
-- Override Cosmic editor options
local g = vim.g
local map = require('cosmic.utils').set_keymap
local opt = vim.opt
-- Default leader is <space>
g.mapleader = ','
-- Default indent = 2
opt.shiftwidth = 4
opt.softtabstop = 4
opt.tabstop = 4
-- Add additional keymaps or disable existing ones
-- To view maps set, use `:Telescope keymaps`
-- or `:map`, `:map <leader>`
-- Example: Additional insert mapping:
map('i', 'jj', '<esc>')
-- Mapping options:
-- map('n', ...)
-- map('v', ...)
-- map('i', ...)
-- map('t', ...)
-- Example: Disable find files keymap
-- vim.keymap.del('n', '<leader>f')
-- See :h vim.keymap for more info

View file

@ -1,16 +0,0 @@
# Configuration
There are two main configuration files that you may want to create.
- cosmic/config/config.lua
- cosmic/config/editor.lua
Please look at the examples in this directory in order to get started.
## Quick Start
```bash
# from project root
cp ./lua/cosmic/config/examples/config.lua ./lua/cosmic/config/config.lua
cp ./lua/cosmic/config/examples/editor.lua ./lua/cosmic/config/editor.lua
```

View file

@ -1,32 +0,0 @@
local cosmic_modules = {
'cosmic.core.editor',
'cosmic.core.pluginsInit',
'cosmic.core.commands',
'cosmic.lsp',
'cosmic.config.editor',
-- load mappings only after editor configs are loaded
'cosmic.core.mappings',
}
-- set up lazy.nvim to install plugins
local lazypath = vim.fn.stdpath('data') .. '/lazy/lazy.nvim'
if not vim.uv.fs_stat(lazypath) then
vim.fn.system({
'git',
'clone',
'--filter=blob:none',
'--single-branch',
'https://github.com/folke/lazy.nvim.git',
lazypath,
})
end
vim.opt.runtimepath:prepend(lazypath)
-- set up cosmicnvim
for _, mod in ipairs(cosmic_modules) do
local ok, err = pcall(require, mod)
-- cosmic.config files may or may not be present
if not ok and not mod:find('cosmic.config') then
error(('Error loading %s...\n\n%s'):format(mod, err))
end
end

View file

@ -1,65 +0,0 @@
-- DEFAULT USER SETTINGS
local ok, user_config = pcall(require, 'cosmic.config.config')
if not ok then
user_config = {}
end
local default_config = {
border = 'rounded',
disable_builtin_plugins = {},
add_plugins = {},
plugins = {},
lsp = {
inlay_hint = false,
format_timeout = 500,
rename_notification = true,
-- table of callbacks pushed via plugins
on_attach_mappings = {},
-- lsp servers that should be installed
ensure_installed = {
'astro',
'cssls',
'eslint',
'eslint',
'gopls',
'graphql',
'html',
'jsonls',
'lua_ls',
'prettierd',
'pyright',
'svelte',
'tailwindcss',
'ts_ls',
'yamlls',
},
-- lsp servers that should be enabled
servers = {
astro = true,
tailwindcss = true,
eslint = true,
jsonls = {
format_on_save = false,
},
pyright = true,
lua_ls = {
format_on_save = false,
},
gopls = true,
html = true,
ts_ls = {
format_on_save = false,
},
},
},
}
local u = require('cosmic.utils')
local config = u.merge(default_config, user_config)
function config.lsp.add_on_attach_mapping(callback)
table.insert(config.lsp.on_attach_mappings, callback)
end
return config

View file

@ -1 +0,0 @@
require('cosmic.core')

View file

@ -1,14 +0,0 @@
local defaults = require('cosmic.lsp.servers.defaults')
local can_format_on_save = require('cosmic.utils.lsp').can_client_format_on_save
return {
on_attach = function(client, bufnr)
defaults.on_attach(client, bufnr)
if can_format_on_save(client) then
vim.api.nvim_create_autocmd('BufWritePre', {
buffer = bufnr,
command = 'EslintFixAll',
group = defaults.augroup,
})
end
end,
}

View file

@ -1,34 +0,0 @@
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 {
settings = {
python = {
analysis = {
typeCheckingMode = 'off',
useLibraryCodeForTypes = true,
completeFunctionParens = true,
},
},
},
before_init = function(_, config)
config.settings.python.pythonPath = get_python_path(config.root_dir)
end,
}

View file

@ -1,47 +0,0 @@
return {
'williamboman/mason-lspconfig.nvim',
config = function()
local user_config = require('cosmic.core.user')
require('mason').setup({
ui = {
border = user_config.border,
},
})
require('mason-lspconfig').setup({
ensure_installed = user_config.lsp.ensure_installed,
})
-- set up lsp servers
local u = require('cosmic.utils')
local default_config = require('cosmic.lsp.servers.defaults')
local lspconfig = require('lspconfig')
local start_server = function(server)
local server_config = default_config
-- set up default cosmic options
local ok, cosmic_server_config = pcall(require, 'cosmic.lsp.servers.' .. server)
if ok then
server_config = u.merge(server_config, cosmic_server_config)
end
-- override options if user defines them
if type(user_config.lsp.servers[server]) == 'table' and user_config.lsp.servers[server].opts ~= nil then
server_config = u.merge(server_config, user_config.lsp.servers[server].opts)
end
lspconfig[server].setup(server_config)
end
for config_server, config_opt in pairs(user_config.lsp.servers) do
if not config_opt == false then
start_server(config_server)
end
end
end,
dependencies = {
'williamboman/mason.nvim',
},
lazy = false,
--[[ event = 'BufEnter', ]]
}

View file

@ -1,72 +0,0 @@
local user_config = require('cosmic.core.user')
local u = require('cosmic.utils')
local map = require('cosmic.utils').set_keymap
return {
'folke/noice.nvim',
config = function()
local config = u.merge({
presets = {
lsp_doc_border = true,
long_message_to_split = true,
},
views = {
notify = {
merge = true,
},
},
messages = {
-- NOTE: If you enable messages, then the cmdline is enabled automatically.
-- This is a current Neovim limitation.
enabled = true, -- enables the Noice messages UI
view = 'mini', -- default view for messages
view_error = 'notify', -- view for errors
view_warn = 'notify', -- view for warnings
view_history = 'messages', -- view for :messages
view_search = 'virtualtext', -- view for search count messages. Set to `false` to disable
},
lsp = {
-- override markdown rendering so that **cmp** and other plugins use **Treesitter**
hover = {
enabled = true,
},
signature = {
enabled = true,
},
message = {
-- Messages shown by lsp servers
enabled = true,
view = 'mini',
opts = {},
},
override = {
['vim.lsp.util.convert_input_to_markdown_lines'] = true,
['vim.lsp.util.stylize_markdown'] = true,
['cmp.entry.get_documentation'] = true,
},
},
}, user_config.plugins.noice or {})
require('noice').setup(config)
map('n', '<c-j>', function()
if not require('noice.lsp').scroll(4) then
return '<c-j>'
end
end)
map('n', '<c-k>', function()
if not require('noice.lsp').scroll(-4) then
return '<c-k>'
end
end)
end,
event = 'VeryLazy',
dependencies = {
'MunifTanjim/nui.nvim',
{ 'rcarriga/nvim-notify', opts = {
timeout = 1000,
fps = 60,
} },
},
}

View file

@ -1,6 +0,0 @@
local user_config = require('cosmic.core.user')
return {
'neovim/nvim-lspconfig',
enabled = not vim.tbl_contains(user_config.disable_builtin_plugins, 'nvim-lspconfig'),
}

View file

@ -1,63 +0,0 @@
local user_config = require('cosmic.core.user')
local icons = require('cosmic.utils.icons')
local u = require('cosmic.utils')
-- set up args
local args = {
respect_buf_cwd = true,
diagnostics = {
enable = true,
show_on_dirs = true,
icons = {
hint = icons.hint,
info = icons.info,
warning = icons.warn,
error = icons.error,
},
},
update_focused_file = {
enable = true,
},
view = {
width = 40,
number = true,
relativenumber = true,
},
git = {
ignore = true,
},
renderer = {
highlight_git = true,
special_files = {},
icons = {
glyphs = {
default = '',
symlink = icons.symlink,
git = icons.git,
folder = icons.folder,
},
},
},
}
return {
'kyazdani42/nvim-tree.lua',
config = function()
require('nvim-tree').setup(u.merge(args, user_config.plugins.nvim_tree or {}))
end,
init = function()
local map = require('cosmic.utils').set_keymap
map('n', '<C-n>', ':NvimTreeToggle<CR>', { desc = 'Toggle Tree' })
map('n', '<leader>nt', ':NvimTreeToggle<CR>', { desc = 'Toggle Tree' })
map('n', '<leader>nr', ':NvimTreeRefresh<CR>', { desc = 'Refresh Tree' })
end,
cmd = {
'NvimTreeClipboard',
'NvimTreeFindFile',
'NvimTreeOpen',
'NvimTreeRefresh',
'NvimTreeToggle',
},
enabled = not vim.tbl_contains(user_config.disable_builtin_plugins, 'nvim-tree'),
}

View file

@ -1,18 +0,0 @@
local user_config = require('cosmic.core.user')
local u = require('cosmic.utils')
return {
'Equilibris/nx.nvim',
dependencies = {
'nvim-telescope/telescope.nvim',
},
opts = u.merge({
-- See below for config options
nx_cmd_root = 'yarn nx',
}, user_config.plugins.nx or {}),
-- Plugin will load when you use these keys
keys = {
{ '<leader>nx', '<cmd>Telescope nx actions<CR>', desc = 'nx actions' },
},
enabled = not vim.tbl_contains(user_config.disable_builtin_plugins, 'nx'),
}

View file

@ -1,11 +0,0 @@
local M = {}
M.project_files = function()
local opts = {} -- define here if you want to define something
local ok = pcall(require('telescope.builtin').git_files, opts)
if not ok then
require('telescope.builtin').find_files(opts)
end
end
return M

View file

@ -1,2 +0,0 @@
local user_config = require('cosmic.core.user')
return user_config.add_plugins

View file

@ -1,84 +0,0 @@
local icons = {
rounded_left_filled = '',
rounded_right_filled = '',
arrow_left_filled = '', -- e0b2
arrow_right_filled = '', -- e0b0
arrow_left = '', -- e0b3
arrow_right = '', -- e0b1
ghost = '',
cosmic = '💫',
star = '',
scorpio = '♏︎',
rocket = '🚀',
warn = '',
info = '',
error = '',
hint = '',
perf = '',
note = '',
branch = '',
file = '',
dotdotdot = '',
information = '',
symlink = '',
line_number = '',
debug = '',
flame = '',
check = '',
trace = '',
file1 = '',
file2 = '',
clock = '',
word = '',
diff_add = '',
diff_modified = '',
diff_remove = '',
git = {
unstaged = '',
staged = '',
unmerged = '',
renamed = '',
untracked = '',
deleted = '',
ignored = '',
},
folder = {
arrow_open = '',
arrow_closed = '',
default = '',
open = '',
empty = '',
empty_open = '',
symlink = '',
symlink_open = '',
},
kind_icons = {
Text = '',
Method = 'm',
Function = '',
Constructor = '',
Field = '',
Variable = '',
Class = '',
Interface = '',
Module = '',
Property = '',
Unit = '',
Value = '',
Enum = '',
Keyword = '',
Snippet = '',
Color = '',
File = '',
Reference = '',
Folder = '',
EnumMember = '',
Constant = '',
Struct = '',
Event = '',
Operator = '',
TypeParameter = '',
},
}
return icons

View file

@ -1,4 +1,4 @@
local user_config = require('cosmic.core.user') local user_config = require('core.user')
local found = false local found = false
for _, plugin in ipairs(user_config.add_plugins) do for _, plugin in ipairs(user_config.add_plugins) do

View file

@ -1,6 +1,6 @@
local u = require('cosmic.utils') local u = require('utils')
local icons = require('cosmic.utils.icons') local icons = require('utils.icons')
local user_config = require('cosmic.core.user') local user_config = require('core.user')
local function format_diagnostic(diagnostic) local function format_diagnostic(diagnostic)
local icon = icons.error local icon = icons.error

View file

@ -1,4 +1,4 @@
require('cosmic.lsp.diagnostics') require('lsp.diagnostics')
require('cosmic.lsp.commands') require('lsp.commands')
-- LSP server initialization can be found in mason-lspconfig setup -- LSP server initialization can be found in mason-lspconfig setup

View file

@ -1,5 +1,5 @@
local utils = require('cosmic.utils') local utils = require('utils')
local lsp_utils = require('cosmic.utils.lsp') local lsp_utils = require('utils.lsp')
local M = {} local M = {}
-- Mappings. -- Mappings.
@ -57,7 +57,7 @@ function M.init(client, bufnr)
buf_map( buf_map(
'n', 'n',
'<leader>lwl', '<leader>lwl',
'<cmd>lua require("cosmic.utils.logger"):log(vim.inspect(vim.lsp.buf.list_workspace_folders()))<cr>', '<cmd>lua require("utils.logger"):log(vim.inspect(vim.lsp.buf.list_workspace_folders()))<cr>',
{ desc = 'Show workspace folders' } { desc = 'Show workspace folders' }
) )
end end

5
lua/lsp/servers.lua Normal file
View file

@ -0,0 +1,5 @@
return {
'eslint',
'lua_ls',
'ts_ls'
}

View file

@ -1,9 +1,9 @@
local M = {} local M = {}
local augroup_name = 'CosmicNvimLspFormat' local augroup_name = 'CosmicNvimLspFormat'
local user_config = require('cosmic.core.user') local user_config = require('core.user')
local u = require('cosmic.utils') local u = require('utils')
local lsp_utils = require('cosmic.utils.lsp') local lsp_utils = require('utils.lsp')
local lsp_mappings = require('cosmic.lsp.mappings') local lsp_mappings = require('lsp.mappings')
M.augroup = vim.api.nvim_create_augroup(augroup_name, { clear = true }) M.augroup = vim.api.nvim_create_augroup(augroup_name, { clear = true })
@ -24,7 +24,7 @@ function M.on_attach(client, bufnr)
if client.supports_method('textDocument/formatting') then if client.supports_method('textDocument/formatting') then
-- set up :LspFormat for clients that are capable -- set up :LspFormat for clients that are capable
vim.cmd( vim.cmd(
string.format("command! -nargs=? LspFormat lua require('cosmic.utils.lsp').buf_format(%s, <q-args>)", bufnr) string.format("command! -nargs=? LspFormat lua require('utils.lsp').buf_format(%s, <q-args>)", bufnr)
) )
-- set up auto format on save -- set up auto format on save
@ -34,15 +34,10 @@ function M.on_attach(client, bufnr)
}) })
vim.api.nvim_create_autocmd('BufWritePre', { vim.api.nvim_create_autocmd('BufWritePre', {
callback = function() callback = function()
if lsp_utils.format_on_save_enabled then
vim.lsp.buf.format({ vim.lsp.buf.format({
timeout_ms = user_config.lsp.format_timeout, timeout_ms = user_config.lsp.format_timeout,
bufnr = bufnr, bufnr = bufnr,
filter = function()
return lsp_utils.can_client_format_on_save(client)
end,
}) })
end
end, end,
buffer = bufnr, buffer = bufnr,
group = M.augroup, group = M.augroup,

View file

@ -0,0 +1,12 @@
local defaults = require('lsp.servers.defaults')
return {
on_attach = function(client, bufnr)
defaults.on_attach(client, bufnr)
vim.api.nvim_create_autocmd('BufWritePre', {
buffer = bufnr,
command = 'EslintFixAll',
group = defaults.augroup,
})
end,
}

View file

@ -1,5 +1,5 @@
local user_config = require('cosmic.core.user') local user_config = require('core.user')
local u = require('cosmic.utils') local u = require('utils')
return { return {
'windwp/nvim-autopairs', 'windwp/nvim-autopairs',

View file

@ -1,5 +1,5 @@
local user_config = require('cosmic.core.user') local user_config = require('core.user')
local u = require('cosmic.utils') local u = require('utils')
local defaults = { local defaults = {
pre_save_cmds = { 'NvimTreeClose', 'cclose', 'lua vim.notify.dismiss()' }, pre_save_cmds = { 'NvimTreeClose', 'cclose', 'lua vim.notify.dismiss()' },
@ -15,7 +15,7 @@ return {
require('auto-session').setup(u.merge(defaults, user_config.plugins.auto_session or {})) require('auto-session').setup(u.merge(defaults, user_config.plugins.auto_session or {}))
end, end,
init = function() init = function()
require('cosmic.plugins.auto-session.mappings') require('plugins.auto-session.mappings')
end, end,
enabled = not vim.tbl_contains(user_config.disable_builtin_plugins, 'auto-session'), enabled = not vim.tbl_contains(user_config.disable_builtin_plugins, 'auto-session'),
} }

View file

@ -1,4 +1,4 @@
local map = require('cosmic.utils').set_keymap local map = require('utils').set_keymap
-- session -- session
map('n', '<leader>sl', '<cmd>silent RestoreSession<cr>', { desc = 'Restore session' }) map('n', '<leader>sl', '<cmd>silent RestoreSession<cr>', { desc = 'Restore session' })
@ -6,6 +6,6 @@ map('n', '<leader>ss', '<cmd>SaveSession<cr>', { desc = 'Save session' })
map( map(
'n', 'n',
'<leader>si', '<leader>si',
'<cmd>lua require("cosmic.utils.logger"):log("Session name: " .. require("auto-session-library").current_session_name())<cr>', '<cmd>lua require("utils.logger"):log("Session name: " .. require("auto-session-library").current_session_name())<cr>',
{ desc = 'Print session' } { desc = 'Print session' }
) )

View file

@ -1,5 +1,5 @@
local user_config = require('cosmic.core.user') local user_config = require('core.user')
local u = require('cosmic.utils') local u = require('utils')
return { return {
'norcalli/nvim-colorizer.lua', 'norcalli/nvim-colorizer.lua',

View file

@ -1,5 +1,5 @@
local user_config = require('cosmic.core.user') local user_config = require('core.user')
local u = require('cosmic.utils') local u = require('utils')
return { return {
'numToStr/Comment.nvim', 'numToStr/Comment.nvim',

View file

@ -1,5 +1,5 @@
local user_config = require('cosmic.core.user') local user_config = require('core.user')
local utils = require('cosmic.utils') local utils = require('utils')
local defaults = { local defaults = {
border_style = 'rounded', border_style = 'rounded',

View file

@ -1,5 +1,5 @@
local user_config = require('cosmic.core.user') local user_config = require('core.user')
local icons = require('cosmic.utils.icons') local icons = require('utils.icons')
local g = vim.g local g = vim.g
return { return {
@ -12,7 +12,7 @@ return {
g.dashboard_custom_section = { g.dashboard_custom_section = {
find_file = { find_file = {
description = { icons.file1 .. ' Find File <leader>ff' }, description = { icons.file1 .. ' Find File <leader>ff' },
command = 'lua require("cosmic.plugins.telescope.mappings").project_files()', command = 'lua require("plugins.telescope.mappings").project_files()',
}, },
file_explorer = { file_explorer = {
description = { icons.file2 .. ' File Manager <C-n> ' }, description = { icons.file2 .. ' File Manager <C-n> ' },

View file

@ -1,4 +1,4 @@
local user_config = require('cosmic.core.user') local user_config = require('core.user')
return { return {
'tpope/vim-fugitive', 'tpope/vim-fugitive',
cmd = 'Git', cmd = 'Git',

View file

@ -1,5 +1,5 @@
local user_config = require('cosmic.core.user') local user_config = require('core.user')
local u = require('cosmic.utils') local u = require('utils')
return { return {
'lewis6991/gitsigns.nvim', 'lewis6991/gitsigns.nvim',

View file

@ -1,4 +1,4 @@
local user_config = require('cosmic.core.user') local user_config = require('core.user')
return { return {
'folke/lazydev.nvim', 'folke/lazydev.nvim',
ft = 'lua', -- only load on lua files ft = 'lua', -- only load on lua files

View file

@ -1,7 +1,7 @@
local user_config = require('cosmic.core.user') local user_config = require('core.user')
local utils = require('cosmic.utils') local utils = require('utils')
local lsp_utils = require('cosmic.utils.lsp') local lsp_utils = require('utils.lsp')
local icons = require('cosmic.utils.icons') local icons = require('utils.icons')
local custom_sections = { local custom_sections = {
branch = { 'b:gitsigns_head', icon = icons.branch }, branch = { 'b:gitsigns_head', icon = icons.branch },
@ -136,6 +136,5 @@ return {
end, end,
}) })
end, end,
dependencies = { 'nvim-tree/nvim-web-devicons' },
enabled = not vim.tbl_contains(user_config.disable_builtin_plugins, 'lualine'), enabled = not vim.tbl_contains(user_config.disable_builtin_plugins, 'lualine'),
} }

View file

@ -1,5 +1,5 @@
local user_config = require('cosmic.core.user') local user_config = require('core.user')
local u = require('cosmic.utils') local u = require('utils')
return { return {
'nvimtools/none-ls.nvim', 'nvimtools/none-ls.nvim',
@ -8,7 +8,7 @@ return {
'gbprod/none-ls-shellcheck.nvim', 'gbprod/none-ls-shellcheck.nvim',
}, },
config = function() config = function()
local defaults = require('cosmic.lsp.servers.defaults') local defaults = require('lsp.servers.defaults')
local null_ls = require('null-ls') local null_ls = require('null-ls')
local config_opts = u.merge({ local config_opts = u.merge({
default_cosmic_sources = true, default_cosmic_sources = true,

View file

@ -1,7 +1,7 @@
local cmp = require('cmp') local cmp = require('cmp')
local u = require('cosmic.utils') local u = require('utils')
local user_config = require('cosmic.core.user') local user_config = require('core.user')
local icons = require('cosmic.utils.icons') local icons = require('utils.icons')
local cmp_autopairs = require('nvim-autopairs.completion.cmp') local cmp_autopairs = require('nvim-autopairs.completion.cmp')
local user_has_luasnip = not vim.tbl_contains(user_config.disable_builtin_plugins, 'luasnip') local user_has_luasnip = not vim.tbl_contains(user_config.disable_builtin_plugins, 'luasnip')

View file

@ -1,10 +1,10 @@
local user_config = require('cosmic.core.user') local user_config = require('core.user')
local u = require('cosmic.utils') local u = require('utils')
return { return {
'hrsh7th/nvim-cmp', 'hrsh7th/nvim-cmp',
config = function() config = function()
require('cosmic.plugins.nvim-cmp.config') require('plugins.nvim-cmp.config')
end, end,
dependencies = { dependencies = {
'hrsh7th/cmp-nvim-lsp', 'hrsh7th/cmp-nvim-lsp',

View file

@ -0,0 +1,26 @@
local user_config = require('core.user')
return {
'neovim/nvim-lspconfig',
config = function()
local u = require('utils')
local default_config = require('lsp.servers.defaults')
local lspconfig = require('lspconfig')
local start_server = function(server)
local server_config = default_config
local ok, cosmic_server_config = pcall(require, 'lsp.servers.' .. server)
if ok then
server_config = u.merge(server_config, cosmic_server_config)
end
lspconfig[server].setup(server_config)
end
for _, server in pairs(require('lsp.servers')) do
start_server(server)
end
end,
lazy = false,
}

View file

@ -1,7 +1,7 @@
local actions = require('telescope.actions') local actions = require('telescope.actions')
local user_config = require('cosmic.core.user') local user_config = require('core.user')
local icons = require('cosmic.utils.icons') local icons = require('utils.icons')
local u = require('cosmic.utils') local u = require('utils')
local default_mappings = { local default_mappings = {
n = { n = {
@ -49,7 +49,6 @@ local opts_flex = {
require('telescope').setup(u.merge({ require('telescope').setup(u.merge({
defaults = { defaults = {
prompt_prefix = '🔍 ',
selection_caret = icons.folder.arrow_closed, selection_caret = icons.folder.arrow_closed,
file_ignore_patterns = { file_ignore_patterns = {
'.git/', '.git/',
@ -79,7 +78,7 @@ require('telescope').setup(u.merge({
}, },
pickers = { pickers = {
buffers = u.merge(opts_flex, { buffers = u.merge(opts_flex, {
prompt_title = 'Search Buffers', prompt_title = 'Search Buffers',
mappings = u.merge({ mappings = u.merge({
n = { n = {
['d'] = actions.delete_buffer, ['d'] = actions.delete_buffer,
@ -111,7 +110,7 @@ require('telescope').setup(u.merge({
mappings = default_mappings, mappings = default_mappings,
}), }),
find_files = u.merge(opts_flex, { find_files = u.merge(opts_flex, {
prompt_title = 'Search Project', prompt_title = 'Search Project',
mappings = default_mappings, mappings = default_mappings,
hidden = true, hidden = true,
}), }),
@ -119,16 +118,16 @@ require('telescope').setup(u.merge({
mappings = default_mappings, mappings = default_mappings,
}), }),
git_files = u.merge(opts_flex, { git_files = u.merge(opts_flex, {
prompt_title = 'Search Git Project', prompt_title = 'Search Git Project',
mappings = default_mappings, mappings = default_mappings,
hidden = true, hidden = true,
}), }),
live_grep = u.merge(opts_flex, { live_grep = u.merge(opts_flex, {
prompt_title = 'Live Grep', prompt_title = 'Live Grep',
mappings = default_mappings, mappings = default_mappings,
}), }),
grep_string = u.merge(opts_vertical, { grep_string = u.merge(opts_vertical, {
prompt_title = 'Grep String', prompt_title = 'Grep String',
mappings = default_mappings, mappings = default_mappings,
}), }),
}, },

View file

@ -1,4 +1,4 @@
local user_config = require('cosmic.core.user') local user_config = require('core.user')
return { return {
'nvim-telescope/telescope.nvim', 'nvim-telescope/telescope.nvim',
dependencies = { dependencies = {
@ -10,18 +10,14 @@ return {
}, },
}, },
config = function() config = function()
require('cosmic.plugins.telescope.config') require('plugins.telescope.config')
end, end,
init = function() init = function()
-- normal mappings -- normal mappings
local u = require('cosmic.utils') local u = require('utils')
local map = u.set_keymap local map = u.set_keymap
map('n', '<leader>ff', '', { map('n', '<leader>ff', ':Telescope find_files<cr>', { desc = 'Find project file' })
callback = require('cosmic.plugins.telescope.utils').project_files,
desc = 'Find file',
})
map('n', '<leader>fp', ':Telescope find_files<cr>', { desc = 'Find project file' })
map('n', '<leader>fk', ':Telescope buffers<cr>', { desc = 'Find buffer' }) map('n', '<leader>fk', ':Telescope buffers<cr>', { desc = 'Find buffer' })
map('n', '<leader>fs', ':Telescope live_grep<cr>', { desc = 'Grep string' }) map('n', '<leader>fs', ':Telescope live_grep<cr>', { desc = 'Grep string' })
map('n', '<leader>fw', ':Telescope grep_string<cr>', { desc = 'Grep current word' }) map('n', '<leader>fw', ':Telescope grep_string<cr>', { desc = 'Grep current word' })
@ -30,7 +26,7 @@ return {
map('n', '<leader>vc', ':Telescope git_commits<cr>', { desc = 'Git commits' }) map('n', '<leader>vc', ':Telescope git_commits<cr>', { desc = 'Git commits' })
map('n', '<leader>vg', ':Telescope git_status<cr>', { desc = 'Git status' }) map('n', '<leader>vg', ':Telescope git_status<cr>', { desc = 'Git status' })
user_config.lsp.add_on_attach_mapping(function(client, bufnr) user_config.lsp.add_on_attach_mapping(function(_, bufnr)
local buf_map = u.create_buf_map(bufnr) local buf_map = u.create_buf_map(bufnr)
buf_map('n', 'gd', '<cmd>Telescope lsp_definitions<cr>', { desc = 'Go to definition' }) buf_map('n', 'gd', '<cmd>Telescope lsp_definitions<cr>', { desc = 'Go to definition' })
@ -43,12 +39,4 @@ return {
end) end)
end, end,
cmd = { 'Telescope' }, cmd = { 'Telescope' },
keys = {
{
'<leader>ff',
'<cmd>lua require("cosmic.plugins.telescope.utils").project_files()<cr>',
desc = 'Find project file',
},
},
enabled = not vim.tbl_contains(user_config.disable_builtin_plugins, 'telescope'),
} }

View file

@ -1,6 +1,6 @@
local user_config = require('cosmic.core.user') local user_config = require('core.user')
local icons = require('cosmic.utils.icons') local icons = require('utils.icons')
local u = require('cosmic.utils') local u = require('utils')
return { return {
'folke/todo-comments.nvim', 'folke/todo-comments.nvim',

View file

@ -1,5 +1,5 @@
local user_config = require('cosmic.core.user') local user_config = require('core.user')
local map = require('cosmic.utils').set_keymap local map = require('utils').set_keymap
return { return {
'akinsho/toggleterm.nvim', 'akinsho/toggleterm.nvim',
config = function() config = function()
@ -14,7 +14,7 @@ return {
}, },
}, },
}) })
local terminal_utils = require('cosmic.plugins.toggleterm.utils') local terminal_utils = require('plugins.toggleterm.utils')
-- toggle terminals -- toggle terminals
map('n', '<leader>xx', ':ToggleTerm<CR>', { desc = 'Toggle Terminal' }) map('n', '<leader>xx', ':ToggleTerm<CR>', { desc = 'Toggle Terminal' })
@ -29,7 +29,7 @@ return {
map('n', '<leader>xr', ':ToggleTermSetName<CR>', { desc = 'Rename terminal', buffer = 0 }) map('n', '<leader>xr', ':ToggleTermSetName<CR>', { desc = 'Rename terminal', buffer = 0 })
-- terminal only mappings -- terminal only mappings
vim.cmd("autocmd! TermOpen term://* lua require('cosmic.plugins.toggleterm.utils').set_terminal_keymaps()") vim.cmd("autocmd! TermOpen term://* lua require('plugins.toggleterm.utils').set_terminal_keymaps()")
end, end,
lazy = false, lazy = false,
} }

View file

@ -1,5 +1,5 @@
local M = {} local M = {}
local map = require('cosmic.utils').set_keymap local map = require('utils').set_keymap
local Terminal = require('toggleterm.terminal').Terminal local Terminal = require('toggleterm.terminal').Terminal
function M.new_terminal() function M.new_terminal()

View file

@ -1,5 +1,5 @@
local user_config = require('cosmic.core.user') local user_config = require('core.user')
local u = require('cosmic.utils') local u = require('utils')
local config = u.merge({ local config = u.merge({

View file

@ -1,10 +1,10 @@
local user_config = require('cosmic.core.user') local user_config = require('core.user')
return { return {
{ -- color scheme { -- color scheme
'folke/tokyonight.nvim', 'folke/tokyonight.nvim',
lazy = false, lazy = false,
config = function() config = function()
local config = require('cosmic.plugins.tokyonight.config') local config = require('plugins.tokyonight.config')
require('tokyonight').setup(config) require('tokyonight').setup(config)
vim.cmd('color tokyonight') vim.cmd('color tokyonight')
end, end,

View file

@ -1,5 +1,5 @@
local user_config = require('cosmic.core.user') local user_config = require('core.user')
local u = require('cosmic.utils') local u = require('utils')
local defaults = { local defaults = {
ensure_installed = { ensure_installed = {

View file

@ -0,0 +1,2 @@
local user_config = require('core.user')
return user_config.add_plugins

View file

@ -1,4 +1,4 @@
local user_config = require('cosmic.core.user') local user_config = require('core.user')
return { return {
'folke/which-key.nvim', 'folke/which-key.nvim',
config = function() config = function()

81
lua/utils/icons.lua Normal file
View file

@ -0,0 +1,81 @@
local icons = {
rounded_left_filled = "",
rounded_right_filled = "",
arrow_left_filled = "", -- e0b2
arrow_right_filled = "", -- e0b0
arrow_left = "", -- e0b3
arrow_right = "", -- e0b1
ghost = "",
rocket = "🚀",
warn = "",
info = "",
error = "",
hint = "󰌵",
perf = "󰄭",
note = "󰎚",
branch = "",
file = "",
dotdotdot = "",
information = "",
symlink = "",
line_number = "",
debug = "",
flame = "",
check = "",
trace = "",
file1 = "",
file2 = "",
clock = "",
word = "",
diff_add = "",
diff_modified = "",
diff_remove = "",
git = {
unstaged = "",
staged = "",
unmerged = "",
renamed = "",
untracked = "",
deleted = "",
ignored = "",
},
folder = {
arrow_open = "",
arrow_closed = "",
default = "",
open = "",
empty = "",
empty_open = "",
symlink = "",
symlink_open = "",
},
kind_icons = {
Text = "",
Method = "m",
Function = "󰊕",
Constructor = "",
Field = "",
Variable = "",
Class = "",
Interface = "",
Module = "",
Property = "",
Unit = "",
Value = "󱨉",
Enum = "",
Keyword = "",
Snippet = "",
Color = "",
File = "",
Reference = "",
Folder = "",
EnumMember = "",
Constant = "",
Struct = "",
Event = "",
Operator = "",
TypeParameter = "󰫧",
},
}
return icons

View file

@ -1,28 +1,8 @@
local user_config = require('cosmic.core.user') local user_config = require('core.user')
local M = {} local M = {}
M.format_on_save_enabled = true M.format_on_save_enabled = true
function M.can_client_format_on_save(client)
local user_server_config = user_config.lsp.servers[client.name]
-- formatting enabled by default if server=true
if user_server_config == true then
return true
end
-- check config server settings
if user_server_config then
-- default to true if no format flag on server settings is set
if user_server_config.format_on_save == nil then
return true
end
-- check format flag on server settings
return user_server_config.format_on_save == true
end
return true
end
function M.toggle_format_on_save() function M.toggle_format_on_save()
M.format_on_save_enabled = not M.format_on_save_enabled M.format_on_save_enabled = not M.format_on_save_enabled
vim.notify(string.format('Format on save: %s', M.format_on_save_enabled)) vim.notify(string.format('Format on save: %s', M.format_on_save_enabled))