Skip to content
Bruno Heridet edited this page Jul 11, 2017 · 27 revisions

TOC

Highlighters

Syntax highlighting is supported through highlighters. You may add your own Syntax definitions in the rc directory. There is a syntax highlighting section in the highlighters.asciidoc file.

Examples

column, line

# same ideas apply to `line`
addhl column 4 red           # all chars in column 4 will be have a red color
addhl column 5 red,blue+b    # all chars in column 5 will be red on blue and in bold
addhl column 6 PrimaryCursor # all chars in column 6 will be the same face than `PrimaryCursor` (see below)

ranges

decl range-specs foo '1:3.1,3.4|red' # declare an option called foo, of type range-specs
addhl ranges foo                     # use this option as the parameter
set buffer foo '2:3.1,3.10|blue'     # update the option to trigger changes

Volatile highlighting

Highlight on yank, delete, change and paste commands. The highlight disappears at the next command. The highlighting gives useful visual feedback for what your operation actually changed in the buffer.

face volatile +bi

hook global NormalKey [ydcpP] %{ try %{
  add-highlighter dynregex \Q%reg{"}\E 0:volatile
}}

hook global NormalKey [^ydcpP] %{ try %{
  remove-highlighter dynregex_\Q%reg{"}\E
}}

Source

Search highlighting

First add a search face. Here, it will emphasis the searched word in bold and italic without changing the foreground or background colors:

face search +bi

Then enable search highlighting. Dynregex is plugged on the content of the search register /:

add-highlighter dynregex '%reg{/}' 0:search

Smart search highlighting

Enable search highlighting in context of search.

hook global NormalKey [/?*nN]|<a-[/?*nN]> %{ try %{
  add-highlighter dynregex '%reg{/}' 0:search
}}

hook global NormalKey <esc> %{ try %{
  remove-highlighter dynregex_%reg{<slash>}
}}

Now you can press Escape to disable search highlighting.

Search highlighting is re-enabled when you are searching.

Source

search.kak

Highlight characters in the 81st column

Declare this hook in your kakrc file if you use spaces for indentation: hook global WinCreate .* %{addhl regex ^\V{80}(\V) 1:Error}

Declare this instead if you use tabs for indentation, where [tabstop] is the value of tabstop, and [80/tabstop] is 80 divided by the value of tabstop: hook global WinCreate .* %{addhl regex ^(\t|\V{[tabstop]}){[80/tabstop]}(\V) 2:Error}

FIXME/TODO/XXX keywords in comments

Source the following script in your kakrc: https://gist.github.com/lenormf/e8e2b0f512efa3cf4bbf[gdt.kak]. It will display the word "FIXME"/"TODO"/"XXX" in bold and inverted video whenever it is written in a comment, to highlight bits of code that still need modification.

Faces

Faces can be taken from the colorscheme files, which is what is usually done, or directly from the the list of default faces:

Name, Foreground, Background

  • Default, Default, Default,
  • PrimarySelection, White, Blue,
  • SecondarySelection, Black, Blue,
  • PrimaryCursor, Black, White,
  • SecondaryCursor, Black, White,
  • LineNumbers, Default, Default,
  • LineNumberCursor, Default, Default, Reverse,
  • MenuForeground, White, Blue,
  • MenuBackground, Blue, White,
  • MenuInfo, Cyan, Default,
  • Information, Black, Yellow,
  • Error, Black, Red,
  • StatusLine, Cyan, Default,
  • StatusLineMode, Yellow, Default,
  • StatusLineInfo, Blue, Default,
  • StatusLineValue, Green, Default,
  • StatusCursor, Black, Cyan,
  • Prompt, Yellow, Default,
  • MatchingChar, Default, Default, Bold,
  • BufferPadding, Blue, Default,
  • Whitespace, Default, Default,
Clone this wiki locally