SILENT KILLERPanel

Current Path: > > usr > share > vim > vim80 > ftplugin


Operation   : Linux premium131.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64
Software     : Apache
Server IP    : 162.0.232.56 | Your IP: 216.73.216.111
Domains      : 1034 Domain(s)
Permission   : [ 0755 ]

Files and Folders in: //usr/share/vim/vim80/ftplugin

NameTypeSizeLast ModifiedActions
README.txt File 869 bytes August 02 2022 16:56:59.
a2ps.vim File 470 bytes August 02 2022 16:56:59.
aap.vim File 716 bytes August 02 2022 16:56:59.
abap.vim File 800 bytes August 02 2022 16:56:59.
abaqus.vim File 3391 bytes August 02 2022 16:56:59.
ada.vim File 6408 bytes August 02 2022 16:56:59.
alsaconf.vim File 438 bytes August 02 2022 16:56:59.
ant.vim File 1341 bytes August 02 2022 16:56:59.
arch.vim File 431 bytes August 02 2022 16:56:59.
art.vim File 410 bytes August 02 2022 16:56:59.
aspvbs.vim File 1916 bytes August 02 2022 16:56:59.
automake.vim File 337 bytes August 02 2022 16:56:59.
awk.vim File 411 bytes August 02 2022 16:56:59.
bdf.vim File 449 bytes August 02 2022 16:56:59.
bst.vim File 333 bytes August 02 2022 16:56:59.
btm.vim File 316 bytes August 02 2022 16:56:59.
bzl.vim File 3063 bytes August 02 2022 16:56:59.
c.vim File 1967 bytes August 02 2022 16:56:59.
calendar.vim File 462 bytes August 02 2022 16:56:59.
cdrdaoconf.vim File 383 bytes August 02 2022 16:56:59.
ch.vim File 472 bytes August 02 2022 16:56:59.
changelog.vim File 8891 bytes August 02 2022 16:56:59.
chicken.vim File 1663 bytes August 02 2022 16:56:59.
clojure.vim File 3833 bytes August 02 2022 16:56:59.
cmake.vim File 359 bytes August 02 2022 16:56:59.
cobol.vim File 9458 bytes August 02 2022 16:56:59.
conf.vim File 434 bytes August 02 2022 16:56:59.
config.vim File 1274 bytes August 02 2022 16:56:59.
context.vim File 4364 bytes August 02 2022 16:56:59.
cpp.vim File 288 bytes August 02 2022 16:56:59.
crm.vim File 414 bytes August 02 2022 16:56:59.
cs.vim File 802 bytes August 02 2022 16:56:59.
csc.vim File 734 bytes August 02 2022 16:56:59.
csh.vim File 1633 bytes August 02 2022 16:56:59.
css.vim File 528 bytes August 02 2022 16:56:59.
cucumber.vim File 5115 bytes August 02 2022 16:56:59.
cvsrc.vim File 399 bytes August 02 2022 16:56:59.
debchangelog.vim File 11495 bytes August 02 2022 16:56:59.
debcontrol.vim File 1840 bytes August 02 2022 16:56:59.
denyhosts.vim File 383 bytes August 02 2022 16:56:59.
dictconf.vim File 434 bytes August 02 2022 16:56:59.
dictdconf.vim File 435 bytes August 02 2022 16:56:59.
diff.vim File 355 bytes August 02 2022 16:56:59.
dircolors.vim File 431 bytes August 02 2022 16:56:59.
docbk.vim File 530 bytes August 02 2022 16:56:59.
dockerfile.vim File 356 bytes August 02 2022 16:56:59.
dosbatch.vim File 777 bytes August 02 2022 16:56:59.
dosini.vim File 458 bytes August 02 2022 16:56:59.
dtd.vim File 1123 bytes August 02 2022 16:56:59.
dtrace.vim File 1151 bytes August 02 2022 16:56:59.
eiffel.vim File 4088 bytes August 02 2022 16:56:59.
elinks.vim File 436 bytes August 02 2022 16:56:59.
erlang.vim File 1811 bytes August 02 2022 16:56:59.
eruby.vim File 3165 bytes August 02 2022 16:56:59.
eterm.vim File 470 bytes August 02 2022 16:56:59.
falcon.vim File 1344 bytes August 02 2022 16:56:59.
fetchmail.vim File 428 bytes August 02 2022 16:56:59.
flexwiki.vim File 1876 bytes August 02 2022 16:56:59.
fortran.vim File 4692 bytes August 02 2022 16:56:59.
framescript.vim File 780 bytes August 02 2022 16:56:59.
fvwm.vim File 390 bytes August 02 2022 16:56:59.
gdb.vim File 293 bytes August 02 2022 16:56:59.
git.vim File 1350 bytes August 02 2022 16:56:59.
gitcommit.vim File 2236 bytes August 02 2022 16:56:59.
gitconfig.vim File 376 bytes August 02 2022 16:56:59.
gitrebase.vim File 1458 bytes August 02 2022 16:56:59.
gitsendemail.vim File 157 bytes August 02 2022 16:56:59.
go.vim File 365 bytes August 02 2022 16:56:59.
gpg.vim File 433 bytes August 02 2022 16:56:59.
gprof.vim File 939 bytes August 02 2022 16:56:59.
groovy.vim File 343 bytes August 02 2022 16:56:59.
group.vim File 425 bytes August 02 2022 16:56:59.
grub.vim File 434 bytes August 02 2022 16:56:59.
haml.vim File 1887 bytes August 02 2022 16:56:59.
hamster.vim File 1920 bytes August 02 2022 16:56:59.
haskell.vim File 445 bytes August 02 2022 16:56:59.
help.vim File 442 bytes August 02 2022 16:56:59.
hgcommit.vim File 363 bytes August 02 2022 16:56:59.
hog.vim File 1394 bytes August 02 2022 16:56:59.
hostconf.vim File 383 bytes August 02 2022 16:56:59.
hostsaccess.vim File 436 bytes August 02 2022 16:56:59.
html.vim File 1625 bytes August 02 2022 16:56:59.
htmldjango.vim File 331 bytes August 02 2022 16:56:59.
indent.vim File 454 bytes August 02 2022 16:56:59.
initex.vim File 1005 bytes August 02 2022 16:56:59.
ishd.vim File 1264 bytes August 02 2022 16:56:59.
j.vim File 3394 bytes August 02 2022 16:56:59.
java.vim File 1686 bytes August 02 2022 16:56:59.
javascript.vim File 1047 bytes August 02 2022 16:56:59.
jproperties.vim File 321 bytes August 02 2022 16:56:59.
json.vim File 360 bytes August 02 2022 16:56:59.
jsp.vim File 2011 bytes August 02 2022 16:56:59.
kconfig.vim File 703 bytes August 02 2022 16:56:59.
kwt.vim File 851 bytes August 02 2022 16:56:59.
ld.vim File 470 bytes August 02 2022 16:56:59.
less.vim File 502 bytes August 02 2022 16:56:59.
lftp.vim File 434 bytes August 02 2022 16:56:59.
libao.vim File 440 bytes August 02 2022 16:56:59.
limits.vim File 436 bytes August 02 2022 16:56:59.
liquid.vim File 1897 bytes August 02 2022 16:56:59.
lisp.vim File 769 bytes August 02 2022 16:56:59.
logcheck.vim File 500 bytes August 02 2022 16:56:59.
loginaccess.vim File 442 bytes August 02 2022 16:56:59.
logindefs.vim File 440 bytes August 02 2022 16:56:59.
logtalk.dict File 1790 bytes August 02 2022 16:56:59.
logtalk.vim File 401 bytes August 02 2022 16:56:59.
lprolog.vim File 1279 bytes August 02 2022 16:56:59.
lua.vim File 973 bytes August 02 2022 16:56:59.
m4.vim File 426 bytes August 02 2022 16:56:59.
mail.vim File 1107 bytes August 02 2022 16:56:59.
mailaliases.vim File 383 bytes August 02 2022 16:56:59.
mailcap.vim File 434 bytes August 02 2022 16:56:59.
make.vim File 935 bytes August 02 2022 16:56:59.
man.vim File 5646 bytes August 02 2022 16:56:59.
manconf.vim File 444 bytes August 02 2022 16:56:59.
markdown.vim File 1177 bytes August 02 2022 16:56:59.
matlab.vim File 754 bytes August 02 2022 16:56:59.
mf.vim File 3249 bytes August 02 2022 16:56:59.
modconf.vim File 477 bytes August 02 2022 16:56:59.
mp.vim File 3712 bytes August 02 2022 16:56:59.
mplayerconf.vim File 472 bytes August 02 2022 16:56:59.
mrxvtrc.vim File 798 bytes August 02 2022 16:56:59.
msmessages.vim File 1141 bytes August 02 2022 16:56:59.
muttrc.vim File 467 bytes August 02 2022 16:56:59.
nanorc.vim File 447 bytes August 02 2022 16:56:59.
neomuttrc.vim File 532 bytes August 02 2022 16:56:59.
netrc.vim File 428 bytes August 02 2022 16:56:59.
nsis.vim File 1323 bytes August 02 2022 16:56:59.
objc.vim File 296 bytes August 02 2022 16:56:59.
ocaml.vim File 23041 bytes August 02 2022 16:56:59.
occam.vim File 1297 bytes August 02 2022 16:56:59.
pamconf.vim File 433 bytes August 02 2022 16:56:59.
pascal.vim File 667 bytes August 02 2022 16:56:59.
passwd.vim File 424 bytes August 02 2022 16:56:59.
pdf.vim File 2613 bytes August 02 2022 16:56:59.
perl.vim File 2850 bytes August 02 2022 16:56:59.
perl6.vim File 2529 bytes August 02 2022 16:56:59.
php.vim File 2813 bytes August 02 2022 16:56:59.
pinfo.vim File 435 bytes August 02 2022 16:56:59.
plaintex.vim File 1150 bytes August 02 2022 16:56:59.
postscr.vim File 1006 bytes August 02 2022 16:56:59.
procmail.vim File 479 bytes August 02 2022 16:56:59.
prolog.vim File 440 bytes August 02 2022 16:56:59.
protocols.vim File 457 bytes August 02 2022 16:56:59.
pyrex.vim File 766 bytes August 02 2022 16:56:59.
python.vim File 5563 bytes August 02 2022 16:56:59.
qf.vim File 459 bytes August 02 2022 16:56:59.
quake.vim File 439 bytes August 02 2022 16:56:59.
r.vim File 858 bytes August 02 2022 16:56:59.
racc.vim File 449 bytes August 02 2022 16:56:59.
readline.vim File 438 bytes August 02 2022 16:56:59.
registry.vim File 740 bytes August 02 2022 16:56:59.
reva.vim File 709 bytes August 02 2022 16:56:59.
rhelp.vim File 738 bytes August 02 2022 16:56:59.
rmd.vim File 1483 bytes August 02 2022 16:56:59.
rnc.vim File 431 bytes August 02 2022 16:56:59.
rnoweb.vim File 1037 bytes August 02 2022 16:56:59.
rpl.vim File 620 bytes August 02 2022 16:56:59.
rrst.vim File 1103 bytes August 02 2022 16:56:59.
rst.vim File 456 bytes August 02 2022 16:56:59.
ruby.vim File 17008 bytes August 02 2022 16:56:59.
rust.vim File 6574 bytes August 02 2022 16:56:59.
sass.vim File 607 bytes August 02 2022 16:56:59.
sbt.vim File 347 bytes August 02 2022 16:56:59.
scala.vim File 1151 bytes August 02 2022 16:56:59.
scheme.vim File 1394 bytes August 02 2022 16:56:59.
screen.vim File 436 bytes August 02 2022 16:56:59.
scss.vim File 239 bytes August 02 2022 16:56:59.
sensors.vim File 455 bytes August 02 2022 16:56:59.
services.vim File 452 bytes August 02 2022 16:56:59.
setserial.vim File 439 bytes August 02 2022 16:56:59.
sgml.vim File 1210 bytes August 02 2022 16:56:59.
sh.vim File 1202 bytes August 02 2022 16:56:59.
sieve.vim File 469 bytes August 02 2022 16:56:59.
slpconf.vim File 477 bytes August 02 2022 16:56:59.
slpreg.vim File 476 bytes August 02 2022 16:56:59.
slpspi.vim File 467 bytes August 02 2022 16:56:59.
spec.vim File 5864 bytes August 02 2022 16:56:59.
sql.vim File 21615 bytes August 02 2022 16:56:59.
sshconfig.vim File 441 bytes August 02 2022 16:56:59.
sudoers.vim File 438 bytes August 02 2022 16:56:59.
svg.vim File 1200 bytes August 02 2022 16:56:59.
sysctl.vim File 453 bytes August 02 2022 16:56:59.
systemd.vim File 158 bytes August 02 2022 16:56:59.
systemverilog.vim File 239 bytes August 02 2022 16:56:59.
tcl.vim File 1002 bytes August 02 2022 16:56:59.
tcsh.vim File 1207 bytes August 02 2022 16:56:59.
terminfo.vim File 430 bytes August 02 2022 16:56:59.
tex.vim File 1641 bytes August 02 2022 16:56:59.
text.vim File 433 bytes August 02 2022 16:56:59.
tmux.vim File 292 bytes August 02 2022 16:56:59.
treetop.vim File 416 bytes August 02 2022 16:56:59.
tt2html.vim File 434 bytes August 02 2022 16:56:59.
udevconf.vim File 434 bytes August 02 2022 16:56:59.
udevperm.vim File 432 bytes August 02 2022 16:56:59.
udevrules.vim File 426 bytes August 02 2022 16:56:59.
updatedb.vim File 443 bytes August 02 2022 16:56:59.
vb.vim File 1907 bytes August 02 2022 16:56:59.
verilog.vim File 1977 bytes August 02 2022 16:56:59.
vhdl.vim File 3497 bytes August 02 2022 16:56:59.
vim.vim File 3212 bytes August 02 2022 16:56:59.
vroom.vim File 924 bytes August 02 2022 16:56:59.
xdefaults.vim File 481 bytes August 02 2022 16:56:59.
xf86conf.vim File 434 bytes August 02 2022 16:56:59.
xhtml.vim File 2036 bytes August 02 2022 16:56:59.
xinetd.vim File 476 bytes August 02 2022 16:56:59.
xml.vim File 1911 bytes August 02 2022 16:56:59.
xmodmap.vim File 434 bytes August 02 2022 16:56:59.
xs.vim File 465 bytes August 02 2022 16:56:59.
xsd.vim File 1171 bytes August 02 2022 16:56:59.
xslt.vim File 539 bytes August 02 2022 16:56:59.
yaml.vim File 464 bytes August 02 2022 16:56:59.
zimbu.vim File 5389 bytes August 02 2022 16:56:59.
zsh.vim File 818 bytes August 02 2022 16:56:59.

