tangled
alpha
login
or
join now
althaea.zone
/
candy
0
fork
atom
neovim
0
fork
atom
overview
issues
pulls
pipelines
some updates
marshmallow.tngl.sh
9 months ago
288cce2d
11c3139c
+283
-174
11 changed files
expand all
collapse all
unified
split
.gitignore
candy
lua
marshmallow
colorscheme.lua
defaults.lua
env
gui.lua
init.lua
lsp.lua
remap.lua
statusline.lua
usercommand.lua
flake.lock
flake.nix
+1
.gitignore
···
1
1
.direnv
2
2
+
result/
-29
candy/lua/marshmallow/colorscheme.lua
···
1
1
-
-- require("catppuccin").setup({
2
2
-
-- term_colors = true,
3
3
-
-- custom_highlights = function(colors)
4
4
-
-- return {
5
5
-
-- StatusLine = { bg = colors.base },
6
6
-
--
7
7
-
-- MiniMapDiagnosticError = { bg = colors.red, fg = colors.red },
8
8
-
-- MiniMapDiagnosticWarn = { bg = colors.yellow, fg = colors.yellow },
9
9
-
-- MiniMapDiagnosticInfo = { bg = colors.teal, fg = colors.teal },
10
10
-
-- MiniMapDiagnosticHint = {},
11
11
-
--
12
12
-
-- MiniFilesBorder = { fg = colors.surface0 },
13
13
-
-- MiniFilesNormal = { bg = colors.base },
14
14
-
--
15
15
-
-- MiniPickBorder = { fg = colors.surface0 },
16
16
-
-- MiniPickNormal = { bg = colors.base },
17
17
-
-- MiniPickPrompt = { fg = colors.mauve },
18
18
-
--
19
19
-
-- FloatBorder = { fg = colors.mauve },
20
20
-
--
21
21
-
-- Directory = { fg = colors.mauve },
22
22
-
--
23
23
-
-- -- native_lsp method doesnt work?
24
24
-
-- LspInlayHint = { fg = colors.overlay0, bg = colors.base },
25
25
-
-- }
26
26
-
-- end,
27
27
-
-- })
28
28
-
29
29
-
vim.cmd.colorscheme("kanagawa")
+4
candy/lua/marshmallow/defaults.lua
···
3
3
vim.o.timeout = true
4
4
vim.o.timeoutlen = 300
5
5
6
6
+
-- Colourscheme --
7
7
+
vim.cmd.colorscheme("lackluster-hack")
8
8
+
6
9
-- Terminal --
7
10
vim.opt.termguicolors = true
8
11
···
41
44
-- Diagnostics --
42
45
vim.diagnostic.config({
43
46
virtual_text = false,
47
47
+
virtual_lines = true,
44
48
signs = false,
45
49
update_in_insert = false,
46
50
severity_sort = true,
+1
-1
candy/lua/marshmallow/env/gui.lua
···
22
22
vim.g.neovide_padding_right = 10
23
23
vim.g.neovide_padding_left = 10
24
24
25
25
-
vim.g.neovide_transparency = 0.9
25
25
+
vim.g.neovide_opacity = 0.9
26
26
27
27
vim.g.neovide_refresh_rate = 240
28
28
+6
-1
candy/lua/marshmallow/init.lua
···
1
1
require("marshmallow.defaults")
2
2
require("marshmallow.statusline")
3
3
require("marshmallow.remap")
4
4
-
require("marshmallow.colorscheme")
5
4
require("marshmallow.treesitter")
6
5
require("marshmallow.completion")
7
6
require("marshmallow.lsp")
···
9
8
10
9
-- Too short for file
11
10
require("mini.pick").setup()
11
11
+
require("mini.move").setup()
12
12
+
require("mini.surround").setup()
13
13
+
require("hardtime").setup()
14
14
+
require("mini.jump2d").setup({ view = { dim = true } })
15
15
+
require("mini.jump").setup()
16
16
+
require("mini.bracketed").setup()
12
17
13
18
require("marshmallow.format")
14
19
require("marshmallow.files")
-6
candy/lua/marshmallow/lsp.lua
···
14
14
15
15
local opts = { noremap = true, silent = true }
16
16
vim.keymap.set("n", "E", vim.diagnostic.open_float, opts)
17
17
-
vim.keymap.set("n", "[d", function()
18
18
-
vim.diagnostic.jump({ count = -1 })
19
19
-
end, opts)
20
20
-
vim.keymap.set("n", "]d", function()
21
21
-
vim.diagnostic.jump({ count = 1 })
22
22
-
end, opts)
23
17
vim.keymap.set(
24
18
"n",
25
19
"<space>q",
+64
-14
candy/lua/marshmallow/remap.lua
···
1
1
-
require("which-key").setup({})
1
1
+
-- require("which-key").setup({})
2
2
+
local miniclue = require("mini.clue")
3
3
+
miniclue.setup({
4
4
+
triggers = {
5
5
+
-- Leader triggers
6
6
+
{ mode = "n", keys = "<Leader>" },
7
7
+
{ mode = "x", keys = "<Leader>" },
8
8
+
9
9
+
-- Built-in completion
10
10
+
{ mode = "i", keys = "<C-x>" },
11
11
+
12
12
+
-- `g` key
13
13
+
{ mode = "n", keys = "g" },
14
14
+
{ mode = "x", keys = "g" },
15
15
+
16
16
+
-- Marks
17
17
+
{ mode = "n", keys = "'" },
18
18
+
{ mode = "n", keys = "`" },
19
19
+
{ mode = "x", keys = "'" },
20
20
+
{ mode = "x", keys = "`" },
21
21
+
22
22
+
-- Registers
23
23
+
{ mode = "n", keys = '"' },
24
24
+
{ mode = "x", keys = '"' },
25
25
+
{ mode = "i", keys = "<C-r>" },
26
26
+
{ mode = "c", keys = "<C-r>" },
27
27
+
28
28
+
-- Window commands
29
29
+
{ mode = "n", keys = "<C-w>" },
30
30
+
31
31
+
-- `z` key
32
32
+
{ mode = "n", keys = "z" },
33
33
+
{ mode = "x", keys = "z" },
34
34
+
35
35
+
-- mini surround
36
36
+
{ mode = "n", keys = "s" },
37
37
+
{ mode = "x", keys = "s" },
38
38
+
39
39
+
-- mini bracketed
40
40
+
{ mode = "n", keys = "]" },
41
41
+
{ mode = "n", keys = "[" },
42
42
+
},
43
43
+
44
44
+
clues = {
45
45
+
-- Enhance this by adding descriptions for <Leader> mapping groups
46
46
+
miniclue.gen_clues.builtin_completion(),
47
47
+
miniclue.gen_clues.g(),
48
48
+
miniclue.gen_clues.marks(),
49
49
+
miniclue.gen_clues.registers(),
50
50
+
miniclue.gen_clues.windows(),
51
51
+
miniclue.gen_clues.z(),
52
52
+
},
53
53
+
})
2
54
3
55
-- experimental --
4
56
vim.keymap.set("n", "0", "^", { noremap = true, silent = true })
5
57
vim.keymap.set("n", "^", "0", { noremap = true, silent = true })
58
58
+
59
59
+
-- mini.surround
60
60
+
-- fix s key deleting characters
61
61
+
vim.keymap.set({ "n", "x" }, "s", "<Nop>")
6
62
7
63
-- nvim-spider
8
64
require("lz.n").load({
···
43
99
44
100
-- Grep / Pick --
45
101
vim.keymap.set("n", "<leader>f", require("mini.pick").builtin.files, { desc = "Pick (root dir)" })
102
102
+
vim.keymap.set("n", "<leader>g", require("mini.pick").builtin.resume, { desc = "Resume Pick" })
46
103
47
104
vim.keymap.set("n", "<leader>/", function()
48
105
local cope = function()
49
49
-
local items = require("mini.pick").get_picker_items()
106
106
+
local query = require("mini.pick").get_picker_query()
50
107
51
51
-
vim.fn.setqflist(vim.tbl_map(function(value)
52
52
-
local split = vim.split(value, ":")
53
53
-
local text = table.concat(split, "", 4)
108
108
+
vim.cmd("Ggrep " .. table.concat(query))
54
109
55
55
-
return {
56
56
-
filename = split[1],
57
57
-
lnum = split[2],
58
58
-
col = split[3],
59
59
-
text = vim.trim(text),
60
60
-
}
61
61
-
end, items))
62
62
-
63
63
-
vim.cmd.cope()
64
110
return true
65
111
end
66
112
local buffer_mappings = { wipeout = { char = "<C-q>", func = cope } }
···
74
120
local buffer_mappings = { wipeout = { char = "<C-d>", func = wipeout_current } }
75
121
require("mini.pick").builtin.buffers({ include_current = false }, { mappings = buffer_mappings })
76
122
end, { desc = "Switch Buffer" })
123
123
+
124
124
+
vim.keymap.set("n", "<leader>s", function()
125
125
+
require("mini.jump2d").start()
126
126
+
end, { desc = "Jump2d" })
77
127
78
128
-- Harpoon --
79
129
require("lz.n").load({
+60
-13
candy/lua/marshmallow/statusline.lua
···
1
1
local M = {}
2
2
3
3
-
local function set_highlights(recording)
3
3
+
local function set_highlights_kanagawa(recording)
4
4
local palette = require("kanagawa.colors").setup().theme
5
5
6
6
local bg = recording and palette.diff.delete or palette.ui.bg_m2
···
23
23
bg = bg,
24
24
})
25
25
26
26
-
vim.api.nvim_set_hl(0, "StatusAdd", {
27
27
-
fg = palette.vcs.added,
26
26
+
vim.api.nvim_set_hl(0, "StatusHead", {
27
27
+
fg = palette.syn.identifier,
28
28
+
bg = bg,
29
29
+
})
30
30
+
end
31
31
+
32
32
+
-- color = {
33
33
+
-- black = "#000000",
34
34
+
-- blue = "#7788AA",
35
35
+
-- gray1 = "#080808",
36
36
+
-- gray2 = "#191919",
37
37
+
-- gray3 = "#2a2a2a",
38
38
+
-- gray4 = "#444444",
39
39
+
-- gray5 = "#555555",
40
40
+
-- gray6 = "#7a7a7a",
41
41
+
-- gray7 = "#aaaaaa",
42
42
+
-- gray8 = "#cccccc",
43
43
+
-- gray9 = "#DDDDDD",
44
44
+
-- green = "#789978",
45
45
+
-- lack = "#708090",
46
46
+
-- luster = "#deeeed",
47
47
+
-- none = "none",
48
48
+
-- orange = "#ffaa88",
49
49
+
-- red = "#D70000",
50
50
+
-- yellow = "#abab77"
51
51
+
-- },
52
52
+
-- color_special = {
53
53
+
-- comment = "#3A3A3A",
54
54
+
-- exception = "#505050",
55
55
+
-- keyword = "#666666",
56
56
+
-- main_background = "#101010",
57
57
+
-- menu_background = "#191919",
58
58
+
-- param = "#8E8E8E",
59
59
+
-- popup_background = "#1A1A1A",
60
60
+
-- statusline = "#242424",
61
61
+
-- whitespace = "#202020"
62
62
+
-- },
63
63
+
64
64
+
local function set_highlights_lackluster(recording)
65
65
+
local lackluster = require("lackluster")
66
66
+
67
67
+
local bg = lackluster.color_special.statusline
68
68
+
local fg = recording and lackluster.color.red or lackluster.color.gray7
69
69
+
70
70
+
-- xxx guifg=#aaaaaa guibg=#242424
71
71
+
vim.api.nvim_set_hl(0, "StatusLine", { fg = fg, bg = bg })
72
72
+
73
73
+
vim.api.nvim_set_hl(0, "Ruler", {
74
74
+
fg = lackluster.color.gray7,
28
75
bg = bg,
29
76
})
30
77
31
31
-
vim.api.nvim_set_hl(0, "StatusChanged", {
32
32
-
fg = palette.vcs.changed,
78
78
+
vim.api.nvim_set_hl(0, "StatusLsp", {
79
79
+
fg = lackluster.color.green,
33
80
bg = bg,
34
81
})
35
82
36
36
-
vim.api.nvim_set_hl(0, "StatusRemoved", {
37
37
-
fg = palette.vcs.removed,
83
83
+
vim.api.nvim_set_hl(0, "StatusFt", {
84
84
+
fg = lackluster.color.orange,
38
85
bg = bg,
39
86
})
40
87
41
88
vim.api.nvim_set_hl(0, "StatusHead", {
42
42
-
fg = palette.syn.identifier,
89
89
+
fg = lackluster.color.yellow,
43
90
bg = bg,
44
91
})
45
92
end
···
50
97
pattern = "*",
51
98
group = augroup,
52
99
callback = function()
53
53
-
set_highlights(false)
100
100
+
set_highlights_lackluster(false)
54
101
end,
55
102
})
56
103
···
58
105
pattern = "*",
59
106
group = augroup,
60
107
callback = function()
61
61
-
set_highlights(true)
108
108
+
set_highlights_lackluster(true)
62
109
end,
63
110
})
64
111
···
93
140
local removed_count = status.removed or 0
94
141
local changed_count = status.removed or 0
95
142
96
96
-
local added = added_count > 0 and ("%#StatusAdd#+" .. added_count .. "%*") or ""
97
97
-
local removed = removed_count > 0 and ("%#StatusRemoved#-" .. removed_count .. "%*") or ""
98
98
-
local changed = changed_count > 0 and ("%#StatusChanged#~" .. changed_count .. "%*") or ""
143
143
+
local added = added_count > 0 and ("%#GitSignsAdd#+" .. added_count .. "%*") or ""
144
144
+
local removed = removed_count > 0 and ("%#GitSignsDelete#-" .. removed_count .. "%*") or ""
145
145
+
local changed = changed_count > 0 and ("%#GitSignsChange#~" .. changed_count .. "%*") or ""
99
146
local changes = "(" .. added .. removed .. changed .. "%#StatusHead#)%*"
100
147
101
148
return " %#StatusHead#" .. status.head .. (has_changes and changes or "") .. "%*"
+4
-4
candy/lua/marshmallow/usercommand.lua
···
1
1
-
vim.api.nvim_create_user_command("Trans", function()
2
2
-
if vim.g.neovide_transparency ~= 1 then
3
3
-
vim.g.neovide_transparency = 1
1
1
+
vim.api.nvim_create_user_command("Opacity", function()
2
2
+
if vim.g.neovide_opacity ~= 1 then
3
3
+
vim.g.neovide_opacity = 1
4
4
else
5
5
-
vim.g.neovide_transparency = 0.9
5
5
+
vim.g.neovide_opacity = 0.9
6
6
end
7
7
end, {})
8
8
+19
-3
flake.lock
···
50
50
"type": "github"
51
51
}
52
52
},
53
53
+
"flake-compat_3": {
54
54
+
"locked": {
55
55
+
"lastModified": 1746162366,
56
56
+
"narHash": "sha256-5SSSZ/oQkwfcAz/o/6TlejlVGqeK08wyREBQ5qFFPhM=",
57
57
+
"owner": "nix-community",
58
58
+
"repo": "flake-compat",
59
59
+
"rev": "0f158086a2ecdbb138cd0429410e44994f1b7e4b",
60
60
+
"type": "github"
61
61
+
},
62
62
+
"original": {
63
63
+
"owner": "nix-community",
64
64
+
"repo": "flake-compat",
65
65
+
"type": "github"
66
66
+
}
67
67
+
},
53
68
"flake-parts": {
54
69
"inputs": {
55
70
"nixpkgs-lib": [
···
314
329
},
315
330
"tolerable": {
316
331
"inputs": {
332
332
+
"flake-compat": "flake-compat_3",
317
333
"nightly": [
318
334
"nightly"
319
335
],
···
322
338
]
323
339
},
324
340
"locked": {
325
325
-
"lastModified": 1744942880,
326
326
-
"narHash": "sha256-XH9Y4ffQq9dHWsSDzPabtaxvEjOyShDYWgkfcggnZVk=",
341
341
+
"lastModified": 1747708726,
342
342
+
"narHash": "sha256-SipAOpY97/8g2CanfpQBBwR61b9ZLLshA9ikOClqmys=",
327
343
"owner": "wires-org",
328
344
"repo": "tolerable-nvim-nix",
329
329
-
"rev": "f1e0e952fba1aa6745f656961655642c4f8ffb09",
345
345
+
"rev": "192f8ebf629f584faf4ef46ebfca739b046e8872",
330
346
"type": "github"
331
347
},
332
348
"original": {
+124
-103
flake.nix
···
20
20
inputs.vim-firestore.url = "github:delphinus/vim-firestore";
21
21
inputs.vim-firestore.flake = false;
22
22
23
23
-
outputs = inputs:
24
24
-
inputs.flake-parts.lib.mkFlake {inherit inputs;} ({config, ...}: {
25
25
-
systems = [
26
26
-
"x86_64-linux"
27
27
-
"x86_64-darwin"
28
28
-
"aarch64-linux"
29
29
-
"aarch64-darwin"
30
30
-
];
23
23
+
outputs =
24
24
+
inputs:
25
25
+
inputs.flake-parts.lib.mkFlake { inherit inputs; } (
26
26
+
{ config, ... }:
27
27
+
{
28
28
+
systems = [
29
29
+
"x86_64-linux"
30
30
+
"x86_64-darwin"
31
31
+
"aarch64-linux"
32
32
+
"aarch64-darwin"
33
33
+
];
31
34
32
32
-
imports = [
33
33
-
inputs.devshell.flakeModule
34
34
-
];
35
35
+
imports = [
36
36
+
inputs.devshell.flakeModule
37
37
+
];
35
38
36
36
-
perSystem = {
37
37
-
inputs',
38
38
-
system,
39
39
-
config,
40
40
-
lib,
41
41
-
pkgs,
42
42
-
...
43
43
-
}: {
44
44
-
packages = {
45
45
-
neovim = inputs.tolerable.makeNightlyNeovimConfig "candy" {
46
46
-
inherit pkgs;
47
47
-
src = lib.fileset.toSource {
48
48
-
root = ./.;
49
49
-
fileset = ./candy;
39
39
+
perSystem =
40
40
+
{
41
41
+
inputs',
42
42
+
system,
43
43
+
config,
44
44
+
lib,
45
45
+
pkgs,
46
46
+
...
47
47
+
}:
48
48
+
let
49
49
+
tolerableConfig = {
50
50
+
inherit pkgs;
51
51
+
src = lib.fileset.toSource {
52
52
+
root = ./.;
53
53
+
fileset = ./candy;
54
54
+
};
55
55
+
path = with pkgs; [
56
56
+
curl
57
57
+
git
58
58
+
stylua
59
59
+
prettierd
60
60
+
black
61
61
+
nixfmt-rfc-style
62
62
+
taplo
63
63
+
lua-language-server
64
64
+
nil
65
65
+
statix
66
66
+
nodePackages.typescript-language-server
67
67
+
tailwindcss-language-server
68
68
+
nodePackages.sql-formatter
69
69
+
gopls
70
70
+
golangci-lint-langserver
71
71
+
golangci-lint
72
72
+
pyright
73
73
+
tinymist
74
74
+
];
75
75
+
config = {
76
76
+
plugins =
77
77
+
let
78
78
+
opt = plugin: {
79
79
+
inherit plugin;
80
80
+
optional = true;
81
81
+
};
82
82
+
in
83
83
+
with pkgs.vimPlugins;
84
84
+
[
85
85
+
lz-n
86
86
+
nvim-treesitter.withAllGrammars
87
87
+
nvim-lspconfig
88
88
+
catppuccin-nvim
89
89
+
mini-nvim
90
90
+
colorizer
91
91
+
luasnip
92
92
+
(opt conform-nvim)
93
93
+
plenary-nvim
94
94
+
(pkgs.vimUtils.buildVimPlugin {
95
95
+
src = inputs.harpoon-nvim;
96
96
+
name = "harpoon";
97
97
+
doCheck = false;
98
98
+
})
99
99
+
rustaceanvim
100
100
+
lackluster-nvim
101
101
+
typescript-tools-nvim
102
102
+
direnv-vim
103
103
+
vim-dotenv
104
104
+
(opt nvim-spider)
105
105
+
vim-fugitive
106
106
+
gitsigns-nvim
107
107
+
vim-gnupg
108
108
+
fidget-nvim
109
109
+
presence-nvim
110
110
+
hardtime-nvim
111
111
+
(pkgs.vimUtils.buildVimPlugin {
112
112
+
src = inputs.vim-firestore;
113
113
+
name = "firestore";
114
114
+
})
115
115
+
116
116
+
# nvim-cmp
117
117
+
nvim-cmp
118
118
+
cmp-nvim-lsp
119
119
+
cmp-cmdline
120
120
+
cmp-async-path
121
121
+
cmp-buffer
122
122
+
luasnip
123
123
+
cmp_luasnip
124
124
+
];
125
125
+
};
50
126
};
51
51
-
path = with pkgs; [
52
52
-
curl
53
53
-
git
54
54
-
stylua
55
55
-
prettierd
56
56
-
black
57
57
-
nixfmt-rfc-style
58
58
-
taplo
59
59
-
lua-language-server
60
60
-
nil
61
61
-
statix
62
62
-
nodePackages.typescript-language-server
63
63
-
tailwindcss-language-server
64
64
-
nodePackages.sql-formatter
65
65
-
gopls
66
66
-
golangci-lint-langserver
67
67
-
golangci-lint
68
68
-
pyright
69
69
-
tinymist
70
70
-
];
71
71
-
config = {
72
72
-
plugins = let
73
73
-
opt = plugin: {
74
74
-
inherit plugin;
75
75
-
optional = true;
76
76
-
};
77
77
-
in
78
78
-
with pkgs.vimPlugins; [
79
79
-
lz-n
80
80
-
nvim-treesitter.withAllGrammars
81
81
-
nvim-lspconfig
82
82
-
catppuccin-nvim
83
83
-
kanagawa-nvim
84
84
-
mini-nvim
85
85
-
luasnip
86
86
-
(opt conform-nvim)
87
87
-
plenary-nvim
88
88
-
which-key-nvim
89
89
-
(pkgs.vimUtils.buildVimPlugin {
90
90
-
src = inputs.harpoon-nvim;
91
91
-
name = "harpoon";
92
92
-
doCheck = false;
93
93
-
})
94
94
-
rustaceanvim
95
95
-
nvim-web-devicons
96
96
-
typescript-tools-nvim
97
97
-
direnv-vim
98
98
-
vim-dotenv
99
99
-
(opt nvim-spider)
100
100
-
vim-fugitive
101
101
-
gitsigns-nvim
102
102
-
vim-gnupg
103
103
-
fidget-nvim
104
104
-
presence-nvim
105
105
-
vim-wakatime
106
106
-
(pkgs.vimUtils.buildVimPlugin {
107
107
-
src = inputs.vim-firestore;
108
108
-
name = "firestore";
109
109
-
})
127
127
+
in
128
128
+
{
129
129
+
packages = {
130
130
+
neovim = inputs.tolerable.makeNightlyNeovimConfig "candy" tolerableConfig;
131
131
+
132
132
+
default = config.packages.neovim;
110
133
111
111
-
# nvim-cmp
112
112
-
nvim-cmp
113
113
-
cmp-nvim-lsp
114
114
-
cmp-cmdline
115
115
-
cmp-async-path
116
116
-
cmp-buffer
117
117
-
luasnip
118
118
-
cmp_luasnip
119
119
-
];
134
134
+
testing = inputs.tolerable.makeNightlyNeovimConfig "candy" (
135
135
+
tolerableConfig
136
136
+
// {
137
137
+
testing = true;
138
138
+
}
139
139
+
);
120
140
};
121
141
};
122
142
123
123
-
default = config.packages.neovim;
124
124
-
};
125
125
-
};
126
126
-
127
127
-
flake = let
128
128
-
package = inputs.nixpkgs.lib.genAttrs config.systems (system: inputs.self.packages.${system}.default);
129
129
-
in {
130
130
-
defaultPackage = package;
131
131
-
};
132
132
-
});
143
143
+
flake =
144
144
+
let
145
145
+
package = inputs.nixpkgs.lib.genAttrs config.systems (
146
146
+
system: inputs.self.packages.${system}.default
147
147
+
);
148
148
+
in
149
149
+
{
150
150
+
defaultPackage = package;
151
151
+
};
152
152
+
}
153
153
+
);
133
154
}