Created
February 27, 2018 18:31
-
-
Save topisani/0d256f437af38081944c615a8dae29d1 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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