Reading File: //usr/share/vim/vim80/ftplugin/cobol.vim

" Vim filetype plugin file
" Language:	cobol
" Author:	Tim Pope <vimNOSPAM@tpope.info>
" Last Update:	By ZyX: use shiftwidth()

" Insert mode mappings: <C-T> <C-D> <Tab>
" Normal mode mappings: < > << >> [[ ]] [] ][
" Visual mode mappings: < >

if exists("b:did_ftplugin")
    finish
endif
let b:did_ftplugin = 1

let s:cpo_save = &cpo
set cpo&vim

setlocal commentstring=\ \ \ \ \ \ *%s
setlocal comments=:*
setlocal fo+=croqlt
setlocal expandtab
setlocal textwidth=72

" matchit support
if exists("loaded_matchit")
    let s:ordot = '\|\ze\.\%( \@=\|$\)'
    let b:match_ignorecase=1
    "let b:match_skip = 'getline(".") =~ "^.\\{6\\}[*/C]"'
    let b:match_words=
    \ '\$if\>:$else\>:\$endif\>,' .
    \ '[$-]\@<!\<if\>:\<\%(then\|else\)\>:\<end-if\>'.s:ordot.',' .
    \ '-\@<!\<perform\s\+\%(\d\+\s\+times\|until\|varying\|with\s\+test\)\>:\<end-perform\>'.s:ordot . ',' .
    \ '-\@<!\<\%(search\|evaluate\)\>:\<\%(when\)\>:\<end-\%(search\|evaluate\)\>' .s:ordot . ',' .
    \ '-\@<!\<\%(add\|compute\|divide\|multiply\|subtract\)\>\%(.*\(\%$\|\%(\n\%(\%(\s*\|.\{6\}\)[*/].*\n\)*\)\=\s*\%(not\s\+\)\=on\s\+size\s\+error\>\)\)\@=:\%(\<not\s\+\)\@<!\<\%(not\s\+\)\=on\s\+size\s\+error\>:\<end-\%(add\|compute\|divide\|multiply\|subtract\)\>' .s:ordot . ',' .
    \ '-\@<!\<\%(string\|unstring\|accept\|display\|call\)\>\%(.*\(\%$\|\%(\n\%(\%(\s*\|.\{6\}\)[*/].*\n\)*\)\=\s*\%(not\s\+\)\=on\s\+\%(overflow\|exception\)\>\)\)\@=:\%(\<not\s\+\)\@<!\<\%(not\s\+\)\=on\s\+\%(overflow\|exception\)\>:\<end-\%(string\|unstring\|accept\|display\|call\)\>' .s:ordot . ',' .
    \ '-\@<!\<\%(delete\|rewrite\|start\|write\|read\)\>\%(.*\(\%$\|\%(\n\%(\%(\s*\|.\{6\}\)[*/].*\n\)*\)\=\s*\%(invalid\s\+key\|at\s\+end\|no\s\+data\|at\s\+end-of-page\)\>\)\)\@=:\%(\<not\s\+\)\@<!\<\%(not\s\+\)\=\%(invalid\s\+key\|at\s\+end\|no\s\+data\|at\s\+end-of-page\)\>:\<end-\%(delete\|rewrite\|start\|write\|read\)\>' .s:ordot
