@@ -22,7 +22,7 @@ local Defaults = {
22
22
--- @type colorbox.PolicyConfig
23
23
policy = " shuffle" ,
24
24
25
- --- @type " startup" | " interval" | " bufferchanged "
25
+ --- @type " startup" | " interval" | " filetype "
26
26
timing = " startup" ,
27
27
28
28
-- (Optional) filters that disable some colors that you don't want.
235
235
236
236
local function _policy_shuffle ()
237
237
if # FilteredColorNamesList > 0 then
238
- local i = numbers .random (# FilteredColorNamesList )
238
+ local i = numbers .random (# FilteredColorNamesList ) --[[ @as integer ]]
239
239
local color = _get_next_color_name_by_idx (i )
240
240
logging .get (" colorbox" ):debug (
241
241
" |_policy_shuffle| color:%s, FilteredColorNamesList:%s (%d), i:%d" ,
@@ -244,22 +244,16 @@ local function _policy_shuffle()
244
244
vim .inspect (# FilteredColorNamesList ),
245
245
vim .inspect (i )
246
246
)
247
- local ok , err = pcall (
248
- vim .cmd --[[ @as function]] ,
249
- string.format ([[ color %s]] , color )
250
- )
251
- assert (ok , err )
247
+ vim .cmd (string.format ([[ color %s]] , color ))
252
248
end
253
249
end
254
250
255
251
local function _policy_in_order ()
256
252
if # FilteredColorNamesList > 0 then
257
253
local previous_track = _load_previous_track () --[[ @as colorbox.PreviousTrack]]
258
- local i = previous_track ~= nil and previous_track .color_number or 1
254
+ local i = previous_track ~= nil and previous_track .color_number or 0
259
255
local color = _get_next_color_name_by_idx (i )
260
- --- @diagnostic disable-next-line : param-type-mismatch
261
- local ok , err = pcall (vim .cmd , string.format ([[ color %s]] , color ))
262
- assert (ok , err )
256
+ vim .cmd (string.format ([[ color %s]] , color ))
263
257
end
264
258
end
265
259
@@ -269,25 +263,17 @@ local function _policy_reverse_order()
269
263
local i = previous_track ~= nil and previous_track .color_number
270
264
or (# FilteredColorNamesList + 1 )
271
265
local color = _get_prev_color_name_by_idx (i )
272
- --- @diagnostic disable-next-line : param-type-mismatch
273
- local ok , err = pcall (vim .cmd , string.format ([[ color %s]] , color ))
274
- assert (ok , err )
266
+ vim .cmd (string.format ([[ color %s]] , color ))
275
267
end
276
268
end
277
269
278
270
local function _policy_single ()
279
271
if # FilteredColorNamesList > 0 then
280
272
local previous_track = _load_previous_track () --[[ @as colorbox.PreviousTrack]]
281
- local color = nil
282
- if previous_track then
283
- color = previous_track .color_name
284
- else
285
- color = _get_next_color_name_by_idx (0 )
286
- end
273
+ local color = previous_track ~= nil and previous_track .color_name
274
+ or _get_next_color_name_by_idx (0 )
287
275
if color ~= vim .g .colors_name then
288
- --- @diagnostic disable-next-line : param-type-mismatch
289
- local ok , err = pcall (vim .cmd , string.format ([[ color %s]] , color ))
290
- assert (ok , err )
276
+ vim .cmd (string.format ([[ color %s]] , color ))
291
277
end
292
278
end
293
279
end
@@ -340,18 +326,15 @@ local function _policy_by_filetype()
340
326
341
327
if Configs .policy .mapping [ft ] then
342
328
local ok , err = pcall (
343
- --- @diagnostic disable-next-line : param-type-mismatch
344
- vim .cmd ,
329
+ vim .cmd --[[ @as function]] ,
345
330
string.format ([[ color %s]] , Configs .policy .mapping [ft ])
346
331
)
347
332
assert (ok , err )
348
333
else
349
- local ok , err =
350
- --- @diagnostic disable-next-line : param-type-mismatch
351
- pcall (
352
- vim .cmd ,
353
- string.format ([[ color %s]] , Configs .policy .fallback )
354
- )
334
+ local ok , err = pcall (
335
+ vim .cmd --[[ @as function]] ,
336
+ string.format ([[ color %s]] , Configs .policy .fallback )
337
+ )
355
338
assert (ok , err )
356
339
end
357
340
_force_sync_syntax ()
@@ -374,7 +357,8 @@ local function _policy()
374
357
_policy_fixed_interval ()
375
358
elseif
376
359
Configs .timing == " bufferchanged"
377
- and _is_by_filetype_policy (Configs .policy )
360
+ or Configs .timing == " filetype"
361
+ and _is_by_filetype_policy (Configs .policy )
378
362
then
379
363
_policy_by_filetype ()
380
364
end
@@ -386,7 +370,7 @@ local function _timing_startup()
386
370
})
387
371
end
388
372
389
- local function _timing_buffer_changed ()
373
+ local function _timing_filetype ()
390
374
vim .api .nvim_create_autocmd ({ " BufNew" , " BufReadPre" , " BufNewFile" }, {
391
375
callback = _policy ,
392
376
})
@@ -404,15 +388,17 @@ local function _timing()
404
388
)
405
389
)
406
390
_policy_fixed_interval ()
407
- elseif Configs .timing == " bufferchanged" then
391
+ elseif
392
+ Configs .timing == " bufferchanged" or Configs .timing == " filetype"
393
+ then
408
394
assert (
409
395
_is_by_filetype_policy (Configs .policy ),
410
396
string.format (
411
- " invalid policy %s for 'bufferchanged ' timing!" ,
397
+ " invalid policy %s for 'filetype ' timing!" ,
412
398
vim .inspect (Configs .policy )
413
399
)
414
400
)
415
- _timing_buffer_changed ()
401
+ _timing_filetype ()
416
402
else
417
403
error (string.format (" invalid timing %s!" , vim .inspect (Configs .timing )))
418
404
end
@@ -794,6 +780,14 @@ local function setup(opts)
794
780
_timing ()
795
781
end
796
782
783
+ local function _get_filtered_color_names_list ()
784
+ return FilteredColorNamesList
785
+ end
786
+
787
+ local function _get_filtered_color_name_to_index_map ()
788
+ return FilteredColorNameToIndexMap
789
+ end
790
+
797
791
local M = {
798
792
setup = setup ,
799
793
update = update ,
@@ -803,6 +797,15 @@ local M = {
803
797
_force_sync_syntax = _force_sync_syntax ,
804
798
_save_track = _save_track ,
805
799
_load_previous_track = _load_previous_track ,
800
+ _get_next_color_name_by_idx = _get_next_color_name_by_idx ,
801
+ _get_prev_color_name_by_idx = _get_prev_color_name_by_idx ,
802
+ _get_filtered_color_names_list = _get_filtered_color_names_list ,
803
+ _get_filtered_color_name_to_index_map = _get_filtered_color_name_to_index_map ,
804
+ _policy_shuffle = _policy_shuffle ,
805
+ _policy_in_order = _policy_in_order ,
806
+ _policy_reverse_order = _policy_reverse_order ,
807
+ _policy_single = _policy_single ,
808
+ _policy = _policy ,
806
809
}
807
810
808
811
return M
0 commit comments