Skip to content

Instantly share code, notes, and snippets.

@topisani
Created February 27, 2018 18:31
Show Gist options
  • Save topisani/0d256f437af38081944c615a8dae29d1 to your computer and use it in GitHub Desktop.
Save topisani/0d256f437af38081944c615a8dae29d1 to your computer and use it in GitHub Desktop.
# Global settings
colorscheme flatblue
try %{
addhl global number_lines -hlcursor -separator ' '
addhl global show_matching
set global ui_options ncurses_assistant=none
map -docstring "Open shell" global user <ret> ':repl<ret>'
}
# Util functions
def repl-ask %{
prompt "Run:" 'repl "confirm-exit %val{text}"'
}
# Lsp
def lsp-start %{
%sh{
( python $HOME/.config/kak/scripts/libkak/lspc.py $kak_session
) > /dev/null 2>&1 < /dev/null &
}
}
def lsp-setup %{
# Manual completion and signature help when needed
map global insert <a-c> '<a-;>:eval -draft %(exec b; lsp-complete)<ret>'
map global insert <a-h> '<a-;>:lsp-signature-help<ret>'
# Hover and diagnostics on idle
hook -group lsp global NormalIdle .* %{
lsp-diagnostics cursor
lsp-hover info
}
# Aggressive diagnostics
hook -group lsp global InsertEnd .* lsp-sync
map -docstring %{Goto definition} global user . ':lsp-goto-definition<ret>'
map -docstring %{Select references} global user ? ':lsp-references<ret>'
map -docstring %{Hover help} global user h ':lsp-hover docsclient<ret>'
map -docstring %{Next diagnostic} global user j ':lsp-diagnostics-jump next cursor<ret>'
map -docstring %{Previous diagnostic} global user k ':lsp-diagnostics-jump prev cursor<ret>'
set buffer autoshowcompl false
}
# Commands for language servers
decl str lsp_servers %{
cpp:/home/topisani/.config/kak/scripts/start-cquery
python:pyls
}
# Ignore E501 for python (Line length > 80 chars)
# decl str lsp-python-disabled-diagnostics '^E501'
# Example keybindings
# C++
def cquery-start %{
%sh{
pid_file=/tmp/kak-cquery-pid-$kak_session
log_file=/tmp/kak-cquery-log-$kak_session
if ! [[ -f $pid_file ]]; then
( python $HOME/.config/kak/scripts/libkak/cquery.py $kak_session
) > $log_file 2>&1 < /dev/null &
echo &! > /tmp/kak-cquery-pid-${kak_session}
fi
}
lsp-setup
}
def cquery-log %{
%sh{
log_file=/tmp/kak-cquery-log-$kak_session
if ! [[ -f $log_file ]]; then
echo "fail 'cquery does not seem to be running'"
else
echo "
edit $log_file
set buffer readonly true
set buffer autoreload true
"
fi
}
}
hook global WinSetOption filetype=cpp %{
addhl shared/cpp/code regex %{([\w_0-9]+)::} 0:module
cquery-start
map -docstring %{GDB transient state} global user d ':gdb-helper-repeat<ret>'
map -docstring %{Alternate file} global user <tab> ':alt<ret>'
}
# Local settings files
try %{
source %sh{
function upsearch () {
test / == "$PWD" && return || test -e "$1" && echo "$PWD/$1" && return || cd .. && upsearch "$1"
}
upsearch ".local.kak"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment