dotfiles

Author: Kyle Fuller <kyle@fuller.li> 2024-02-29 02:54:01 +0000 +0000
Committer: Kyle Fuller <kyle@fuller.li> 2024-02-29 03:53:32 +0000 +0000
Commit: 3195fb96055c3f93eb504ffb64190bfe6786da2b
Parent: 46507bdb2d81febf36b9ee95ac0fc3cb42b459d6


feat(vim): use vsnip
diff --git a/.config/home-manager/home.nix b/.config/home-manager/home.nix
index e15149133c763bd47e5b44bbacfbafdb950e47b0..780d5db05abf36d908b8be467631e327d64fb07e 100644
--- a/.config/home-manager/home.nix
+++ b/.config/home-manager/home.nix
@@ -112,6 +112,8 @@       # lsp
       nvim-lspconfig
       nvim-cmp
       cmp-nvim-lsp
+      vim-vsnip
+      cmp-vsnip
     ];
   };
   programs.direnv.enable = true;
diff --git a/.vim/vimrc b/.vim/vimrc
index bd4101562774b4689b8b20a950538f2741be8557..7cdb0ff52e23fff970e238d9c7fa761274b4d6f2 100644
--- a/.vim/vimrc
+++ b/.vim/vimrc
@@ -134,6 +134,12 @@   autocmd FileType podfile set makeprg=pod\ install
 augroup END
 " }}}
 
+" vsnip
+imap <expr> <Tab>   vsnip#jumpable(1)   ? '<Plug>(vsnip-jump-next)'      : '<Tab>'
+smap <expr> <Tab>   vsnip#jumpable(1)   ? '<Plug>(vsnip-jump-next)'      : '<Tab>'
+imap <expr> <S-Tab> vsnip#jumpable(-1)  ? '<Plug>(vsnip-jump-prev)'      : '<S-Tab>'
+smap <expr> <S-Tab> vsnip#jumpable(-1)  ? '<Plug>(vsnip-jump-prev)'      : '<S-Tab>'
+
 lua <<EOF
   require'lspconfig'.ansiblels.setup{}
   require'lspconfig'.bashls.setup{}
@@ -150,10 +156,13 @@         vim.fn["vsnip#anonymous"](args.body)
       end,
     },
     mapping = {
-      ['<C-y>'] = cmp.mapping.confirm({ select = true }),
+      ['<C-Space>'] = cmp.mapping.complete(),
+      ['<C-e>'] = cmp.mapping.abort(),
+      ['<CR>'] = cmp.mapping.confirm({ select = true }),
     },
     sources = {
       { name = 'nvim_lsp' },
+      { name = 'vsnip' },
     }
   })
 EOF
