# Verilog for Kakoune # stolen and modified from https://github.com/asyncial/kakoune-verilog/blob/master/verilog.kak # this file is under the gnu license # Detection hook global WinCreate .*\.v %{ set-option window filetype verilog } # Set up comments hook global WinSetOption filetype=verilog %{ set-option window comment_block_begin /* set-option window comment_block_end */ set-option window comment_line // } # Highlighting add-highlighter shared/verilog regions add-highlighter shared/verilog/code default-region group add-highlighter shared/verilog/string region '"' (? } # indent after start structure try %{ execute-keys -draft k ^ \h * (always|case|casex|casez|else|for|forever|if|repeat|while|begin|config|fork|function|generate|initial|join|macromodule|module|specify|task)\b|(do\h*$|(.*\h+do(\h+\|[^\n]*\|)?\h*$)) j } try %{ # previous line is empty, next is not execute-keys -draft k 2X \A\n\n[^\n]+\n\z # copy indent of next line execute-keys -draft j s ^\h+ y k P } } } # Initialization hook global WinSetOption filetype=verilog %{ hook window InsertChar \n -group verilog-indent verilog-indent-on-new-line add-highlighter window/verilog ref verilog hook -once -always window WinSetOption filetype=(?!verilog).* %{ remove-hooks window verilog-indent remove-highlighter window/c } }