diff --git a/modules/hm/nvim/nvim-cmp-config.lua b/modules/hm/nvim/nvim-cmp-config.lua index 7dba4ea..b5a53e8 100644 --- a/modules/hm/nvim/nvim-cmp-config.lua +++ b/modules/hm/nvim/nvim-cmp-config.lua @@ -1,20 +1,6 @@ local cmp = require("cmp") local luasnip = require("luasnip") -local keymap = vim.keymap -keymap.set({"i"}, "", function() luasnip.expand() end, {silent = true}) -keymap.set({"i", "s"}, "", function() luasnip.jump( 1) end, {silent = true}) -keymap.set({"i", "s"}, "", function() luasnip.jump(-1) end, {silent = true}) - -vim.keymap.set({"i", "s"}, "", function() - if luasnip.choice_active() then - luasnip.change_choice(1) - end -end, {silent = true}) - --- loads vscode style snippets from installed plugins (eg. friendly-snippets) -require("luasnip.loaders.from_vscode").lazy_load() - cmp.setup({ completion = { completeopt = "menu,menuone,preview,noselect" @@ -25,6 +11,8 @@ cmp.setup({ end, }, mapping = cmp.mapping.preset.insert({ + [""] = cmp.mapping.select_prev_item(), -- previous suggestion + [""] = cmp.mapping.select_next_item(), -- next suggestion [""] = cmp.mapping.select_prev_item(), -- previous suggestion [""] = cmp.mapping.select_next_item(), -- next suggestion [""] = cmp.mapping.scroll_docs(-4), diff --git a/modules/hm/nvim/snippets/markdown.json b/modules/hm/nvim/snippets/markdown.json new file mode 100644 index 0000000..36ae701 --- /dev/null +++ b/modules/hm/nvim/snippets/markdown.json @@ -0,0 +1,128 @@ +{ + "Thesis structure": { + "prefix": "thesis structure", + "body": [ + "## Introduction", + "", + "- Def. problema", + "- Motivations", + "- Thesis/Research questions", + "", + "## Background", + "", + "- Basic information required to understand the research", + "- Related work (similar works, pubblications)", + "", + "## Methodology", + "", + "- How do i test the thesis", + "", + "## Experiments", + "", + "- I do the experiments and verify the thesis (I try to disprove it)", + "", + "## Discussion", + "", + "- Comments on the obtained results", + "", + "## Conclusioni", + "", + "- Summary of the contents", + "- Remarks on future works", + "" + ], + "description": "Thesis structure" + }, + "Person": { + "prefix": "person", + "body": [ + "---", + "aliases: []", + "type: person", + "relationship: []", + "email: ${2:email}", + "---", + "", + "# ${1:example}", + "", + "- **Email**: ${2:email}" + ], + "description": "Person" + }, + "Thesis student": { + "prefix": "thesis student", + "body": [ + "---", + "type: person", + "email: ${2:email}", + "relationships: [thesis_student]", + "supervisor: ${4:supervisor}", + "cosupervisors: [Filippo Berto]", + "thesis: ${3:thesis title}", + "---", + "", + "# ${1:name}", + "", + "- **Email**: ${2:example}", + "- **Thesis**: [[${3:thesis title}]]", + "- **Supervisor**: [[${4:supervisor}]]", + "- **Co-supervisor**: [Filippo Berto]" + ], + "description": "Thesis student" + }, + "Thesis": { + "prefix": "thesis", + "body": [ + "---", + "type: thesis", + "title: ${1:title}", + "grade: ${2:grade}", + "supervisor: ${3:supervisor}", + "cosupervisors: [Filippo Berto]", + "tags: [${4:example}]", + "---", + "", + "# ${1:title}", + "", + "- **Supervisor**: [[${2:supervisor}]]", + "- **Co-supervisor**: [[Filippo Berto]]", + "- **Grade**: ${3:grade}", + "", + "**Main points**:" + ], + "description": "Thesis" + }, + "Meeting": { + "prefix": "meeting", + "body": [ + "---", + "type: meeting", + "people: [Filippo Berto, ${2:people}]", + "date: $CURRENT_YEAR-$CURRENT_MONTH-$CURRENT_DATE", + "topic: ${1:title}", + "---", + "", + "# ${1:title}", + "", + "## Step 1", + "", + "## Step 2" + ], + "description": "Meeting" + }, + "Note of the day": { + "prefix": "note of the day", + "body": [ + "---", + "date: $CURRENT_YEAR-$CURRENT_MONTH-$CURRENT_DATE", + "---", + "", + "# ${1:title}", + "", + "## Step 1", + "", + "## Step 2" + ], + "description": "Note of the day" + } +} \ No newline at end of file diff --git a/modules/hm/nvim/snippets/package.json b/modules/hm/nvim/snippets/package.json new file mode 100644 index 0000000..0d5ad23 --- /dev/null +++ b/modules/hm/nvim/snippets/package.json @@ -0,0 +1,14 @@ +{ + "name": "personal-snippets", + "engines": { + "vscode": "^1.11.0" + }, + "contributes": { + "snippets": [ + { + "language": ["markdown", "rmd"], + "path": "./markdown.json" + } + ] + } +} diff --git a/modules/hm/readme.md b/modules/hm/readme.md new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/modules/hm/readme.md @@ -0,0 +1 @@ + diff --git a/modules/hm/vim.nix b/modules/hm/vim.nix index c6f7762..f722671 100644 --- a/modules/hm/vim.nix +++ b/modules/hm/vim.nix @@ -60,6 +60,31 @@ let vp = pkgs.vimPlugins; in { vp.cmp-buffer # source for text in buffer vp.cmp-path # source for file system path vp.luasnip + + { + plugin = vp.luasnip; + type = "lua"; + config = '' + local luasnip = require("luasnip") + local keymap = vim.keymap + keymap.set({"i"}, "", function() luasnip.expand() end, {silent = true}) + keymap.set({"i", "s"}, "", function() luasnip.jump( 1) end, {silent = true}) + keymap.set({"i", "s"}, "", function() luasnip.jump(-1) end, {silent = true}) + + vim.keymap.set({"i", "s"}, "", function() + if luasnip.choice_active() then + luasnip.change_choice(1) + end + end, {silent = true}) + + -- loads vscode style snippets from installed plugins (eg. friendly-snippets) + require("luasnip.loaders.from_vscode").lazy_load() + require("luasnip.loaders.from_vscode").lazy_load({ paths = "${./nvim/snippets}" }) + + + ''; + } + vp.cmp_luasnip vp.friendly-snippets { @@ -187,6 +212,26 @@ let vp = pkgs.vimPlugins; in { include_surrounding_whitespace = true, }, }, + highlight = { + enable = true, + -- Setting this to true will run `:h syntax` and tree-sitter at the same time. + -- Set this to `true` if you depend on 'syntax' being enabled (like for indentation). + -- Using this option may slow down your editor, and you may see some duplicate highlights. + -- Instead of true it can also be a list of languages + additional_vim_regex_highlighting = false, + }, + incremental_selection = { + enable = true, + keymaps = { + init_selection = "gnn", -- set to `false` to disable one of the mappings + node_incremental = "grn", + scope_incremental = "grc", + node_decremental = "grm", + }, + }, + indent = { + enable = true + } } ''; } @@ -249,6 +294,7 @@ let vp = pkgs.vimPlugins; in { ''; } + vp.nvim-treesitter-context ]; # settings = { ignorecase = true; }; # coc.enable = true; @@ -310,6 +356,12 @@ let vp = pkgs.vimPlugins; in { opt.whichwrap:append "<>[]hl" g.mapleader = " " + + -- treesitter folding + vim.opt.foldmethod = "expr" + vim.opt.foldexpr = "nvim_treesitter#foldexpr()" + -- vim.cmd([[ set nofoldenable]]) + vim.opt.foldenable = false ''; }; }