Neovim 0.5-ը, Vim խմբագրի արդիականացված տարբերակը, հասանելի է

Գրեթե երկու տարվա մշակումից հետո թողարկվել է Neovim 0.5-ը՝ Vim-ի խմբագրի պատառաքաղը, որը կենտրոնացած է ընդարձակման և ճկունության բարձրացման վրա: Նախագիծը վերամշակում է Vim կոդերի բազան ավելի քան յոթ տարի, ինչի արդյունքում փոփոխություններ են կատարվում, որոնք պարզեցնում են կոդի պահպանումը, ապահովում են աշխատանքը մի քանի սպասարկողների միջև բաժանելու միջոց, ինտերֆեյսը առանձնացնում են բազային մասից (ինտերֆեյսը կարող է լինել. փոխվել է առանց ներքին մասերին դիպչելու) և կիրառել նոր ընդարձակելի ճարտարապետություն՝ հիմնված պլագինների վրա: Նախագծի սկզբնական մշակումները բաշխվում են Apache 2.0 լիցենզիայի ներքո, իսկ հիմնական մասը՝ Vim լիցենզիայի ներքո:

Vim-ի հետ կապված խնդիրներից մեկը, որը դրդեց ստեղծել Neovim-ը, նրա փքված, մոնոլիտ ծածկագրի հիմքն էր, որը բաղկացած է ավելի քան 300 հազար տող C (C89) կոդից: Միայն քչերն են հասկանում Vim կոդերի բազայի բոլոր նրբությունները, և բոլոր փոփոխությունները վերահսկվում են մեկ սպասարկողի կողմից, ինչը դժվարացնում է խմբագրի պահպանումն ու կատարելագործումը։ Vim միջուկում ներկառուցված կոդի փոխարեն՝ GUI-ին աջակցելու համար, Neovim-ն առաջարկում է օգտագործել ունիվերսալ շերտ, որը թույլ է տալիս ստեղծել ինտերֆեյսներ՝ օգտագործելով տարբեր գործիքակազմեր:

Neovim-ի պլագինները գործարկվում են որպես առանձին գործընթացներ, որոնց հետ փոխգործակցության համար օգտագործվում է MessagePack ձևաչափը: Փլագինների հետ փոխազդեցությունն իրականացվում է ասինխրոն՝ առանց խմբագրի հիմնական բաղադրիչները արգելափակելու։ Փլագին մուտք գործելու համար կարող է օգտագործվել TCP վարդակից, այսինքն. plugin-ը կարող է գործարկվել արտաքին համակարգով: Միևնույն ժամանակ, Neovim-ը մնում է հետընթաց համատեղելի Vim-ի հետ, շարունակում է աջակցել Vimscript-ին (Lua-ն առաջարկվում է որպես այլընտրանք) և աջակցում է կապեր ստանդարտ Vim հավելվածների մեծ մասի համար։ Neovim-ի առաջադեմ հնարավորությունները կարող են օգտագործվել Neovim-ի հատուկ API-ների միջոցով կառուցված պլագիններում:

Ներկայումս արդեն պատրաստվել են մոտ 130 հատուկ փլագիններ, հասանելի են կապանքներ՝ տարբեր ծրագրավորման լեզուների (C++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) և շրջանակների (Qt, ncurses, Node .js, Electron, GTK): Օգտագործողի միջերեսի մի քանի տարբերակներ են մշակվում: GUI հավելումները շատ նման են պլագիններին, բայց ի տարբերություն պլագինների, նրանք զանգեր են նախաձեռնում դեպի Neovim գործառույթները, մինչդեռ պլագինները կանչվում են Neovim-ից:

Նոր տարբերակի որոշ փոփոխություններ.

  • Lua-ում ավելացվել է ներկառուցված LSP հաճախորդ (Language Server Protocol), որը կարող է օգտագործվել արտաքին ծառայություններին միանալու համար՝ վերլուծության և ծածկագրի լրացման համար:
  • Ավելացրել է API՝ բաշխման բուֆերների ձևավորումը վերահսկելու համար:
  • Ավելացրել է API՝ ընդլայնված պիտակներ օգտագործելու համար՝ բայթ մակարդակի փոփոխությունները հետևելու համար:
  • Ընդլայնված աջակցություն Lua-ին՝ որպես հավելումների մշակման և կազմաձևման կառավարման լեզու:
  • Ավելացվեց փորձնական աջակցություն ծառերի վերլուծող շարժիչի համար:

Source: opennet.ru

Добавить комментарий