parent
16ccb34b8b
commit
8c63ec1652
@ -0,0 +1,374 @@ |
||||
snippet_support = false |
||||
verbosity = 2 |
||||
|
||||
[server] |
||||
# exit session if no requests were received during given period in seconds |
||||
# works only in unix sockets mode (-s/--session) |
||||
# set to 0 to disable |
||||
timeout = 1800 # seconds = 30 minutes |
||||
|
||||
[language.bash] |
||||
filetypes = ["sh"] |
||||
roots = [".git", ".hg"] |
||||
command = "bash-language-server" |
||||
args = ["start"] |
||||
|
||||
[language.dhall] |
||||
filetypes = ["dhall"] |
||||
roots = [".git", ".hg"] |
||||
command = "dhall-lsp-server" |
||||
|
||||
[language.c_cpp] |
||||
filetypes = ["c", "cpp"] |
||||
roots = ["compile_commands.json", ".clangd", ".git", ".hg"] |
||||
command = "clangd" |
||||
|
||||
[language.crystal] |
||||
filetypes = ["crystal"] |
||||
roots = ["shard.yml"] |
||||
command = "scry" |
||||
|
||||
[language.css] |
||||
filetypes = ["css"] |
||||
roots = ["package.json", ".git", ".hg"] |
||||
command = "css-languageserver" |
||||
args = ["--stdio"] |
||||
|
||||
[language.less] |
||||
filetypes = ["less"] |
||||
roots = ["package.json", ".git", ".hg"] |
||||
command = "css-languageserver" |
||||
args = ["--stdio"] |
||||
|
||||
[language.scss] |
||||
filetypes = ["scss"] |
||||
roots = ["package.json", ".git", ".hg"] |
||||
command = "css-languageserver" |
||||
args = ["--stdio"] |
||||
|
||||
[language.d] |
||||
filetypes = ["d", "di"] |
||||
roots = [".git", "dub.sdl", "dub.json"] |
||||
command = "dls" |
||||
|
||||
[language.dart] |
||||
# start shell to find path to dart analysis server source |
||||
filetypes = ["dart"] |
||||
roots = ["pubspec.yaml", ".git", ".hg"] |
||||
command = "sh" |
||||
args = ["-c", "dart $(dirname $(command -v dart))/snapshots/analysis_server.dart.snapshot --lsp"] |
||||
|
||||
[language.elixir] |
||||
filetypes = ["elixir"] |
||||
roots = ["mix.exs"] |
||||
command = "elixir-ls" |
||||
settings_section = "elixirLS" |
||||
[language.elixir.settings.elixirLS] |
||||
# See https://github.com/elixir-lsp/elixir-ls/blob/master/apps/language_server/lib/language_server/server.ex |
||||
# dialyzerEnable = true |
||||
|
||||
[language.elm] |
||||
filetypes = ["elm"] |
||||
roots = ["elm.json"] |
||||
command = "elm-language-server" |
||||
args = ["--stdio"] |
||||
settings_section = "elmLS" |
||||
[language.elm.settings.elmLS] |
||||
# See https://github.com/elm-tooling/elm-language-server#server-settings |
||||
runtime = "node" |
||||
elmPath = "elm" |
||||
elmFormatPath = "elm-format" |
||||
elmTestPath = "elm-test" |
||||
|
||||
[language.erlang] |
||||
filetypes = ["erlang"] |
||||
# See https://github.com/erlang-ls/erlang_ls.git for more information and |
||||
# how to configure. This default config should work in most cases though. |
||||
roots = ["rebar.config", "erlang.mk", ".git", ".hg"] |
||||
command = "erlang_ls" |
||||
|
||||
[language.go] |
||||
filetypes = ["go"] |
||||
roots = ["Gopkg.toml", "go.mod", ".git", ".hg"] |
||||
command = "gopls" |
||||
settings_section = "gopls" |
||||
[language.go.settings.gopls] |
||||
# See https://github.com/golang/tools/blob/master/gopls/doc/settings.md |
||||
# "build.buildFlags" = [] |
||||
[language.haskell] |
||||
filetypes = ["haskell"] |
||||
roots = ["Setup.hs", "stack.yaml", "*.cabal"] |
||||
command = "haskell-language-server-wrapper" |
||||
args = ["--lsp"] |
||||
settings_section = "_" |
||||
[language.haskell.settings._] |
||||
# See https://haskell-language-server.readthedocs.io/en/latest/configuration.html |
||||
# # haskell.formattingProvider = "ormolu" |
||||
|
||||
[language.html] |
||||
filetypes = ["html"] |
||||
roots = ["package.json"] |
||||
command = "html-languageserver" |
||||
args = ["--stdio"] |
||||
|
||||
# Commented out by default because you still need to set the paths in the JDT |
||||
# Language Server arguments below before this can become a valid configuration. |
||||
[language.java] |
||||
filetypes = ["java"] |
||||
roots = [".git", "mvnw", "gradlew"] |
||||
command = "eclipse-jdt-ls" |
||||
[language.java.settings] |
||||
# See https://github.dev/eclipse/eclipse.jdt.ls |
||||
java.format.insertSpaces = true |
||||
|
||||
[language.javascript] |
||||
filetypes = ["javascript"] |
||||
roots = [".flowconfig"] |
||||
command = "flow" |
||||
args = ["lsp"] |
||||
|
||||
[language.json] |
||||
filetypes = ["json"] |
||||
roots = ["package.json"] |
||||
command = "json-languageserver" |
||||
args = ["--stdio"] |
||||
|
||||
# Requires Julia package "LanguageServer" # Run: `julia --project=@kak-lsp -e 'import Pkg; Pkg.add("LanguageServer")'` to install it |
||||
# Configuration adapted from https://github.com/neovim/nvim-lspconfig/blob/bcebfac7429cd8234960197dca8de1767f3ef5d3/lua/lspconfig/julials.lua |
||||
[language.julia] |
||||
filetypes = ["julia"] |
||||
roots = ["Project.toml", ".git", ".hg"] |
||||
command = "julia" |
||||
args = [ |
||||
"--startup-file=no", |
||||
"--history-file=no", |
||||
"-e", |
||||
""" |
||||
ls_install_path = joinpath(get(DEPOT_PATH, 1, joinpath(homedir(), ".julia")), "environments", "kak-lsp"); |
||||
pushfirst!(LOAD_PATH, ls_install_path); |
||||
using LanguageServer; |
||||
popfirst!(LOAD_PATH); |
||||
depot_path = get(ENV, "JULIA_DEPOT_PATH", ""); |
||||
buffer_file = ENV["kak_buffile"]; |
||||
project_path = let |
||||
dirname(something( |
||||
# 1. Check if there is an explicitly set project |
||||
Base.load_path_expand(( |
||||
p = get(ENV, "JULIA_PROJECT", nothing); |
||||
p === nothing ? nothing : isempty(p) ? nothing : p |
||||
)), |
||||
# 2. Check for Project.toml in current working directory |
||||
Base.current_project(pwd()), |
||||
# 3. Check for Project.toml from buffer's full file path excluding the file name |
||||
Base.current_project(dirname(buffer_file)), |
||||
# 4. Fallback to global environment |
||||
Base.active_project() |
||||
)) |
||||
end |
||||
server = LanguageServer.LanguageServerInstance(stdin, stdout, project_path, depot_path); |
||||
server.runlinter = true; |
||||
run(server); |
||||
""", |
||||
] |
||||
[language.julia.settings] |
||||
# See https://github.com/julia-vscode/LanguageServer.jl/blob/master/src/requests/workspace.jl |
||||
# Format options. See https://github.com/julia-vscode/DocumentFormat.jl/blob/master/src/DocumentFormat.jl |
||||
# "julia.format.indent" = 4 |
||||
# Lint options. See https://github.com/julia-vscode/StaticLint.jl/blob/master/src/linting/checks.jl |
||||
# "julia.lint.call" = true |
||||
# Other options, see https://github.com/julia-vscode/LanguageServer.jl/blob/master/src/requests/workspace.jl |
||||
# "julia.lint.run" = "true" |
||||
|
||||
[language.latex] |
||||
filetypes = ["latex"] |
||||
roots = [".git", ".hg"] |
||||
command = "texlab" |
||||
settings_section = "texlab" |
||||
[language.latex.settings.texlab] |
||||
# See https://github.com/latex-lsp/texlab/blob/master/docs/options.md |
||||
# |
||||
# Preview configuration for zathura with SyncTeX search. |
||||
# For other PDF viewers see https://github.com/latex-lsp/texlab/blob/master/docs/previewing.md |
||||
forwardSearch.executable = "zathura" |
||||
forwardSearch.args = [ |
||||
"%p", |
||||
"--synctex-forward", # Support texlab-forward-search |
||||
"%l:1:%f", |
||||
"--synctex-editor-command", # Inverse search: use Control+Left-Mouse-Button to jump to source. |
||||
""" |
||||
sh -c ' |
||||
echo " |
||||
evaluate-commands -client %opt{texlab_client} %{ |
||||
evaluate-commands -try-client %opt{jumpclient} %{ |
||||
edit -- %{input} %{line} |
||||
} |
||||
} |
||||
" | kak -p $kak_session |
||||
' |
||||
""", |
||||
] |
||||
|
||||
[language.lua] |
||||
filetypes = ["lua"] |
||||
roots = [".git", ".hg"] |
||||
command = "lua-language-server" |
||||
[language.lua.settings.Lua] |
||||
# See https://github.com/sumneko/vscode-lua/blob/master/setting/schema.json |
||||
# diagnostics.enable = true |
||||
|
||||
[language.nim] |
||||
filetypes = ["nim"] |
||||
roots = ["*.nimble", ".git", ".hg"] |
||||
command = "nimlsp" |
||||
|
||||
[language.nix] |
||||
filetypes = ["nix"] |
||||
roots = ["flake.nix", "shell.nix", ".git", ".hg"] |
||||
command = "rnix-lsp" |
||||
|
||||
[language.ocaml] |
||||
filetypes = ["ocaml"] |
||||
roots = ["Makefile", "opam", "*.opam", "dune"] |
||||
command = "ocamllsp" |
||||
|
||||
[language.php] |
||||
filetypes = ["php"] |
||||
roots = [".htaccess", "composer.json"] |
||||
command = "intelephense" |
||||
args = ["--stdio"] |
||||
settings_section = "intelephense" |
||||
[language.php.settings] |
||||
intelephense.storagePath = "/tmp/intelephense" |
||||
|
||||
[language.python] |
||||
filetypes = ["python"] |
||||
roots = ["requirements.txt", "setup.py", ".git", ".hg"] |
||||
command = "pylsp" |
||||
# settings_section = "_" |
||||
offset_encoding = "utf-8" |
||||
[language.python.settings._] |
||||
# See https://github.com/python-lsp/python-lsp-server#configuration |
||||
# pylsp.configurationSources = ["flake8"] |
||||
|
||||
[language.r] |
||||
filetypes = ["r"] |
||||
roots = ["DESCRIPTION", ".git", ".hg"] |
||||
command = "R" |
||||
args = ["--slave", "-e", "languageserver::run()"] |
||||
|
||||
[language.racket] |
||||
filetypes = ["racket"] |
||||
roots = ["info.rkt"] |
||||
command = "racket" |
||||
args = ["-l", "racket-langserver"] |
||||
|
||||
[language.reason] |
||||
filetypes = ["reason"] |
||||
roots = ["package.json", "Makefile", ".git", ".hg"] |
||||
command = "ocamllsp" |
||||
|
||||
[language.ruby] |
||||
filetypes = ["ruby"] |
||||
roots = ["Gemfile"] |
||||
command = "solargraph" |
||||
args = ["stdio"] |
||||
[language.ruby.settings] |
||||
# See https://github.com/castwide/solargraph/blob/master/lib/solargraph/language_server/host.rb |
||||
# "solargraph.completion" = true |
||||
|
||||
# [language.rust] |
||||
# filetypes = ["rust"] |
||||
# roots = ["Cargo.toml"] |
||||
# command = "sh" |
||||
# args = [ |
||||
# "-c", |
||||
# """ |
||||
# if path=$(rustup which rls 2>/dev/null); then |
||||
# "$path" |
||||
# else |
||||
# rls |
||||
# fi |
||||
# """, |
||||
# ] |
||||
# [language.rust.settings.rust] |
||||
# # See https://github.com/rust-lang/rls#configuration |
||||
# # features = [] |
||||
|
||||
[language.rust] |
||||
filetypes = ["rust"] |
||||
roots = ["Cargo.toml"] |
||||
command = "rust-analyzer" |
||||
settings_section = "rust-analyzer" |
||||
[language.rust.settings.rust-analyzer] |
||||
# See https://rust-analyzer.github.io/manual.html#configuration |
||||
hoverActions.enable = false # kak-lsp doesn't support this at the moment |
||||
# cargo.features = [] |
||||
|
||||
[language.kotlin] |
||||
filetypes = ["kotlin"] |
||||
roots = [".git", "gradlew"] |
||||
command = "intelephense" |
||||
args = ["--stdio"] |
||||
settings_section = "intelephense" |
||||
|
||||
[language.terraform] |
||||
filetypes = ["terraform"] |
||||
roots = ["*.tf"] |
||||
command = "terraform-ls" |
||||
args = ["serve"] |
||||
[language.terraform.settings.terraform-ls] |
||||
# See https://github.com/hashicorp/terraform-ls/blob/main/docs/SETTINGS.md |
||||
# rootModulePaths = [] |
||||
|
||||
[language.tsx] |
||||
filetypes = ["typescript"] |
||||
roots = ["package.json", "tsconfig.json", ".git", ".hg"] |
||||
command = "typescript-language-server" |
||||
args = ["--stdio"] |
||||
|
||||
# [language.typescript] |
||||
# filetypes = ["typescript"] |
||||
# roots = ["package.json", "tsconfig.json", ".git", ".hg"] |
||||
# command = "deno" |
||||
# args = ["lsp"] |
||||
# [language.typescript.settings.deno] |
||||
# enable = true |
||||
# lint = true |
||||
|
||||
[language.yaml] |
||||
filetypes = ["yaml"] |
||||
roots = [".git", ".hg"] |
||||
command = "yaml-language-server" |
||||
args = ["--stdio"] |
||||
[language.yaml.settings] |
||||
# See https://github.com/redhat-developer/yaml-language-server#language-server-settings |
||||
# Defaults are at https://github.com/redhat-developer/yaml-language-server/blob/master/src/yamlSettings.ts |
||||
# yaml.format.enable = true |
||||
|
||||
[language.zig] |
||||
filetypes = ["zig"] |
||||
roots = ["build.zig"] |
||||
command = "zls" |
||||
|
||||
# Semantic tokens support |
||||
# See https://microsoft.github.io/language-server-protocol/specifications/specification-current/#textDocument_semanticTokens |
||||
# for the default list of tokens and modifiers. |
||||
# However, many language servers implement their own values. |
||||
# Make sure to check the output of `lsp-capabilities` and each server's documentation and source code as well. |
||||
# Examples: |
||||
# - TypeScript: https://github.com/microsoft/vscode-languageserver-node/blob/2645fb54ea1e764aff71dee0ecc8aceff3aabf56/client/src/common/semanticTokens.ts#L58 |
||||
# - Rust Analyzer: https://github.com/rust-analyzer/rust-analyzer/blob/f6da603c7fe56c19a275dc7bab1f30fe1ad39707/crates/ide/src/syntax_highlighting.rs#L42 |
||||
[semantic_tokens] |
||||
faces = [ |
||||
{face="documentation", token="comment", modifiers=["documentation"]}, |
||||
{face="comment", token="comment"}, |
||||
{face="function", token="function"}, |
||||
{face="keyword", token="keyword"}, |
||||
{face="module", token="namespace"}, |
||||
{face="operator", token="operator"}, |
||||
{face="string", token="string"}, |
||||
{face="type", token="type"}, |
||||
{face="default+d", token="variable", modifiers=["readonly"]}, |
||||
{face="default+d", token="variable", modifiers=["constant"]}, |
||||
{face="variable", token="variable"}, |
||||
] |
@ -0,0 +1 @@ |
||||
/usr/share/kak/autoload/ |
@ -0,0 +1,158 @@ |
||||
# Find synonyms of a word in a MyThes thesaurus. |
||||
# Author: Francois Tonneau |
||||
|
||||
# This script assumes that the MyThes thesauri (or symbolic links to them) are |
||||
# installed in a 'synonyms' subdirectory of $HOME/.config/kak/ |
||||
|
||||
# PUBLIC OPTION |
||||
|
||||
declare-option \ |
||||
-docstring 'Character class to skip at word start. Default is [-_*"''`({[<]' \ |
||||
str synonyms_skip [-_*"'`({[<] |
||||
|
||||
# PRIVATE VARIABLES |
||||
|
||||
declare-option -hidden str synonyms_path synonyms |
||||
declare-option -hidden str synonyms_file '' |
||||
|
||||
declare-option -hidden str synonyms_word '' |
||||
|
||||
# PUBLIC COMMANDS |
||||
|
||||
define-command \ |
||||
-docstring 'synonyms-set-thesaurus <thesaurus>: choose synonym book' \ |
||||
-params 1 \ |
||||
-shell-script-candidates %{ |
||||
path=$kak_config'/'$kak_opt_synonyms_path |
||||
find -L "$path" -mindepth 1 -maxdepth 1 -type f -name '*\.dat' \ |
||||
| sed -e 's,^.*/,,' -e 's,\.dat$,,' \ |
||||
| sort |
||||
} \ |
||||
synonyms-set-thesaurus %{ |
||||
evaluate-commands %sh{ |
||||
file=$kak_config'/'$kak_opt_synonyms_path'/'$1.dat |
||||
if [ -f "$file" ] && [ -r "$file" ]; then |
||||
printf %s\\n "set-option window synonyms_file $file" |
||||
else |
||||
printf %s\\n 'fail cannot access thesaurus' |
||||
fi |
||||
} |
||||
} |
||||
|
||||
define-command \ |
||||
-docstring 'synonyms-enable-on <key>: find synonym with <key>' \ |
||||
-params 1 \ |
||||
synonyms-enable-on %{ |
||||
try %{ |
||||
remove-hooks global synonyms |
||||
} |
||||
hook -group synonyms global InsertKey %arg(1) %{ |
||||
synonyms-call-menu insert |
||||
} |
||||
} |
||||
|
||||
define-command \ |
||||
-docstring 'Disable synonym finding' \ |
||||
synonyms-disable %{ |
||||
remove-hooks global synonyms |
||||
} |
||||
|
||||
define-command \ |
||||
-docstring 'Replace selection(s) with synonym (in Normal mode)' \ |
||||
synonyms-replace-selection %{ |
||||
synonyms-call-menu normal |
||||
} |
||||
|
||||
alias global syr synonyms-replace-selection |
||||
|
||||
# IMPLEMENTATION |
||||
|
||||
define-command \ |
||||
-hidden \ |
||||
-params 1 \ |
||||
synonyms-call-menu %{ |
||||
# |
||||
# Arg = mode (insert or normal). |
||||
evaluate-commands synonyms-read-word %arg(1) |
||||
evaluate-commands %sh{ |
||||
mode=$1 |
||||
word=$kak_opt_synonyms_word |
||||
[ ! "$word" ] && exit |
||||
file=$kak_opt_synonyms_file |
||||
[ ! "$file" ] && printf %s\\n 'echo thesaurus not set' && exit |
||||
# |
||||
entries=$(grep -i -n "^$word|" "$file" 2>/dev/null) |
||||
[ ! "$entries" ] && exit |
||||
# |
||||
if [ "$mode" = insert ]; then |
||||
# |
||||
# Help undoing word replacement by committing changes. Then clean |
||||
# commit message. |
||||
printf %s\\n 'execute-keys <c-u>' |
||||
printf %s\\n echo |
||||
fi |
||||
# |
||||
printf %s 'menu -- ' |
||||
printf %s\\n "$entries" | while read entry; do |
||||
head=${entry%%:*} |
||||
count=${entry##*|} |
||||
# |
||||
# Select item lines, remove ...-| headers and parenthetical notes, |
||||
# replace braces with ! for string safety, and build menu content. |
||||
sed -n "$((head + 1)),$((head + count))p" "$file" \ |
||||
| \ |
||||
sed -e 's,^[^|]*|,,' -e 's, *([^()]*) *,,g' -e 's,[{}],!,g' \ |
||||
| tr '|' '\n' \ |
||||
| sort \ |
||||
| uniq \ |
||||
| awk -v mode="$mode" ' |
||||
{ |
||||
printf "%%{%s} ", $0 |
||||
printf "%%{synonyms-do-replacement %s %%{%s}} ", mode, $0 |
||||
} |
||||
' |
||||
done |
||||
} |
||||
} |
||||
|
||||
define-command \ |
||||
-hidden \ |
||||
-params 1 \ |
||||
synonyms-read-word %{ |
||||
# |
||||
# Arg = mode (insert or normal). |
||||
set-option window synonyms_word '' |
||||
evaluate-commands -draft %{ |
||||
evaluate-commands "synonyms-adjust-selection-%arg(1)" |
||||
set-option window synonyms_word %val(selection) |
||||
} |
||||
} |
||||
|
||||
define-command \ |
||||
-hidden \ |
||||
synonyms-adjust-selection-insert %{ |
||||
try %{ |
||||
execute-keys <a-h> |
||||
execute-keys 1 s %opt(synonyms_skip)* (\S+?) \s* \z <ret> |
||||
} |
||||
} |
||||
|
||||
define-command \ |
||||
-hidden \ |
||||
synonyms-adjust-selection-normal %{ |
||||
nop |
||||
} |
||||
|
||||
define-command \ |
||||
-hidden \ |
||||
-params 2 \ |
||||
synonyms-do-replacement %{ |
||||
# |
||||
# Args: 1 = mode, 2 = replacement. |
||||
evaluate-commands -save-regs x -draft %{ |
||||
evaluate-commands "synonyms-adjust-selection-%arg(1)" |
||||
set-register x %arg(2) |
||||
execute-keys %{"} x R |
||||
} |
||||
} |
||||
|
@ -0,0 +1,120 @@ |
||||
# One Light |
||||
|
||||
declare-option str fg "4b4c54" |
||||
declare-option str bg "fafafa" |
||||
declare-option str subbg "e6e6e6" |
||||
|
||||
declare-option str lightred "e45649" |
||||
declare-option str darkred "ca1243" |
||||
declare-option str green "50a14f" |
||||
declare-option str lightorange "c18401" |
||||
declare-option str darkorange "986801" |
||||
declare-option str blue "4078f2" |
||||
declare-option str magenta "a626a4" |
||||
declare-option str cyan "0184bc" |
||||
|
||||
declare-option str comment "a0a1a7" |
||||
declare-option str hint "000000" |
||||
|
||||
declare-option str cursoralpha "80" |
||||
declare-option str selectionalpha "40" |
||||
|
||||
# Menus do not support transparency, so we must hardcode the selection + sub bg colors |
||||
declare-option str menuselection "bbc9e8" |
||||
|
||||
# CODE |
||||
|
||||
set-face global value "rgb:%opt{darkorange}" |
||||
set-face global type "rgb:%opt{lightorange}" |
||||
set-face global variable "rgb:%opt{lightred}" |
||||
set-face global module "rgb:%opt{lightorange}" |
||||
set-face global function "rgb:%opt{blue}" |
||||
set-face global string "rgb:%opt{green}" |
||||
set-face global keyword "rgb:%opt{magenta}" |
||||
set-face global operator "rgb:%opt{fg}" |
||||
set-face global attribute "rgb:%opt{magenta}" |
||||
set-face global comment "rgb:%opt{comment}" |
||||
set-face global documentation "rgb:%opt{comment}" |
||||
set-face global meta "rgb:%opt{lightred}" |
||||
set-face global builtin "rgb:%opt{lightorange}" |
||||
|
||||
# MARKUP |
||||
|
||||
set-face global title "rgb:%opt{darkorange}" |
||||
set-face global header "rgb:%opt{green}" |
||||
set-face global mono "rgb:%opt{cyan}" |
||||
set-face global block "rgb:%opt{magenta}" |
||||
set-face global link "rgb:%opt{blue}" |
||||
set-face global bullet "rgb:%opt{lightorange}" |
||||
set-face global list "rgb:%opt{fg}" |
||||
|
||||
# BUILTIN |
||||
|
||||
set-face global Default "rgb:%opt{fg},rgb:%opt{bg}" |
||||
set-face global PrimarySelection "default,rgba:%opt{blue}%opt{selectionalpha}" |
||||
set-face global SecondarySelection "default,rgba:%opt{green}%opt{selectionalpha}" |
||||
set-face global PrimaryCursor "default,rgba:%opt{blue}%opt{cursoralpha}" |
||||
set-face global SecondaryCursor "default,rgba:%opt{green}%opt{cursoralpha}" |
||||
set-face global PrimaryCursorEol "default,rgba:%opt{lightred}%opt{cursoralpha}" |
||||
set-face global SecondaryCursorEol "default,rgba:%opt{darkorange}%opt{cursoralpha}" |
||||
set-face global LineNumbers "rgb:%opt{comment}" |
||||
set-face global LineNumberCursor "rgb:%opt{darkorange}" |
||||
set-face global LineNumbersWrapped "rgb:%opt{bg},rgb:%opt{bg}" |
||||
set-face global MenuForeground "rgb:%opt{fg},rgb:%opt{menuselection}" |
||||
set-face global MenuBackground "rgb:%opt{fg},rgb:%opt{subbg}" |
||||
set-face global MenuInfo "rgb:%opt{green}" |
||||
set-face global Information "rgb:%opt{fg},rgb:%opt{subbg}" |
||||
set-face global Error "rgb:%opt{lightred}" |
||||
set-face global StatusLine "rgb:%opt{fg},rgb:%opt{subbg}" |
||||
set-face global StatusLineMode "rgb:%opt{darkorange}" |
||||
set-face global StatusLineInfo "rgb:%opt{blue}" |
||||
set-face global StatusLineValue "rgb:%opt{fg}" |
||||
set-face global StatusCursor "default,rgba:%opt{blue}%opt{cursoralpha}" |
||||
set-face global Prompt "rgb:%opt{blue}" |
||||
set-face global MatchingChar "default,rgb:%opt{subbg}" |
||||
set-face global BufferPadding "rgb:%opt{bg},rgb:%opt{bg}" |
||||
set-face global Whitespace "rgb:%opt{comment}" |
||||
|
||||
# PLUGINS |
||||
|
||||
# kak-lsp |
||||
set-face global InlayHint "rgb:%opt{comment}" |
||||
set-face global parameter "rgb:%opt{lightred}+i" |
||||
set-face global enum "rgb:%opt{cyan}" |
||||
set-face global InlayDiagnosticError "rgb:%opt{lightred}" |
||||
set-face global InlayDiagnosticWarning "rgb:%opt{lightorange}" |
||||
set-face global InlayDiagnosticInfo "rgb:%opt{blue}" |
||||
set-face global InlayDiagnosticHint "rgb:%opt{hint}" |
||||
set-face global LineFlagError "rgb:%opt{lightred}" |
||||
set-face global LineFlagWarning "rgb:%opt{lightorange}" |
||||
set-face global LineFlagInfo "rgb:%opt{blue}" |
||||
set-face global LineFlagHint "rgb:%opt{hint}" |
||||
# Not all terminals support curly underlines, so use regular ones by default |
||||
set-face global DiagnosticError "default+u" |
||||
set-face global DiagnosticWarning "default+u" |
||||
set-face global DiagnosticInfo "default+u" |
||||
set-face global DiagnosticHint "default+u" |
||||
define-command -override one-enable-fancy-underlines %{ |
||||
set-face global DiagnosticError ",,rgb:%opt{lightred}+c" |
||||
set-face global DiagnosticWarning ",,rgb:%opt{lightorange}+c" |
||||
set-face global DiagnosticInfo ",,rgb:%opt{blue}+c" |
||||
set-face global DiagnosticHint ",,rgb:%opt{hint}+u" |
||||
} |
||||
# Infobox faces |
||||
set-face global InfoDefault Information |
||||
set-face global InfoBlock block |
||||
set-face global InfoBlockQuote block |
||||
set-face global InfoBullet bullet |
||||
set-face global InfoHeader header |
||||
set-face global InfoLink link |
||||
set-face global InfoLinkMono header |
||||
set-face global InfoMono mono |
||||
set-face global InfoRule comment |
||||
set-face global InfoDiagnosticError InlayDiagnosticError |
||||
set-face global InfoDiagnosticHint InlayDiagnosticHint |
||||
set-face global InfoDiagnosticInformation InlayDiagnosticInfo |
||||
set-face global InfoDiagnosticWarning InlayDiagnosticWarning |
||||
|
||||
# kak-rainbower |
||||
try %{ set-option global rainbow_colors "rgb:daa520" "rgb:9932cc" "rgb:00bfff" } |
||||
|
@ -0,0 +1,120 @@ |
||||
# One Light |
||||
# |
||||
# declare-option str fg "4b4c54" |
||||
# declare-option str bg "fafafa" |
||||
# declare-option str subbg "e6e6e6" |
||||
# |
||||
# declare-option str lightred "e45649" |
||||
# declare-option str darkred "ca1243" |
||||
# declare-option str green "50a14f" |
||||
# declare-option str lightorange "c18401" |
||||
# declare-option str darkorange "986801" |
||||
# declare-option str blue "4078f2" |
||||
# declare-option str magenta "a626a4" |
||||
# declare-option str cyan "0184bc" |
||||
# |
||||
# declare-option str comment "a0a1a7" |
||||
# declare-option str hint "000000" |
||||
# |
||||
# declare-option str cursoralpha "80" |
||||
# declare-option str selectionalpha "40" |
||||
# |
||||
# # Menus do not support transparency, so we must hardcode the selection + sub bg colors |
||||
# declare-option str menuselection "bbc9e8" |
||||
# |
||||
# # CODE |
||||
# |
||||
# set-face global value "rgb:%opt{darkorange}" |
||||
# set-face global type "rgb:%opt{lightorange}" |
||||
# set-face global variable "rgb:%opt{lightred}" |
||||
# set-face global module "rgb:%opt{lightorange}" |
||||
# set-face global function "rgb:%opt{blue}" |
||||
# set-face global string "rgb:%opt{green}" |
||||
# set-face global keyword "rgb:%opt{magenta}" |
||||
# set-face global operator "rgb:%opt{fg}" |
||||
# set-face global attribute "rgb:%opt{magenta}" |
||||
# set-face global comment "rgb:%opt{comment}" |
||||
# set-face global documentation "rgb:%opt{comment}" |
||||
# set-face global meta "rgb:%opt{lightred}" |
||||
# set-face global builtin "rgb:%opt{lightorange}" |
||||
# |
||||
# # MARKUP |
||||
# |
||||
# set-face global title "rgb:%opt{darkorange}" |
||||
# set-face global header "rgb:%opt{green}" |
||||
# set-face global mono "rgb:%opt{cyan}" |
||||
# set-face global block "rgb:%opt{magenta}" |
||||
# set-face global link "rgb:%opt{blue}" |
||||
# set-face global bullet "rgb:%opt{lightorange}" |
||||
# set-face global list "rgb:%opt{fg}" |
||||
# |
||||
# # BUILTIN |
||||
# |
||||
# set-face global Default "rgb:%opt{fg},rgb:%opt{bg}" |
||||
# set-face global PrimarySelection "default,rgba:%opt{blue}%opt{selectionalpha}" |
||||
# set-face global SecondarySelection "default,rgba:%opt{green}%opt{selectionalpha}" |
||||
# set-face global PrimaryCursor "default,rgba:%opt{blue}%opt{cursoralpha}" |
||||
# set-face global SecondaryCursor "default,rgba:%opt{green}%opt{cursoralpha}" |
||||
# set-face global PrimaryCursorEol "default,rgba:%opt{lightred}%opt{cursoralpha}" |
||||
# set-face global SecondaryCursorEol "default,rgba:%opt{darkorange}%opt{cursoralpha}" |
||||
# set-face global LineNumbers "rgb:%opt{comment}" |
||||
# set-face global LineNumberCursor "rgb:%opt{darkorange}" |
||||
# set-face global LineNumbersWrapped "rgb:%opt{bg},rgb:%opt{bg}" |
||||
# set-face global MenuForeground "rgb:%opt{fg},rgb:%opt{menuselection}" |
||||
# set-face global MenuBackground "rgb:%opt{fg},rgb:%opt{subbg}" |
||||
# set-face global MenuInfo "rgb:%opt{green}" |
||||
# set-face global Information "rgb:%opt{fg},rgb:%opt{subbg}" |
||||
# set-face global Error "rgb:%opt{lightred}" |
||||
# set-face global StatusLine "rgb:%opt{fg},rgb:%opt{subbg}" |
||||
# set-face global StatusLineMode "rgb:%opt{darkorange}" |
||||
# set-face global StatusLineInfo "rgb:%opt{blue}" |
||||
# set-face global StatusLineValue "rgb:%opt{fg}" |
||||
# set-face global StatusCursor "default,rgba:%opt{blue}%opt{cursoralpha}" |
||||
# set-face global Prompt "rgb:%opt{blue}" |
||||
# set-face global MatchingChar "default,rgb:%opt{subbg}" |
||||
# set-face global BufferPadding "rgb:%opt{bg},rgb:%opt{bg}" |
||||
# set-face global Whitespace "rgb:%opt{comment}" |
||||
# |
||||
# # PLUGINS |
||||
# |
||||
# # kak-lsp |
||||
# set-face global InlayHint "rgb:%opt{comment}" |
||||
# set-face global parameter "rgb:%opt{lightred}+i" |
||||
# set-face global enum "rgb:%opt{cyan}" |
||||
# set-face global InlayDiagnosticError "rgb:%opt{lightred}" |
||||
# set-face global InlayDiagnosticWarning "rgb:%opt{lightorange}" |
||||
# set-face global InlayDiagnosticInfo "rgb:%opt{blue}" |
||||
# set-face global InlayDiagnosticHint "rgb:%opt{hint}" |
||||
# set-face global LineFlagError "rgb:%opt{lightred}" |
||||
# set-face global LineFlagWarning "rgb:%opt{lightorange}" |
||||
# set-face global LineFlagInfo "rgb:%opt{blue}" |
||||
# set-face global LineFlagHint "rgb:%opt{hint}" |
||||
# # Not all terminals support curly underlines, so use regular ones by default |
||||
# set-face global DiagnosticError "default+u" |
||||
# set-face global DiagnosticWarning "default+u" |
||||
# set-face global DiagnosticInfo "default+u" |
||||
# set-face global DiagnosticHint "default+u" |
||||
# define-command -override one-enable-fancy-underlines %{ |
||||
# set-face global DiagnosticError ",,rgb:%opt{lightred}+c" |
||||
# set-face global DiagnosticWarning ",,rgb:%opt{lightorange}+c" |
||||
# set-face global DiagnosticInfo ",,rgb:%opt{blue}+c" |
||||
# set-face global DiagnosticHint ",,rgb:%opt{hint}+u" |
||||
# } |
||||
# # Infobox faces |
||||
# set-face global InfoDefault Information |
||||
# set-face global InfoBlock block |
||||
# set-face global InfoBlockQuote block |
||||
# set-face global InfoBullet bullet |
||||
# set-face global InfoHeader header |
||||
# set-face global InfoLink link |
||||
# set-face global InfoLinkMono header |
||||
# set-face global InfoMono mono |
||||
# set-face global InfoRule comment |
||||
# set-face global InfoDiagnosticError InlayDiagnosticError |
||||
# set-face global InfoDiagnosticHint InlayDiagnosticHint |
||||
# set-face global InfoDiagnosticInformation InlayDiagnosticInfo |
||||
# set-face global InfoDiagnosticWarning InlayDiagnosticWarning |
||||
# |
||||
# # kak-rainbower |
||||
# try %{ set-option global rainbow_colors "rgb:daa520" "rgb:9932cc" "rgb:00bfff" } |
||||
# |
@ -0,0 +1,152 @@ |
||||
########### |
||||
# plugins # |
||||
########### |
||||
source "%val{config}/plugins/plug.kak/rc/plug.kak" |
||||
plug "andreyorst/plug.kak" noload |
||||
|
||||
######################### |
||||
# colors and appearance # |
||||
######################### |
||||
add-highlighter global/ number-lines -relative |
||||
add-highlighter -override global/number-lines number-lines -hlcursor |
||||
|
||||
colorscheme one |
||||
|
||||
#################### |
||||
# system clipboard # |
||||
#################### |
||||
plug "lePerdu/kakboard" %{ |
||||
hook global WinCreate .* %{ kakboard-enable } |
||||
} |
||||
|
||||
hook global NormalKey y|d|c %{ nop %sh{ |
||||
printf "%s" "$kak_reg_dquote" | xclip -selection clipboard >&- 2>&- |
||||
} } |
||||
|
||||
############ |
||||
# snippets # |
||||
############ |
||||
# plug "occivink/kakoune-snippets" config %{ |
||||
# set-option -add global snippets_directories "%opt{plug_install_dir}/kakoune-snippet-collection/snippets" |
||||
# # some other kakoune-snippets related configurations |
||||
# } |
||||
# |
||||
# plug "andreyorst/kakoune-snippet-collection" |
||||
|
||||
|
||||
########### |
||||
# buffers # |
||||
########### |
||||
plug "Delapouite/kakoune-buffers" %{ |
||||
map global normal ^ q |
||||
map global normal <a-^> Q |
||||
map global normal q b |
||||
map global normal Q B |
||||
map global normal <a-q> <a-b> |
||||
map global normal <a-Q> <a-B> |
||||
map global normal b ': enter-buffers-mode<ret>' -docstring 'buffers' |
||||
map global normal B ': enter-user-mode -lock buffers<ret>' -docstring 'buffers (lock)' |
||||
} |
||||
|
||||
alias global bd delete-buffer |
||||
alias global bf buffer-first |
||||
alias global bl buffer-last |
||||
alias global bo buffer-only |
||||
alias global bo! buffer-only-force |
||||
|
||||
hook global WinDisplay .* info-buffers |
||||
|
||||
map global user b ':enter-buffers-mode<ret>' -docstring 'buffers…' |
||||
map global user B ':enter-user-mode -lock buffers<ret>' -docstring 'buffers (dick)' |
||||
|
||||
|
||||
################## |
||||
# tabs expansion # |
||||
################## |
||||
plug "andreyorst/smarttab.kak" |
||||
hook global WinSetOption filetype=(python|rust) expandtab |
||||
map global insert <tab> '<a-;><a-gt>' |
||||
|
||||
####### |
||||
# lsp # |
||||
####### |
||||
eval %sh{kak-lsp --kakoune -s $kak_session} # Not needed if you load it with plug.kak. |
||||
lsp-enable |
||||
|
||||
|
||||
map global user l %{: enter-user-mode lsp<ret>} -docstring "LSP mode" |
||||
|
||||
# vim migration |
||||
# <https://discuss.kakoune.com/t/annoyances-when-migrating-from-vim/690/9> |
||||
define-command -hidden alt-x %{ |
||||
evaluate-commands %sh{ |
||||
width=$kak_window_width |
||||
printf "%s\n" "execute-keys <a-:>'$width'l<a-b>hl" |
||||
unset width |
||||
} |
||||
} |
||||
define-command -hidden alt-X %{ |
||||
evaluate-commands %sh{ |
||||
width=$kak_window_width |
||||
printf "%s\n" "execute-keys <a-\;>'$width'h<a-b>lh" |
||||
unset width |
||||
} |
||||
} |
||||
|
||||
|
||||
############## |
||||
# formatters # |
||||
############## |
||||
# indentation |
||||
set-option global indentwidth 4 |
||||
|
||||
hook global WinSetOption filetype=python %{ |
||||
set-option window formatcmd 'black -q -' |
||||
|
||||
hook -group python-auto-format window BufWritePre .* format |
||||
|
||||
hook -once WinSetOption filetype=.* %{ |
||||
unset-option window formatcmd |
||||
remove-hooks window python-auto-format |
||||
} |
||||
} |
||||
|
||||
hook global WinSetOption filetype=rust %{ |
||||
set-option window formatcmd 'rustfmt' |
||||
|
||||
hook -group rust-autoformat window BufWritePre .* format |
||||
|
||||
hook -once WinSetOption filetype=.* %{ |
||||
unset-option window formatcmd |
||||
remove-hooks window rust-autoformat |
||||
} |
||||
} |
||||
|
||||
hook global BufSetOption filetype=markdown %{ |
||||
set-option buffer formatcmd 'pandoc -f commonmark -t commonmark' |
||||
} |
||||
|
||||
|
||||
hook global WinSetOption filetype=(nix|latex|yaml|markdown|haskell) %{ |
||||
set-option buffer indentwidth 2 |
||||
set window autowrap_column 80 |
||||
autowrap-enable |
||||
} |
||||
|
||||
map global user W '|fmt --width 80<ret>' -docstring "Wrap to 80 columns" |
||||
|
||||
############ |
||||
# spelling # |
||||
############ |
||||
# thesaurus langauge switchers? |
||||
map global normal <a-=> ' :synonyms-set-thesaurus th_ru_RU_v2<ret> :echo set ru thesaurus<ret>' |
||||
map global normal <a-+> ' :synonyms-set-thesaurus th_en_US_v2<ret> :echo set en thesaurus<ret>' |
||||
|
||||
hook global WinDisplay .* %{ synonyms-enable-on <a-n> } |
||||
|
||||
|
||||
############### |
||||
# file search # |
||||
############### |
||||
plug "andreyorst/fzf.kak" |
||||
map global normal <F5> ': fzf-mode<ret>' |
Loading…
Reference in new issue