1- -- TODO: Modularise opts table
2-
31local function config ()
42 -- TODO: Are all these enabled lines needed?
53 local opts = {
@@ -24,10 +22,9 @@ local function config()
2422 },
2523 }
2624
27- -- BUG: Wrap option being applied globally
2825 Snacks .toggle .option (" wrap" , { name = " Line Wrap" , global = true }):map " <leader>uw"
2926
30- -- TODO: Better way to rename snack toggles
27+ -- HACK: Equivalent to `Snacks.toggle.words` but renamed
3128 Snacks .toggle ({
3229 name = " References" ,
3330 get = function ()
@@ -72,7 +69,20 @@ return {
7269
7370 config = config ,
7471
72+ -- Some snacks dependent integrations are defined in the respective plugins' config functions
73+ -- Search for `if Snacks then` to find these
7574 specs = {
75+ {
76+ " akinsho/bufferline.nvim" ,
77+ optional = true ,
78+ opts = {
79+ options = {
80+ close_command = " lua Snacks.bufdelete.delete(%d)" ,
81+ right_mouse_command = " lua Snacks.bufdelete.delete(%d)" ,
82+ },
83+ },
84+ },
85+
7686 {
7787 " catppuccin/nvim" ,
7888 optional = true ,
@@ -84,14 +94,96 @@ return {
8494 },
8595
8696 {
87- " akinsho/bufferline .nvim" ,
97+ " stevearc/conform .nvim" ,
8898 optional = true ,
99+
89100 opts = {
90- options = {
91- close_command = " lua Snacks.bufdelete.delete(%d)" ,
92- right_mouse_command = " lua Snacks.bufdelete.delete(%d)" ,
93- },
101+ format_on_save = function ()
102+ return vim .g .format_on_save
103+ and {
104+ timeout_ms = 1000 ,
105+ lsp_format = " fallback" ,
106+ }
107+ end ,
94108 },
109+
110+ config = function (_ , opts )
111+ vim .g .format_on_save = true
112+
113+ Snacks .toggle ({
114+ name = " Formatter" ,
115+ get = function ()
116+ return vim .g .format_on_save
117+ end ,
118+ set = function (state )
119+ vim .g .format_on_save = state
120+ end ,
121+ }):map " <leader>ulf"
122+
123+ require (" conform" ).setup (opts )
124+ end ,
125+ },
126+
127+ {
128+ " lewis6991/gitsigns.nvim" ,
129+ optional = true ,
130+ config = function (_ , opts )
131+ local gitsigns = require " gitsigns"
132+ local gitsigns_config = require (" gitsigns.config" ).config
133+
134+ Snacks .toggle ({
135+ name = " Git Line Blame" ,
136+ get = function ()
137+ return gitsigns_config .current_line_blame
138+ end ,
139+ set = function (state )
140+ gitsigns .toggle_current_line_blame (state )
141+ end ,
142+ }):map " <leader>ug"
143+
144+ gitsigns .setup (opts )
145+ end ,
146+ },
147+
148+ {
149+ " kosayoda/nvim-lightbulb" ,
150+ optional = true ,
151+ config = function (_ , opts )
152+ vim .g .enable_lightbulb = true
153+
154+ Snacks .toggle ({
155+ name = " Lightbulb" ,
156+ get = function ()
157+ return vim .g .enable_lightbulb
158+ end ,
159+ set = function (state )
160+ vim .g .enable_lightbulb = state
161+ end ,
162+ }):map " <leader>ull"
163+
164+ require (" nvim-lightbulb" ).setup (opts )
165+ end ,
166+ },
167+
168+ {
169+ " nvim-neo-tree/neo-tree.nvim" ,
170+ optional = true ,
171+ config = function (_ , opts )
172+ local events = require " neo-tree.events"
173+
174+ local function on_move (data )
175+ Snacks .rename .on_rename_file (data .source , data .destination )
176+ end
177+
178+ opts .event_handlers = opts .event_handlers or {}
179+
180+ vim .list_extend (opts .event_handlers , {
181+ { event = events .FILE_MOVED , handler = on_move },
182+ { event = events .FILE_RENAMED , handler = on_move },
183+ })
184+
185+ require (" neo-tree" ).setup (opts )
186+ end ,
95187 },
96188 },
97189}
0 commit comments