Big tweaks for kakoune
Adds kak-tree-sitter, and catppuccin theme. Make them work together.
This commit is contained in:
parent
5a9dbf660b
commit
da7cb27c04
|
@ -398,11 +398,11 @@
|
||||||
},
|
},
|
||||||
"nixpkgs-unstable": {
|
"nixpkgs-unstable": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1686398752,
|
"lastModified": 1687946342,
|
||||||
"narHash": "sha256-nGWNQVhSw4VSL+S0D0cbrNR9vs9Bq7rlYR+1K5f5j6w=",
|
"narHash": "sha256-vRxti8pOuXS0rJmqjbD8ueEEFXWSK22ISHoCWkhgzzg=",
|
||||||
"owner": "nixos",
|
"owner": "nixos",
|
||||||
"repo": "nixpkgs",
|
"repo": "nixpkgs",
|
||||||
"rev": "a30520bf8eabf8a5c37889d661e67a2dbcaa59e6",
|
"rev": "1c851e8c92b76a00ce84167984a7ec7ba2b1f29c",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
|
|
@ -42,8 +42,14 @@ in
|
||||||
{
|
{
|
||||||
imports = [ ../modules/programs/my-kakoune ./kaktex.nix ];
|
imports = [ ../modules/programs/my-kakoune ./kaktex.nix ];
|
||||||
|
|
||||||
# ctags for peneira
|
home.packages = with pkgs; [
|
||||||
home.packages = [ pkgs.universal-ctags ];
|
# ctags for peneira
|
||||||
|
universal-ctags
|
||||||
|
# tree-sitter for kak
|
||||||
|
kak-tree-sitter
|
||||||
|
];
|
||||||
|
|
||||||
|
# xdg.configFile."kak-tree-sitter/config.toml".source = ./kak-tree-sitter.toml;
|
||||||
|
|
||||||
# Enable the kakoune package.
|
# Enable the kakoune package.
|
||||||
programs.my-kakoune.enable = true;
|
programs.my-kakoune.enable = true;
|
||||||
|
@ -92,7 +98,8 @@ in
|
||||||
|
|
||||||
programs.my-kakoune.package = kakounePkg;
|
programs.my-kakoune.package = kakounePkg;
|
||||||
programs.my-kakoune.rc =
|
programs.my-kakoune.rc =
|
||||||
builtins.readFile ./kakrc + ''
|
builtins.readFile ./kakrc +
|
||||||
|
builtins.readFile ./reload-faces.kak + ''
|
||||||
|
|
||||||
# Source any settings in the current working directory,
|
# Source any settings in the current working directory,
|
||||||
# recursive upwards
|
# recursive upwards
|
||||||
|
@ -269,5 +276,11 @@ in
|
||||||
'';
|
'';
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
programs.my-kakoune.themes = {
|
||||||
|
catppuccin-latte = builtins.fetchurl {
|
||||||
|
url = "https://raw.githubusercontent.com/catppuccin/kakoune/f6d43770609433c45046632f1bb68d1395305dbb/colors/catppuccin_latte.kak";
|
||||||
|
sha256 = "sha256:0ycvxs8hmsvd0zrpxiby16wzmapvmz6p34b6j343pc1girw6fi4i";
|
||||||
|
};
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,30 +1,8 @@
|
||||||
|
# Enable kak-tree-sitter
|
||||||
|
eval %sh{ kak-tree-sitter --kakoune -d }
|
||||||
# Color scheme
|
# Color scheme
|
||||||
colorscheme github
|
colorscheme catppuccin-latte
|
||||||
face global Default rgb:121213,default
|
set global background default
|
||||||
face global BufferPadding rgb:A0A0A0,default
|
|
||||||
face global MenuForeground blue,white+bF
|
|
||||||
face global MenuBackground bright-blue,white+F
|
|
||||||
face global Information bright-blue,white
|
|
||||||
# Markdown help color scheme
|
|
||||||
face global InfoDefault Information
|
|
||||||
face global InfoBlock @block
|
|
||||||
face global InfoBlockQuote +i@block
|
|
||||||
face global InfoBullet @bullet
|
|
||||||
face global InfoHeader @header
|
|
||||||
face global InfoLink @link
|
|
||||||
face global InfoLinkMono +b@mono
|
|
||||||
face global InfoMono @mono
|
|
||||||
face global InfoRule +b@Information
|
|
||||||
face global InfoDiagnosticError @DiagnosticError
|
|
||||||
face global InfoDiagnosticHint @DiagnosticHint
|
|
||||||
face global InfoDiagnosticInformation @Information
|
|
||||||
face global InfoDiagnosticWarning @DiagnosticWarning
|
|
||||||
# Extra faces
|
|
||||||
face global macro +b@function
|
|
||||||
face global method +i@function
|
|
||||||
face global format_specifier +i@string
|
|
||||||
face global mutable_variable +u@variable
|
|
||||||
face global class +b@variable
|
|
||||||
|
|
||||||
# Assistant
|
# Assistant
|
||||||
set global ui_options terminal_assistant=cat
|
set global ui_options terminal_assistant=cat
|
||||||
|
@ -131,7 +109,7 @@ hook global WinSetOption filetype=(rust) %{
|
||||||
lsp-inlay-hints-enable window
|
lsp-inlay-hints-enable window
|
||||||
}
|
}
|
||||||
|
|
||||||
hook global WinSetOption filetype=(rust|go|fsharp|scala) %{
|
hook global WinSetOption filetype=(rust|go|fsharp) %{
|
||||||
hook window -group semantic-tokens BufReload .* lsp-semantic-tokens
|
hook window -group semantic-tokens BufReload .* lsp-semantic-tokens
|
||||||
hook window -group semantic-tokens NormalIdle .* lsp-semantic-tokens
|
hook window -group semantic-tokens NormalIdle .* lsp-semantic-tokens
|
||||||
hook window -group semantic-tokens InsertIdle .* lsp-semantic-tokens
|
hook window -group semantic-tokens InsertIdle .* lsp-semantic-tokens
|
||||||
|
|
130
home/kakoune/reload-faces.kak
Normal file
130
home/kakoune/reload-faces.kak
Normal file
|
@ -0,0 +1,130 @@
|
||||||
|
# Reload all faces
|
||||||
|
# our faces
|
||||||
|
set-face global Default "%opt{white},%opt{background}"
|
||||||
|
set-face global BufferPadding "%opt{background},%opt{background}"
|
||||||
|
# face global Default rgb:121213,default
|
||||||
|
# face global BufferPadding rgb:A0A0A0,default
|
||||||
|
face global MenuForeground blue,white+bF
|
||||||
|
face global MenuBackground bright-blue,white+F
|
||||||
|
face global Information bright-blue,white
|
||||||
|
# Markdown help color scheme
|
||||||
|
face global InfoDefault Information
|
||||||
|
face global InfoBlock @block
|
||||||
|
face global InfoBlockQuote +i@block
|
||||||
|
face global InfoBullet @bullet
|
||||||
|
face global InfoHeader @header
|
||||||
|
face global InfoLink @link
|
||||||
|
face global InfoLinkMono +b@mono
|
||||||
|
face global InfoMono @mono
|
||||||
|
face global InfoRule +b@Information
|
||||||
|
face global InfoDiagnosticError @DiagnosticError
|
||||||
|
face global InfoDiagnosticHint @DiagnosticHint
|
||||||
|
face global InfoDiagnosticInformation @Information
|
||||||
|
face global InfoDiagnosticWarning @DiagnosticWarning
|
||||||
|
# Extra faces
|
||||||
|
face global macro +b@function
|
||||||
|
face global method +i@function
|
||||||
|
face global format_specifier +i@string
|
||||||
|
face global mutable_variable +u@variable
|
||||||
|
face global class +b@variable
|
||||||
|
|
||||||
|
# tree-sitter
|
||||||
|
#set-face global ts_unknown red+ub
|
||||||
|
set-face global ts_attribute "@attribute"
|
||||||
|
set-face global ts_comment "@comment"
|
||||||
|
set-face global ts_comment_block "@ts_comment"
|
||||||
|
set-face global ts_comment_line "@ts_comment"
|
||||||
|
set-face global ts_conceal "%opt{mauve}+i"
|
||||||
|
set-face global ts_constant "%opt{peach}"
|
||||||
|
set-face global ts_constant_builtin_boolean "%opt{sky}"
|
||||||
|
set-face global ts_constant_character "%opt{yellow}"
|
||||||
|
set-face global ts_constant_character_escape "@ts_constant_character"
|
||||||
|
set-face global ts_constant_macro "%opt{mauve}"
|
||||||
|
set-face global ts_constant_numeric "%opt{peach}"
|
||||||
|
set-face global ts_constant_numeric_float "@ts_constant_numeric"
|
||||||
|
set-face global ts_constant_numeric_integer "@ts_constant_numeric"
|
||||||
|
set-face global ts_constructor "%opt{sapphire}"
|
||||||
|
set-face global ts_diff_plus "%opt{green}"
|
||||||
|
set-face global ts_diff_minus "%opt{red}"
|
||||||
|
set-face global ts_diff_delta "%opt{blue}"
|
||||||
|
set-face global ts_diff_delta_moved "%opt{mauve}"
|
||||||
|
set-face global ts_error "%opt{red}+b"
|
||||||
|
set-face global ts_function "@function"
|
||||||
|
set-face global ts_function_builtin "@builtin"
|
||||||
|
set-face global ts_function_macro "+i@ts_function"
|
||||||
|
set-face global ts_function_method "@ts_function"
|
||||||
|
set-face global ts_function_special "@ts_function"
|
||||||
|
set-face global ts_hint "%opt{blue}+b"
|
||||||
|
set-face global ts_info "%opt{green}+b"
|
||||||
|
set-face global ts_keyword "keyword"
|
||||||
|
set-face global ts_keyword_control "@ts_keyword"
|
||||||
|
set-face global ts_keyword_conditional "+i@ts_keyword"
|
||||||
|
set-face global ts_keyword_control_conditional "+i@ts_keyword"
|
||||||
|
set-face global ts_keyword_control_directive "+i@ts_keyword"
|
||||||
|
set-face global ts_keyword_control_import "+i@ts_keyword"
|
||||||
|
set-face global ts_keyword_control_repeat "@ts_keyword"
|
||||||
|
set-face global ts_keyword_control_return "@ts_keyword"
|
||||||
|
set-face global ts_keyword_control_except "@ts_keyword"
|
||||||
|
set-face global ts_keyword_control_exception "@ts_keyword"
|
||||||
|
set-face global ts_keyword_directive "+i@ts_keyword"
|
||||||
|
set-face global ts_keyword_function "@ts_keyword"
|
||||||
|
set-face global ts_keyword_operator "@ts_keyword"
|
||||||
|
set-face global ts_keyword_special "@ts_keyword"
|
||||||
|
set-face global ts_keyword_storage "@ts_keyword"
|
||||||
|
set-face global ts_keyword_storage_modifier "@ts_keyword"
|
||||||
|
set-face global ts_keyword_storage_modifier_mut "@ts_keyword"
|
||||||
|
set-face global ts_keyword_storage_modifier_ref "@ts_keyword"
|
||||||
|
set-face global ts_keyword_storage_type "@ts_keyword"
|
||||||
|
set-face global ts_label "%opt{sapphire}+i"
|
||||||
|
set-face global ts_markup_bold "%opt{peach}+b"
|
||||||
|
set-face global ts_markup_heading "%opt{red}"
|
||||||
|
set-face global ts_markup_heading_1 "%opt{red}"
|
||||||
|
set-face global ts_markup_heading_2 "%opt{mauve}"
|
||||||
|
set-face global ts_markup_heading_3 "%opt{green}"
|
||||||
|
set-face global ts_markup_heading_4 "%opt{yellow}"
|
||||||
|
set-face global ts_markup_heading_5 "%opt{pink}"
|
||||||
|
set-face global ts_markup_heading_6 "%opt{teal}"
|
||||||
|
set-face global ts_markup_heading_marker "%opt{peach}+b"
|
||||||
|
set-face global ts_markup_italic "%opt{pink}+i"
|
||||||
|
set-face global ts_markup_list_checked "%opt{green}"
|
||||||
|
set-face global ts_markup_list_numbered "%opt{blue}+i"
|
||||||
|
set-face global ts_markup_list_unchecked "%opt{teal}"
|
||||||
|
set-face global ts_markup_list_unnumbered "%opt{mauve}"
|
||||||
|
set-face global ts_markup_link_label "%opt{blue}"
|
||||||
|
set-face global ts_markup_link_url "%opt{teal}+u"
|
||||||
|
set-face global ts_markup_link_uri "%opt{teal}+u"
|
||||||
|
set-face global ts_markup_link_text "%opt{blue}"
|
||||||
|
set-face global ts_markup_quote "%opt{gray1}"
|
||||||
|
set-face global ts_markup_raw "%opt{sky}"
|
||||||
|
set-face global ts_markup_raw_block "%opt{sky}"
|
||||||
|
set-face global ts_markup_raw_inline "%opt{green}"
|
||||||
|
set-face global ts_markup_strikethrough "%opt{gray1}+s"
|
||||||
|
set-face global ts_namespace "@module"
|
||||||
|
set-face global ts_operator "@operator"
|
||||||
|
set-face global ts_property "%opt{sky}"
|
||||||
|
set-face global ts_punctuation "%opt{overlay2}"
|
||||||
|
set-face global ts_punctuation_bracket "@ts_punctuation"
|
||||||
|
set-face global ts_punctuation_delimiter "@ts_punctuation"
|
||||||
|
set-face global ts_punctuation_special "%opt{sky}"
|
||||||
|
set-face global ts_special "%opt{blue}"
|
||||||
|
set-face global ts_spell "%opt{mauve}"
|
||||||
|
set-face global ts_string "%opt{green}"
|
||||||
|
set-face global ts_string_regex "%opt{peach}"
|
||||||
|
set-face global ts_string_regexp "%opt{peach}"
|
||||||
|
set-face global ts_string_escape "%opt{mauve}"
|
||||||
|
set-face global ts_string_special "%opt{blue}"
|
||||||
|
set-face global ts_string_special_path "%opt{green}"
|
||||||
|
set-face global ts_string_special_symbol "%opt{mauve}"
|
||||||
|
set-face global ts_string_symbol "%opt{red}"
|
||||||
|
set-face global ts_tag "%opt{teal}"
|
||||||
|
set-face global ts_tag_error "%opt{red}"
|
||||||
|
set-face global ts_text "@ts_string"
|
||||||
|
set-face global ts_text_title "%opt{mauve}"
|
||||||
|
set-face global ts_type "%opt{yellow}"
|
||||||
|
set-face global ts_type_builtin "@ts_type"
|
||||||
|
set-face global ts_type_enum_variant "%opt{flamingo}"
|
||||||
|
set-face global ts_variable "@variable"
|
||||||
|
set-face global ts_variable_builtin "@builtin"
|
||||||
|
set-face global ts_variable_other_member "%opt{teal}"
|
||||||
|
set-face global ts_variable_parameter "%opt{maroon}+i"
|
||||||
|
set-face global ts_warning "%opt{peach}+b"
|
|
@ -47,47 +47,52 @@ in
|
||||||
default = [ ];
|
default = [ ];
|
||||||
description = "Sources to autoload";
|
description = "Sources to autoload";
|
||||||
};
|
};
|
||||||
|
themes = mkOption {
|
||||||
|
type = types.attrsOf types.path;
|
||||||
|
default = { };
|
||||||
|
description = "Themes to load";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = mkIf cfg.enable {
|
config = mkIf cfg.enable {
|
||||||
home.packages = [ cfg.package ];
|
home.packages = [ cfg.package ];
|
||||||
|
|
||||||
home.file =
|
xdg.configFile =
|
||||||
let
|
let
|
||||||
kakouneAutoload = { name, src, wrapAsModule ? false, activationScript ? null }:
|
kakouneAutoload = { name, src, wrapAsModule ? false, activationScript ? null }:
|
||||||
[
|
[
|
||||||
(if !wrapAsModule then {
|
(if !wrapAsModule then {
|
||||||
name = "kakoune/autoload/${name}";
|
name = "kak/autoload/${name}";
|
||||||
value = {
|
value.source = src;
|
||||||
source = src;
|
|
||||||
target = ".config/kak/autoload/${name}";
|
|
||||||
};
|
|
||||||
} else {
|
} else {
|
||||||
name = "kakoune/autoload/${name}/module.kak";
|
name = "kak/autoload/${name}/module.kak";
|
||||||
value = {
|
value.text = ''
|
||||||
text = ''
|
provide-module ${name} %◍
|
||||||
provide-module ${name} %◍
|
${readFile src}
|
||||||
${readFile src}
|
◍
|
||||||
◍
|
'';
|
||||||
'';
|
|
||||||
target = ".config/kak/autoload/${name}/module.kak";
|
|
||||||
};
|
|
||||||
})
|
})
|
||||||
] ++ (if activationScript == null then [ ] else [{
|
] ++ (if activationScript == null then [ ] else [{
|
||||||
name = "kakoune/autoload/on-load/${name}.kak";
|
name = "kak/autoload/on-load/${name}.kak";
|
||||||
value = {
|
value.text = ''
|
||||||
text = ''
|
hook global KakBegin .* %{
|
||||||
hook global KakBegin .* %{
|
${activationScript}
|
||||||
${activationScript}
|
}
|
||||||
}
|
'';
|
||||||
'';
|
|
||||||
target = ".config/kak/autoload/on-load/${name}.kak";
|
|
||||||
};
|
|
||||||
}]);
|
}]);
|
||||||
|
|
||||||
|
kakouneThemes = builtins.listToAttrs (builtins.attrValues (
|
||||||
|
builtins.mapAttrs
|
||||||
|
(name: src: {
|
||||||
|
name = "kak/colors/${name}.kak";
|
||||||
|
value.source = src;
|
||||||
|
})
|
||||||
|
cfg.themes
|
||||||
|
));
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
# kakrc
|
# kakrc
|
||||||
".config/kak/kakrc".text = cfg.rc;
|
"kak/kakrc".text = cfg.rc;
|
||||||
} //
|
} //
|
||||||
(builtins.listToAttrs (lib.lists.flatten (map kakouneAutoload ([
|
(builtins.listToAttrs (lib.lists.flatten (map kakouneAutoload ([
|
||||||
# include the original autoload files
|
# include the original autoload files
|
||||||
|
@ -95,7 +100,8 @@ in
|
||||||
name = "rc";
|
name = "rc";
|
||||||
src = "${cfg.package}/share/kak/autoload/rc";
|
src = "${cfg.package}/share/kak/autoload/rc";
|
||||||
}
|
}
|
||||||
] ++ cfg.autoload))));
|
] ++ cfg.autoload))))
|
||||||
|
// kakouneThemes;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -37,6 +37,7 @@ let
|
||||||
|
|
||||||
overlay-packages = final: prev: {
|
overlay-packages = final: prev: {
|
||||||
gotosocial-bin = final.callPackage ./packages/x86_64-linux/gotosocial-bin.nix { };
|
gotosocial-bin = final.callPackage ./packages/x86_64-linux/gotosocial-bin.nix { };
|
||||||
|
kak-tree-sitter = final.callPackage ./packages/common/kak-tree-sitter.nix { rustPlatform = final.unstable.rustPlatform; };
|
||||||
};
|
};
|
||||||
|
|
||||||
overlay-aarch64-linux = final: prev:
|
overlay-aarch64-linux = final: prev:
|
||||||
|
|
33
packages/common/kak-tree-sitter.nix
Normal file
33
packages/common/kak-tree-sitter.nix
Normal file
|
@ -0,0 +1,33 @@
|
||||||
|
{ lib, rustPlatform, fetchFromGitHub, symlinkJoin, clang, git, ... }:
|
||||||
|
let
|
||||||
|
src = fetchFromGitHub {
|
||||||
|
owner = "phaazon";
|
||||||
|
repo = "kak-tree-sitter";
|
||||||
|
rev = "fcc4ec36385ee5ce1378dae1b3eca4288619ff0d";
|
||||||
|
sha256 = "sha256-a2EBTe6SucxHHMhElhnvyf3b6AOj5CyhHE7RHVx/Ulc=";
|
||||||
|
};
|
||||||
|
|
||||||
|
kak-tree-sitter = rustPlatform.buildRustPackage rec {
|
||||||
|
inherit src;
|
||||||
|
pname = "kak-tree-sitter";
|
||||||
|
version = "0.3.0";
|
||||||
|
cargoSha256 = "sha256-eDkIN7uzy2euywsjm3152R36B181Jj9KqnHsFDjyxhI=";
|
||||||
|
cargoBuildOptions = [ "--package" "kak-tree-sitter" ];
|
||||||
|
};
|
||||||
|
|
||||||
|
ktsctl = rustPlatform.buildRustPackage rec {
|
||||||
|
inherit src;
|
||||||
|
name = "ktsctl";
|
||||||
|
version = "0.2.0";
|
||||||
|
cargoSha256 = "sha256-k16nuC50n9TSiGdkzP58gr6zpFR/Jh21Bw33SRWRi8U=";
|
||||||
|
|
||||||
|
cargoBuildOptions = [ "--package" "ktsctl" ];
|
||||||
|
|
||||||
|
buildInputs = [ clang git ];
|
||||||
|
};
|
||||||
|
in
|
||||||
|
symlinkJoin {
|
||||||
|
name = "kak-tree-sitter";
|
||||||
|
paths = [ kak-tree-sitter ktsctl ];
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue