Neovim նախագծի շրջանակներում Vim կոդերի բազան վերամշակվում է ավելի քան հինգ տարի, ինչի արդյունքում փոփոխություններ են կատարվում, որոնք պարզեցնում են կոդերի պահպանումը, ապահովում են աշխատանքի բաժանման միջոց մի քանի սպասարկողների միջև, առանձնացնում ինտերֆեյսը բազային մասը (ինտերֆեյսը կարող է փոխվել առանց ներքին մասերին դիպչելու) և իրականացնել նորը
Vim-ի հետ կապված խնդիրներից մեկը, որը դրդեց ստեղծել Neovim-ը, նրա փքված, մոնոլիտ ծածկագրի հիմքն էր, որը բաղկացած է ավելի քան 300 հազար տող C (C89) կոդից: Միայն քչերն են հասկանում Vim կոդերի բազայի բոլոր նրբությունները, և բոլոր փոփոխությունները վերահսկվում են մեկ սպասարկողի կողմից, ինչը դժվարացնում է խմբագրի պահպանումն ու կատարելագործումը։ Vim միջուկում ներկառուցված կոդի փոխարեն՝ GUI-ին աջակցելու համար, Neovim-ն առաջարկում է օգտագործել ունիվերսալ շերտ, որը թույլ է տալիս ստեղծել ինտերֆեյսներ՝ օգտագործելով տարբեր գործիքակազմեր:
Neovim-ի պլագինները գործարկվում են որպես առանձին գործընթացներ, որոնց հետ փոխգործակցության համար օգտագործվում է MessagePack ձևաչափը: Փլագինների հետ փոխազդեցությունն իրականացվում է ասինխրոն՝ առանց խմբագրի հիմնական բաղադրիչները արգելափակելու։ Փլագին մուտք գործելու համար կարող է օգտագործվել TCP վարդակից, այսինքն. plugin-ը կարող է գործարկվել արտաքին համակարգով: Միևնույն ժամանակ, Neovim-ը մնում է հետընթաց համատեղելի Vim-ի հետ, շարունակում է աջակցել Vimscript-ին (Lua-ն առաջարկվում է որպես այլընտրանք) և աջակցում է կապեր ստանդարտ Vim հավելվածների մեծ մասի համար։ Neovim-ի առաջադեմ հնարավորությունները կարող են օգտագործվել Neovim-ի հատուկ API-ների միջոցով կառուցված պլագիններում:
Ներկայումս արդեն
Որոշ փոփոխություններ
- Ավելացվել է նոր API գործառույթների և օգտատիրոջ միջերեսի իրադարձությունների մեծ մասը:
- Ավելացրել է նոր ստանդարտ գրադարան Nvim-Lua՝ Lua լեզվով պլագիններ մշակելու համար:
- Օգտվողի միջերեսի արձանագրության մշակումը շարունակվում է՝ էկրանին տեղեկատվությունը թարմացնելով տողերի մակարդակով, այլ ոչ թե առանձին նիշերի:
- Ավելացվել է լիարժեք լողացող պատուհանների աջակցություն, որոնք կարող են տեղադրվել ցանկացած վայրում, կցվել, կապվել անհատական խմբագրման բուֆերների հետ և խմբավորվել Multigrid ռեժիմում:
- Ավելացվեց «pumblend» տարբերակը կիսաթափանցիկ բացվող ընտրացանկերի համար:
Source: opennet.ru