Adds an option to pass additional arguments to the verilog/verilator … (#698)

* Adds an option to pass additional arguments to the verilog/verilator linter

The new otion is g:ale_verilog_verilator_options
+ doc

* Spell check verilog linter doc file

* Add entries to the verilog linters in the doc table of content

* Vader test for verilog/verilator linter args option verilog_verilator_options
This commit is contained in:
Tarik Graba 2017-06-29 10:15:52 +02:00 committed by w0rp
parent 7eec1f2efc
commit 01ecf2a75f
4 changed files with 79 additions and 1 deletions

View file

@ -1,6 +1,11 @@
" Author: Masahiro H https://github.com/mshr-h
" Description: verilator for verilog files
" Set this option to change Verilator lint options
if !exists('g:ale_verilog_verilator_options')
let g:ale_verilog_verilator_options = ''
endif
function! ale_linters#verilog#verilator#GetCommand(buffer) abort
let l:filename = tempname() . '_verilator_linted.v'
@ -8,7 +13,9 @@ function! ale_linters#verilog#verilator#GetCommand(buffer) abort
call ale#engine#ManageFile(a:buffer, l:filename)
call writefile(getbufline(a:buffer, 1, '$'), l:filename)
return 'verilator --lint-only -Wall -Wno-DECLFILENAME ' . ale#Escape(l:filename)
return 'verilator --lint-only -Wall -Wno-DECLFILENAME '
\ . ale#Var(a:buffer, 'verilog_verilator_options') .' '
\ . ale#Escape(l:filename)
endfunction
function! ale_linters#verilog#verilator#Handle(buffer, lines) abort

43
doc/ale-verilog.txt Normal file
View file

@ -0,0 +1,43 @@
===============================================================================
ALE Verilog/SystemVerilog Integration *ale-verilog-options*
-------------------------------------------------------------------------------
ALE can use two different linters for Verilog HDL:
iverilog:
Using `iverilog -t null -Wall`
verilator
Using `verilator --lint-only -Wall`
By default, both 'verilog' and 'systemverilog' filetypes are checked.
You can limit 'systemverilog' files to be checked using only 'verilator' by
defining 'g:ale_linters' variable:
>
au FileType systemverilog
\ let g:ale_linters = {'systemverilog' : ['verilator'],}
<
-------------------------------------------------------------------------------
iverilog *ale-verilog-iverilog*
No additional options
-------------------------------------------------------------------------------
verilator *ale-verilog-verilator*
g:ale_verilog_verilator_options *g:ale_verilog_verilator_options*
*b:ale_verilog_verilator_options*
Type: |String|
Default: `''`
This variable can be changed to modify 'verilator' command arguments
For example `'-sv --default-language "1800-2012"'` if you want to enable
SystemVerilog parsing and select the 2012 version of the language.
-------------------------------------------------------------------------------
vim:tw=78:ts=2:sts=2:sw=2:ft=help:norl:

View file

@ -101,6 +101,9 @@ CONTENTS *ale-contents*
eslint..............................|ale-typescript-eslint|
tslint..............................|ale-typescript-tslint|
tsserver............................|ale-typescript-tsserver|
verilog/systemverilog.................|ale-verilog-options|
iverilog............................|ale-verilog-iverilog|
verilator...........................|ale-verilog-verilator|
vim...................................|ale-vim-options|
vint................................|ale-vim-vint|
xml...................................|ale-xml-options|

View file

@ -0,0 +1,25 @@
Before:
Save g:ale_verilog_verilator_options
let g:ale_verilog_verilator_options = ''
After:
Restore
call ale#linter#Reset()
Execute(Set Verilog Verilator linter additional options to `-sv --default-language "1800-2012"`):
runtime! ale_linters/verilog/verilator.vim
" Additional args for the linter
let g:ale_verilog_verilator_options = '-sv --default-language "1800-2012"'
call ale#Lint()
let g:run_cmd = ale_linters#verilog#verilator#GetCommand(bufnr(''))
let g:matched = match(g:run_cmd, '\s' . g:ale_verilog_verilator_options . '\s')
" match returns -1 if not found
AssertNotEqual
\ g:matched ,
\ -1 ,
\ 'Additionnal arguments not found in the run command'