Skip to content

Commit eb0037b

Browse files
committed
✨ Add comprehensive plugin integrations and AstroNvim support
Add comprehensive plugin integrations and AstroNvim support - Add AstroNvim integration files (astronvim-integration.lua, astronvim-integration-full.lua) with theme configuration, rainbow delimiters, and enhanced UI components - Add init.lua plugin configuration with extensive integration support for aerial, alpha, cmp, dap, gitsigns, and more - Add new plugin integrations: - aerial.lua: Code outline window with symbol highlighting - markdown.lua: Enhanced markdown syntax highlighting - ufo.lua: Better folding with custom fold indicators - window_picker.lua: Window selection styling - Update config.lua with expanded integration options including aliases for native_lsp, dap, symbols_outline and support for blink_cmp, snacks.nvim, and colorful_winsep - Update integrations/init.lua to load new plugin modules - Add AstroNvim documentation (README-astronvim.md) with installation methods and feature overview
1 parent 1e58593 commit eb0037b

File tree

10 files changed

+663
-2
lines changed

10 files changed

+663
-2
lines changed

README-astronvim.md

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
# SilkCircuit for AstroNvim
2+
3+
SilkCircuit integrates seamlessly with AstroNvim, just like any other community colorscheme.
4+
5+
## Installation
6+
7+
### Method 1: Simple (Recommended)
8+
9+
Add this to your `lua/community.lua`:
10+
11+
```lua
12+
return {
13+
"AstroNvim/astrocommunity",
14+
{ import = "astrocommunity.colorscheme.catppuccin" }, -- your other colorschemes
15+
{ "silkcircuit/silkcircuit-nvim", name = "silkcircuit" }, -- add SilkCircuit
16+
}
17+
```
18+
19+
Then set it as your colorscheme in `lua/plugins/astroui.lua`:
20+
21+
```lua
22+
return {
23+
"AstroNvim/astroui",
24+
---@type AstroUIOpts
25+
opts = {
26+
colorscheme = "silkcircuit",
27+
},
28+
}
29+
```
30+
31+
### Method 2: With Customization
32+
33+
If you want to customize the theme, create `lua/plugins/silkcircuit.lua`:
34+
35+
```lua
36+
return {
37+
"silkcircuit/silkcircuit-nvim",
38+
name = "silkcircuit",
39+
opts = {
40+
-- your custom options here
41+
styles = {
42+
comments = { italic = true },
43+
keywords = { bold = true },
44+
functions = { bold = true, italic = true },
45+
},
46+
},
47+
}
48+
```
49+
50+
That's it! SilkCircuit will automatically integrate with all your AstroNvim plugins.
51+
52+
## Features
53+
54+
- Full integration with all AstroNvim plugins
55+
- Automatic support for telescope, neo-tree, alpha dashboard, and more
56+
- Rainbow delimiters with cyberpunk colors
57+
- Optimized for readability with vibrant cyberpunk aesthetics
58+
59+
## Supported Integrations
60+
61+
All standard AstroNvim integrations are supported out of the box:
62+
63+
- aerial, alpha, cmp, dap, gitsigns, illuminate, indent-blankline
64+
- lualine, mason, neo-tree, notify, semantic tokens, telescope
65+
- treesitter, which-key, window-picker, and many more!
66+
67+
No additional configuration needed - it just works!

astronvim-integration-full.lua

