Switch to neovim version of help filetype, fixes #536

This commit is contained in:
Adam Stankiewicz
2020-09-04 12:11:55 +02:00
parent 96179c95ba
commit 48f59577c8
6 changed files with 149 additions and 93 deletions

View File

@@ -125,7 +125,7 @@ If you need full functionality of any plugin, please use it directly with your p
- [haxe](https://github.com/yaymukund/vim-haxe)
- [hcl](https://github.com/b4b4r07/vim-hcl)
- [helm](https://github.com/towolf/vim-helm)
- [help](https://github.com/vim/vim/tree/master/runtime)
- [help](https://github.com/neovim/neovim/tree/master/runtime)
- [hive](https://github.com/zebradil/hive.vim)
- [html5](https://github.com/othree/html5.vim)
- [i3](https://github.com/mboughaba/i3config.vim)

View File

@@ -1450,7 +1450,7 @@ fu! csv#SumColumn(list) "{{{3
let b:csv_result = '0'
return 0
else
let sum = has("float") ? 0.0 : 0
let sum = 0.0
for item in a:list
if empty(item)
continue
@@ -1460,33 +1460,25 @@ fu! csv#SumColumn(list) "{{{3
let format2 = '\d\+\zs\V' . s:nr_format[1] . '\m\ze\d'
try
let nr = substitute(nr, format1, '', '')
if has("float") && s:nr_format[1] != '.'
if s:nr_format[1] != '.'
let nr = substitute(nr, format2, '.', '')
endif
catch
let nr = 0
let nr = '0'
endtry
let sum += (has("float") ? str2float(nr) : (nr + 0))
let sum += str2float(nr)
endfor
if has("float")
let b:csv_result = string(float2nr(sum))
if float2nr(sum) == sum
return float2nr(sum)
else
let b:csv_result = sum
return printf("%.2f", sum)
endif
endif
let b:csv_result = string(sum)
return sum
endif
endfu
fu! csv#AvgColumn(list) "{{{3
if empty(a:list)
let b:csv_result = '0'
return 0
return 0.0
else
let cnt = 0
let sum = has("float") ? 0.0 : 0
let sum = 0.0
for item in a:list
if empty(item)
continue
@@ -1496,30 +1488,25 @@ fu! csv#AvgColumn(list) "{{{3
let format2 = '\d\+\zs\V' . s:nr_format[1] . '\m\ze\d'
try
let nr = substitute(nr, format1, '', '')
if has("float") && s:nr_format[1] != '.'
if s:nr_format[1] != '.'
let nr = substitute(nr, format2, '.', '')
endif
catch
let nr = 0
let nr ='0'
endtry
let sum += (has("float") ? str2float(nr) : (nr + 0))
let sum += str2float(nr)
let cnt += 1
endfor
if has("float")
let b:csv_result = printf("%.2f", sum/cnt)
return str2float(b:csv_result)
else
let b:csv_result = printf("%s", sum/cnt)
return b:csv_result + 0
endif
return sum/cnt
endif
endfu
fu! csv#VarianceColumn(list, is_population) "{{{3
if empty(a:list)
return 0
return 0.0
else
let cnt = 0
let sum = has("float") ? 0.0 : 0
let sum = 0.0
let avg = csv#AvgColumn(a:list)
for item in a:list
if empty(item)
@@ -1530,64 +1517,64 @@ fu! csv#VarianceColumn(list, is_population) "{{{3
let format2 = '\d\+\zs\V' . s:nr_format[1] . '\m\ze\d'
try
let nr = substitute(nr, format1, '', '')
if has("float") && s:nr_format[1] != '.'
if s:nr_format[1] != '.'
let nr = substitute(nr, format2, '.', '')
endif
catch
let nr = 0
let nr = '0'
endtry
let sum += pow((has("float") ? (str2float(nr)-avg) : ((nr + 0)-avg)), 2)
let nr = str2float(nr)
let sum += pow((nr-avg), 2)
let cnt += 1
endfor
if(a:is_population == 0)
let cnt = cnt-1
endif
if has("float")
let b:csv_result = printf("%." . get(b:, 'csv_accuracy', get(g:, 'csv_accuracy', 2)) . "f", sum/cnt)
let b:csv_result = sum/cnt
return b:csv_result
else
let b:csv_result = printf("%s", sum/cnt)
return sum/(cnt)
endif
endif
endfu
fu! csv#SmplVarianceColumn(list) "{{{2
unlet! b:csv_result
if empty(a:list)
let b:csv_result = '0'
return 0
let b:csv_result = 0.0
return 0.0
else
return csv#VarianceColumn(a:list, 0)
endif
endfu
fu! csv#PopVarianceColumn(list) "{{{2
unlet! b:csv_result
if empty(a:list)
let b:csv_result = '0'
return 0
let b:csv_result = 0.0
return 0.0
else
return csv#VarianceColumn(a:list, 1)
endif
endfu
fu! csv#SmplStdDevColumn(list) "{{{2
unlet! b:csv_result
if empty(a:list)
let b:csv_result = '0'
return 0
let b:csv_result = 0.0
return 0.0
else
let result = sqrt(str2float(csv#VarianceColumn(a:list, 0)))
let b:csv_result = string(result)
let result = sqrt(csv#VarianceColumn(a:list, 0))
let b:csv_result = result
return result
endif
endfu
fu! csv#PopStdDevColumn(list) "{{{2
unlet! b:csv_result
if empty(a:list)
let b:csv_result = '0'
return 0
let b:csv_result = 0.0
return 0.0
else
let result = sqrt(str2float(csv#VarianceColumn(a:list, 1)))
let b:csv_result = string(result)
let result = sqrt(csv#VarianceColumn(a:list, 1))
let b:csv_result = result
return result
endif
endfu
@@ -1610,13 +1597,13 @@ fu! csv#MaxColumn(list) "{{{3
let format2 = '\d\+\zs\V' . s:nr_format[1] . '\m\ze\d'
try
let nr = substitute(nr, format1, '', '')
if has("float") && s:nr_format[1] != '.'
if s:nr_format[1] != '.'
let nr = substitute(nr, format2, '.', '')
endif
catch
let nr = 0
let nr = '0'
endtry
call add(result, has("float") ? str2float(nr) : nr+0)
call add(result, str2float(nr))
endfor
let result = sort(result, s:csv_numeric_sort ? 'n' : 'csv#CSVSortValues')
let ind = len(result) > 9 ? 9 : len(result)
@@ -1995,10 +1982,7 @@ fu! csv#AnalyzeColumn(...) "{{{3
call filter(res, 'v:val =~ ''^''.join(max_items, ''\|'').''$''')
endif
if has("float")
let title="Nr\tCount\t % \tValue"
else
let title="Nr\tCount\tValue"
endif
echohl Title
echo printf("%s", title)
@@ -2014,12 +1998,8 @@ fu! csv#AnalyzeColumn(...) "{{{3
else
let k = key
endif
if has("float")
echo printf("%02d\t%02d\t%2.0f%%\t%.50s", i, res[key],
\ ((res[key] + 0.0)/qty)*100, k)
else
echo printf("%02d\t%02d\t%.50s", i, res[key], k)
endif
call remove(res,key)
let i+=1
else
@@ -2950,6 +2930,11 @@ fu! csv#EvalColumn(nr, func, first, last, ...) range "{{{3
call csv#Warn("File is no CSV file!")
return
endif
" Need a Vim with floating point feature
if !has("float")
call csv#Warn("Your Vim is missing floating point feature!")
return
endif
let save = winsaveview()
call csv#CheckHeaderLine()
let nr = matchstr(a:nr, '^\-\?\d\+')

View File

@@ -969,8 +969,7 @@ The result is also available in the buffer-local variable `b:csv_result`.
See also |csv-aggregate-functions|
*MinCol_CSV*
3.27 Maximum/Minimum value of a Column *MaxCol_CSV*
3.27 Maximum/Minimum value of a Column *MaxCol_CSV* *MinCol_CSV*
---------------------------------------
You can let Vim output the 10 maximum/minimum values of a column using the
`:CSVMaxCol` command >
@@ -984,6 +983,7 @@ given, this calculates the sum for the column the cursor is on. Note, that the
delimiter will be stripped away from each value and also empty values won't be
considered.
*format_number_csv*
By default, Vim uses the a numerical format that uses the '.' as decimal
separator while there is no thousands separator. If youre file contains
the numbers in a different format, you can use the /format/ option to specify
@@ -1003,10 +1003,6 @@ uses the Space as thousands separator and the '.' as decimal separator.
If [distinct] is given, only returns the number of distinct values.
Note, if you Vim is compiled without floating point number format (|+float|),
Vim will only aggregate the integer part and therefore won't use the 'y'
argument in the /format/ specifier.
The result is also available in the buffer-local variable `b:csv_result`.
3.28 Average value of a Column *AvgCol_CSV*
@@ -1021,19 +1017,21 @@ given, this calculates the sum for the column the cursor is on. Note, that the
delimiter will be stripped away from each value and also empty values won't be
considered.
For the [/format/] part, see |MaxCol_CSV|.
For the [/format/] part, see |format_number_csv|.
The result is also available in the buffer-local variable `b:csv_result`.
See also |csv-aggregate-functions|
3.29 Variance of a Column *VarCol_CSV*
3.29 Variance of a Column *VarCol_CSV* *SmplVarCol* *PopVarCol*
_________________________
:[range]PopVarCol [nr] [/format/]
:[range]SmplVarCol [nr] [/format/]
Calculate the Population or Sample Variance for the specified column.
This outputs the result of the column `<nr>` within the range given. If no range
is given, this will calculate the statistical variance of the whole column. If <nr> is not
given, this calculates the variance for the column the cursor is on. Note, that the delimiter
@@ -1041,13 +1039,17 @@ will be stripped away from each value and also empty values won't be considered.
The result is also available in the buffer-local variable `b:csv_result`.
3.30 Standard Deviation of a Column *StdDevCol_CSV*
For the [/format/] part, see |format_number_csv|.
3.30 Standard Deviation of a Column *StdDevCol_CSV* *PopStdCol* *SmplStdCol*
___________________________________
:[range]PopStdCol [nr] [/format/]
:[range]SmplStdCol [nr] [/format/]
Calculate the Population or Sample Standard Deviation for the specified column.
This outputs the result of the column `<nr>` within the range given. If no range
is given, this will calculate the standard deviation of the whole column. If <nr> is not
given, this calculates the standard deviation for the column the cursor is on. Note, that
@@ -1055,6 +1057,8 @@ the delimiter will be stripped away from each value and also empty values won't
The result is also available in the buffer-local variable `b:csv_result`.
For the [/format/] part, see |format_number_csv|.
*:CSVDupColumn*
3.31 Duplicate columns *DupColumn_CSV*
----------------------
@@ -1089,7 +1093,7 @@ This outputs the sum of the row [range]. If no range is given, this will
calculate the sum for the current row. Note, that the delimiter will be
stripped away from each value and also empty values won't be considered.
For the [/format/] part, see |MaxCol_CSV|.
For the [/format/] part, see |format_number_csv|
==============================================================================
4. CSV Configuration *csv-configuration*

View File

@@ -15,11 +15,86 @@ set cpo&vim
let b:undo_ftplugin = "setl fo< tw< cole< cocu< keywordprg<"
setlocal formatoptions+=tcroql textwidth=78 keywordprg=:help
setlocal formatoptions+=tcroql textwidth=78
if has("conceal")
setlocal cole=2 cocu=nc
endif
" Prefer Vim help instead of manpages.
setlocal keywordprg=:help
if !exists('g:no_plugin_maps')
function! s:show_toc() abort
let bufname = bufname('%')
let info = getloclist(0, {'winid': 1})
if !empty(info) && getwinvar(info.winid, 'qf_toc') ==# bufname
lopen
return
endif
let toc = []
let lnum = 2
let last_line = line('$') - 1
let last_added = 0
let has_section = 0
let has_sub_section = 0
while lnum && lnum <= last_line
let level = 0
let add_text = ''
let text = getline(lnum)
if text =~# '^=\+$' && lnum + 1 < last_line
" A de-facto section heading. Other headings are inferred.
let has_section = 1
let has_sub_section = 0
let lnum = nextnonblank(lnum + 1)
let text = getline(lnum)
let add_text = text
while add_text =~# '\*[^*]\+\*\s*$'
let add_text = matchstr(add_text, '.*\ze\*[^*]\+\*\s*$')
endwhile
elseif text =~# '^[A-Z0-9][-A-ZA-Z0-9 .][-A-Z0-9 .():]*\%([ \t]\+\*.\+\*\)\?$'
" Any line that's yelling is important.
let has_sub_section = 1
let level = has_section
let add_text = matchstr(text, '.\{-}\ze\s*\%([ \t]\+\*.\+\*\)\?$')
elseif text =~# '\~$'
\ && matchstr(text, '^\s*\zs.\{-}\ze\s*\~$') !~# '\t\|\s\{2,}'
\ && getline(lnum - 1) =~# '^\s*<\?$\|^\s*\*.*\*$'
\ && getline(lnum + 1) =~# '^\s*>\?$\|^\s*\*.*\*$'
" These lines could be headers or code examples. We only want the
" ones that have subsequent lines at the same indent or more.
let l = nextnonblank(lnum + 1)
if getline(l) =~# '\*[^*]\+\*$'
" Ignore tag lines
let l = nextnonblank(l + 1)
endif
if indent(lnum) <= indent(l)
let level = has_section + has_sub_section
let add_text = matchstr(text, '\S.*')
endif
endif
let add_text = substitute(add_text, '\s\+$', '', 'g')
if !empty(add_text) && last_added != lnum
let last_added = lnum
call add(toc, {'bufnr': bufnr('%'), 'lnum': lnum,
\ 'text': repeat(' ', level) . add_text})
endif
let lnum = nextnonblank(lnum + 1)
endwhile
call setloclist(0, toc, ' ')
call setloclist(0, [], 'a', {'title': 'Help TOC'})
lopen
let w:qf_toc = bufname
endfunction
nnoremap <silent><buffer> gO :call <sid>show_toc()<cr>
endif
let &cpo = s:cpo_save
unlet s:cpo_save

View File

@@ -1672,7 +1672,7 @@ filetypes:
- "*/templates/*.tpl"
---
name: help
remote: vim/vim:runtime
remote: neovim/neovim:runtime
glob: '**/help.vim'
filetypes:
- name: help

View File

@@ -3,7 +3,7 @@ if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'help') == -1
" Vim syntax file
" Language: Vim help file
" Maintainer: Bram Moolenaar (Bram@vim.org)
" Last Change: 2020 Jul 28
" Last Change: 2019 May 12
" Quit when a (custom) syntax file was already loaded
if exists("b:current_syntax")
@@ -13,7 +13,7 @@ endif
let s:cpo_save = &cpo
set cpo&vim
syn match helpHeadline "^[-A-Z .][-A-Z0-9 .()_]*\ze\(\s\+\*\|$\)"
syn match helpHeadline "^[-A-Z .][-A-Z0-9 .()_]*[ \t]\+\*"me=e-1
syn match helpSectionDelim "^===.*===$"
syn match helpSectionDelim "^---.*--$"
if has("conceal")
@@ -21,15 +21,9 @@ if has("conceal")
else
syn region helpExample matchgroup=helpIgnore start=" >$" start="^>$" end="^[^ \t]"me=e-1 end="^<"
endif
if has("ebcdic")
syn match helpHyperTextJump "\\\@<!|[^"*|]\+|" contains=helpBar
syn match helpHyperTextEntry "\*[^"*|]\+\*\s"he=e-1 contains=helpStar
syn match helpHyperTextEntry "\*[^"*|]\+\*$" contains=helpStar
else
syn match helpHyperTextJump "\\\@<!|[#-)!+-~]\+|" contains=helpBar
syn match helpHyperTextEntry "\*[#-)!+-~]\+\*\s"he=e-1 contains=helpStar
syn match helpHyperTextEntry "\*[#-)!+-~]\+\*$" contains=helpStar
endif
if has("conceal")
syn match helpBar contained "|" conceal
syn match helpBacktick contained "`" conceal
@@ -44,6 +38,7 @@ syn match helpNormal "|||"
syn match helpNormal ":|vim:|" " for :help modeline
syn match helpVim "\<Vim version [0-9][0-9.a-z]*"
syn match helpVim "VIM REFERENCE.*"
syn match helpVim "NVIM REFERENCE.*"
syn match helpOption "'[a-z]\{2,\}'"
syn match helpOption "'t_..'"
syn match helpCommand "`[^` \t]\+`"hs=s+1,he=e-1 contains=helpBacktick
@@ -68,7 +63,7 @@ syn match helpSpecial "\[N]"
syn match helpSpecial "N N"he=s+1
syn match helpSpecial "Nth"me=e-2
syn match helpSpecial "N-1"me=e-2
syn match helpSpecial "{[-a-zA-Z0-9'"*+/:%#=[\]<>.,]\+}"
syn match helpSpecial "{[-_a-zA-Z0-9'"*+/:%#=[\]<>.,]\+}"
syn match helpSpecial "\s\[[-a-z^A-Z0-9_]\{2,}]"ms=s+1
syn match helpSpecial "<[-a-zA-Z0-9_]\+>"
syn match helpSpecial "<[SCM]-.>"
@@ -92,15 +87,14 @@ syn match helpSpecial "\[group]"
syn match helpNormal "\[\(readonly\|fifo\|socket\|converted\|crypted\)]"
syn match helpSpecial "CTRL-."
syn match helpSpecial "CTRL-SHIFT-."
syn match helpSpecial "CTRL-Break"
syn match helpSpecial "CTRL-PageUp"
syn match helpSpecial "CTRL-PageDown"
syn match helpSpecial "CTRL-Insert"
syn match helpSpecial "CTRL-Del"
syn match helpSpecial "CTRL-{char}"
syn region helpNotVi start="{Vi[: ]" start="{not" start="{only" end="}" contains=helpLeadBlank,helpHyperTextJump
syn match helpLeadBlank "^\s\+" contained
syn match helpSpecial "META-."
syn match helpSpecial "ALT-."
" Highlight group items in their own color.
syn match helpComment "\t[* ]Comment\t\+[a-z].*"
@@ -154,7 +148,6 @@ if v:lang =~ '\<IT\>' || v:lang =~ '_IT\>' || v:lang =~? "italian"
syn match helpSpecial "Nmi"me=e-2
syn match helpSpecial "Nmo"me=e-2
syn match helpSpecial "\[interv.]"
syn region helpNotVi start="{non" start="{solo" start="{disponibile" end="}" contains=helpLeadBlank,helpHyperTextJump
endif
syn sync minlines=40
@@ -175,7 +168,6 @@ hi def link helpVim Identifier
hi def link helpCommand Comment
hi def link helpExample Comment
hi def link helpOption Type
hi def link helpNotVi Special
hi def link helpSpecial Special
hi def link helpNote Todo
hi def link helpWarning Todo