endif

if has("gui_win32") && !exists("b:browsefilter")
  let b:browsefilter = "COBOL Source Files (*.cbl, *.cob)\t*.cbl;*.cob;*.lib\n".
		     \ "All Files (*.*)\t*.*\n"
endif

let b:undo_ftplugin = "setlocal com< cms< fo< et< tw<" .
            \ " | unlet! b:browsefilter b:match_words b:match_ignorecase b:match_skip"
if !exists("g:no_plugin_maps") && !exists("g:no_cobol_maps")
    let b:undo_ftplugin = b:undo_ftplugin .
            \ " | sil! exe 'nunmap <buffer> <'" .
            \ " | sil! exe 'nunmap <buffer> >'" .
            \ " | sil! exe 'nunmap <buffer> <<'" .
            \ " | sil! exe 'nunmap <buffer> >>'" .
            \ " | sil! exe 'vunmap <buffer> <'" .
            \ " | sil! exe 'vunmap <buffer> >'" .
            \ " | sil! exe 'iunmap <buffer> <C-D>'" .
            \ " | sil! exe 'iunmap <buffer> <C-T>'" .
            \ " | sil! exe 'iunmap <buffer> <Tab>'" .
            \ " | sil! exe 'nunmap <buffer> <Plug>Traditional'" .
            \ " | sil! exe 'nunmap <buffer> <Plug>Comment'" .
            \ " | sil! exe 'nunmap <buffer> <Plug>DeComment'" .
            \ " | sil! exe 'vunmap <buffer> <Plug>VisualTraditional'" .
            \ " | sil! exe 'vunmap <buffer> <Plug>VisualComment'" .
            \ " | sil! exe 'iunmap <buffer> <Plug>VisualDeComment'" .
            \ " | sil! exe 'unmap  <buffer> [['" .
            \ " | sil! exe 'unmap  <buffer> ]]'" .
            \ " | sil! exe 'unmap  <buffer> []'" .
            \ " | sil! exe 'unmap  <buffer> ]['"
