Mercurial > vim
view runtime/indent/testdir/runtest.vim @ 18720:7f066dff9d70 v8.1.2351
patch 8.1.2351: 'wincolor' not used for > for not fitting double width char
Commit: https://github.com/vim/vim/commit/92e25ab2df03756bbb8523cf871db29fe8819c13
Author: Bram Moolenaar <Bram@vim.org>
Date: Tue Nov 26 22:39:10 2019 +0100
patch 8.1.2351: 'wincolor' not used for > for not fitting double width char
Problem: 'wincolor' not used for > for not fitting double width char.
Also: popup drawn on right half of double width character looks
wrong.
Solution: Adjust color for > character. Clear left half of double width
character if right half is being overwritten.
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Tue, 26 Nov 2019 22:45:04 +0100 |
parents | 0cc306ebc8fe |
children | a0e0f0256d0b |
line wrap: on
line source
" Runs all the indent tests for which there is no .out file. " " Current directory must be runtime/indent. " Only do this with the +eval feature if 1 set nocp filetype indent on syn on set nowrapscan set report=9999 au! SwapExists * call HandleSwapExists() func HandleSwapExists() " Ignore finding a swap file for the test input and output, the user might be " editing them and that's OK. if expand('<afile>') =~ '.*\.\(in\|out\|fail\|ok\)' let v:swapchoice = 'e' endif endfunc let failed_count = 0 for fname in glob('testdir/*.in', 1, 1) let root = substitute(fname, '\.in', '', '') " Execute the test if the .out file does not exist of when the .in file is " newer. let in_time = getftime(fname) let out_time = getftime(root . '.out') if out_time < 0 || in_time > out_time call delete(root . '.fail') call delete(root . '.out') set sw& ts& filetype= exe 'split ' . fname let did_some = 0 let failed = 0 let end = 1 while 1 " Indent all the lines between "START_INDENT" and "END_INDENT" exe end let start = search('\<START_INDENT\>') let end = search('\<END_INDENT\>') if start <= 0 || end <= 0 || end <= start if did_some == 0 call append(0, 'ERROR: START_INDENT and/or END_INDENT not found') let failed = 1 endif break else let did_some = 1 " Execute all commands marked with INDENT_EXE and find any pattern. let lnum = start let pattern = '' let at = '' while 1 exe lnum + 1 let lnum_exe = search('\<INDENT_EXE\>') exe lnum + 1 let indent_at = search('\<INDENT_\(AT\|NEXT\|PREV\)\>') if lnum_exe > 0 && lnum_exe < end && (indent_at <= 0 || lnum_exe < indent_at) exe substitute(getline(lnum_exe), '.*INDENT_EXE', '', '') let lnum = lnum_exe let start = lnum elseif indent_at > 0 && indent_at < end if pattern != '' call append(indent_at, 'ERROR: duplicate pattern') let failed = 1 break endif let text = getline(indent_at) let pattern = substitute(text, '.*INDENT_\S*\s*', '', '') let at = substitute(text, '.*INDENT_\(\S*\).*', '\1', '') let lnum = indent_at let start = lnum else break endif endwhile exe start + 1 if pattern == '' exe 'normal =' . (end - 1) . 'G' else let lnum = search(pattern) if lnum <= 0 call append(indent_at, 'ERROR: pattern not found: ' . pattern) let failed = 1 break endif if at == 'AT' exe lnum elseif at == 'NEXT' exe lnum + 1 else exe lnum - 1 endif normal == endif endif endwhile if !failed " Check the resulting text equals the .ok file. if getline(1, '$') != readfile(root . '.ok') let failed = 1 endif endif if failed let failed_count += 1 exe 'write ' . root . '.fail' echoerr 'Test ' . fname . ' FAILED!' else exe 'write ' . root . '.out' endif quit! " close the indented file endif endfor " Matching "if 1" at the start. endif if failed_count > 0 " have make report an error cquit endif qall!