nvim: add own snippets and some keybinds
This commit is contained in:
@@ -79,8 +79,33 @@ wk.register({
|
|||||||
|
|
||||||
-- cmp
|
-- cmp
|
||||||
local cmp = require 'cmp'
|
local cmp = require 'cmp'
|
||||||
|
local luasnip = require 'luasnip'
|
||||||
|
local has_words_before = function()
|
||||||
|
local line, col = unpack(vim.api.nvim_win_get_cursor(0))
|
||||||
|
return col ~= 0 and vim.api.nvim_buf_get_lines(0, line - 1, line, true)[1]:sub(col, col):match("%s") == nil
|
||||||
|
end
|
||||||
cmp.setup({
|
cmp.setup({
|
||||||
mapping = {
|
mapping = {
|
||||||
|
["<Tab>"] = cmp.mapping(function(fallback) -- Advance to next parameter
|
||||||
|
if cmp.visible() then
|
||||||
|
cmp.select_next_item()
|
||||||
|
elseif luasnip.expand_or_jumpable() then
|
||||||
|
luasnip.expand_or_jump()
|
||||||
|
elseif has_words_before() then
|
||||||
|
cmp.complete()
|
||||||
|
else
|
||||||
|
fallback()
|
||||||
|
end
|
||||||
|
end, { "i", "s" }),
|
||||||
|
["<S-Tab>"] = cmp.mapping(function(fallback) -- Got back to last parameter
|
||||||
|
if cmp.visible() then
|
||||||
|
cmp.select_prev_item()
|
||||||
|
elseif luasnip.jumpable(-1) then
|
||||||
|
luasnip.jump(-1)
|
||||||
|
else
|
||||||
|
fallback()
|
||||||
|
end
|
||||||
|
end, { "i", "s" }),
|
||||||
["<C-k>"] = cmp.mapping.select_prev_item(),
|
["<C-k>"] = cmp.mapping.select_prev_item(),
|
||||||
["<C-j>"] = cmp.mapping.select_next_item(),
|
["<C-j>"] = cmp.mapping.select_next_item(),
|
||||||
["<C-l>"] = cmp.mapping.confirm({
|
["<C-l>"] = cmp.mapping.confirm({
|
||||||
@@ -89,3 +114,4 @@ cmp.setup({
|
|||||||
}),
|
}),
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
vim.cmd [[packadd packer.nvim]]
|
|
||||||
|
|
||||||
local fn = vim.fn
|
local fn = vim.fn
|
||||||
|
|
||||||
|
-- This should auto install packer, if it is not installed on system
|
||||||
|
-- Otherwise use:
|
||||||
|
-- git clone --depth 1 https://github.com/wbthomason/packer.nvim ~/.local/share/nvim/site/pack/packer/start/packer.nvim
|
||||||
local install_path = fn.stdpath('data') .. '/site/pack/packer/start/packer.nvim'
|
local install_path = fn.stdpath('data') .. '/site/pack/packer/start/packer.nvim'
|
||||||
if fn.empty(fn.glob(install_path)) > 0 then
|
if fn.empty(fn.glob(install_path)) > 0 then
|
||||||
packer_bootstrap = fn.system({ 'git', 'clone', '--depth', '1', 'https://github.com/wbthomason/packer.nvim',
|
packer_bootstrap = fn.system({ 'git', 'clone', '--depth', '1', 'https://github.com/wbthomason/packer.nvim',
|
||||||
@@ -137,6 +139,7 @@ return require('packer').startup(function(use)
|
|||||||
"make",
|
"make",
|
||||||
"python",
|
"python",
|
||||||
"rust",
|
"rust",
|
||||||
|
"yaml",
|
||||||
},
|
},
|
||||||
auto_intall = true,
|
auto_intall = true,
|
||||||
highlight = {
|
highlight = {
|
||||||
@@ -188,13 +191,8 @@ return require('packer').startup(function(use)
|
|||||||
})
|
})
|
||||||
-- Load friendly-snippets
|
-- Load friendly-snippets
|
||||||
require('luasnip.loaders.from_vscode').lazy_load()
|
require('luasnip.loaders.from_vscode').lazy_load()
|
||||||
-- TODO: Add own snippets
|
-- Load own snippets
|
||||||
--[[ require("luasnip.loaders.from_vscode").lazy_load({
|
require("luasnip.loaders.from_vscode").lazy_load({ paths = { "./snippets" }})
|
||||||
paths = {
|
|
||||||
"~/.config/nvim/snippets",
|
|
||||||
"/home/marc/.local/share/nvim/site/pack/packer/start/friendly-snippets"
|
|
||||||
}
|
|
||||||
}) ]]
|
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
@@ -209,11 +207,16 @@ return require('packer').startup(function(use)
|
|||||||
-- Align with `:Align <regex>`
|
-- Align with `:Align <regex>`
|
||||||
use 'RRethy/nvim-align'
|
use 'RRethy/nvim-align'
|
||||||
|
|
||||||
-- Easily comment out stuff (gc, gb)
|
-- Easily comment out stuff
|
||||||
use({
|
use({
|
||||||
"numToStr/Comment.nvim",
|
"numToStr/Comment.nvim",
|
||||||
config = function()
|
config = function()
|
||||||
require('Comment').setup({})
|
require('Comment').setup({
|
||||||
|
opleader = {
|
||||||
|
line = '<leader>cl',
|
||||||
|
block = '<leader>cb',
|
||||||
|
}
|
||||||
|
})
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|||||||
21
files/nvim/.config/nvim/snippets/LICENSE
Normal file
21
files/nvim/.config/nvim/snippets/LICENSE
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
MIT License
|
||||||
|
|
||||||
|
Copyright (c) 2021 Rafael Madriz
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all
|
||||||
|
copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
|
SOFTWARE.
|
||||||
94
files/nvim/.config/nvim/snippets/README.md
Normal file
94
files/nvim/.config/nvim/snippets/README.md
Normal file
@@ -0,0 +1,94 @@
|
|||||||
|
# Friendly Snippets
|
||||||
|
|
||||||
|
Snippets collection for a set of different programming languages for faster development.
|
||||||
|
|
||||||
|
The only goal is to have one community driven repository for all kinds of
|
||||||
|
snippets in all programming languages, this way you can have it all in one
|
||||||
|
place.
|
||||||
|
|
||||||
|
### Usage
|
||||||
|
|
||||||
|
This collection of snippets should work with any plugin that supports loading
|
||||||
|
vscode snippets. Like for example:
|
||||||
|
|
||||||
|
- [vim-vsnip](https://github.com/hrsh7th/vim-vsnip)
|
||||||
|
- [LuaSnip](https://github.com/L3MON4D3/LuaSnip)
|
||||||
|
- [coc-snippets](https://github.com/neoclide/coc-snippets)
|
||||||
|
|
||||||
|
### Add snippets from a framework to a filetype.
|
||||||
|
|
||||||
|
There's extra snippets included in this repo but they are not added by default,
|
||||||
|
since it would be irrelevant for people not using those frameworks. See
|
||||||
|
[`snippets/frameworks`](https://github.com/rafamadriz/friendly-snippets/tree/main/snippets/frameworks)
|
||||||
|
|
||||||
|
For example: if you want to add rails snippets to ruby.
|
||||||
|
|
||||||
|
With LuaSnip:
|
||||||
|
|
||||||
|
```lua
|
||||||
|
require'luasnip'.filetype_extend("ruby", {"rails"})
|
||||||
|
```
|
||||||
|
|
||||||
|
This method is going to work globally on all open buffers with `ruby` filetype.
|
||||||
|
Alternatively you can do `set filetype=ruby.rails` so it only works on a
|
||||||
|
specific buffer, but this is going to mess up with syntax highlighting.
|
||||||
|
|
||||||
|
With vim-vsnip:
|
||||||
|
|
||||||
|
```viml
|
||||||
|
let g:vsnip_filetypes.ruby = ['rails']
|
||||||
|
```
|
||||||
|
|
||||||
|
For more info related to this change see [#88](https://github.com/rafamadriz/friendly-snippets/issues/88)
|
||||||
|
|
||||||
|
### Install
|
||||||
|
|
||||||
|
Use your plugin manager of choice, e.g.
|
||||||
|
|
||||||
|
```lua
|
||||||
|
-- Packer
|
||||||
|
use "rafamadriz/friendly-snippets"
|
||||||
|
|
||||||
|
-- Plug
|
||||||
|
Plug 'rafamadriz/friendly-snippets'
|
||||||
|
|
||||||
|
-- If you're using coc.nvim, you can use:
|
||||||
|
CocInstall https://github.com/rafamadriz/friendly-snippets@main
|
||||||
|
```
|
||||||
|
|
||||||
|
#### HTML
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
#### JS
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
##### NOTE: Using [nvim-compe](https://github.com/hrsh7th/nvim-compe) with [vim-vsnip](https://github.com/hrsh7th/vim-vsnip) on the videos.
|
||||||
|
|
||||||
|
## TODO
|
||||||
|
|
||||||
|
- Add all included snippets to the
|
||||||
|
[Wiki](https://github.com/rafamadriz/friendly-snippets/wiki).
|
||||||
|
|
||||||
|
## Thanks to all contributors
|
||||||
|
|
||||||
|
<a href="https://github.com/rafamadriz/friendly-snippets/graphs/contributors">
|
||||||
|
<img src="https://contrib.rocks/image?repo=rafamadriz/friendly-snippets" />
|
||||||
|
</a>
|
||||||
|
|
||||||
|
## Credits
|
||||||
|
|
||||||
|
A good portion of the snippets have been forked from the following repositories:
|
||||||
|
|
||||||
|
- [vscode-standardjs-snippets](https://github.com/capaj/vscode-standardjs-snippets)
|
||||||
|
- [python-snippets](https://github.com/cstrap/python-snippets)
|
||||||
|
- [vs-snippets](https://github.com/kitagry/vs-snippets)
|
||||||
|
- [Wscats/html-snippets](https://github.com/Wscats/html-snippets)
|
||||||
|
- [Harry-Ross/vscode-c-snippets](https://github.com/Harry-Ross/vscode-c-snippets)
|
||||||
|
- [vscode-jekyll-snippets](https://github.com/edheltzel/vscode-jekyll-snippets)
|
||||||
|
- [vscode-fortran-support](https://github.com/krvajal/vscode-fortran-support)
|
||||||
|
- [vscode_cobol](https://github.com/spgennard/vscode_cobol)
|
||||||
|
- [VSCode-LaTeX-Snippets](https://github.com/JeffersonQin/VSCode-LaTeX-Snippets)
|
||||||
|
- [vscode-react-javascript-snippets](https://github.com/dsznajder/vscode-react-javascript-snippets)
|
||||||
|
- [honza/vim-snippets - Verilog](https://github.com/honza/vim-snippets/blob/master/snippets/verilog.snippets)
|
||||||
16
files/nvim/.config/nvim/snippets/package.json
Normal file
16
files/nvim/.config/nvim/snippets/package.json
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
{
|
||||||
|
"name": "friendly-snippets",
|
||||||
|
"engines": {
|
||||||
|
"vscode": "^1.11.0"
|
||||||
|
},
|
||||||
|
"contributes": {
|
||||||
|
"snippets": [
|
||||||
|
{
|
||||||
|
"language": [
|
||||||
|
"tex"
|
||||||
|
],
|
||||||
|
"path": "./snippets/latex.json"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
87
files/nvim/.config/nvim/snippets/snippets/latex.json
Normal file
87
files/nvim/.config/nvim/snippets/snippets/latex.json
Normal file
@@ -0,0 +1,87 @@
|
|||||||
|
{
|
||||||
|
"notes": {
|
||||||
|
"prefix": "notes",
|
||||||
|
"body": [
|
||||||
|
"\\input{/home/marc/.dots/presets/notes.tex}",
|
||||||
|
"",
|
||||||
|
"\\title{$1}",
|
||||||
|
"\\subtitle{$1}",
|
||||||
|
"\\author{Marco Thomas}",
|
||||||
|
"",
|
||||||
|
"\\begin{document}",
|
||||||
|
"",
|
||||||
|
"\\maketitle",
|
||||||
|
"\\newpage",
|
||||||
|
"\\tableofcontents",
|
||||||
|
"\\newpage",
|
||||||
|
"",
|
||||||
|
"\\end{document}"
|
||||||
|
],
|
||||||
|
"description": "Preset to create new notes document"
|
||||||
|
},
|
||||||
|
"presentations": {
|
||||||
|
"prefix": "presentations",
|
||||||
|
"body": [
|
||||||
|
"\\input{/home/marc/.dots/presets/presentations.tex}",
|
||||||
|
"",
|
||||||
|
"\\title{$1}",
|
||||||
|
"\\subtitle{$2}",
|
||||||
|
"\\author{Marco Thomas}",
|
||||||
|
"",
|
||||||
|
"\\begin{document}",
|
||||||
|
"",
|
||||||
|
"\\maketitle",
|
||||||
|
"\\newpage",
|
||||||
|
"\\begin{frame}",
|
||||||
|
" \\frametitle{Inhaltsübersicht}",
|
||||||
|
" \\tableofcontents[hideallsubsections]",
|
||||||
|
"\\end{frame}",
|
||||||
|
"\\newpage",
|
||||||
|
"",
|
||||||
|
"\\end{document}"
|
||||||
|
],
|
||||||
|
"description": "Preset to create new presentation"
|
||||||
|
},
|
||||||
|
"wrapfigure": {
|
||||||
|
"prefix": "wrapfigure",
|
||||||
|
"body": [
|
||||||
|
"\\begin{wrapfigure}{${1:l or r}}{0.4\\textwidth}",
|
||||||
|
" \\centering",
|
||||||
|
" \\includegraphics[width=0.2\\textwidth]{figures/$2}",
|
||||||
|
" \\caption{$3}",
|
||||||
|
" \\label{fig:$4}",
|
||||||
|
"\\end{wrapfigure}"
|
||||||
|
],
|
||||||
|
"description": "Wrap figure in text context"
|
||||||
|
},
|
||||||
|
"source": {
|
||||||
|
"prefix": "src",
|
||||||
|
"body": [
|
||||||
|
"\\inputminted[breaklines=true, bgcolor=bg]{${1:language}}{${2:file}}"
|
||||||
|
],
|
||||||
|
"description": "Include a source code file"
|
||||||
|
},
|
||||||
|
"source-direct": {
|
||||||
|
"prefix": "srcd",
|
||||||
|
"body": [
|
||||||
|
"\\begin{minted}[breaklines=true, bgcolor=bg]{${1:language}}",
|
||||||
|
"\\end{minted}"
|
||||||
|
],
|
||||||
|
"description": "Directly write a code snippet"
|
||||||
|
},
|
||||||
|
"source-inline": {
|
||||||
|
"prefix": "srci",
|
||||||
|
"body": ["\\mintinline{${1:language}}{${2:code}}"],
|
||||||
|
"description": "Write code inline"
|
||||||
|
},
|
||||||
|
"german quote": {
|
||||||
|
"prefix": "gqq",
|
||||||
|
"body": ["\\glqq{}$1\\grqq{}"],
|
||||||
|
"description": "German quotes"
|
||||||
|
},
|
||||||
|
"paragraph": {
|
||||||
|
"prefix": "paragraph",
|
||||||
|
"body": ["\\paragraph{$1}"],
|
||||||
|
"description": "Insert a new paragraph"
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user