endif

if !exists("g:no_plugin_maps") && !exists("g:no_cobol_maps")
    if version >= 700
        nnoremap <silent> <buffer> > :set opfunc=<SID>IncreaseFunc<CR>g@
        nnoremap <silent> <buffer> < :set opfunc=<SID>DecreaseFunc<CR>g@
    endif
    nnoremap <silent> <buffer> >> :call CobolIndentBlock(1)<CR>
    nnoremap <silent> <buffer> << :call CobolIndentBlock(-1)<CR>
    vnoremap <silent> <buffer> > :call CobolIndentBlock(v:count1)<CR>
    vnoremap <silent> <buffer> < :call CobolIndentBlock(-v:count1)<CR>
    inoremap <silent> <buffer> <C-T> <C-R>=<SID>IncreaseIndent()<CR><C-R>=<SID>RestoreShiftwidth()<CR>
    inoremap <silent> <buffer> <C-D> <C-R>=<SID>DecreaseIndent()<CR><C-R>=<SID>RestoreShiftwidth()<CR>
    if !maparg("<Tab>","i")
        inoremap <silent> <buffer> <Tab> <C-R>=<SID>Tab()<CR><C-R>=<SID>RestoreShiftwidth()<CR>
    endif
    noremap <silent> <buffer> [[ m':call search('\c^\%(\s*\<Bar>.\{6\}\s\+\)\zs[A-Za-z0-9-]\+\s\+\%(division\<Bar>section\)\s*\.','bW')<CR>
    noremap <silent> <buffer> ]] m':call search('\c^\%(\s*\<Bar>.\{6\}\s\+\)\zs[A-Za-z0-9-]\+\s\+\%(division\<Bar>section\)\.','W')<CR>
    noremap <silent> <buffer> [] m':call <SID>toend('b')<CR>
    noremap <silent> <buffer> ][ m':call <SID>toend('')<CR>
    " For EnhancedCommentify
    noremap <silent> <buffer> <Plug>Traditional      :call <SID>Comment('t')<CR>
    noremap <silent> <buffer> <Plug>Comment          :call <SID>Comment('c')<CR>
    noremap <silent> <buffer> <Plug>DeComment        :call <SID>Comment('u')<CR>
    noremap <silent> <buffer> <Plug>VisualTraditional :'<,'>call <SID>Comment('t')<CR>
    noremap <silent> <buffer> <Plug>VisualComment     :'<,'>call <SID>Comment('c')<CR>
    noremap <silent> <buffer> <Plug>VisualDeComment   :'<,'>call <SID>Comment('u')<CR>
endif

let &cpo = s:cpo_save
unlet s:cpo_save

if exists("g:did_cobol_ftplugin_functions")
    finish
endif
let g:did_cobol_ftplugin_functions = 1

function! s:repeat(str,count)
    let i = 0
    let ret = ""
    while i < a:count
        let ret = ret . a:str
        let i = i + 1
    endwhile
    return ret
endfunction

function! s:increase(...)
    let lnum = '.'
    let sw = shiftwidth()
    let i = a:0 ? a:1 : indent(lnum)
    if i >= 11
        return sw - (i - 11) % sw
    elseif i >= 7
        return 11-i
    elseif i == 6
        return 1
    else
        return 6-i
    endif
endfunction

function! s:decrease(...)
    let lnum = '.'
    let sw = shiftwidth()
    let i = indent(a:0 ? a:1 : lnum)
    if i >= 11 + sw
        return 1 + (i + 12) % sw
    elseif i > 11
        return i-11
    elseif i > 7
        return i-7
    elseif i == 7
        return 1
    else
        return i
    endif
endfunction

function! CobolIndentBlock(shift)
    let head = strpart(getline('.'),0,7)
    let tail = strpart(getline('.'),7)
    let indent = match(tail,'[^ ]')
    let sw = shiftwidth()
    let shift = a:shift
    if shift > 0
        if indent < 4
            let tail = s:repeat(" ",4-indent).tail
            let shift = shift - 1
        endif
        let tail = s:repeat(" ",shift*sw).tail
        let shift = 0
    elseif shift < 0
        if (indent-4) > -shift * sw
            let tail = strpart(tail,-shift * sw)
        elseif (indent-4) > (-shift-1) * sw
            let tail = strpart(tail,indent - 4)
        else
            let tail = strpart(tail,indent)
        endif
    endif
    call setline('.',head.tail)
endfunction

function! s:IncreaseFunc(type)
    '[,']call CobolIndentBlock(1)
