diff --git a/colors/greyscale.kak b/colors/greyscale.kak index e8da9053..a6ca33e6 100644 --- a/colors/greyscale.kak +++ b/colors/greyscale.kak @@ -12,7 +12,7 @@ evaluate-commands %sh{ grey_dark_3="rgb:424242" grey_dark_4="rgb:212121" - cat <<- EOF + cat < K } # indent after line ending with: - # try %{ execute-keys -draft k x (\bdo|\belse|->)$ & } - # filter previous line + # try %{ execute-keys -draft k x (\bdo|\belse|->)$ & } + # filter previous line try %{ execute-keys -draft k : elixir-trim-indent } # indent after lines ending with do or -> try %{ execute-keys -draft k x ^.+(\bdo|->)$ j } diff --git a/rc/filetype/hbs.kak b/rc/filetype/hbs.kak index 0e78df94..e35566ad 100644 --- a/rc/filetype/hbs.kak +++ b/rc/filetype/hbs.kak @@ -35,10 +35,10 @@ require-module html # ‾‾‾‾‾‾‾‾‾‾‾‾ add-highlighter shared/hbs regions -add-highlighter shared/hbs/comment region \{\{!-- --\}\} fill comment -add-highlighter shared/hbs/comment_alt region \{\{! \}\} fill comment -add-highlighter shared/hbs/block-expression region \{\{[#/] \}\} regions -add-highlighter shared/hbs/expression region \{\{ \}\} regions +add-highlighter shared/hbs/comment region \{\{!-- --\}\} fill comment +add-highlighter shared/hbs/comment_alt region \{\{! \}\} fill comment +add-highlighter shared/hbs/block-expression region \{\{[#/] \}\} regions +add-highlighter shared/hbs/expression region \{\{ \}\} regions define-command -hidden add-mutual-highlighters -params 1 %~ add-highlighter "shared/hbs/%arg{1}/code" default-region group diff --git a/rc/filetype/pascal.kak b/rc/filetype/pascal.kak index b18a915e..3e5100b5 100644 --- a/rc/filetype/pascal.kak +++ b/rc/filetype/pascal.kak @@ -3,25 +3,25 @@ # Detection, see https://wiki.freepascal.org/file_types hook global BufCreate .*\.(p|pp|pas|pascal)$ %{ - set-option buffer filetype pascal + set-option buffer filetype pascal } hook global BufCreate .*\.(dpr|dpk|dfm)$ %{ - set-option buffer filetype delphi + set-option buffer filetype delphi } hook global BufCreate .*\.(lpr|lfm)$ %{ - set-option buffer filetype freepascal + set-option buffer filetype freepascal } hook global WinSetOption filetype=((free|object)?pascal|delphi) %[ - require-module pascal - hook window InsertChar \n -group pascal-indent pascal-indent-on-new-line - hook -once -always window WinSetOption filetype=.* %{ remove-hooks window pascal-.+ } - set-option window static_words %opt{static_words} + require-module pascal + hook window InsertChar \n -group pascal-indent pascal-indent-on-new-line + hook -once -always window WinSetOption filetype=.* %{ remove-hooks window pascal-.+ } + set-option window static_words %opt{static_words} ] hook -group pascal-highlight global WinSetOption filetype=((free|object)?pascal|delphi) %[ - add-highlighter window/pascal ref pascal - hook -once -always window WinSetOption filetype=.* %{ remove-highlighter window/pascal } + add-highlighter window/pascal ref pascal + hook -once -always window WinSetOption filetype=.* %{ remove-highlighter window/pascal } ] provide-module pascal %§ @@ -30,174 +30,174 @@ add-highlighter shared/pascal regions add-highlighter shared/pascal/code default-region group evaluate-commands %sh¶ - # This might seem like a lot of effort to highlight routines and - # properties correctly but it is worth it + # This might seem like a lot of effort to highlight routines and + # properties correctly but it is worth it - id='([_a-zA-Z][\w]{,126})\s*' # identifier for variables etc. - id2="(?:$id\.)?$id(?:<.*?>)?" # (module|type).id - id4="(?:$id\.)?(?:$id\.)?(?:$id\.)?$id" # type.type.type.id - type=":\s*(specialize\s+)?(?:(array\s+of\s+)?$id2)" # 1:attribute 2:keyword 3:module 4:type + id='([_a-zA-Z][\w]{,126})\s*' # identifier for variables etc. + id2="(?:$id\.)?$id(?:<.*?>)?" # (module|type).id + id4="(?:$id\.)?(?:$id\.)?(?:$id\.)?$id" # type.type.type.id + type=":\s*(specialize\s+)?(?:(array\s+of\s+)?$id2)" # 1:attribute 2:keyword 3:module 4:type - cat <<-EOF - # routine without parameters - add-highlighter shared/pascal/code/simple_routine regex \ - "\b(?i)(function|procedure|constructor|destructor|operator)\s+$id4(?:$type)?" \ - 2:type 3:type 4:type 5:function 6:attribute 7:keyword 8:module 9:type - add-highlighter shared/pascal/simple_property region \ - "\b(?i)property\s+$id2:" ";" group + cat <)?\s*\(" "\).*?;" regions - add-highlighter shared/pascal/property region \ - "\b(?i)property\s+$id4\[" "\].*?;" regions + # routine with parameters + add-highlighter shared/pascal/routine region \ + "\b(?i)(function|procedure|constructor|destructor|operator)(\s+$id4)?\s*(<.*?>)?\s*\(" "\).*?;" regions + add-highlighter shared/pascal/property region \ + "\b(?i)property\s+$id4\[" "\].*?;" regions - add-highlighter shared/pascal/routine/parameters region -recurse \( \( \) regions - add-highlighter shared/pascal/property/parameters region -recurse \[ \[ \] regions - EOF + add-highlighter shared/pascal/routine/parameters region -recurse \( \( \) regions + add-highlighter shared/pascal/property/parameters region -recurse \[ \[ \] regions + EOF - # Used to highlight "var1, var2, var3, var4 : type" declarations - x="(?:$id,\s*)?" + # Used to highlight "var1, var2, var3, var4 : type" declarations + x="(?:$id,\s*)?" - for r in property routine; do - cat <<-EOF - add-highlighter shared/pascal/$r/parameters/default default-region group - add-highlighter shared/pascal/$r/parameters/default/ regex \ - "(?i)(?:(constref|const|var|out|univ)\s+)?$x$x$x$x$x$id(?:$type)?" \ - 1:attribute 2:variable 3:variable 4:variable 5:variable 6:variable 7:variable 8:attribute 9:keyword 10:module 11:type - add-highlighter shared/pascal/$r/default default-region group - EOF - done + for r in property routine; do + cat <@^*/+-]' 0:operator - add-highlighter shared/pascal/$r/constants regex \ - \b(?i)($(join "$constants"))\b 0:value + for r in code routine/parameters/default routine/default property/default simple_property; do + cat <@^*/+-]' 0:operator + add-highlighter shared/pascal/$r/constants regex \ + \b(?i)($(join "$constants"))\b 0:value - # numbers (https://www.freepascal.org/docs-html/ref/refse6.html) - add-highlighter shared/pascal/$r/decimal regex \b\d+([eE][+-]?\d+)?\b 0:value - add-highlighter shared/pascal/$r/hex regex \\$[\da-fA-F]+\b 0:value - add-highlighter shared/pascal/$r/octal regex &[0-7]+\b 0:value - add-highlighter shared/pascal/$r/binary regex \%[01]+\b 0:value - add-highlighter shared/pascal/$r/char regex '#\d+\b' 0:value - EOF - done + # numbers (https://www.freepascal.org/docs-html/ref/refse6.html) + add-highlighter shared/pascal/$r/decimal regex \b\d+([eE][+-]?\d+)?\b 0:value + add-highlighter shared/pascal/$r/hex regex \\$[\da-fA-F]+\b 0:value + add-highlighter shared/pascal/$r/octal regex &[0-7]+\b 0:value + add-highlighter shared/pascal/$r/binary regex \%[01]+\b 0:value + add-highlighter shared/pascal/$r/char regex '#\d+\b' 0:value + EOF + done ¶ define-command -hidden pascal-indent-on-new-line %{ - evaluate-commands -no-hooks -draft -itersel %{ - # preserve previous line indent - try %{ execute-keys -draft K } - # cleanup trailing whitespaces from previous line - try %{ execute-keys -draft k s \h+$ d } - # indent after certain keywords - try %{ execute-keys -draft k(?i)(asm|begin|const|else|except|exports|finalization|finally|label|of|otherwise|private|property|public|protected|published|record|repeat|resourcestring|threadvar|try|type|uses|var|:)\h*$j } - } + evaluate-commands -no-hooks -draft -itersel %{ + # preserve previous line indent + try %{ execute-keys -draft K } + # cleanup trailing whitespaces from previous line + try %{ execute-keys -draft k s \h+$ d } + # indent after certain keywords + try %{ execute-keys -draft k(?i)(asm|begin|const|else|except|exports|finalization|finally|label|of|otherwise|private|property|public|protected|published|record|repeat|resourcestring|threadvar|try|type|uses|var|:)\h*$j } + } } § diff --git a/rc/filetype/php.kak b/rc/filetype/php.kak index 770a4b60..1c51df76 100644 --- a/rc/filetype/php.kak +++ b/rc/filetype/php.kak @@ -92,9 +92,9 @@ define-command -hidden php-indent-on-new-line %< # indent after lines beginning / ending with opener token try %_ execute-keys -draft k ^\h*[[{]|[[{]$ j _ # append " * " on lines starting a multiline /** or /* comment - try %{ execute-keys -draft k s ^\h*/[*][* ]? j gi i * } - # deindent closer token(s) when after cursor - try %_ execute-keys -draft ^\h*[})] gh / [})] m 1 _ + try %{ execute-keys -draft k s ^\h*/[*][* ]? j gi i * } + # deindent closer token(s) when after cursor + try %_ execute-keys -draft ^\h*[})] gh / [})] m 1 _ > > diff --git a/rc/filetype/vhdl.kak b/rc/filetype/vhdl.kak index 894ab57d..c7c0b6da 100644 --- a/rc/filetype/vhdl.kak +++ b/rc/filetype/vhdl.kak @@ -2,24 +2,24 @@ # Detection hook global BufCreate .*[.](vhd[l]?) %[ - set-option buffer filetype vhdl + set-option buffer filetype vhdl ] # Initialization hook global WinSetOption filetype=vhdl %[ - require-module vhdl - set-option window static_words %opt{vhdl_static_words} - hook -group vhdl-indent window InsertChar \n vhdl-indent-on-new-line - hook -group vhdl-indent window InsertChar \) vhdl-indent-on-closing-parenthesis - hook -group vhdl-insert window InsertChar \n vhdl-insert-on-new-line - # Cleanup trailing whitespaces on current line insert end. - hook -group vhdl-trim-indent window ModeChange pop:insert:.* %[ try %[ execute-keys -draft s ^\h+$ d ] ] - hook -once -always window WinSetOption filetype=.* %[ remove-hooks window vhdl-.+ ] + require-module vhdl + set-option window static_words %opt{vhdl_static_words} + hook -group vhdl-indent window InsertChar \n vhdl-indent-on-new-line + hook -group vhdl-indent window InsertChar \) vhdl-indent-on-closing-parenthesis + hook -group vhdl-insert window InsertChar \n vhdl-insert-on-new-line + # Cleanup trailing whitespaces on current line insert end. + hook -group vhdl-trim-indent window ModeChange pop:insert:.* %[ try %[ execute-keys -draft s ^\h+$ d ] ] + hook -once -always window WinSetOption filetype=.* %[ remove-hooks window vhdl-.+ ] ] hook -group vhdl-highlight global WinSetOption filetype=vhdl %[ - add-highlighter window/vhdl ref vhdl - hook -once -always window WinSetOption filetype=.* %[ remove-highlighter window/vhdl ] + add-highlighter window/vhdl ref vhdl + hook -once -always window WinSetOption filetype=.* %[ remove-highlighter window/vhdl ] ] provide-module vhdl %§ @@ -43,100 +43,100 @@ add-highlighter shared/vhdl/code/ regex '\b\d+\.' 0:value add-highlighter shared/vhdl/code/ regex '\b\d+\+\d+[jJ]\b' 0:value evaluate-commands %sh[ - values="true false note warning error failure" + values="true false note warning error failure" - # LRM 5.2.4.1 - units="fs ps ns us ms sec min Å nm um mm cm m km" + # LRM 5.2.4.1 + units="fs ps ns us ms sec min Å nm um mm cm m km" - # LRM 16.2 - predefined_attributes=" - base left right high low ascending length range reverse_range - subtype image pos succ pred leftof rightof value val - designated_subtype reflect high low index element delayed - stable quiet transaction event active last_event last_active - last_value driving driving_value simple_name instance_name - path_name record signal converse - " + # LRM 16.2 + predefined_attributes=" + base left right high low ascending length range reverse_range + subtype image pos succ pred leftof rightof value val + designated_subtype reflect high low index element delayed + stable quiet transaction event active last_event last_active + last_value driving driving_value simple_name instance_name + path_name record signal converse + " - libraries="ieee std" + libraries="ieee std" - packages=" - math_real math_complex std_logic_1164 std_logic_textio numeric_bit numeric_std - numeric_bit_unsigned numeric_std_unsigned fixed_float_types fixed_generic_pkg - fixed_pkg float_generic_pkg float_pkg - standard textio env - " + packages=" + math_real math_complex std_logic_1164 std_logic_textio numeric_bit numeric_std + numeric_bit_unsigned numeric_std_unsigned fixed_float_types fixed_generic_pkg + fixed_pkg float_generic_pkg float_pkg + standard textio env + " - # LRM 15.10 - reserved_words=" - abs access after alias all and architecture array assert assume assume_guarantee attribute - begin block body buffer bus - case component configuration constant context cover - default disconnect downto - else elsif end entity exit - fairness file for force function - generate generic group guarded - if impure in inertial inout is - label library linkage literal loop - map mod - nand new next nor not null - of on open or others out - package parameter port postponed procedure process property protected pure - range record register reject release rem report restrict restrict_guarantee return rol ror - select sequence severity signal shared sla sll sra srl strong subtype - then to transport type - unaffected units until use - variable view vpkg vmode vprop vunit - wait when while with - xnor xor - " + # LRM 15.10 + reserved_words=" + abs access after alias all and architecture array assert assume assume_guarantee attribute + begin block body buffer bus + case component configuration constant context cover + default disconnect downto + else elsif end entity exit + fairness file for force function + generate generic group guarded + if impure in inertial inout is + label library linkage literal loop + map mod + nand new next nor not null + of on open or others out + package parameter port postponed procedure process property protected pure + range record register reject release rem report restrict restrict_guarantee return rol ror + select sequence severity signal shared sla sll sra srl strong subtype + then to transport type + unaffected units until use + variable view vpkg vmode vprop vunit + wait when while with + xnor xor + " - types=" - bit bit_vector - boolean - file_open_state file_origin_kind - integer natural positive - line line_vector - std_logic std_logic_vector - std_ulogic std_ulogic_vector - side - signed unsigned - string text - time - " + types=" + bit bit_vector + boolean + file_open_state file_origin_kind + integer natural positive + line line_vector + std_logic std_logic_vector + std_ulogic std_ulogic_vector + side + signed unsigned + string text + time + " - functions=" - find_leftmost find_rightmost divide reciprocal remainder modulo minimum maximum - std_match add_carry scalb - resize to_ufixed to_sfixed to_unsigned to_signed to_real to_integer to_slv - to_std_logic_vector to_stdlogicvector to_sulv to_std_ulogic_vector to_std_ulogicvector - to_01 is_x to_x01 to_ux01 to_x01z - ufixed_high ufixed_low sfixed_high sfixed_low to_ufix to_sfix ufix_high ufix_low - sfix_high sfix_low - write read bwrite binary_write bread binary_read owrite oread octal_write octal_read - hwrite hread hex_write hex_read to_string to_bstring to_binary_string to_ostring - to_octal_string to_hstring to_hex_string from_string from_bstring from_binary_string - from_ostring from_octal_string from_hstring from_hex_string - rising_edge falling_edge - " + functions=" + find_leftmost find_rightmost divide reciprocal remainder modulo minimum maximum + std_match add_carry scalb + resize to_ufixed to_sfixed to_unsigned to_signed to_real to_integer to_slv + to_std_logic_vector to_stdlogicvector to_sulv to_std_ulogic_vector to_std_ulogicvector + to_01 is_x to_x01 to_ux01 to_x01z + ufixed_high ufixed_low sfixed_high sfixed_low to_ufix to_sfix ufix_high ufix_low + sfix_high sfix_low + write read bwrite binary_write bread binary_read owrite oread octal_write octal_read + hwrite hread hex_write hex_read to_string to_bstring to_binary_string to_ostring + to_octal_string to_hstring to_hex_string from_string from_bstring from_binary_string + from_ostring from_octal_string from_hstring from_hex_string + rising_edge falling_edge + " - join() { sep=$2; eval set -- $1; IFS="$sep"; echo "$*"; } + join() { sep=$2; eval set -- $1; IFS="$sep"; echo "$*"; } - # Add the language's grammar to the static completion list - printf %s\\n "declare-option str-list vhdl_static_words $(join "${values} ${units} ${predefined_attributes} ${libraries} ${packages} ${reserved_words} ${types} ${functions}" ' ')" + # Add the language's grammar to the static completion list + printf %s\\n "declare-option str-list vhdl_static_words $(join "${values} ${units} ${predefined_attributes} ${libraries} ${packages} ${reserved_words} ${types} ${functions}" ' ')" - # Highlight keywords - printf %s " - add-highlighter shared/vhdl/code/ regex '(?i)\b($(join "${values}" '|'))\b' 0:value - add-highlighter shared/vhdl/code/ regex '(?i)\b($(join "${units}" '|'))\b' 0:meta - add-highlighter shared/vhdl/code/ regex \"'(?i)\b($(join "${predefined_attributes}" '|'))\b\" 0:attribute - add-highlighter shared/vhdl/code/ regex '(?i)\b($(join "${libraries}" '|'))\b' 0:builtin - add-highlighter shared/vhdl/code/ regex '(?i)\b($(join "${packages}" '|'))\b' 0:builtin - add-highlighter shared/vhdl/code/ regex '(?i)\b($(join "${reserved_words}" '|'))\b' 0:keyword - add-highlighter shared/vhdl/code/ regex '(?i)\b($(join "${functions}" '|'))\b\(' 1:builtin - add-highlighter shared/vhdl/code/ regex '(?i)\b($(join "${types}" '|'))\b' 0:type - add-highlighter shared/vhdl/code/ regex '^\h*(@[\w_.]+))' 1:attribute - " + # Highlight keywords + printf %s " + add-highlighter shared/vhdl/code/ regex '(?i)\b($(join "${values}" '|'))\b' 0:value + add-highlighter shared/vhdl/code/ regex '(?i)\b($(join "${units}" '|'))\b' 0:meta + add-highlighter shared/vhdl/code/ regex \"'(?i)\b($(join "${predefined_attributes}" '|'))\b\" 0:attribute + add-highlighter shared/vhdl/code/ regex '(?i)\b($(join "${libraries}" '|'))\b' 0:builtin + add-highlighter shared/vhdl/code/ regex '(?i)\b($(join "${packages}" '|'))\b' 0:builtin + add-highlighter shared/vhdl/code/ regex '(?i)\b($(join "${reserved_words}" '|'))\b' 0:keyword + add-highlighter shared/vhdl/code/ regex '(?i)\b($(join "${functions}" '|'))\b\(' 1:builtin + add-highlighter shared/vhdl/code/ regex '(?i)\b($(join "${types}" '|'))\b' 0:type + add-highlighter shared/vhdl/code/ regex '^\h*(@[\w_.]+))' 1:attribute + " ] add-highlighter shared/vhdl/code/ regex \(|\)|\;|\.|,|:|\| 0:attribute @@ -162,247 +162,247 @@ add-highlighter shared/vhdl/code/ regex '[oO]"[01234567_]*"' 0:value add-highlighter shared/vhdl/code/ regex '(?i)x"[0123456789abcdef_]*"' 0:value define-command -hidden vhdl-insert-on-new-line %[ - # Handle comment lines. - evaluate-commands -itersel %[ - # Copy '--' comment prefix and following white spaces. - try %[ - # is needed because of "Preserve previous line indent" command. - try %[ execute-keys -draft k s ^\h*--\h* y j gh P ] - ] - ] + # Handle comment lines. + evaluate-commands -itersel %[ + # Copy '--' comment prefix and following white spaces. + try %[ + # is needed because of "Preserve previous line indent" command. + try %[ execute-keys -draft k s ^\h*--\h* y j gh P ] + ] + ] - evaluate-commands -save-regs x %[ - # Save previous line indent in register x. - try %[ execute-keys -draft ks^\h+"xy ] catch %[ reg x '' ] + evaluate-commands -save-regs x %[ + # Save previous line indent in register x. + try %[ execute-keys -draft ks^\h+"xy ] catch %[ reg x '' ] - # All "wisely add" commands share the same concept. - # Only "end if" has extra comments. - # Wisely add "end if;". - evaluate-commands %[ - try %[ - # Validate previous line and that it is not closed yet. - execute-keys -draft k ^\h*(?i)((then|(.*:\h*)?if\b.*\bthen)$) }i ^x(?i)end\b - # Don't add for "if ... generate", it requires "end generate;". - execute-keys -draft k (?i)\bgenerate\b - execute-keys -draft oxendif - ] - ] - # Wisely add "end generate;". - evaluate-commands %[ - try %[ - execute-keys -draft k ^\h*(?i).*\bgenerate$ }i ^x(?i)(begin|end) - # Don't add in case of comment line. - execute-keys -draft k ^\h*-- - execute-keys -draft oxendgenerate - ] - ] - # Wisely add "end case;". - evaluate-commands %[ - try %[ - execute-keys -draft k ^\h*(?i)(case|.*\h*:\h*case)\b }i ^x(?i)end - execute-keys -draft oxendcase - ] - ] - # Wisely add "begin" and "end block;". - evaluate-commands %[ - try %[ - execute-keys -draft k ^\h*(?i)((block|.*:\h*block)\b) }i ^x(?i)(begin|end) - execute-keys -draft oxbeginxendblock - ] - ] - # Wisely add "begin" and "end process;". - evaluate-commands %[ - try %[ - execute-keys -draft k ^\h*(?i)(.*:\h*)?(postponed\h+)?process\b }i ^x(?i)(begin|end) - execute-keys -draft oxbeginxendprocess - ] - ] - # Wisely add "end loop;". - evaluate-commands %[ - try %[ - execute-keys -draft k ^\h*(?i)(.*\bloop|.*\h*:\h*(for|loop))$ }i ^x(?i)(end) - execute-keys -draft oxendloop - ] - ] - # Wisely add "end protected;". - evaluate-commands %[ - try %[ - execute-keys -draft k ^\h*(?i)(type\b.*\bis\h+protected)$ }i ^x(?i)(end) - execute-keys -draft oxendprotected - ] - ] - # Wisely add "end record;". - evaluate-commands %[ - try %[ - execute-keys -draft k ^\h*(?i)(type\b.*\bis\h+record\h*)$ }i ^x(?i)(end) - execute-keys -draft oxendrecord - ] - ] - # Wisely add ");" for "type ... is (". - evaluate-commands %[ - try %[ - execute-keys -draft k ^\h*(?i)(type\b.*\bis\h+\(\h*)$ }i ^x(\)) - execute-keys -draft ox) - ] - ] - # Wisely add "end entity;". - evaluate-commands %[ - try %[ - execute-keys -draft k ^(?i)\h*entity\b.*\bis$ }i ^x(?i)(begin|end) - execute-keys -draft oxendentity - ] - ] - # Wisely add "begin" and "end function;". - evaluate-commands %[ - try %[ - execute-keys -draft k ^(?i)(\h*\)?\h*return\b.*\bis$) }i ^x(?i)(begin|end) - execute-keys -draft oxbeginxendfunction - ] - try %[ - execute-keys -draft k ^(?i)(\h*((pure|impure)\h+)?function\b.*\bis$) }i ^x(?i)(begin|end) - execute-keys -draft oxbeginxendfunction - ] - ] - # Wisely add "begin" and "end procedure;". - evaluate-commands %[ - try %[ - execute-keys -draft k ^(?i)(\h*procedure\b.*\bis$) }i ^x(?i)\b(begin|end)\b - execute-keys -draft oxbeginxendprocedure - ] - try %[ - execute-keys -draft k ^(?i)\h*\)\h*\bis$ }i ^x(?i)\b(begin|end)\b - # Verify that line with opening parenthesis contains "procedure" keyword. - execute-keys -draft k s\) (?i)\bprocedure\b - execute-keys -draft oxbeginxendprocedure - ] - ] - # Wisely add "end package;". - evaluate-commands %[ - try %[ - execute-keys -draft k ^(?i)(package\b) }i ^x(?i)(end) - # Make sure it is not package body. - execute-keys -draft k(?i)\bbody\b - execute-keys -draft oendpackage - ] - ] - # Wisely add "end package body;". - evaluate-commands %[ - try %[ - execute-keys -draft k ^(?i)(package\h+body\b) }i ^x(?i)(end) - execute-keys -draft oendpackagebody - ] - ] - # Wisely add "begin" and "end architecture;". - evaluate-commands %[ - try %[ - execute-keys -draft k ^(?i)\h*architecture\b }i ^x(?i)(begin|end) - execute-keys -draft oxbeginxendarchitecture - ] - ] - # Wisely add ");" for "port (". - evaluate-commands %[ - try %[ - execute-keys -draft k ^\h*(?i)port\h*\($ }i ^x(\)\;) - execute-keys -draft ox) - ] - ] - # Wisely add ");" for "port map (". - evaluate-commands %[ - try %[ - execute-keys -draft k ^\h*(?i)port\h+map\h*\($ }i ^x(\)\;) - execute-keys -draft ox) - ] - ] - # Wisely add ");" for "generic (". - evaluate-commands %[ - try %[ - execute-keys -draft k ^\h*(?i)generic\h*\($ }i ^x(\)\;) - execute-keys -draft ox) - ] - ] - # Wisely add ")" for "generic map (". - evaluate-commands %[ - try %[ - execute-keys -draft k ^\h*(?i)generic\h+map\h*\($ }i ^x(\)) - execute-keys -draft ox) - ] - ] - # Wisely add ") return ;" for "[pure|impure] function ... (". - evaluate-commands %[ - try %[ - execute-keys -draft k ^\h*(?i)(pure\b|impure\b)?\h*function\b.*\h*\($ }i ^x(\)\h*return.*) - execute-keys -draft ox)return - ] - ] - # Wisely add ");" for "procedure ... (". - evaluate-commands %[ - try %[ - execute-keys -draft k ^\h*(?i)procedure\b.*\h*\($ }i ^x(\)\h*\;) - execute-keys -draft ox) - ] - ] - ] + # All "wisely add" commands share the same concept. + # Only "end if" has extra comments. + # Wisely add "end if;". + evaluate-commands %[ + try %[ + # Validate previous line and that it is not closed yet. + execute-keys -draft k ^\h*(?i)((then|(.*:\h*)?if\b.*\bthen)$) }i ^x(?i)end\b + # Don't add for "if ... generate", it requires "end generate;". + execute-keys -draft k (?i)\bgenerate\b + execute-keys -draft oxendif + ] + ] + # Wisely add "end generate;". + evaluate-commands %[ + try %[ + execute-keys -draft k ^\h*(?i).*\bgenerate$ }i ^x(?i)(begin|end) + # Don't add in case of comment line. + execute-keys -draft k ^\h*-- + execute-keys -draft oxendgenerate + ] + ] + # Wisely add "end case;". + evaluate-commands %[ + try %[ + execute-keys -draft k ^\h*(?i)(case|.*\h*:\h*case)\b }i ^x(?i)end + execute-keys -draft oxendcase + ] + ] + # Wisely add "begin" and "end block;". + evaluate-commands %[ + try %[ + execute-keys -draft k ^\h*(?i)((block|.*:\h*block)\b) }i ^x(?i)(begin|end) + execute-keys -draft oxbeginxendblock + ] + ] + # Wisely add "begin" and "end process;". + evaluate-commands %[ + try %[ + execute-keys -draft k ^\h*(?i)(.*:\h*)?(postponed\h+)?process\b }i ^x(?i)(begin|end) + execute-keys -draft oxbeginxendprocess + ] + ] + # Wisely add "end loop;". + evaluate-commands %[ + try %[ + execute-keys -draft k ^\h*(?i)(.*\bloop|.*\h*:\h*(for|loop))$ }i ^x(?i)(end) + execute-keys -draft oxendloop + ] + ] + # Wisely add "end protected;". + evaluate-commands %[ + try %[ + execute-keys -draft k ^\h*(?i)(type\b.*\bis\h+protected)$ }i ^x(?i)(end) + execute-keys -draft oxendprotected + ] + ] + # Wisely add "end record;". + evaluate-commands %[ + try %[ + execute-keys -draft k ^\h*(?i)(type\b.*\bis\h+record\h*)$ }i ^x(?i)(end) + execute-keys -draft oxendrecord + ] + ] + # Wisely add ");" for "type ... is (". + evaluate-commands %[ + try %[ + execute-keys -draft k ^\h*(?i)(type\b.*\bis\h+\(\h*)$ }i ^x(\)) + execute-keys -draft ox) + ] + ] + # Wisely add "end entity;". + evaluate-commands %[ + try %[ + execute-keys -draft k ^(?i)\h*entity\b.*\bis$ }i ^x(?i)(begin|end) + execute-keys -draft oxendentity + ] + ] + # Wisely add "begin" and "end function;". + evaluate-commands %[ + try %[ + execute-keys -draft k ^(?i)(\h*\)?\h*return\b.*\bis$) }i ^x(?i)(begin|end) + execute-keys -draft oxbeginxendfunction + ] + try %[ + execute-keys -draft k ^(?i)(\h*((pure|impure)\h+)?function\b.*\bis$) }i ^x(?i)(begin|end) + execute-keys -draft oxbeginxendfunction + ] + ] + # Wisely add "begin" and "end procedure;". + evaluate-commands %[ + try %[ + execute-keys -draft k ^(?i)(\h*procedure\b.*\bis$) }i ^x(?i)\b(begin|end)\b + execute-keys -draft oxbeginxendprocedure + ] + try %[ + execute-keys -draft k ^(?i)\h*\)\h*\bis$ }i ^x(?i)\b(begin|end)\b + # Verify that line with opening parenthesis contains "procedure" keyword. + execute-keys -draft k s\) (?i)\bprocedure\b + execute-keys -draft oxbeginxendprocedure + ] + ] + # Wisely add "end package;". + evaluate-commands %[ + try %[ + execute-keys -draft k ^(?i)(package\b) }i ^x(?i)(end) + # Make sure it is not package body. + execute-keys -draft k(?i)\bbody\b + execute-keys -draft oendpackage + ] + ] + # Wisely add "end package body;". + evaluate-commands %[ + try %[ + execute-keys -draft k ^(?i)(package\h+body\b) }i ^x(?i)(end) + execute-keys -draft oendpackagebody + ] + ] + # Wisely add "begin" and "end architecture;". + evaluate-commands %[ + try %[ + execute-keys -draft k ^(?i)\h*architecture\b }i ^x(?i)(begin|end) + execute-keys -draft oxbeginxendarchitecture + ] + ] + # Wisely add ");" for "port (". + evaluate-commands %[ + try %[ + execute-keys -draft k ^\h*(?i)port\h*\($ }i ^x(\)\;) + execute-keys -draft ox) + ] + ] + # Wisely add ");" for "port map (". + evaluate-commands %[ + try %[ + execute-keys -draft k ^\h*(?i)port\h+map\h*\($ }i ^x(\)\;) + execute-keys -draft ox) + ] + ] + # Wisely add ");" for "generic (". + evaluate-commands %[ + try %[ + execute-keys -draft k ^\h*(?i)generic\h*\($ }i ^x(\)\;) + execute-keys -draft ox) + ] + ] + # Wisely add ")" for "generic map (". + evaluate-commands %[ + try %[ + execute-keys -draft k ^\h*(?i)generic\h+map\h*\($ }i ^x(\)) + execute-keys -draft ox) + ] + ] + # Wisely add ") return ;" for "[pure|impure] function ... (". + evaluate-commands %[ + try %[ + execute-keys -draft k ^\h*(?i)(pure\b|impure\b)?\h*function\b.*\h*\($ }i ^x(\)\h*return.*) + execute-keys -draft ox)return + ] + ] + # Wisely add ");" for "procedure ... (". + evaluate-commands %[ + try %[ + execute-keys -draft k ^\h*(?i)procedure\b.*\h*\($ }i ^x(\)\h*\;) + execute-keys -draft ox) + ] + ] + ] ] define-command -hidden vhdl-indent-on-new-line %{ - evaluate-commands -itersel %{ - # Align "then" to previous "if|elsif". - evaluate-commands -itersel -save-regs x %[ - try %[ - execute-keys -draft k (?i)^\h*then$ - try %[ execute-keys -draft (?i)\b(if|elsif)\bs^\h+"xy ] catch %[ reg x '' ] - try %[ execute-keys -draft k s^\h+d ] catch %[ ] - execute-keys -draft kgh ix - ] - ] + evaluate-commands -itersel %{ + # Align "then" to previous "if|elsif". + evaluate-commands -itersel -save-regs x %[ + try %[ + execute-keys -draft k (?i)^\h*then$ + try %[ execute-keys -draft (?i)\b(if|elsif)\bs^\h+"xy ] catch %[ reg x '' ] + try %[ execute-keys -draft k s^\h+d ] catch %[ ] + execute-keys -draft kgh ix + ] + ] - # Align "generate" to previous "if|for". - evaluate-commands -itersel -save-regs x %[ - try %[ - execute-keys -draft k (?i)^\h*generate$ - try %[ execute-keys -draft (?i)\b(if|for)\bs^\h+"xy ] catch %[ reg x '' ] - try %[ execute-keys -draft k s^\h+d ] catch %[ ] - execute-keys -draft kgh ix - ] - ] + # Align "generate" to previous "if|for". + evaluate-commands -itersel -save-regs x %[ + try %[ + execute-keys -draft k (?i)^\h*generate$ + try %[ execute-keys -draft (?i)\b(if|for)\bs^\h+"xy ] catch %[ reg x '' ] + try %[ execute-keys -draft k s^\h+d ] catch %[ ] + execute-keys -draft kgh ix + ] + ] - # Preserve previous line indent. - try %[ execute-keys -draft K ] + # Preserve previous line indent. + try %[ execute-keys -draft K ] - # Cleanup trailing whitespaces from previous line. - try %[ execute-keys -draft k s \h+$ d ] + # Cleanup trailing whitespaces from previous line. + try %[ execute-keys -draft k s \h+$ d ] - # Increase indent after some keywords. - try %[ - execute-keys -draft k (?i)\b(begin|block|else|for|generate|if|is|loop|process|protected|record|select|then)$ - # Does not indent if in comment line. - execute-keys -draft k(?i)^\h*-- - # Handle case line in a bit different way. - execute-keys -draft k(?i)^\h*case\b - execute-keys -draft - ] + # Increase indent after some keywords. + try %[ + execute-keys -draft k (?i)\b(begin|block|else|for|generate|if|is|loop|process|protected|record|select|then)$ + # Does not indent if in comment line. + execute-keys -draft k(?i)^\h*-- + # Handle case line in a bit different way. + execute-keys -draft k(?i)^\h*case\b + execute-keys -draft + ] - # Add "when " and increase indent after "case ... is". - try %[ - execute-keys -draft k (?i)\h*case\b.*\h+is$ - # Don't indent if in comment line. - execute-keys -draft k(?i)^\h*-- - execute-keys -draft iwhen - ] + # Add "when " and increase indent after "case ... is". + try %[ + execute-keys -draft k (?i)\h*case\b.*\h+is$ + # Don't indent if in comment line. + execute-keys -draft k(?i)^\h*-- + execute-keys -draft iwhen + ] - # Copy the indentation of the matching if. - try %{ execute-keys -draft k ^\h*(elsif\b|else$) gh [c^\h*(\S*\h*:\h*)?if\b,\bend\sif\b 1 j K } + # Copy the indentation of the matching if. + try %{ execute-keys -draft k ^\h*(elsif\b|else$) gh [c^\h*(\S*\h*:\h*)?if\b,\bend\sif\b 1 j K } - # Increase indent after some operators. - try %[ execute-keys -draft k (\(|=>|<=|:=)$ j ] - } + # Increase indent after some operators. + try %[ execute-keys -draft k (\(|=>|<=|:=)$ j ] + } } define-command vhdl-indent-on-closing-parenthesis %[ - evaluate-commands -itersel %[ - # Decrease indent after ")" at the beginning of line. - try %[ execute-keys -draft (^\h+\)$) ] - ] + evaluate-commands -itersel %[ + # Decrease indent after ")" at the beginning of line. + try %[ execute-keys -draft (^\h+\)$) ] + ] ] § diff --git a/rc/windowing/wayland.kak b/rc/windowing/wayland.kak index 9a720a8e..7f300500 100644 --- a/rc/windowing/wayland.kak +++ b/rc/windowing/wayland.kak @@ -47,7 +47,7 @@ define-command wayland-focus -params ..1 -client-completion -docstring ' wayland-focus []: focus a given client''s window If no client is passed, then the current client is used' \ %{ - fail There is no way to focus another window on Wayland + fail There is no way to focus another window on Wayland } alias global focus wayland-focus