Lines changed: 257 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,257 @@
1+
-- Full SilkCircuit theme integration for AstroNvim with all features
2+
-- Drop this file in ~/.config/nvim/lua/plugins/silkcircuit.lua
3+
4+
return {
5+
-- SilkCircuit theme with full configuration
6+
{
7+
"silkcircuit/silkcircuit-nvim",
8+
lazy = false,
9+
priority = 1000,
10+
config = function()
11+
require("silkcircuit").setup({
12+
compile = true,
13+
terminal_colors = true,
14+
integrations = {
15+
-- Core integrations
16+
treesitter = true,
17+
lsp = true,
18+
telescope = true,
19+
neotree = true,
20+
notify = true,
21+
which_key = true,
22+
dashboard = true,
23+
alpha = true,
24+
lualine = true,
25+
bufferline = true,
26+
gitsigns = true,
27+
indent_blankline = true,
28+
cmp = true,
29+
dap_ui = true,
30+
noice = true,
31+
hop = true,
32+
leap = true,
33+
rainbow_delimiters = true,
34+
},
35+
styles = {
36+
comments = { italic = true },
37+
keywords = { bold = true },
38+
functions = { bold = true, italic = true },
39+
variables = { italic = false },
40+
conditionals = { italic = true },
41+
loops = { italic = true },
42+
booleans = { bold = true },
43+
constants = { bold = true },
44+
},
45+
on_highlights = function(highlights, colors)
46+
-- Enhanced LSP highlights
47+
highlights.LspReferenceText = { bg = colors.bg_highlight }
48+
highlights.LspReferenceRead = { bg = colors.bg_highlight }
49+
highlights.LspReferenceWrite = { bg = colors.bg_highlight }
50+
51+
-- Better search highlighting
52+
highlights.Search = { bg = colors.glow_purple, fg = colors.bg }
53+
highlights.IncSearch = { bg = colors.glow_pink, fg = colors.bg }
54+
55+
-- Enhanced selection
56+
highlights.Visual = { bg = colors.purple_muted }
57+
58+
-- Popup menu styling
59+
highlights.Pmenu = { bg = colors.bg_popup, fg = colors.fg }
60+
highlights.PmenuSel = { bg = colors.glow_purple, fg = colors.bg }
61+
end,
62+
})
63+
end,
64+
},
65+
66+
-- Configure AstroUI with SilkCircuit theme
67+
{
68+
"AstroNvim/astroui",
69+
---@type AstroUIOpts
70+
opts = function()
71+
local get_hlgroup = require("astroui").get_hlgroup
72+
return {
73+
colorscheme = "silkcircuit",
74+
highlights = {
75+
init = {
76+
Normal = { bg = "NONE" }, -- Optional: transparency
77+
},
78+
silkcircuit = function(self)
79+
local colors = require("silkcircuit.palette").colors
80+
return {
81+
-- AstroNvim specific highlights
82+
StatusLine = { bg = colors.bg_highlight },
83+
StatusLineNC = { bg = colors.bg_dark },
84+
WinBar = { bg = "NONE" },
85+
WinBarNC = { bg = "NONE" },
86+
87+
-- Telescope enhancements
88+
TelescopePromptBorder = { fg = colors.glow_pink },
89+
TelescopeResultsBorder = { fg = colors.purple },
90+
TelescopePreviewBorder = { fg = colors.glow_cyan },
91+
TelescopeSelection = { bg = colors.bg_highlight, bold = true },
92+
93+
-- Neo-tree styling
94+
NeoTreeNormal = { bg = colors.bg_dark },
95+
NeoTreeNormalNC = { bg = colors.bg_dark },
96+
NeoTreeWinSeparator = { fg = colors.purple_muted, bg = "NONE" },
97+
98+
-- Which-key styling
99+
WhichKeyFloat = { bg = colors.bg_dark },
100+
WhichKeyBorder = { fg = colors.purple },
101+
102+
-- Dashboard/Alpha
103+
AlphaHeader = { fg = colors.glow_purple, bold = true },
104+
AlphaButtons = { fg = colors.pink },
105+
AlphaShortcut = { fg = colors.glow_cyan, bold = true },
106+
AlphaFooter = { fg = colors.purple_muted, italic = true },
107+
}
108+
end,
109+
},
110+
status = {
111+
separators = {
112+
left = { "", "" },
113+
right = { "", "" },
114+
tab = { "", "" },
115+
},
116+
colors = function(colors)
117+
local silkcircuit = require("silkcircuit.palette").colors
118+
return {
119+
-- Override status colors with SilkCircuit palette
120+
blue = silkcircuit.glow_purple,
121+
green = silkcircuit.green,
122+
yellow = silkcircuit.yellow_bright,
123+
orange = silkcircuit.orange,
124+
red = silkcircuit.glow_pink,
125+
purple = silkcircuit.purple,
126+
cyan = silkcircuit.glow_cyan,
127+
128+
-- Git colors
129+
git_branch_fg = silkcircuit.glow_purple,
130+
git_added = silkcircuit.green,
131+
git_changed = silkcircuit.yellow_bright,
132+
git_removed = silkcircuit.glow_pink,
133+
}
134+
end,
135+
},
136+
icons = {
137+
-- Cyberpunk-style loading animation
138+
LSPLoading1 = "",
139+
LSPLoading2 = "",
140+
LSPLoading3 = "",
141+
LSPLoading4 = "",
142+
},
143+
}
144+
end,
145+
},
146+
147+
-- Rainbow delimiters with SilkCircuit colors
148+
{
149+
"HiPhish/rainbow-delimiters.nvim",
150+
dependencies = { "silkcircuit/silkcircuit-nvim" },
151+
event = "User AstroFile",
152+
config = function()
153+
local rainbow_delimiters = require("rainbow-delimiters")
154+
155+
-- Define SilkCircuit rainbow colors
156+
vim.api.nvim_set_hl(0, "RainbowDelimiterRed", { fg = "#ff79c6" })
157+
vim.api.nvim_set_hl(0, "RainbowDelimiterYellow", { fg = "#f1fa8c" })
158+
vim.api.nvim_set_hl(0, "RainbowDelimiterBlue", { fg = "#80ffea" })
159+
vim.api.nvim_set_hl(0, "RainbowDelimiterOrange", { fg = "#ffb86c" })
160+
vim.api.nvim_set_hl(0, "RainbowDelimiterGreen", { fg = "#50fa7b" })
161+
vim.api.nvim_set_hl(0, "RainbowDelimiterViolet", { fg = "#bd93f9" })
162+
vim.api.nvim_set_hl(0, "RainbowDelimiterCyan", { fg = "#8be9fd" })
163+
164+
vim.g.rainbow_delimiters = {
165+
strategy = {
166+
[""] = rainbow_delimiters.strategy["global"],
167+
vim = rainbow_delimiters.strategy["local"],
168+
},
169+
query = {
170+
[""] = "rainbow-delimiters",
171+
lua = "rainbow-blocks",
172+
},
173+
highlight = {
174+
"RainbowDelimiterRed",
175+
"RainbowDelimiterYellow",
176+
"RainbowDelimiterBlue",
177+
"RainbowDelimiterOrange",
178+
"RainbowDelimiterGreen",
179+
"RainbowDelimiterViolet",
180+
"RainbowDelimiterCyan",
181+
},
182+
}
183+
end,
184+
},
185+
186+
-- Enhanced Neo-tree configuration (optional)
187+
{
188+
"nvim-neo-tree/neo-tree.nvim",
189+
opts = function(_, opts)
190+
return require("astrocore").extend_tbl(opts, {
191+
window = {
192+
width = 35,
193+
mappings = {
194+
["Y"] = "copy_selector", -- Custom copy path functionality
195+
},
196+
},
197+
filesystem = {
198+
filtered_items = {
199+
hide_dotfiles = false,
200+
hide_gitignored = false,
201+
},
202+
follow_current_file = {
203+
enabled = true,
204+
leave_dirs_open = false,
205+
},
206+
},
207+
-- Custom command to copy various path formats
208+
commands = {
209+
copy_selector = function(state)
210+
local node = state.tree:get_node()
211+
local filepath = node:get_id()
212+
local filename = node.name
213+
local modify = vim.fn.fnamemodify
214+
215+
local results = {
216+
filepath,
217+
modify(filepath, ":."),
218+
modify(filepath, ":~"),
219+
filename,
220+
modify(filename, ":r"),
221+
modify(filename, ":e"),
222+
}
223+
224+
vim.ui.select({
225+
"1. Absolute path: " .. results[1],
226+
"2. Path relative to CWD: " .. results[2],
227+
"3. Path relative to HOME: " .. results[3],
228+
"4. Filename: " .. results[4],
229+
"5. Filename without extension: " .. results[5],
230+
"6. Extension of the filename: " .. results[6],
231+
}, { prompt = "Choose to copy to clipboard:" }, function(choice)
232+
if choice then
233+
local i = tonumber(choice:sub(1, 1))
234+
if i then
235+
vim.fn.setreg("+", results[i])
236+
vim.notify("Copied: " .. results[i])
237+
end
238+
end
239+
end)
240+
end,
241+
},
242+
})
243+
end,
244+
},
245+
246+
-- Ensure termguicolors is enabled
247+
{
248+
"AstroNvim/astrocore",
249+
opts = {
250+
options = {
251+
opt = {
252+
termguicolors = true,
253+
},
254+
},
255+
},
256+
},
257+
}

0 commit comments

Comments
 (0)