git.s-ol.nu alive.kak / master alive.kak
master

Tree @master (Download .tar.gz)

alive.kak @masterraw · history · blame

# Detection
hook global BufCreate .*[.](alv) %{
    set-option buffer filetype alive
}

# Highlighters

add-highlighter shared/alive              regions
add-highlighter shared/alive/code         default-region group
add-highlighter shared/alive/dstring      region '"'       (?<!\\)(?:\\\\)*" fill string
add-highlighter shared/alive/qstring      region "'"       (?<!\\)(?:\\\\)*' fill string
add-highlighter shared/alive/tpl          region '#"' '"' regions
add-highlighter shared/alive/tpl/string   default-region fill string
add-highlighter shared/alive/tpl/expr     region -recurse '\(' '#\(' '\)' group
add-highlighter shared/alive/tpl/expr/tag regex  \[[0-9]+\] 0:rgb:696969
add-highlighter shared/alive/comment      region -recurse '\(' '#\(' '\)'    fill comment
add-highlighter shared/alive/code/tag     regex  \[[0-9]+\] 0:rgb:696969

# Commands

define-command -hidden alive-reload-file %[
  add-highlighter window/alive-blink fill default,rgb:ffffff
  execute-keys <c-l>
  nop %sh{ sleep 0.1 }
  remove-highlighter window/alive-blink
  edit!
]

# Initialization

hook -group alive-highlight global WinSetOption filetype=alive %{
    add-highlighter window/alive ref alive

    hook -once -always window WinSetOption filetype=.* %{
        remove-highlighter window/alive
    }
}

hook global WinSetOption filetype=alive %[
    set-option buffer comment_block_begin '#('
    set-option buffer comment_block_end ')'
    set-option buffer tabstop 2
    set-option buffer indentwidth 2
    set-option buffer autoreload yes

    hook -group alive-hooks window BufWritePost .* alive-reload-file

    hook -once -always window WinSetOption filetype=.* %{
        remove-hooks window alive-.+
    }
]