Skip to content

Commit 5bf3601

Browse files
authored
Merge pull request vhda#210 from vhda/indent/indent_assign_on_symbol
Indent: Add option to align assignments with symbol
2 parents 0141e62 + 2b7baa2 commit 5bf3601

File tree

3 files changed

+37
-2
lines changed

3 files changed

+37
-2
lines changed

doc/tags

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
:VerilogReturnInstance verilog_systemverilog.txt /*:VerilogReturnInstance*
1010
b:verilog_disable_indent_lst verilog_systemverilog.txt /*b:verilog_disable_indent_lst*
1111
b:verilog_indent_assign_fix verilog_systemverilog.txt /*b:verilog_indent_assign_fix*
12+
b:verilog_indent_assign_on_symbol verilog_systemverilog.txt /*b:verilog_indent_assign_on_symbol*
1213
b:verilog_indent_block_on_keyword verilog_systemverilog.txt /*b:verilog_indent_block_on_keyword*
1314
b:verilog_indent_width verilog_systemverilog.txt /*b:verilog_indent_width*
1415
b:verilog_syntax_custom verilog_systemverilog.txt /*b:verilog_syntax_custom*
@@ -21,6 +22,7 @@ g:verilog_efm_level verilog_systemverilog.txt /*g:verilog_efm_level*
2122
g:verilog_efm_quickfix_clean verilog_systemverilog.txt /*g:verilog_efm_quickfix_clean*
2223
g:verilog_efm_uvm_lst verilog_systemverilog.txt /*g:verilog_efm_uvm_lst*
2324
g:verilog_indent_assign_fix verilog_systemverilog.txt /*g:verilog_indent_assign_fix*
25+
g:verilog_indent_assign_on_symbol verilog_systemverilog.txt /*g:verilog_indent_assign_on_symbol*
2426
g:verilog_indent_block_on_keyword verilog_systemverilog.txt /*g:verilog_indent_block_on_keyword*
2527
g:verilog_indent_width verilog_systemverilog.txt /*g:verilog_indent_width*
2628
g:verilog_navigate_split verilog_systemverilog.txt /*g:verilog_navigate_split*

doc/verilog_systemverilog.txt

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -384,6 +384,33 @@ Example:
384384
let b:verilog_indent_assign_fix = 1
385385
<
386386

387+
*b:verilog_indent_assign_on_symbol* *g:verilog_indent_assign_on_symbol*
388+
b:verilog_indent_assign_on_symbol~
389+
g:verilog_indent_assign_on_symbol~
390+
Default: undefined
391+
392+
Indent lines following an assignment on the assignment symbol (= or <=).
393+
>
394+
assign y = a
395+
& b;
396+
assign z =
397+
c && d;
398+
<
399+
By default, the indentation script aligns to the first word after the
400+
assignment symbol, if existing:
401+
>
402+
assign y = a
403+
& b;
404+
assign z =
405+
c && d;
406+
<
407+
408+
Example:
409+
410+
>
411+
let b:verilog_indent_assign_on_symbol = 1
412+
<
413+
387414
*b:verilog_indent_block_on_keyword* *g:verilog_indent_block_on_keyword*
388415
b:verilog_indent_block_on_keyword~
389416
g:verilog_indent_block_on_keyword~

indent/verilog_systemverilog.vim

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -278,8 +278,14 @@ function! s:GetContextIndent()
278278
if l:line =~ s:vlog_assign . '[^;]*$' && (!s:InsideAssign(l:lnum))
279279
if l:line !~ s:vlog_assign . '\s*$'
280280
" If there are values after the assignment, then use that column as
281-
" the indentation of the open statement.
282-
let l:assign = substitute(l:line, s:vlog_assign .'\s*\zs.*', '', "")
281+
" the indentation of the open statement, or the column of the
282+
" assign symbol itself if "verilog_indent_assign_on_symbol" is
283+
" defined.
284+
if (verilog_systemverilog#VariableExists("verilog_indent_assign_on_symbol"))
285+
let l:assign = substitute(l:line, s:vlog_assign .'.*', '=', "")
286+
else
287+
let l:assign = substitute(l:line, s:vlog_assign .'\s*\zs.*', '', "")
288+
endif
283289
let l:assign_offset = len(l:assign)
284290
call verilog_systemverilog#Verbose(
285291
"Increasing indent for an open assignment with values (by " . l:assign_offset .")."

0 commit comments

Comments
 (0)