diff --git a/.vsnip/global.json b/.vsnip/global.json
new file mode 100644
index 0000000000000000000000000000000000000000..b58f3f8a13f5106c6f97215ca56f218fa28f5c39
--- /dev/null
+++ b/.vsnip/global.json
@@ -0,0 +1,20 @@
+{
+  "date": {
+    "prefix": "date",
+    "body": [
+      "$CURRENT_YEAR/$CURRENT_MONTH/$CURRENT_DATE"
+    ]
+  },
+  "rfc3339": {
+    "prefix": "rfc3339",
+    "body": [
+      "1985-04-12T23:20:50.52Z"
+    ]
+  },
+  "uuid": {
+    "prefix": "uuid",
+    "body": [
+      "${VIM:system('python -c \"import uuid, sys;sys.stdout.write(str(uuid.uuid4()))\"')}"
+    ]
+  }
+}
diff --git a/.vsnip/ledger.json b/.vsnip/ledger.json
new file mode 100644
index 0000000000000000000000000000000000000000..f28147b919a4cbc579ea4ead2693250d3f43c018
--- /dev/null
+++ b/.vsnip/ledger.json
@@ -0,0 +1,10 @@
+{
+  "entry": {
+    "prefix": "entry",
+    "body": [
+      "$CURRENT_YEAR/$CURRENT_MONTH/$CURRENT_DATE * ${1:Payee}",
+      "    ${2:Expenses}                         0.00 GBP",
+      "    ${3:Assets}"
+    ]
+  }
+}
diff --git a/.vsnip/nix.json b/.vsnip/nix.json
new file mode 100644
index 0000000000000000000000000000000000000000..259812dcc55846f712db61b271ac0bf2fb3b6a6d
--- /dev/null
+++ b/.vsnip/nix.json
@@ -0,0 +1,64 @@
+{
+  "poetry project": {
+    "prefix": ["sh-py-poetry"],
+    "body": [
+      "{ pkgs ? import <nixpkgs> {} }:",
+      "",
+      "let",
+      "  inherit (pkgs) fetchFromGitHub callPackage;",
+      "",
+      "  poetry2nix-src = fetchFromGitHub {",
+      "      owner = \"nix-community\";",
+      "      repo = \"poetry2nix\";",
+      "      rev = \"e0b44e9e2d3aa855d1dd77b06f067cd0e0c3860d\";",
+      "      # To get sha256, run",
+      "      # nix-prefetch-url --unpack https://github.com/nix-community/poetry2nix/archive/<rev>.tar.gz",
+      "      sha256 = \"0zz3qzp2b5i9gw4yfxfrq07iadcdadackph12h02w19bb3535rm6\";",
+      "  };",
+      "",
+      "  poetry2nix = callPackage poetry2nix-src { };",
+      "",
+      "in",
+      "  let",
+      "    poetryEnv = poetry2nix.mkPoetryEnv {",
+      "      projectDir = ./.;",
+      "      editablePackageSources = {",
+      "        project = ./src;",
+      "      };",
+      "    };",
+      "  in poetryEnv.env.overrideAttrs (oldAttrs: {",
+      "    buildInputs = with pkgs; [",
+      "      isort",
+      "      pyright",
+      "      python3Packages.flake8",
+      "    ];",
+      "  })"
+    ]
+  },
+  "go project": {
+    "prefix": ["sh-golang"],
+    "body": [
+      "{ pkgs ? import <nixpkgs> {} }:",
+      "",
+      "pkgs.mkShell {",
+      "  packages = with pkgs; [",
+      "    go",
+      "    gopls",
+      "  ];",
+      "}"
+    ]
+  },
+  "terraform project": {
+    "prefix": ["sh-terraform"],
+    "body": [
+      "{ pkgs ? import <nixpkgs> {} }:",
+      "",
+      "pkgs.mkShell {",
+      "  packages = with pkgs; [",
+      "    terraform",
+      "    terraform-ls",
+      "  ];",
+      "}"
+    ]
+  }
+}
diff --git a/.vsnip/python.json b/.vsnip/python.json
new file mode 100644
index 0000000000000000000000000000000000000000..739f3b208647c0b094c8c986c193f04f1838445e
--- /dev/null
+++ b/.vsnip/python.json
@@ -0,0 +1,9 @@
+{
+  "if __name__ == '__main__'": {
+    "prefix": ["ifmain"],
+    "body": [
+      "if __name__ == '__main__':",
+      "    ${0:pass}"
+    ]
+  }
+}
diff --git a/.vsnip/terraform.json b/.vsnip/terraform.json
new file mode 100644
index 0000000000000000000000000000000000000000..d84f6e7fa047557f20aa6a7e23a7200d3b1445ab
--- /dev/null
+++ b/.vsnip/terraform.json
@@ -0,0 +1,26 @@
+{
+  "output": {
+    "prefix": "tf-output",
+    "body": [
+      "output \"$1\" {",
+      "  value = $2",
+      "}"
+    ]
+  },
+  "variable": {
+    "prefix": "tf-variable",
+    "body": [
+      "variable \"$1\" {",
+      "  type = $2",
+      "}"
+    ]
+  },
+  "locals": {
+    "prefix": "tf-locals",
+    "body": [
+      "locals {",
+      "  $1 = $2",
+      "}"
+    ]
+  }
+}