ΠΠΎΡΠ»Π΅ ΠΏΠΎΡΡΠΈ Π΄Π²ΡΡ Π»Π΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ ΡΠ΅Π»ΠΈΠ· Neovim 0.5, ΠΎΡΠ²Π΅ΡΠ²Π»Π΅Π½ΠΈΡ ΠΎΡ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ° Vim, ΡΡΠΎΠΊΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π½Π° ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΠΈ ΡΠ°ΡΡΠΈΡΡΠ΅ΠΌΠΎΡΡΠΈ ΠΈ Π³ΠΈΠ±ΠΊΠΎΡΡΠΈ. Π ΡΠ°ΠΌΠΊΠ°Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠΆΠ΅ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΠΌΠΈ Π»Π΅Ρ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΏΠ΅ΡΠ΅ΡΠ°Π±ΠΎΡΠΊΠ° ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Ρ Vim, Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΊΠΎΡΠΎΡΠΎΠΉ Π²Π½ΠΎΡΡΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΡΠΏΡΠΎΡΠ°ΡΡΠΈΠ΅ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π° ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΡΡΠ΄Π° ΠΌΠ΅ΠΆΠ΄Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΠΌΡΠΉΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°ΠΌΠΈ, ΠΎΡΠ΄Π΅Π»ΡΡΡΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΎΡ Π±Π°Π·ΠΎΠ²ΠΎΠΉ ΡΠ°ΡΡΠΈ (ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ΅Π½ΡΡΡ Π½Π΅ ΡΡΠΎΠ³Π°Ρ Π²Π½ΡΡΡΠ΅Π½Π½ΠΎΡΡΠΈ) ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠΈΠ΅ Π½ΠΎΠ²ΡΡ ΡΠ°ΡΡΠΈΡΡΠ΅ΠΌΡΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ². ΠΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΠ΅ Π½Π°ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΡΡΡΡ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΠ΅ΠΉ Apache 2.0, Π° Π±Π°Π·ΠΎΠ²Π°Ρ ΡΠ°ΡΡΡ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΠ΅ΠΉ Vim.
Een van die probleme met Vim wat die skepping van Neovim aangespoor het, was sy opgeblase, monolitiese kodebasis, wat uit meer as 300 duisend reΓ«ls C (C89)-kode bestaan. Slegs 'n paar mense verstaan ββal die nuanses van die Vim-kodebasis, en alle veranderinge word deur een onderhouer beheer, wat dit moeilik maak om die redigeerder te onderhou en te verbeter. In plaas van die kode wat in die Vim-kern ingebou is om die GUI te ondersteun, stel Neovim voor om 'n universele laag te gebruik wat jou toelaat om koppelvlakke te skep met behulp van verskeie gereedskapstelle.
Inproppe vir Neovim word as aparte prosesse bekendgestel, vir interaksie waarmee die MessagePack-formaat gebruik word. Interaksie met plugins word asynchroon uitgevoer, sonder om die basiese komponente van die redigeerder te blokkeer. Om toegang tot die inprop te verkry, kan 'n TCP-sok gebruik word, d.w.s. die inprop kan op 'n eksterne stelsel uitgevoer word. Terselfdertyd bly Neovim agteruit versoenbaar met Vim, ondersteun Vimscript steeds (Lua word as alternatief aangebied) en ondersteun verbindings vir die meeste standaard Vim-inproppe. Neovim se gevorderde kenmerke kan gebruik word in plugins wat gebou is met Neovim-spesifieke API's.
Tans is ongeveer 130 spesifieke inproppe reeds voorberei, bindings is beskikbaar vir die skep van plugins en implementering van koppelvlakke met behulp van verskeie programmeertale (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) en raamwerke (Qt, ncurses, Node .js, Electron, GTK). Verskeie gebruikerskoppelvlak-opsies word ontwikkel. GUI-byvoegings is baie soos inproppe, maar anders as inproppe, begin hulle oproepe na Neovim-funksies, terwyl inproppe van binne Neovim geroep word.
Sommige van die veranderinge in die nuwe weergawe:
- ΠΠΎΠ±Π°Π²Π»Π΅Π½ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ LSP-ΠΊΠ»ΠΈΠ΅Π½Ρ (Language Server Protocol) Π½Π° ΡΠ·ΡΠΊΠ΅ Lua, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊ Π²Π½Π΅ΡΠ½ΠΈΠΌ ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌ Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π° ΠΈ Π°Π²ΡΠΎΠ΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°.
- ΠΠΎΠ±Π°Π²Π»Π΅Π½ API Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΠ΅ΠΌ Π±ΡΡΠ΅ΡΠΎΠ² Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ.
- ΠΠΎΠ±Π°Π²Π»Π΅Π½ API Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΡΡ ΠΌΠ΅ΡΠΎΠΊ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΡ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ Π±Π°ΠΉΡΠΎΠ².
- Π Π°ΡΡΠΈΡΠ΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Lua, ΠΊΠ°ΠΊ ΡΠ·ΡΠΊΠ° Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠ΅ΠΉ.
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π΄Π²ΠΈΠΆΠΊΠ° ΡΠ°Π·Π±ΠΎΡΠ° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° tree-sitter.
Bron: opennet.ru