<commit_before>com! ShowSpacing verb se ts? sts? sw? et? listchars?

fun! SetupTabstop(width, expand, ...)
	let &l:sts = a:width
	let &l:sw = a:width
	let &l:ts = a:0 ? a:1 : a:width
	let &l:et = a:expand ? 1 : 0
	let &l:listchars = 'tab:'.(a:expand ? '»·' : '  ').',trail:·'
endf

fun! HighlightSpacingErrors()
	if !exists('w:spacing_match_groups')
		let w:spacing_match_groups = []
	end

	" if not mixed tabs+spaces, hilight as errors
	if (! &l:sts) || (&l:sts == &l:ts)
		call add(w:spacing_match_groups, matchadd('Error', '^\t\+\ '))
		call add(w:spacing_match_groups, matchadd('Error', '^\ \+\t'))
	endif
	if &l:ft != 'mail'
		" trailing whitespace, except for the current cursor position
		call add(w:spacing_match_groups, matchadd('Error', '\S\zs[\t ]\+\%#\@!$'))<commit_msg>Remove center dot from tab markers: »<commit_after>com! ShowSpacing verb se ts? sts? sw? et? listchars?

fun! SetupTabstop(width, expand, ...)
	let &l:sts = a:width
	let &l:sw = a:width
	let &l:ts = a:0 ? a:1 : a:width
	let &l:et = a:expand ? 1 : 0
	let &l:listchars = 'tab:'.(a:expand ? '» ' : '  ').',trail:·'
endf

fun! HighlightSpacingErrors()
	if !exists('w:spacing_match_groups')
		let w:spacing_match_groups = []
	end

	" if not mixed tabs+spaces, hilight as errors
	if (! &l:sts) || (&l:sts == &l:ts)
		call add(w:spacing_match_groups, matchadd('Error', '^\t\+\ '))
		call add(w:spacing_match_groups, matchadd('Error', '^\ \+\t'))
	endif
	if &l:ft != 'mail'
		" trailing whitespace, except for the current cursor position
		call add(w:spacing_match_groups, matchadd('Error', '\S\zs[\t ]\+\%#\@!$'))
{'fraction_non_alphanumeric': 0.2008816120906801, 'fraction_numerical': 0.005037783375314861, 'mean_word_length': 4.479310344827586, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5975170', 'n_tokens_mistral': 672, 'n_tokens_neox': 634, 'n_words': 160}