anchor.diff:  Most of the time, filetype specific completion should be provided by
   external programs.
   
  -external completions are provided using the +completions+ option, which
  +external completions are provided using an option to store completion, which
   have the following format.
   
   ----
  -line.column[+len]@timestamp:candidate1:candidate2:...
  +line.column[+len]@timestamp:candidate1[@desc1]:candidate2[@desc2]:...
   ----
   
   the first element of this string list specify where and when this completions
  -applies, the others are simply completion candidates.
  +applies, the others are simply completion candidates, eventually containing
  +a descriptive text (after an `@` separator).
  +
  +to effectively use that completion option, it should get added to the completers
  +option.
  +
  +---
  +set -add buffer completers option=my_option_name
  +---
   
   As a completion program may take some time to compute the candidates, it should
   run asynchronously. In order to do that, the following pattern may be used:
  
positive.code: -----
  # Declare the option which will store the temporary filename
  decl str plugin_filename
  %sh{
      # ask Kakoune to write current buffer to temporary file
      filename=$(mktemp -t kak-temp.XXXXXXXX)
  
negative.code:     # generate completion option value
      completions="$line.$column@$kak_timestamp:$candidates"
      # write to Kakoune socket for the buffer that triggered the completion
      echo "set buffer=${kak_bufname} plugin_completions '$completions'" |
          kak -p ${kak_session}
  ) > /dev/null 2>&1 < /dev/null & }
  -----
  