__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
" Language: Verilog HDL
" Maintainer: Chih-Tsun Huang <cthuang@cs.nthu.edu.tw>
" Last Change: 2017 Aug 25 by Chih-Tsun Huang
" 2023 Aug 28 by Vim Project (undo_indent)
" URL: http://www.cs.nthu.edu.tw/~cthuang/vim/indent/verilog.vim
"
" Credits:
" Suggestions for improvement, bug reports by
" Takuya Fujiwara <tyru.exe@gmail.com>
" Thilo Six <debian@Xk2c.de>
" Leo Butlero <lbutler@brocade.com>
"
" Buffer Variables:
" b:verilog_indent_modules : indenting after the declaration
" of module blocks
" b:verilog_indent_width : indenting width
" b:verilog_indent_verbose : verbose to each indenting
"
" Only load this indent file when no other was loaded.
if exists("b:did_indent")
finish
endif
let b:did_indent = 1
setlocal indentexpr=GetVerilogIndent()
setlocal indentkeys=!^F,o,O,0),=begin,=end,=join,=endcase
setlocal indentkeys+==endmodule,=endfunction,=endtask,=endspecify
setlocal indentkeys+==endconfig,=endgenerate,=endprimitive,=endtable
setlocal indentkeys+==`else,=`elsif,=`endif
let b:undo_indent = "setlocal indentexpr< indentkeys<"
" Only define the function once.
if exists("*GetVerilogIndent")
finish
endif
let s:cpo_save = &cpo
set cpo&vim
function GetVerilogIndent()
if exists('b:verilog_indent_width')
let offset = b:verilog_indent_width
else
let offset = shiftwidth()
endif
if exists('b:verilog_indent_modules')
let indent_modules = offset
else
let indent_modules = 0
endif
" Find a non-blank line above the current line.
let lnum = prevnonblank(v:lnum - 1)
" At the start of the file use zero indent.
if lnum == 0
return 0
endif
let lnum2 = prevnonblank(lnum - 1)
let curr_line = getline(v:lnum)
let last_line = getline(lnum)
let last_line2 = getline(lnum2)
let ind = indent(lnum)
let ind2 = indent(lnum - 1)
let offset_comment1 = 1
" Define the condition of an open statement
" Exclude the match of //, /* or */
let vlog_openstat = '\(\<or\>\|\([*/]\)\@<![*(,{><+-/%^&|!=?:]\([*/]\)\@!\)'
" Define the condition when the statement ends with a one-line comment
let vlog_comment = '\(//.*\|/\*.*\*/\s*\)'
if exists('b:verilog_indent_verbose')
let vverb_str = 'INDENT VERBOSE:'
let vverb = 1
else
let vverb = 0
endif
" Indent according to last line
" End of multiple-line comment
if last_line =~ '\*/\s*$' && last_line !~ '/\*.\{-}\*/'
let ind = ind - offset_comment1
if vverb
echo vverb_str "De-indent after a multiple-line comment."
endif
" Indent after if/else/for/case/always/initial/specify/fork blocks
" Note: We exclude '`if' or '`else' and consider 'end else'
" 'end if' is redundant here
elseif last_line =~ '^\s*\(end\)\=\s*`\@<!\<\(if\|else\)\>' ||
\ last_line =~ '^\s*\<\(for\|case\%[[zx]]\)\>' ||
\ last_line =~ '^\s*\<\(always\|initial\)\>' ||
\ last_line =~ '^\s*\<\(specify\|fork\)\>'
if last_line !~ '\(;\|\<end\>\)\s*' . vlog_comment . '*$' ||
\ last_line =~ '\(//\|/\*\).*\(;\|\<end\>\)\s*' . vlog_comment . '*$'
let ind = ind + offset
if vverb | echo vverb_str "Indent after a block statement." | endif
endif
" Indent after function/task/config/generate/primitive/table blocks
elseif last_line =~ '^\s*\<\(function\|task\|config\|generate\|primitive\|table\)\>'
if last_line !~ '\<end\>\s*' . vlog_comment . '*$' ||
\ last_line =~ '\(//\|/\*\).*\(;\|\<end\>\)\s*' . vlog_comment . '*$'
let ind = ind + offset
if vverb
echo vverb_str "Indent after function/task block statement."
endif
endif
" Indent after module/function/task/specify/fork blocks
elseif last_line =~ '^\s*\<module\>'
let ind = ind + indent_modules
if vverb && indent_modules
echo vverb_str "Indent after module statement."
endif
if last_line =~ '[(,]\s*' . vlog_comment . '*$' &&
\ last_line !~ '\(//\|/\*\).*[(,]\s*' . vlog_comment . '*$'
let ind = ind + offset
if vverb
echo vverb_str "Indent after a multiple-line module statement."
endif
endif
" Indent after a 'begin' statement
elseif last_line =~ '\(\<begin\>\)\(\s*:\s*\w\+\)*' . vlog_comment . '*$' &&
\ last_line !~ '\(//\|/\*\).*\(\<begin\>\)' &&
\ ( last_line2 !~ vlog_openstat . '\s*' . vlog_comment . '*$' ||
\ last_line2 =~ '^\s*[^=!]\+\s*:\s*' . vlog_comment . '*$' )
let ind = ind + offset
if vverb | echo vverb_str "Indent after begin statement." | endif
" De-indent for the end of one-line block
elseif ( last_line !~ '\<begin\>' ||
\ last_line =~ '\(//\|/\*\).*\<begin\>' ) &&
\ last_line2 =~ '\<\(`\@<!if\|`\@<!else\|for\|always\|initial\)\>.*' .
\ vlog_comment . '*$' &&
\ last_line2 !~
\ '\(//\|/\*\).*\<\(`\@<!if\|`\@<!else\|for\|always\|initial\)\>' &&
\ last_line2 !~ vlog_openstat . '\s*' . vlog_comment . '*$' &&
\ ( last_line2 !~ '\<begin\>' ||
\ last_line2 =~ '\(//\|/\*\).*\<begin\>' )
let ind = ind - offset
if vverb
echo vverb_str "De-indent after the end of one-line statement."
endif
" Multiple-line statement (including case statement)
" Open statement
" Ident the first open line
elseif last_line =~ vlog_openstat . '\s*' . vlog_comment . '*$' &&
\ last_line !~ '\(//\|/\*\).*' . vlog_openstat . '\s*$' &&
\ last_line2 !~ vlog_openstat . '\s*' . vlog_comment . '*$'
let ind = ind + offset
if vverb | echo vverb_str "Indent after an open statement." | endif
" Close statement
" De-indent for an optional close parenthesis and a semicolon, and only
" if there exists precedent non-whitespace char
elseif last_line =~ ')*\s*;\s*' . vlog_comment . '*$' &&
\ last_line !~ '^\s*)*\s*;\s*' . vlog_comment . '*$' &&
\ last_line !~ '\(//\|/\*\).*\S)*\s*;\s*' . vlog_comment . '*$' &&
\ ( last_line2 =~ vlog_openstat . '\s*' . vlog_comment . '*$' &&
\ last_line2 !~ ';\s*//.*$') &&
\ last_line2 !~ '^\s*' . vlog_comment . '$'
let ind = ind - offset
if vverb | echo vverb_str "De-indent after a close statement." | endif
" `ifdef or `ifndef or `elsif or `else
elseif last_line =~ '^\s*`\<\(ifn\?def\|elsif\|else\)\>'
let ind = ind + offset
if vverb
echo vverb_str "Indent after a `ifdef or `ifndef or `elsif or `else statement."
endif
endif
" Re-indent current line
" De-indent on the end of the block
" join/end/endcase/endfunction/endtask/endspecify
if curr_line =~ '^\s*\<\(join\|end\|endcase\)\>' ||
\ curr_line =~ '^\s*\<\(endfunction\|endtask\|endspecify\)\>' ||
\ curr_line =~ '^\s*\<\(endconfig\|endgenerate\|endprimitive\|endtable\)\>'
let ind = ind - offset
if vverb | echo vverb_str "De-indent the end of a block." | endif
elseif curr_line =~ '^\s*\<endmodule\>'
let ind = ind - indent_modules
if vverb && indent_modules
echo vverb_str "De-indent the end of a module."
endif
" De-indent on a stand-alone 'begin'
elseif curr_line =~ '^\s*\<begin\>'
if last_line !~ '^\s*\<\(function\|task\|specify\|module\|config\|generate\|primitive\|table\)\>' &&
\ last_line !~ '^\s*\()*\s*;\|)\+\)\s*' . vlog_comment . '*$' &&
\ ( last_line =~
\ '\<\(`\@<!if\|`\@<!else\|for\|case\%[[zx]]\|always\|initial\)\>' ||
\ last_line =~ ')\s*' . vlog_comment . '*$' ||
\ last_line =~ vlog_openstat . '\s*' . vlog_comment . '*$' )
let ind = ind - offset
if vverb
echo vverb_str "De-indent a stand alone begin statement."
endif
endif
" De-indent after the end of multiple-line statement
elseif curr_line =~ '^\s*)' &&
\ ( last_line =~ vlog_openstat . '\s*' . vlog_comment . '*$' ||
\ last_line !~ vlog_openstat . '\s*' . vlog_comment . '*$' &&
\ last_line2 =~ vlog_openstat . '\s*' . vlog_comment . '*$' )
let ind = ind - offset
if vverb
echo vverb_str "De-indent the end of a multiple statement."
endif
" De-indent `elsif or `else or `endif
elseif curr_line =~ '^\s*`\<\(elsif\|else\|endif\)\>'
let ind = ind - offset
if vverb | echo vverb_str "De-indent `elsif or `else or `endif statement." | endif
endif
" Return the indentation
return ind
endfunction
let &cpo = s:cpo_save
unlet s:cpo_save
" vim:sw=2
| 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 |
|