endfunction

function! s:DecreaseFunc(type)
    '[,']call CobolIndentBlock(-1)
endfunction

function! s:IncreaseIndent()
    let c = "\<C-T>"
    if exists("*InsertCtrlTWrapper")
        let key = InsertCtrlTWrapper()
        if key != c
            return key
        endif
    endif
    let interval = s:increase()
    let b:cobol_shiftwidth = &shiftwidth
    let &shiftwidth = 1
    let lastchar = strpart(getline('.'),col('.')-2,1)
    if lastchar == '0' || lastchar == '^'
        return "\<BS>".lastchar.c
    else
        return s:repeat(c,interval)
    endif
endfunction

function! s:DecreaseIndent()
    let c = "\<C-D>"
    if exists("*InsertCtrlDWrapper")
        " I hack Ctrl-D to delete when not at the end of the line.
        let key = InsertCtrlDWrapper()
        if key != c
            return key
        endif
    endif
    let interval = s:decrease()
    let b:cobol_shiftwidth = &shiftwidth
    let &shiftwidth = 1
    return s:repeat(c,interval)
endfunction

function! s:RestoreShiftwidth()
    if exists("b:cobol_shiftwidth")
        let &shiftwidth=b:cobol_shiftwidth
        unlet b:cobol_shiftwidth
    endif
    return ""
