50 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
	
		
			1.1 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
{ config, lib, ... }:
 | 
						|
 | 
						|
let
 | 
						|
  cfg = config.homeModules.console.editor.nvim;
 | 
						|
in
 | 
						|
 | 
						|
{
 | 
						|
  config = lib.mkIf cfg.enable {
 | 
						|
    programs.nixvim = {
 | 
						|
      globals = {
 | 
						|
        mapleader = " ";
 | 
						|
        maplocalleader = " ";
 | 
						|
      };
 | 
						|
 | 
						|
      keymaps = let
 | 
						|
        normal = 
 | 
						|
          lib.mapAttrsToList
 | 
						|
          (key: action: {
 | 
						|
            mode = "n";
 | 
						|
            inherit action key;
 | 
						|
          })
 | 
						|
          {
 | 
						|
            "<Space>" = "<NOP>";
 | 
						|
            "esc" = ":noh<CR>";
 | 
						|
            "Y" = "$y";
 | 
						|
          };
 | 
						|
          visual =
 | 
						|
            lib.mapAttrsToList
 | 
						|
            (key: action: {
 | 
						|
              mode = "v";
 | 
						|
              inherit action key;
 | 
						|
            })
 | 
						|
            {
 | 
						|
              # better indenting
 | 
						|
              ">" = ">gv";
 | 
						|
              "<" = "<gv";
 | 
						|
              "<TAB>" = ">gv";
 | 
						|
              "<S-TAB>" = "<gv";
 | 
						|
 | 
						|
              # move selected line / block of text in visual mode
 | 
						|
              "K" = ":m '<-2<CR>gv=gv";
 | 
						|
              "J" = ":m '>+1<CR>gv=gv";
 | 
						|
            };
 | 
						|
      in
 | 
						|
      config.nixvim.helpers.keymaps.mkKeymaps
 | 
						|
      {options.silent = true;}
 | 
						|
      (normal ++ visual);
 | 
						|
    };
 | 
						|
  };
 | 
						|
}
 |