__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
" Vim indent file
" Language: cobol
" Maintainer: Ankit Jain <ajatkj@yahoo.co.in>
" (formerly Tim Pope <vimNOSPAM@tpope.info>)
" $Id: cobol.vim,v 1.1 2007/05/05 18:08:19 vimboss Exp $
" Last Update: By Ankit Jain on 22.03.2019
" Ankit Jain 22.03.2019 Changes & fixes:
" Allow chars in 1st 6 columns
" #C22032019
" Ankit Jain 24.09.2021 add b:undo_indent (request by tpope)
if exists("b:did_indent")
finish
endif
let b:did_indent = 1
setlocal expandtab
setlocal indentexpr=GetCobolIndent(v:lnum)
setlocal indentkeys&
setlocal indentkeys+=0<*>,0/,0$,0=01,=~division,=~section,0=~end,0=~then,0=~else,0=~when,*<Return>,.
let b:undo_indent = "setlocal expandtab< indentexpr< indentkeys<"
" Only define the function once.
if exists("*GetCobolIndent")
finish
endif
let s:skip = 'getline(".") =~ "^.\\{6\\}[*/$-]\\|\"[^\"]*\""'
function! s:prevgood(lnum)
" Find a non-blank line above the current line.
" Skip over comments.
let lnum = a:lnum
while lnum > 0
let lnum = prevnonblank(lnum - 1)
let line = getline(lnum)
if line !~? '^\s*[*/$-]' && line !~? '^.\{6\}[*/$CD-]'
break
endif
endwhile
return lnum
endfunction
function! s:stripped(lnum)
return substitute(strpart(getline(a:lnum),0,72),'^\s*','','')
endfunction
function! s:optionalblock(lnum,ind,blocks,clauses)
let ind = a:ind
let clauses = '\c\<\%(\<NOT\s\+\)\@<!\%(NOT\s\+\)\=\%('.a:clauses.'\)'
let begin = '\c-\@<!\<\%('.a:blocks.'\)\>'
let beginfull = begin.'\ze.*\%(\n\%(\s*\%([*/$-].*\)\=\n\)*\)\=\s*\%('.clauses.'\)'
let end = '\c\<end-\%('.a:blocks.'\)\>\|\%(\.\%( \|$\)\)\@='
let cline = s:stripped(a:lnum)
let line = s:stripped(s:prevgood(a:lnum))
if cline =~? clauses "&& line !~? '^search\>'
call cursor(a:lnum,1)
let lastclause = searchpair(beginfull,clauses,end,'bWr',s:skip)
if getline(lastclause) =~? clauses && s:stripped(lastclause) !~? '^'.begin
let ind = indent(lastclause)
elseif lastclause > 0
let ind = indent(lastclause) + shiftwidth()
"let ind = ind + shiftwidth()
endif
elseif line =~? clauses && cline !~? end
let ind = ind + shiftwidth()
endif
return ind
endfunction
function! GetCobolIndent(lnum) abort
let minshft = 6
let ashft = minshft + 1
let bshft = ashft + 4
" (Obsolete) numbered lines
" #C22032019: Columns 1-6 could have alphabets as well as numbers
"if getline(a:lnum) =~? '^\s*\d\{6\}\%($\|[ */$CD-]\)'
if getline(a:lnum) =~? '^\s*[a-zA-Z0-9]\{6\}\%($\|[ */$CD-]\)'
return 0
endif
let cline = s:stripped(a:lnum)
" Comments, etc. must start in the 7th column
if cline =~? '^[*/$-]'
return minshft
elseif cline =~# '^[CD]' && indent(a:lnum) == minshft
return minshft
endif
" Divisions, sections, and file descriptions start in area A
if cline =~? '\<\(DIVISION\|SECTION\)\%($\|\.\)' || cline =~? '^[FS]D\>'
return ashft
endif
" Fields
if cline =~? '^0*\(1\|77\)\>'
return ashft
endif
if cline =~? '^\d\+\>'
let cnum = matchstr(cline,'^\d\+\>')
let default = 0
let step = -1
while step < 2
let lnum = a:lnum
while lnum > 0 && lnum < line('$') && lnum > a:lnum - 500 && lnum < a:lnum + 500
let lnum = step > 0 ? nextnonblank(lnum + step) : prevnonblank(lnum + step)
let line = getline(lnum)
let lindent = indent(lnum)
if line =~? '^\s*\d\+\>'
let num = matchstr(line,'^\s*\zs\d\+\>')
if 0+cnum == num
return lindent
elseif 0+cnum > num && default < lindent + shiftwidth()
let default = lindent + shiftwidth()
endif
elseif lindent < bshft && lindent >= ashft
break
endif
endwhile
let step = step + 2
endwhile
return default ? default : bshft
endif
let lnum = s:prevgood(a:lnum)
" Hit the start of the file, use "zero" indent.
if lnum == 0
return ashft
endif
" Initial spaces are ignored
let line = s:stripped(lnum)
let ind = indent(lnum)
" Paragraphs. There may be some false positives.
if cline =~? '^\(\a[A-Z0-9-]*[A-Z0-9]\|\d[A-Z0-9-]*\a\)\.' "\s*$'
if cline !~? '^EXIT\s*\.' && line =~? '\.\s*$'
return ashft
endif
endif
" Paragraphs in the identification division.
"if cline =~? '^\(PROGRAM-ID\|AUTHOR\|INSTALLATION\|' .
"\ 'DATE-WRITTEN\|DATE-COMPILED\|SECURITY\)\>'
"return ashft
"endif
if line =~? '\.$'
" XXX
return bshft
endif
if line =~? '^PERFORM\>'
let perfline = substitute(line, '\c^PERFORM\s*', "", "")
if perfline =~? '^\%(\k\+\s\+TIMES\)\=\s*$'
let ind = ind + shiftwidth()
elseif perfline =~? '^\%(WITH\s\+TEST\|VARYING\|UNTIL\)\>.*[^.]$'
let ind = ind + shiftwidth()
endif
endif
if line =~? '^\%(IF\|THEN\|ELSE\|READ\|EVALUATE\|SEARCH\|SELECT\)\>'
let ind = ind + shiftwidth()
endif
let ind = s:optionalblock(a:lnum,ind,'ADD\|COMPUTE\|DIVIDE\|MULTIPLY\|SUBTRACT','ON\s\+SIZE\s\+ERROR')
let ind = s:optionalblock(a:lnum,ind,'STRING\|UNSTRING\|ACCEPT\|DISPLAY\|CALL','ON\s\+OVERFLOW\|ON\s\+EXCEPTION')
if cline !~? '^AT\s\+END\>' || line !~? '^SEARCH\>'
let ind = s:optionalblock(a:lnum,ind,'DELETE\|REWRITE\|START\|WRITE\|READ','INVALID\s\+KEY\|AT\s\+END\|NO\s\+DATA\|AT\s\+END-OF-PAGE')
endif
if cline =~? '^WHEN\>'
call cursor(a:lnum,1)
" We also search for READ so that contained AT ENDs are skipped
let lastclause = searchpair('\c-\@<!\<\%(SEARCH\|EVALUATE\|READ\)\>','\c\<\%(WHEN\|AT\s\+END\)\>','\c\<END-\%(SEARCH\|EVALUATE\|READ\)\>','bW',s:skip)
let g:foo = s:stripped(lastclause)
if s:stripped(lastclause) =~? '\c\<\%(WHEN\|AT\s\+END\)\>'
"&& s:stripped(lastclause) !~? '^\%(SEARCH\|EVALUATE\|READ\)\>'
let ind = indent(lastclause)
elseif lastclause > 0
let ind = indent(lastclause) + shiftwidth()
endif
elseif line =~? '^WHEN\>'
let ind = ind + shiftwidth()
endif
"I'm not sure why I had this
"if line =~? '^ELSE\>-\@!' && line !~? '\.$'
"let ind = indent(s:prevgood(lnum))
"endif
if cline =~? '^\(END\)\>-\@!'
" On lines with just END, 'guess' a simple shift left
let ind = ind - shiftwidth()
elseif cline =~? '^\(END-IF\|THEN\|ELSE\)\>-\@!'
call cursor(a:lnum,indent(a:lnum))
let match = searchpair('\c-\@<!\<IF\>','\c-\@<!\%(THEN\|ELSE\)\>','\c-\@<!\<END-IF\>\zs','bnW',s:skip)
if match > 0
let ind = indent(match)
endif
elseif cline =~? '^END-[A-Z]'
let beginword = matchstr(cline,'\c\<END-\zs[A-Z0-9-]\+')
let endword = 'END-'.beginword
let first = 0
let suffix = '.*\%(\n\%(\%(\s*\|.\{6\}\)[*/].*\n\)*\)\=\s*'
if beginword =~? '^\%(ADD\|COMPUTE\|DIVIDE\|MULTIPLY\|SUBTRACT\)$'
let beginword = beginword . suffix . '\<\%(NOT\s\+\)\=ON\s\+SIZE\s\+ERROR'
let g:beginword = beginword
let first = 1
elseif beginword =~? '^\%(STRING\|UNSTRING\)$'
let beginword = beginword . suffix . '\<\%(NOT\s\+\)\=ON\s\+OVERFLOW'
let first = 1
elseif beginword =~? '^\%(ACCEPT\|DISPLAY\)$'
let beginword = beginword . suffix . '\<\%(NOT\s\+\)\=ON\s\+EXCEPTION'
let first = 1
elseif beginword ==? 'CALL'
let beginword = beginword . suffix . '\<\%(NOT\s\+\)\=ON\s\+\%(EXCEPTION\|OVERFLOW\)'
let first = 1
elseif beginword =~? '^\%(DELETE\|REWRITE\|START\|READ\|WRITE\)$'
let first = 1
let beginword = beginword . suffix . '\<\%(NOT\s\+\)\=\(INVALID\s\+KEY'
if beginword =~? '^READ'
let first = 0
let beginword = beginword . '\|AT\s\+END\|NO\s\+DATA'
elseif beginword =~? '^WRITE'
let beginword = beginword . '\|AT\s\+END-OF-PAGE'
endif
let beginword = beginword . '\)'
endif
call cursor(a:lnum,indent(a:lnum))
let match = searchpair('\c-\@<!\<'.beginword.'\>','','\c\<'.endword.'\>\zs','bnW'.(first? 'r' : ''),s:skip)
if match > 0
let ind = indent(match)
elseif cline =~? '^\(END-\(READ\|EVALUATE\|SEARCH\|PERFORM\)\)\>'
let ind = ind - shiftwidth()
endif
endif
return ind < bshft ? bshft : ind
endfunction
| Name | Type | Size | Permission | Actions |
|---|---|---|---|---|
| aap.vim | File | 331 B | 0644 |
|
| ada.vim | File | 11.06 KB | 0644 |
|
| ant.vim | File | 290 B | 0644 |
|
| automake.vim | File | 243 B | 0644 |
|
| awk.vim | File | 7.68 KB | 0644 |
|
| bash.vim | File | 390 B | 0644 |
|
| basic.vim | File | 250 B | 0644 |
|
| bib.vim | File | 346 B | 0644 |
|
| bitbake.vim | File | 583 B | 0644 |
|
| bst.vim | File | 1.86 KB | 0644 |
|
| bzl.vim | File | 2.86 KB | 0644 |
|
| c.vim | File | 391 B | 0644 |
|
| cdl.vim | File | 4.26 KB | 0644 |
|
| ch.vim | File | 556 B | 0644 |
|
| chaiscript.vim | File | 1.18 KB | 0644 |
|
| changelog.vim | File | 264 B | 0644 |
|
| chatito.vim | File | 731 B | 0644 |
|
| clojure.vim | File | 11.29 KB | 0644 |
|
| cmake.vim | File | 2.98 KB | 0644 |
|
| cobol.vim | File | 8.63 KB | 0644 |
|
| config.vim | File | 2.17 KB | 0644 |
|
| context.vim | File | 1.67 KB | 0644 |
|
| cpp.vim | File | 395 B | 0644 |
|
| cs.vim | File | 1.88 KB | 0644 |
|
| css.vim | File | 1.77 KB | 0644 |
|
| cucumber.vim | File | 2.74 KB | 0644 |
|
| cuda.vim | File | 371 B | 0644 |
|
| d.vim | File | 605 B | 0644 |
|
| dictconf.vim | File | 411 B | 0644 |
|
| dictdconf.vim | File | 414 B | 0644 |
|
| docbk.vim | File | 336 B | 0644 |
|
| dosbatch.vim | File | 1.35 KB | 0644 |
|
| dtd.vim | File | 11.79 KB | 0644 |
|
| dtrace.vim | File | 451 B | 0644 |
|
| dts.vim | File | 1.69 KB | 0644 |
|
| dune.vim | File | 430 B | 0644 |
|
| dylan.vim | File | 2.75 KB | 0644 |
|
| eiffel.vim | File | 3.24 KB | 0644 |
|
| elm.vim | File | 3.2 KB | 0644 |
|
| erlang.vim | File | 50.74 KB | 0644 |
|
| eruby.vim | File | 2.95 KB | 0644 |
|
| eterm.vim | File | 743 B | 0644 |
|
| expect.vim | File | 207 B | 0644 |
|
| falcon.vim | File | 13.84 KB | 0644 |
|
| fennel.vim | File | 273 B | 0644 |
|
| fish.vim | File | 2.66 KB | 0644 |
|
| fortran.vim | File | 7.72 KB | 0644 |
|
| framescript.vim | File | 891 B | 0644 |
|
| freebasic.vim | File | 237 B | 0644 |
|
| gdscript.vim | File | 4.26 KB | 0644 |
|
| gitconfig.vim | File | 841 B | 0644 |
|
| gitolite.vim | File | 1.29 KB | 0644 |
|
| go.vim | File | 1.73 KB | 0644 |
|
| gyp.vim | File | 169 B | 0644 |
|
| haml.vim | File | 2.19 KB | 0644 |
|
| hamster.vim | File | 1.65 KB | 0644 |
|
| hare.vim | File | 4.38 KB | 0644 |
|
| hog.vim | File | 1.85 KB | 0644 |
|
| html.vim | File | 33.12 KB | 0644 |
|
| htmldjango.vim | File | 273 B | 0644 |
|
| idlang.vim | File | 1.68 KB | 0644 |
|
| ishd.vim | File | 1.83 KB | 0644 |
|
| j.vim | File | 1.77 KB | 0644 |
|
| java.vim | File | 4.19 KB | 0644 |
|
| javascript.vim | File | 15.13 KB | 0644 |
|
| javascriptreact.vim | File | 109 B | 0644 |
|
| json.vim | File | 4.54 KB | 0644 |
|
| jsonc.vim | File | 4.74 KB | 0644 |
|
| jsp.vim | File | 462 B | 0644 |
|
| julia.vim | File | 15.29 KB | 0644 |
|
| kotlin.vim | File | 1.53 KB | 0644 |
|
| krl.vim | File | 4.25 KB | 0644 |
|
| ld.vim | File | 1.82 KB | 0644 |
|
| less.vim | File | 243 B | 0644 |
|
| lifelines.vim | File | 638 B | 0644 |
|
| liquid.vim | File | 2.03 KB | 0644 |
|
| lisp.vim | File | 349 B | 0644 |
|
| livebook.vim | File | 206 B | 0644 |
|
| logtalk.vim | File | 1.91 KB | 0644 |
|
| lua.vim | File | 2.22 KB | 0644 |
|
| luau.vim | File | 252 B | 0644 |
|
| mail.vim | File | 385 B | 0644 |
|
| make.vim | File | 3.48 KB | 0644 |
|
| matlab.vim | File | 4.81 KB | 0644 |
|
| meson.vim | File | 5.19 KB | 0644 |
|
| mf.vim | File | 164 B | 0644 |
|
| mma.vim | File | 2.31 KB | 0644 |
|
| mp.vim | File | 9.72 KB | 0644 |
|
| nginx.vim | File | 1.7 KB | 0644 |
|
| nsis.vim | File | 3.23 KB | 0644 |
|
| objc.vim | File | 1.65 KB | 0644 |
|
| obse.vim | File | 1.4 KB | 0644 |
|
| ocaml.vim | File | 9.09 KB | 0644 |
|
| occam.vim | File | 4.63 KB | 0644 |
|
| pascal.vim | File | 5.66 KB | 0644 |
|
| perl.vim | File | 5.91 KB | 0644 |
|
| php.vim | File | 25.76 KB | 0644 |
|
| postscr.vim | File | 1.64 KB | 0644 |
|
| pov.vim | File | 2.71 KB | 0644 |
|
| prolog.vim | File | 1.91 KB | 0644 |
|
| ps1.vim | File | 410 B | 0644 |
|
| pyrex.vim | File | 326 B | 0644 |
|
| python.vim | File | 886 B | 0644 |
|
| qb64.vim | File | 232 B | 0644 |
|
| qml.vim | File | 1.27 KB | 0644 |
|
| quarto.vim | File | 23 B | 0644 |
|
| r.vim | File | 13.96 KB | 0644 |
|
| racket.vim | File | 2.87 KB | 0644 |
|
| raku.vim | File | 3.45 KB | 0644 |
|
| raml.vim | File | 285 B | 0644 |
|
| rapid.vim | File | 7.97 KB | 0644 |
|
| readline.vim | File | 786 B | 0644 |
|
| rhelp.vim | File | 2.83 KB | 0644 |
|
| rmd.vim | File | 2.25 KB | 0644 |
|
| rnoweb.vim | File | 1.1 KB | 0644 |
|
| rpl.vim | File | 1.82 KB | 0644 |
|
| rrst.vim | File | 1.19 KB | 0644 |
|
| rst.vim | File | 1.9 KB | 0644 |
|
| ruby.vim | File | 30.33 KB | 0644 |
|
| rust.vim | File | 10.26 KB | 0644 |
|
| sas.vim | File | 5.18 KB | 0644 |
|
| sass.vim | File | 926 B | 0644 |
|
| scala.vim | File | 19.3 KB | 0644 |
|
| scheme.vim | File | 372 B | 0644 |
|
| scss.vim | File | 191 B | 0644 |
|
| sdl.vim | File | 2.76 KB | 0644 |
|
| sh.vim | File | 9.04 KB | 0644 |
|
| sml.vim | File | 6.42 KB | 0644 |
|
| solidity.vim | File | 12.61 KB | 0644 |
|
| sql.vim | File | 1.18 KB | 0644 |
|
| sqlanywhere.vim | File | 12.96 KB | 0644 |
|
| sshconfig.vim | File | 796 B | 0644 |
|
| systemverilog.vim | File | 10.55 KB | 0644 |
|
| tcl.vim | File | 2.48 KB | 0644 |
|
| tcsh.vim | File | 1.35 KB | 0644 |
|
| teraterm.vim | File | 1.38 KB | 0644 |
|
| tex.vim | File | 13.52 KB | 0644 |
|
| tf.vim | File | 1.57 KB | 0644 |
|
| tilde.vim | File | 1.11 KB | 0644 |
|
| treetop.vim | File | 785 B | 0644 |
|
| typescript.vim | File | 14.28 KB | 0644 |
|
| typescriptreact.vim | File | 109 B | 0644 |
|
| vb.vim | File | 4.69 KB | 0644 |
|
| verilog.vim | File | 8.08 KB | 0644 |
|
| vhdl.vim | File | 14.43 KB | 0644 |
|
| vim.vim | File | 675 B | 0644 |
|
| vroom.vim | File | 379 B | 0644 |
|
| vue.vim | File | 385 B | 0644 |
|
| wat.vim | File | 458 B | 0644 |
|
| xf86conf.vim | File | 786 B | 0644 |
|
| xhtml.vim | File | 325 B | 0644 |
|
| xinetd.vim | File | 1.28 KB | 0644 |
|
| xml.vim | File | 7.6 KB | 0644 |
|
| xsd.vim | File | 253 B | 0644 |
|
| xslt.vim | File | 297 B | 0644 |
|
| yacc.vim | File | 858 B | 0644 |
|
| yaml.vim | File | 5.45 KB | 0644 |
|
| zig.vim | File | 2.09 KB | 0644 |
|
| zimbu.vim | File | 3.92 KB | 0644 |
|
| zsh.vim | File | 411 B | 0644 |
|