~koehr/configs

e1385605647e2ce3ec239a1dba13215ead20eb66 — Norman Köhring 10 months ago d108c45 + 9fdf6ed main
Merge branch 'master'
A dot.config/foot/foot.ini => dot.config/foot/foot.ini +186 -0
@@ 0,0 1,186 @@
# -*- conf -*-

# shell=$SHELL (if set, otherwise user's default shell from /etc/passwd)
# term=foot (or xterm-256color if built with -Dterminfo=disabled)
# login-shell=no

# app-id=foot
# title=foot
# locked-title=no

font=Monofur Nerd Font:size=11:antialias=true:autohint=true
# font-bold=<bold variant of regular font>
# font-italic=<italic variant of regular font>
# font-bold-italic=<bold+italic variant of regular font>
# line-height=<font metrics>
# letter-spacing=0
# horizontal-letter-offset=0
# vertical-letter-offset=0
# underline-offset=<font metrics>
# box-drawings-uses-font-glyphs=no
# dpi-aware=auto

# initial-window-size-pixels=700x500  # Or,
# initial-window-size-chars=<COLSxROWS>
initial-window-mode=maximized
# pad=2x2                             # optionally append 'center'
# resize-delay-ms=100

# notify=notify-send -a ${app-id} -i ${app-id} ${title} ${body}

# bold-text-in-bright=no
# word-delimiters=,│`|:"'()[]{}<>
# selection-target=primary
# workers=<number of logical CPUs>

[bell]
# urgent=no
# notify=no
# command=
# command-focused=no

[scrollback]
# lines=1000
# multiplier=3.0
# indicator-position=relative
# indicator-format=

[url]
# launch=xdg-open ${url}
# label-letters=sadfjklewcmpgh
# osc8-underline=url-mode
# protocols=http, https, ftp, ftps, file, gemini, gopher
# uri-characters=abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-_.,~:;/?#@!$&%*+="'()[]

[cursor]
# style=block
# color=<inverse foreground/background>
# blink=no
# beam-thickness=1.5
# underline-thickness=<font underline thickness>

[mouse]
# hide-when-typing=no
# alternate-scroll-mode=yes

[colors]
# alpha=1.0
# foreground=dcdccc
# background=111111

## Normal/regular colors (color palette 0-7)
# regular0=222222  # black
# regular1=cc9393  # red
# regular2=7f9f7f  # green
# regular3=d0bf8f  # yellow
# regular4=6ca0a3  # blue
# regular5=dc8cc3  # magenta
# regular6=93e0e3  # cyan
# regular7=dcdccc  # white

## Bright colors (color palette 8-15)
# bright0=666666   # bright black
# bright1=dca3a3   # bright red
# bright2=bfebbf   # bright green
# bright3=f0dfaf   # bright yellow
# bright4=8cd0d3   # bright blue
# bright5=fcace3   # bright magenta
# bright6=b3ffff   # bright cyan
# bright7=ffffff   # bright white

## dimmed colors (see foot.ini(5) man page)
# dim0=<not set>
# ...
# dim7=<not-set>

## The remaining 256-color palette
# 16 = <256-color palette #16>
# ...
# 255 = <256-color palette #255>

## Misc colors
# selection-foreground=<inverse foreground/background>
# selection-background=<inverse foreground/background>
# jump-labels=<regular0> <regular3>
# urls=<regular3>
# scrollback-indicator=<regular0> <bright4>

[csd]
preferred=none
# size=26
# font=<primary font>
# color=<foreground color>
# hide-when-typing=no
# border-width=0
# border-color=<csd.color>
# button-width=26
# button-color=<background color>
# button-minimize-color=<regular4>
# button-maximize-color=<regular2>
# button-close-color=<regular1>

[key-bindings]
# scrollback-up-page=Shift+Page_Up
# scrollback-up-half-page=none
# scrollback-up-line=none
# scrollback-down-page=Shift+Page_Down
# scrollback-down-half-page=none
# scrollback-down-line=none
# clipboard-copy=Control+Shift+c XF86Copy
# clipboard-paste=Control+Shift+v XF86Paste
# primary-paste=Shift+Insert
# search-start=Control+Shift+r
# font-increase=Control+plus Control+equal Control+KP_Add
# font-decrease=Control+minus Control+KP_Subtract
# font-reset=Control+0 Control+KP_0
# spawn-terminal=Control+Shift+n
# minimize=none
# maximize=none
fullscreen=F11
# pipe-visible=[sh -c "xurls | fuzzel | xargs -r firefox"] none
# pipe-scrollback=[sh -c "xurls | fuzzel | xargs -r firefox"] none
# pipe-selected=[xargs -r firefox] none
# show-urls-launch=Control+Shift+u
# show-urls-copy=none
# show-urls-persistent=none
# noop=none

