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",
+ "}"
+ ]
+ }
+}