neosnippet.vim + deoppet.nvim in vim conf 2017

Post on 21-Jan-2018

2.507 Views

Category:

Software

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Neosnippet.vim + Deoppet.nvim VimConf 2017

Shougo@ShougoMatsu

Profile● Shougo● The dark powered Vim user 暗黒美無王

(Uncock Vim Awe, The dark Vim maestro)● The text editor is the world● My icon is not zebra!

The dark powered plugins● deoplete.nvim: The next completion plugin for neovim

● deol.nvim: The next terminal plugin for neovim/Vim8

● dein.vim: The next plugin manager for neovim/Vim8

● denite.nvim: The next UI plugin for neovim/Vim8

● deoppet.nvim: The next snippet plugin for neovim (vaporware)

● defx.nvim: The next file manager for neovim/Vim8 (vaporware)

● deorise.nvim: The next hexadecimal editor plugin for neovim/Vim8 (vaporware)

Today's theme● The snippet plugins● neosnippet.vim● deoppet.nvim● The extra thing

Note:No songs

The snippet plugins

What is the snippet plugin?● It expands the snippet trigger

Ex: i f → if () {}● And jumps the next places(place holder)

Ex: i f (${1}) { ${2} }● You don’t have to insert the texts and move to the next

position manually● The similar plugins: The template plugin, emmet-vim

neosnippet.vimhttps://github.com/Shougo/neosnippet.vim

● The neo-snippet plugin● The marker type snippet plugin● Popular in Japan● Compatible with snipMate syntax● Integrated with the completion plugins● Vim script based

snipMatehttps://github.com/garbas/vim-snipmate

● Easy to read syntax● Very popular● The development seems slowly● The non-marker type snippet plugin● Vim script based

UltiSnipshttps://github.com/Silver/ultisnips

● Non compatible syntax with snipMate● Popular● Many features● The non-marker type snippet plugin● if_python/if_python3 based● Slow performance in neovim

What is the marker type snippet plugin?

● It adds the markers to the buffer to detect the next jump places

Ex: <`1`> ● It is easy to implement● No performance problem● Easy to find the next jump places

What is the non marker type snippet plugin?

● It monitors the buffer changes to find the next jump position

● The implementation is complex● It is easy to implement jump back feature

Neosnippet.vim

The history of neosnippet.vim

● I don't understand why the snippet plugins are useful● I have created the snippet plugin as builtin

neocomplcache source● The snippet plugin is very huge... → neosnippet.vim● The default snippets are very huge and not easy to

customize for the users → neosnippet-snippets

neosnippet.vim disadvantages

● Conflicts with conceal feature● Hard to implement jump back feature● It changes the buffer● The slow parser (Vim script performance problem)● It is hard to extend…

Deoppet.nvim

deoppet.nvimhttps://github.com/Shougo/deoppet.nvim

● The dark powered neo snippet plugin● Compatible syntax with neosnippet.vim● The non-marker type snippet plugin● It depends on Extended Marks feature in neovim

https://github.com/neovim/neovim/pull/5031● neovim only● Python3 based, almost 300 lines

Extended marks feature● It detects the buffer changes automatically● The plugins don’t have to detect the buffer changes● And it has the namespaces

let ns = nvim_init_mark_ns(‘deoppet’)

let id = nvim_buf_set_marks(bufnr, ns, ‘’, row, col)

Current development status● Works the simple neosnippet syntax parser● Can expand the snippet trigger● The Completion by deoplete● Can Jump forward/jump back to the placeholders● It is hard to try...

Current development status● Works the simple neosnippet syntax parser● Can expand the snippet trigger● The Completion by deoplete● Can Jump forward/jump back to the placeholders● It is hard to try...

The demo of deoppet.nvim

The extra thing

The extra thing● neocomplete.vim development is over● Because deoplete.nvim supports Vim8● You can try it● Enjoy!

Thank you!

top related