# hjkl default configuration. Bundled into the binary via include_str!()
# and parsed at runtime as the source of truth for default values.
#
# A user config at $XDG_CONFIG_HOME/hjkl/config.toml is layered on top
# of these defaults — only fields you want to override need to appear
# there. Unknown keys are an error.
#
# Resolved paths:
#   Linux   ~/.config/hjkl/config.toml
#   macOS   ~/Library/Application Support/sh.kryptic.hjkl/config.toml
#   Windows %APPDATA%\kryptic\hjkl\config\config.toml

[editor]
# Leader key in normal mode. Single character. Common alts: "\\", ",".
leader = " "

# Fallback indent width when no .editorconfig covers the open file.
tab_width = 4

# Fallback for spaces-vs-tabs when no .editorconfig covers the file.
expandtab = true

# Files with this many lines or more skip the per-keystroke git diff
# recomputation. Lower this on slower machines.
huge_file_threshold = 50000

# Mouse support. When true, wheel scrolls the viewport (with scrolloff)
# and the terminal's native text-selection requires Shift to bypass
# capture (vim/nvim/helix convention). Toggle at runtime with
# `:set mouse` / `:set nomouse` / `:set mouse!` / `:set mouse?`.
mouse = true

[theme]
# Theme name. Currently only "dark" is bundled.
name = "dark"

[lsp]
# LSP subsystem. Set `enabled = true` in your user config (~/.config/hjkl/config.toml)
# to opt in. Default off so installs without language servers don't pay the spawn
# cost. The `[lsp.servers.<lang>]` blocks below ship as sensible defaults — a
# server only spawns when you open a file matching its language AND the binary
# resolves on $PATH; missing binaries fail silently.
enabled = false

[lsp.servers.rust]
command = "rust-analyzer"
root_markers = ["Cargo.toml", ".git"]

[lsp.servers.typescript]
command = "typescript-language-server"
args = ["--stdio"]
root_markers = ["package.json", "tsconfig.json", ".git"]

[lsp.servers.javascript]
command = "typescript-language-server"
args = ["--stdio"]
root_markers = ["package.json", "jsconfig.json", ".git"]

[lsp.servers.python]
command = "pyright-langserver"
args = ["--stdio"]
root_markers = ["pyproject.toml", "setup.py", "setup.cfg", "Pipfile", ".git"]

[lsp.servers.go]
command = "gopls"
root_markers = ["go.mod", ".git"]

[lsp.servers.c]
command = "clangd"
root_markers = ["compile_commands.json", ".clangd", ".git"]

[lsp.servers.cpp]
command = "clangd"
root_markers = ["compile_commands.json", ".clangd", ".git"]

[lsp.servers.lua]
command = "lua-language-server"
root_markers = [".luarc.json", ".luarc.jsonc", ".git"]

[lsp.servers.toml]
command = "taplo"
args = ["lsp", "stdio"]
root_markers = [".taplo.toml", "taplo.toml", ".git"]

[lsp.servers.json]
command = "vscode-json-language-server"
args = ["--stdio"]
root_markers = [".git"]

[lsp.servers.markdown]
command = "marksman"
args = ["server"]
root_markers = [".marksman.toml", ".git"]