[search-bindings]
# cancel=Control+g Control+c Escape
# commit=Return
# find-prev=Control+r
# find-next=Control+s
# cursor-left=Left Control+b
# cursor-left-word=Control+Left Mod1+b
# cursor-right=Right Control+f
# cursor-right-word=Control+Right Mod1+f
# cursor-home=Home Control+a
# cursor-end=End Control+e
# delete-prev=BackSpace
# delete-prev-word=Mod1+BackSpace Control+BackSpace
# delete-next=Delete
# delete-next-word=Mod1+d Control+Delete
# extend-to-word-boundary=Control+w
# extend-to-next-whitespace=Control+Shift+w
# clipboard-paste=Control+v Control+Shift+v Control+y XF86Paste
# primary-paste=Shift+Insert

[url-bindings]
# cancel=Control+g Control+c Control+d Escape
# toggle-url-visible=t

[text-bindings]
# \x03=Mod4+c  # Map Super+c -> Ctrl+c

[mouse-bindings]
# selection-override-modifiers=Shift
# primary-paste=BTN_MIDDLE
# select-begin=BTN_LEFT
# select-begin-block=Control+BTN_LEFT
# select-extend=BTN_RIGHT
# select-extend-character-wise=Control+BTN_RIGHT
# select-word=BTN_LEFT-2
# select-word-whitespace=Control+BTN_LEFT-2
# select-row=BTN_LEFT-3

# vim: ft=dosini

M dot.config/kak-lsp/kak-lsp.toml => dot.config/kak-lsp/kak-lsp.toml +66 -38
@@ 107,6 107,12 @@ roots = ["package.json"]
command = "html-languageserver"
args = ["--stdio"]

[language.svelte]
filetypes = ["svelte"]
roots = ["package.json"]
command = "svelteserver"
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]


@@ 137,11 143,11 @@ args = ["--stdio"]
# # See https://github.dev/eclipse/eclipse.jdt.ls
# # "java.format.insertSpaces" = true

[language.javascript]
filetypes = ["javascript"]
roots = [".flowconfig"]
command = "flow"
args = ["lsp"]
# [language.javascript]
# filetypes = ["javascript"]
# roots = [".flowconfig"]
# command = "flow"
# args = ["lsp"]

[language.json]
filetypes = ["json"]


@@ 149,7 155,9 @@ roots = ["package.json"]
command = "json-languageserver"
args = ["--stdio"]

# Requires Julia packages "LanguageServer", "StaticLint" and "SymbolServer"
# 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"]


