ΠΠΎΡΠ»Π΅ ΠΏΠΎΡΡΠΈ Π΄Π²ΡΡ Π»Π΅Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ ΡΠ΅Π»ΠΈΠ· Neovim 0.5, ΠΎΡΠ²Π΅ΡΠ²Π»Π΅Π½ΠΈΡ ΠΎΡ ΡΠ΅Π΄Π°ΠΊΡΠΎΡΠ° Vim, ΡΡΠΎΠΊΡΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π½Π° ΠΏΠΎΠ²ΡΡΠ΅Π½ΠΈΠΈ ΡΠ°ΡΡΠΈΡΡΠ΅ΠΌΠΎΡΡΠΈ ΠΈ Π³ΠΈΠ±ΠΊΠΎΡΡΠΈ. Π ΡΠ°ΠΌΠΊΠ°Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠΆΠ΅ Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΠΌΠΈ Π»Π΅Ρ ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΏΠ΅ΡΠ΅ΡΠ°Π±ΠΎΡΠΊΠ° ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ Π±Π°Π·Ρ Vim, Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΊΠΎΡΠΎΡΠΎΠΉ Π²Π½ΠΎΡΡΡΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ, ΡΠΏΡΠΎΡΠ°ΡΡΠΈΠ΅ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π° ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΡΡΠ΄Π° ΠΌΠ΅ΠΆΠ΄Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΠΌΡΠΉΠ½ΡΠ΅ΠΉΠ½Π΅ΡΠ°ΠΌΠΈ, ΠΎΡΠ΄Π΅Π»ΡΡΡΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΎΡ Π±Π°Π·ΠΎΠ²ΠΎΠΉ ΡΠ°ΡΡΠΈ (ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ΅Π½ΡΡΡ Π½Π΅ ΡΡΠΎΠ³Π°Ρ Π²Π½ΡΡΡΠ΅Π½Π½ΠΎΡΡΠΈ) ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠΈΠ΅ Π½ΠΎΠ²ΡΡ ΡΠ°ΡΡΠΈΡΡΠ΅ΠΌΡΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ². ΠΡΠΈΠ³ΠΈΠ½Π°Π»ΡΠ½ΡΠ΅ Π½Π°ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΡΡΡΡ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΠ΅ΠΉ Apache 2.0, Π° Π±Π°Π·ΠΎΠ²Π°Ρ ΡΠ°ΡΡΡ ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½Π·ΠΈΠ΅ΠΉ Vim.
Ko tetahi o nga raruraru ki a Vim i akiaki i te hanganga o Neovim ko tona pupuhi, te turanga waehere monolithic, neke atu i te 300 mano nga rarangi o te waehere C (C89). He torutoru noa nga tangata e mohio ana ki nga ahuatanga katoa o te Vim codebase, a ko nga huringa katoa e whakahaeretia ana e te kaitiaki kotahi, he uaua ki te pupuri me te whakapai ake i te Δtita. Engari i te waehere i hangaia ki roto i te Vim matua hei tautoko i te GUI, ka whakaaro a Neovim ki te whakamahi i tetahi paparanga ao e taea ai e koe te hanga hononga ma te whakamahi i nga momo kete taputapu.
Ko nga monomai mo Neovim ka whakarewahia hei tukanga motuhake, mo te taunekeneke ki te whakamahi i te whakatakotoranga MessagePack. Ko te taunekeneke me nga mono ka mahia i te wa kotahi, me te kore e aukati i nga waahanga taketake o te Δtita. Hei uru atu ki te mono, ka taea te whakamahi i te turanga TCP, i.e. ka taea te whakahaere i te mono i runga i te punaha o waho. I te wa ano, ka noho whakamuri a Neovim ki a Vim, ka tautoko tonu i a Vimscript (Kei te tukuna a Lua hei rereke) me te tautoko i nga hononga mo te nuinga o nga taputapu Vim paerewa. Ka taea te whakamahi i nga ahuatanga matatau a Neovim i roto i nga monomai i hangaia ma te whakamahi i nga API motuhake a Neovim.
I tenei wa, tata ki te 130 nga taputapu motuhake kua oti te whakarite, kei te waatea nga here mo te hanga monomai me te whakatinana i nga hononga ma te whakamahi i nga momo reo whakamaori (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) me nga anga (Qt, ncurses, Node .js, Electron, GTK). He maha nga whiringa atanga kaiwhakamahi kei te whakawhanakehia. Ko nga taapiri GUI he rite ki nga monomai, engari kaore i rite ki nga mono, ka timata nga waea ki nga mahi Neovim, i te wa e karangahia ana nga mono mai i roto i te Neovim.
ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ:
- ΠΠΎΠ±Π°Π²Π»Π΅Π½ Π²ΡΡΡΠΎΠ΅Π½Π½ΡΠΉ LSP-ΠΊΠ»ΠΈΠ΅Π½Ρ (Language Server Protocol) Π½Π° ΡΠ·ΡΠΊΠ΅ Lua, ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΊ Π²Π½Π΅ΡΠ½ΠΈΠΌ ΡΠ΅ΡΠ²ΠΈΡΠ°ΠΌ Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π° ΠΈ Π°Π²ΡΠΎΠ΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΊΠΎΠ΄Π°.
- ΠΠΎΠ±Π°Π²Π»Π΅Π½ API Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΠ΅ΠΌ Π±ΡΡΠ΅ΡΠΎΠ² Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ.
- ΠΠΎΠ±Π°Π²Π»Π΅Π½ API Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΡΡ ΠΌΠ΅ΡΠΎΠΊ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΡ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ Π±Π°ΠΉΡΠΎΠ².
- Π Π°ΡΡΠΈΡΠ΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Lua, ΠΊΠ°ΠΊ ΡΠ·ΡΠΊΠ° Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠ»Π°Π³ΠΈΠ½ΠΎΠ² ΠΈ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠ΅ΠΉ.
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΡΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π΄Π²ΠΈΠΆΠΊΠ° ΡΠ°Π·Π±ΠΎΡΠ° ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΠ° tree-sitter.
Source: opennet.ru