endfunction

function! s:Tab()
    if (strpart(getline('.'),0,col('.')-1) =~ '^\s*$' && &sta)
        return s:IncreaseIndent()
    " &softtabstop < 0: &softtabstop follows &shiftwidth
    elseif (&sts < 0 || &sts == shiftwidth()) && &sts != 8 && &et
        return s:repeat(" ",s:increase(col('.')-1))
    else
        return "\<Tab>"
    endif
endfunction

function! s:Comment(arg)
    " For EnhancedCommentify
    let line = getline('.')
    if (line =~ '^.\{6\}[*/C]' || a:arg == 'c') && a:arg != 'u'
        let line = substitute(line,'^.\{6\}\zs.',' ','')
    else
        let line = substitute(line,'^.\{6\}\zs.','*','')
    endif
    call setline('.',line)
endfunction

function! s:toend(direction)
    let ignore = '^\(\s*\|.\{6\}\)\%([*/]\|\s*$\)'
    let keep = line('.')
    keepjumps +
    while line('.') < line('$') && getline('.') =~ ignore
        keepjumps +
    endwhile
    let res = search('\c^\%(\s*\|.\{6\}\s\+\)\zs[A-Za-z0-9-]\+\s\+\%(division\|section\)\s*\.',a:direction.'W')
    if a:direction != 'b' && !res
        let res = line('$')
        keepjumps $
    elseif res
        keepjumps -
    endif
    if res
        while line('.') > 1 && getline('.') =~ ignore
            keepjumps -
        endwhile
        if line('.') == 1 && getline('.') =~ ignore
            exe "keepjumps ".keep
        endif
    else
        exe "keepjumps ".keep
    endif
endfunction

SILENT KILLER Tool