@@ 159,15 167,30 @@ args = [
    "--history-file=no",
    "-e",
    """
        using LanguageServer;
        using Pkg;
        import StaticLint;
        import SymbolServer;
        import REPL;
        env_path = dirname(Pkg.Types.Context().env.project_file);
        server = LanguageServer.LanguageServerInstance(stdin, stdout, env_path, "");
        server.runlinter = true;
        run(server);
    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]


@@ 198,7 221,7 @@ forwardSearch.args = [
    """
        sh -c '
            echo "
                evaluate-commands -client $kak_client %{
                evaluate-commands -client %opt{texlab_client} %{
                    evaluate-commands -try-client %opt{jumpclient} %{
                        edit -- %{input} %{line}
                    }


@@ 293,25 316,25 @@ args = [
# See https://github.com/rust-lang/rls#configuration
# features = []

#[language.rust]
#filetypes = ["rust"]
#roots = ["Cargo.toml"]
#command = "sh"
#args = [
#    "-c",
#    """
#        if path=$(rustup which rust-analyzer 2>/dev/null); then
#            "$path"
#        else
#            rust-analyzer
#        fi
#    """,
#]
#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.rust]
# filetypes = ["rust"]
# roots = ["Cargo.toml"]
# command = "sh"
# args = [
#     "-c",
#     """
#         if path=$(rustup which rust-analyzer 2>/dev/null); then
#             "$path"
#         else
#             rust-analyzer
#         fi
#     """,
# ]
# 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.terraform]
filetypes = ["terraform"]


@@ 323,7 346,7 @@ args = ["serve"]
# rootModulePaths = []

[language.typescript]
filetypes = ["typescript"]
filetypes = ["typescript", "javascript"]
roots = ["package.json", "tsconfig.json", ".git", ".hg"]
command = "typescript-language-server"
args = ["--stdio"]


@@ 337,6 360,11 @@ args = ["--stdio"]
# enable = true
# lint = true

[language.vue]
filetypes = ["vue"]
roots = [".git", ".hg", ".env", "package.json", "tsconfig.json", "jsconfig.json", "vite.config.ts", "vue.config.js", "nuxt.config.ts"]
command = "vls"

[language.yaml]
filetypes = ["yaml"]
roots = [".git", ".hg"]


@@ 358,8 386,8 @@ command = "zls"
# 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
# - TypeScript: https://github.com/microsoft/vscode-languageserver-node/blob/main/client/src/common/semanticTokens.ts
# - Rust Analyzer: https://github.com/rust-analyzer/rust-analyzer/blob/master/crates/ide/src/syntax_highlighting.rs
[semantic_tokens]
faces = [
    {face="documentation", token="comment", modifiers=["documentation"]},

A dot.config/kak/colors/catppuccin_mocha.kak => dot.config/kak/colors/catppuccin_mocha.kak +83 -0
@@ 0,0 1,83 @@
# Catppuccin theme for Kakoune

# Color palette
declare-option	str	rosewater			'rgb:f5e0dc'
declare-option	str	red					'rgb:f38ba8'
declare-option	str	mauve				'rgb:cba6f7'
declare-option	str	maroon				'rgb:eba0ac'
declare-option	str	pink				'rgb:f5c2e7'
declare-option	str	cyan				'rgb:74c7ec'
declare-option	str	yellow				'rgb:f9e2af'
declare-option	str	green				'rgb:a6e3a1'
declare-option	str	white				'rgb:cdd6f4'
declare-option	str	blue				'rgb:89b4fa'
declare-option	str	sky					'rgb:89dceb'
declare-option	str	lavender			'rgb:b4befe'
declare-option	str	black1				'rgb:181825'
declare-option	str	black2				'rgb:1e1e2e'
declare-option	str black3				'rgb:313244'
declare-option	str orange				'rgb:fab387'
declare-option	str teal				'rgb:94e2d5'
declare-option	str	gray0				'rgb:585b70'
declare-option	str	gray1				'rgb:6c7086'
declare-option	str	bright_red			%opt{red}
declare-option	str	bright_green		%opt{green}
declare-option	str	bright_yellow		%opt{yellow}
declare-option	str	bright_blue			%opt{blue}
declare-option	str	bright_cyan			%opt{cyan}
declare-option	str	bright_white		%opt{white}
declare-option	str	foreground			%opt{white}
declare-option	str	background			%opt{black2}

# Markup
set-face	global	title				"%opt{rosewater}"
set-face	global	header				"%opt{bright_red}"
set-face	global	bold				"%opt{mauve}"
set-face	global	italic				"%opt{lavender}"
set-face	global	mono				"%opt{green}"
set-face	global	block				"%opt{cyan}"
set-face	global	link				"%opt{green}"
set-face	global	bullet				"%opt{green}"
set-face	global	list				"%opt{white}"

# Builtins
set-face	global	Default				"%opt{white},%opt{background}"
set-face	global	PrimarySelection	"%opt{gray0},%opt{lavender}"
set-face	global	SecondarySelection	"%opt{lavender},%opt{gray0}"
set-face	global	PrimaryCursor		"%opt{background},%opt{rosewater}"
set-face	global	SecondaryCursor		"%opt{black1},%opt{teal}"
set-face	global	PrimaryCursorEol	"%opt{gray0},%opt{mauve}"
set-face	global	SecondaryCursorEol	"%opt{gray0},%opt{maroon}"
set-face	global	LineNumbers			"%opt{gray1},%opt{background}"
set-face	global	LineNumberCursor	"%opt{lavender},%opt{gray0}+b"
set-face	global	LineNumbersWrapped	"%opt{teal},%opt{black1}+i"
set-face	global	MenuForeground 		"%opt{white},%opt{gray0}+b"
set-face	global	MenuBackground		"%opt{white},%opt{black3}"
set-face	global	MenuInfo			"%opt{black1},%opt{blue}"
set-face	global	Information			"%opt{black1},%opt{lavender}"
set-face	global	Error				"%opt{red},%opt{black2}"
set-face	global	StatusLine			"%opt{white},%opt{black1}"
set-face	global	StatusLineMode		"%opt{black2},%opt{yellow}"
set-face	global	StatusLineInfo		"%opt{background},%opt{green}"
set-face	global	StatusLineValue		"%opt{orange},%opt{gray0}"
set-face	global	StatusCursor		"%opt{black1},%opt{lavender}"
set-face	global	Prompt				"%opt{green},%opt{black2}"
set-face	global	MatchingChar		"%opt{maroon},%opt{black2}"
set-face	global	Whitespace			"%opt{gray1},%opt{background}+f"
set-face	global	WrapMarker			Whitespace
set-face	global	BufferPadding		"%opt{background},%opt{background}"

# Code
set-face	global	value				"%opt{orange}"
set-face	global	type				"%opt{rosewater}"
set-face	global	variable			"%opt{white}"
set-face	global	module				"%opt{maroon}"
set-face	global	function			"%opt{sky}"
set-face	global	string				"%opt{green}"
set-face	global	keyword				"%opt{blue}"
set-face	global	operator			"%opt{blue}"
set-face	global	attribute			"%opt{green}"
set-face	global	comment				"%opt{gray1}"
set-face	global	documentation		comment
set-face	global	meta				"%opt{pink}"
set-face	global	builtin				"%opt{lavender}+b"

A dot.config/kak/colors/penumbra.kak => dot.config/kak/colors/penumbra.kak +84 -0
@@ 0,0 1,84 @@
# Catppuccin theme for Kakoune

# Color palette
declare-option	str	rosewater			'rgb:CB7459'
declare-option	str	red					'rgb:CA7081'
declare-option	str	mauve				'rgb:CA736C'
declare-option	str	maroon				'rgb:F2E6D4'
declare-option	str	pink				'rgb:BD72A8'
declare-option	str	cyan				'rgb:00A0BE'
declare-option	str	yellow				'rgb:A38F2D'
declare-option	str	green				'rgb:46A473'
declare-option	str	white				'rgb:BEBEBE'
declare-option	str	blue				'rgb:7E87D6'
declare-option	str	sky					'rgb:6E8DD5'
declare-option	str	lavender			'rgb:BC73A4'
declare-option	str	black1				'rgb:24272B'
declare-option	str	black2				'rgb:2F3339'
declare-option	str black3				'rgb:3E4044'
declare-option	str orange				'rgb:C27D40'
declare-option	str teal				'rgb:00A2AF'
declare-option	str	gray0				'rgb:585b70'
declare-option	str	gray1				'rgb:6c7086'
declare-option	str	bright_red			%opt{red}
declare-option	str	bright_green		%opt{green}
declare-option	str	bright_yellow		%opt{yellow}
declare-option	str	bright_blue			%opt{blue}
declare-option	str	bright_cyan			%opt{cyan}
declare-option	str	bright_white		'rgb:FFF7ED'
declare-option	str	foreground			%opt{white}
declare-option	str	background			%opt{black2}

# Markup
set-face	global	title				"%opt{rosewater}"
set-face	global	header				"%opt{bright_red}"
set-face	global	bold				"%opt{mauve}"
set-face	global	italic				"%opt{lavender}"
set-face	global	mono				"%opt{green}"
set-face	global	block				"%opt{cyan}"
set-face	global	link				"%opt{green}"
set-face	global	bullet				"%opt{green}"
set-face	global	list				"%opt{white}"

# Builtins
set-face	global	Default				"%opt{white},%opt{background}"
set-face	global	PrimarySelection	"%opt{bright_white},%opt{rosewater}"
set-face	global	SecondarySelection	"%opt{lavender},%opt{gray0}"
set-face	global	PrimaryCursor		"%opt{background},%opt{rosewater}"
set-face	global	SecondaryCursor		"%opt{black1},%opt{teal}"
set-face	global	PrimaryCursorEol	"%opt{gray0},%opt{mauve}"
set-face	global	SecondaryCursorEol	"%opt{gray0},%opt{maroon}"
set-face	global	LineNumbers			"%opt{gray1},%opt{background}"
set-face	global	LineNumberCursor	"%opt{rosewater},%opt{background}+b"
set-face	global	LineNumbersWrapped	"%opt{teal},%opt{black1}+i"
set-face	global	MenuForeground 		"%opt{white},%opt{gray0}+b"
set-face	global	MenuBackground		"%opt{white},%opt{black3}"
set-face	global	MenuInfo			"%opt{black1},%opt{blue}"
set-face	global	Information			"%opt{black1},%opt{blue}"
set-face	global	Error				"%opt{red},%opt{black2}"
set-face	global	StatusLine			"%opt{white},%opt{black1}"
set-face	global	StatusLineMode		"%opt{black2},%opt{yellow}"
set-face	global	StatusLineInfo		"%opt{background},%opt{green}"
set-face	global	StatusLineValue		"%opt{orange},%opt{gray0}"
set-face	global	StatusCursor		"%opt{black1},%opt{lavender}"
set-face	global	Prompt				"%opt{green},%opt{black2}"
set-face	global	MatchingChar		"%opt{maroon},%opt{black2}"
set-face	global	Whitespace			"%opt{gray1},%opt{background}+f"
set-face	global	WrapMarker			Whitespace
set-face	global	BufferPadding		"%opt{background},%opt{background}"
set-face	global	MatchingChar		"%opt{bright_white},%opt{black1}+b"

# Code
set-face	global	value				"%opt{orange}"
set-face	global	type				"%opt{mauve}"
set-face	global	variable			"%opt{white}"
set-face	global	module				"%opt{maroon}"
set-face	global	function			"%opt{sky}"
set-face	global	string				"%opt{green}"
set-face	global	keyword				"%opt{blue}"
set-face	global	operator			"%opt{blue}"
set-face	global	attribute			"%opt{green}"
set-face	global	comment				"%opt{gray1}"
set-face	global	documentation		comment
set-face	global	meta				"%opt{pink}"
set-face	global	builtin				"%opt{lavender}+b"

A dot.config/kak/filetypes.kak => dot.config/kak/filetypes.kak +19 -0
@@ 0,0 1,19 @@
hook -group markdown-highlight global WinSetOption filetype=markdown %{
    add-highlighter window/ wrap -word -width 80
    add-highlighter window/ number-lines -hlcursor -separator '		'
}
hook global WinSetOption filetype=(?!markdown).* %{
    add-highlighter window/ number-lines -hlcursor -separator '  '
}

hook global WinSetOption filetype=rust %{
  racer-enable-autocomplete
  set window formatcmd 'rustfmt'
  hook window BufWritePre .* format
  set buffer tabstop 4
  set buffer indentwidth 4
}
hook global WinSetOption filetype=json %{
  set window formatcmd 'jq --indent 2 .'
  hook window BufWritePre .* format
}

M dot.config/kak/kakrc => dot.config/kak/kakrc +3 -149
@@ 1,149 1,3 @@
colorscheme warm-pastel
set-option global scrolloff 5,5
set-option global incsearch true
set-option global aligntab true
set-option global ui_options ncurses_assistant=dilbert
set-option -add global ui_options ncurses_change_colors=true
set-option global grepcmd 'rg --column'
set-option global tabstop 2
set-option global indentwidth 2

# plug.kak plugin manager
source "%val{config}/plugins/plug.kak/rc/plug.kak"


plug "andreyorst/plug.kak" noload

plug "lenormf/kakoune-extra" load %{
  autodownload.kak
}
plug "andreyorst/fzf.kak" config %{
  map global normal <c-p> ': fzf-mode<ret>'
}

###############################################
# lsp support (https://github.com/ul/kak-lsp) #
# ...but it's not working yet                 #
###############################################

eval %sh{kak-lsp --kakoune -s $kak_session}
set-option global lsp_completion_trigger "execute-keys 'h<a-h><a-k>\S[^\h\n,=;*(){}\[\]]\z<ret>'"
set-option global lsp_diagnostic_line_error_sign '║'
set-option global lsp_diagnostic_line_warning_sign '┊'

define-command ne -docstring 'go to next error/warning from lsp' %{ lsp-find-error --include-warnings }
define-command pe -docstring 'go to previous error/warning from lsp' %{ lsp-find-error --previous --include-warnings }
define-command ee -docstring 'go to current error/warning from lsp' %{ lsp-find-error --include-warnings; lsp-find-error --previous --include-warnings }

hook global WinSetOption filetype=(c|cpp|rust|go|javascript|typescript) %{
  # map window user "l" ": enter-user-mode lsp<ret>" -docstring "LSP mode"
  map window user l %{: enter-user-mode lsp<ret>} -docstring "LSP mode"
  set-option window lsp_auto_highlight_references true
  set-option window lsp_hover_anchor true
  set-face window DiagnosticError default+u
  set-face window DiagnosticWarning default+u
  lsp-enable-window
  lsp-auto-hover-enable
  lsp-auto-hover-insert-mode-disable
}
hook global WinSetOption filetype=rust %{
  set-option window lsp_server_configuration rust.clippy_preference="on"
}
hook global KakEnd .* lsp-exit


#eval %sh{kak-lsp --kakoune -s $kak_session}
#hook global WinSetOption filetype=(rust|python|go|javascript|typescript|c|cpp) %{
#  lsp-enable-window
#}

###########################################################
# kakoune-buffers                                         #
# sets former b (word-back) to q and makes b a global key #
# for the new buffers command. I don't use macros anyway. #
###########################################################
plug 'delapouite/kakoune-buffers' config %{
  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)'
  hook·global·WinDisplay·.*·info-buffers
}

plug "ABuffSeagull/kakoune-vue"
plug "ABuffSeagull/kakoune-wiki"

############################################################
# replace mode                                             #
# that is one thing I missed in Kakoune: writing over text #
############################################################
plug "alexherbo2/replace.kak" noload config %{
  ## currently not working well
  # map global user r -docstring 'Replace' ': replace<ret>'
}

###########################################################
# explore files (https://github.com/alexherbo2/explore.kak)
# use fd instead of find
###########################################################
plug "alexherbo2/explore.kak" config %{
   define-command -hidden -override explore-files-recursive -params 0..1 %{
     explore-files-display "fd %sh(test $kak_opt_explore_files_show_hidden = true && echo --hidden)" %arg(1)
   }
}

# TODO: check out snippets
# plug "alexherbo2/snippets.kak" config %{
# }

# TODO: check out tagbar
# plug "andreyorst/tagbar.kak" config %{
#  set-option global tagbar_sort false
#  set-option global tagbar_size 40
#  set-option global tagbar_display_anon false
#} config %{
# if you have wrap highlighter enamled in you configuration
#  # files it's better to turn it off for tagbar, using this hook:
#  hook global WinSetOption filetype=tagbar %{
#    remove-highlighter window/wrap
#    # you can also disable rendering whitespaces here, line numbers, and
#    # matching characters
#  }
#}

# set-option global fzf_filesearch_cmd "fd '%s'"

# with inspiration from
# https://github.com/Delapouite/dotfiles/blob/master/link/kak/kakrc
set global modelinefmt %{
  %val{bufname} [%opt{filetype}]
· %val{cursor_line}:%val{cursor_char_column}
· {{context_info}} {{mode_info}}
}

hook global BufWritePre .* %{
  lint
}

# defines tabe and vsplit commands
# def -file-completion -params 1 tabe %{ tmux-terminal-window edit %arg{1} }

# spaces instead tabs
map global insert <tab> '  '

# ← system clipboard
map global user y '<a-|>xsel --input --clipboard<ret>; :echo -color Information "copied selection to X11 clipboard"<ret>' -docstring 'yank from clipboard'
map global user p '<a-!>xsel --output --clipboard<ret>' -docstring 'replace from clipboard'
map global user P '!xsel --output --clipboard<ret>' -docstring 'print from clipboard'

# → system clipboard
hook global NormalKey y|d|c %{ nop %sh{
  printf %s "$kak_reg_dquote" | xsel --input --clipboard
}}

# editorconfig support
hook global BufCreate .* %{editorconfig-load}
source "%val{config}/personalization.kak"
source "%val{config}/filetypes.kak"
source "%val{config}/plugins.kak"

A dot.config/kak/personalization.kak => dot.config/kak/personalization.kak +75 -0
@@ 0,0 1,75 @@
colorscheme penumbra
set-option global scrolloff 5,5
set-option global incsearch true
set-option global aligntab true
set-option global ui_options terminal_assistant=dilbert
set-option -add global ui_options terminal_change_colors=true
set-option global grepcmd 'rg --with-filename --line-number --column'
set-option global tabstop 2
set-option global indentwidth 2

# hooks to show line numbers, whitespaces and matching brackets
hook -group DefaultHighlights global WinCreate .* %{
    add-highlighter window/ show-whitespaces
    add-highlighter window/ show-matching
    add-highlighter window/ regex '\h+$' 0:default,red # highlight trailing whitepaces
    add-highlighter window/ dynregex '%reg{/}' 0:+u 1:+b
    set-face window Whitespace rgb:555555+b
}

# with inspiration from
# https://github.com/Delapouite/dotfiles/blob/master/link/kak/kakrc
set global modelinefmt %{
  %val{bufname} [%opt{filetype}]
· %val{cursor_line}:%val{cursor_char_column}
· {{context_info}} {{mode_info}}
}

# spaces instead tabs
hook global InsertChar \t %{ try %{
  execute-keys -draft "h<a-h><a-k>\A\h+\z<ret><a-;>;%opt{indentwidth}@"
}}
hook global InsertDelete ' ' %{ try %{
  execute-keys -draft 'h<a-h><a-k>\A\h+\z<ret>i<space><esc><lt>'
}}

# Bring back S-x (kind of)
map global normal X 'Jx'

# editorconfig support
hook global BufCreate .* %{editorconfig-load}

# kak-lsp
eval %sh{kak-lsp --kakoune -s $kak_session}  # Not needed if you load it with plug.kak.
hook global WinSetOption filetype=(rust|html|css|svelte|javascript|typescript|c|cpp) %{
  lsp-enable-window
  lsp-auto-hover-enable
  lsp-auto-signature-help-enable
  set-option global lsp_hover_anchor true
  map global user l ': enter-user-mode lsp<ret>' -docstring 'lsp'
}

# theme config for kak-lsp info box
face global InfoDefault               Information
face global InfoBlock                 Information
face global InfoBlockQuote            Information
face global InfoBullet                Information
face global InfoHeader                Information
face global InfoLink                  Information
face global InfoLinkMono              Information
face global InfoMono                  Information
face global InfoRule                  Information
face global InfoDiagnosticError       Information
face global InfoDiagnosticHint        Information
face global InfoDiagnosticInformation Information
face global InfoDiagnosticWarning     Information


# Show various characters
# https://unicode-table.com
add-highlighter -override global/U+2013 regex '–' '0:green+f'
add-highlighter -override global/U+2014 regex '—' '0:green+bf'
add-highlighter -override global/math-symbols regex '[−×]' '0:cyan+f'

# Show the Unicode value under the cursor.
map -docstring 'Unicode' global user u ': echo -markup "{Information}U+%sh{printf ''%04x'' ""$kak_cursor_char_value""}"<ret>'

A dot.config/kak/plugins.kak => dot.config/kak/plugins.kak +55 -0
@@ 0,0 1,55 @@
evaluate-commands %sh{
  plugins="$kak_config/plugins"
  mkdir -p "$plugins"
  [ ! -e "$plugins/plug.kak" ] && \
  git clone -q https://github.com/andreyorst/plug.kak.git "$plugins/plug.kak"
  printf "%s\n" "source '$plugins/plug.kak/rc/plug.kak'"
}
plug "andreyorst/plug.kak" noload

###########################################################
# kakoune-buffers                                         #
# sets former b (word-back) to q and makes b a global key #
# for the new buffers command. I don't use macros anyway. #
###########################################################
plug 'delapouite/kakoune-buffers' config %{
  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)'
}

plug "andreyorst/kaktree" defer kaktree %{
  set-option global kaktree_double_click_duration '0.5'
  set-option global kaktree_indentation 1
  set-option global kaktree_dir_icon_open  '▾ 🗁 '
  set-option global kaktree_dir_icon_close '▸ 🗀 '
  set-option global kaktree_file_icon      '⠀⠀🖺'
  map global normal <F2> ': kaktree-toggle<ret>' -docstring 'toggle filetree'
} config %{
  hook global WinSetOption filetype=kaktree %{
    remove-highlighter buffer/numbers
    remove-highlighter buffer/matching
    remove-highlighter buffer/wrap
    remove-highlighter buffer/show-whitespaces
  }
  kaktree-enable
}

plug "ABuffSeagull/kakoune-vue"

plug "schemar/kak-jsts" config %{
  hook global WinSetOption filetype=(javascript|typescript|ecmascript) %{
    map window user l -docstring 'lint' ': lint<ret>'
    map window user f -docstring 'format' ': format-prettier<ret>'
    hook window BufWritePre .* %{
      evaluate-commands -no-hooks %{
        format-prettier
      }
    }
  }
}

M dot.profile => dot.profile +13 -33
@@ 1,45 1,14 @@
source /etc/profile

export EDITOR=kak
export GOPATH=$HOME/src/go
export CARGO_HOME=$HOME/.cargo
export PATH=$HOME/.local/bin:$HOME/.yarn/bin:$HOME/.local/share/npm-global/bin:$GOPATH/bin:$CARGO_HOME/bin:$HOME/.gem/ruby/2.7.0/bin:$PATH
export MANPATH=$HOME/.local/share/man:/usr/share/man:/usr/local/share/man

export _JAVA_AWT_WM_NONREPARENTING=1
export FREETYPE_PROPERTIES="truetype:interpreter-version=35 cff:darkening-parameters=500,300,1000,200,1500,100,2000,0 autofitter:warping=1"
export INFINALITY_FT_FILTER_PARAMS='10 35 40 35 10'

export LD_LIBRARY_PATH=$HOME/.local/lib:$HOME/.local/lib/haxe:/lib

alias xi="sudo xbps-install"
alias xq="xbps-query -Rs"
alias xqi="xbps-query -RS"
alias xql="xbps-query -s"
alias xqf="xbps-query -f"
alias xqo="xbps-query -o"
alias xqre="xbps-query -R --regex -s"
alias howto="howdoi -c"
alias icat="kitty +kitten icat"
alias wttr="curl wttr.in"
# alias df="duf"
# alias du="dust"
alias md="glow -p"
alias ls="lsd"
alias l="lsd -lha"
alias ll="lsd -lh"
alias lt="lsd --tree"
alias pp="bat"
alias feh="feh --auto-rotate --draw-actions --draw-exif --draw-filename --draw-tinted"

# twtxt
alias ttt="txtnish tweet"
alias ttl="txtnish timeline"
alias ttf="txtnish follow"
alias ttu="txtnish unfollow"
alias ttr="txtnish reply"

alias rip="curl -G -H 'Accept: text/plain' --url https://dontbeevil.rip/search --data-urlencode "

short_url () {
  curl -F "shorten=$1" https://0x0.st


@@ 53,8 22,19 @@ if [[ "$TTY" == "/dev/tty"* ]]
then
  setfont drdos8x14
fi
. "$HOME/.cargo/env"

export CARGO_HOME=$HOME/.cargo
export PNPM_HOME="$HOME/.local/share/pnpm"
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

export PATH=$HOME/.local/bin:$HOME/.yarn/bin:$PNPM_HOME:$GOPATH/bin:$CARGO_HOME/bin:$PATH
export MANPATH=$HOME/.local/share/man:/usr/share/man:/usr/local/share/man

if [ "$TTY" = /dev/tty1 -a $USER != root -a ! -e /tmp/.X0-lock ]
TODO="$HOME/TODO/`date '+%Y%m%d'`.todo.txt"
if [ -f "$TODO" ]
then
  startx && clear && exit
  bat $TODO
fi

M dot.zshrc => dot.zshrc +2 -2
@@ 1,5 1,5 @@
bindkey -v
source ~/src/pkg/zgen/zgen.zsh
source ~/pkg/zgen/zgen.zsh
source ~/.zsh/kitty.compl.zsh

if ! zgen saved; then


@@ 26,7 26,7 @@ ZSH_HIGHLIGHT_HIGHLIGHTERS=(main brackets pattern)
ZSH_HIGHLIGHT_PATTERNS+=('rm -fr*' 'fg=white,bold,bg=red')
ZSH_HIGHLIGHT_PATTERNS+=('rm -rf*' 'fg=white,bold,bg=red')

PROJECT_PATHS=(~/src/wunderdog ~/src/koehr ~/src/pkg/)
PROJECT_PATHS=(~/src/Spenoki ~/src/koehr ~/src/pkg/)

# The next line updates PATH for the Google Cloud SDK.
if [ -f '/home/nk/src/pkg/google-cloud-sdk/path.zsh.inc' ]; then . '/home/nk/src/pkg/google-cloud-sdk/path.zsh.inc'; fi