Neovim 0.5, versi dimodernisasi tina pangropéa Vim, sayogi

Saatos ampir dua taun pangwangunan, Neovim 0.5 parantos dileupaskeun, garpu pangropéa Vim fokus kana ningkatkeun ekstensibilitas sareng kalenturan. Proyék ieu parantos ngerjakeun deui dasar kode Vim salami langkung ti tujuh taun, salaku hasil tina parobihan anu dilakukeun anu nyederhanakeun pangropéa kode, nyayogikeun cara ngabagi tanaga kerja antara sababaraha pangurus, misahkeun antarmuka tina bagian dasar (antarmuka tiasa janten robah tanpa noél internals) jeung nerapkeun arsitéktur extensible anyar dumasar kana plugins. Pangwangunan asli proyék disebarkeun dina lisénsi Apache 2.0, sareng bagian dasarna disebarkeun dina lisénsi Vim.

Salah sahiji masalah sareng Vim anu nyababkeun nyiptakeun Neovim nyaéta dasar kode monolitik na, anu diwangun ku langkung ti 300 rébu garis kode C (C89). Ngan sababaraha urang ngartos sagala nuansa codebase Vim, sarta sakabeh parobahan dikawasa ku hiji maintainer, nu ngajadikeun hésé pikeun ngajaga tur ningkatkeun redaktur. Gantina kodeu diwangun kana inti Vim pikeun ngarojong GUI, Neovim proposes ngagunakeun lapisan universal nu ngidinan Anjeun pikeun nyieun interfaces ngagunakeun rupa toolkits.

Plugins pikeun Neovim diluncurkeun salaku prosés anu misah, pikeun interaksi anu nganggo format MessagePack. Interaksi sareng plugins dilaksanakeun asynchronously, tanpa blocking komponén dasar éditor. Pikeun ngakses plugin, hiji stop kontak TCP bisa dipaké, i.e. plugin nu bisa dijalankeun dina sistem éksternal. Dina waktos anu sami, Neovim tetep cocog sareng Vim, teras ngadukung Vimscript (Lua ditawarkeun salaku alternatif) sareng ngadukung sambungan pikeun kalolobaan plugins Vim standar. Fitur canggih Neovim tiasa dianggo dina plugins anu diwangun nganggo API khusus Neovim.

Ayeuna, sakitar 130 plugins khusus parantos disiapkeun, beungkeutan sayogi pikeun nyiptakeun plugins sareng ngalaksanakeun antarmuka nganggo sababaraha basa pamrograman (C ++, Clojure, Perl, Python, Go, Java, Lisp, Lua, Ruby) sareng kerangka (Qt, ncurses, Node .js, Éléktron, GTK). Sababaraha pilihan panganteur pamaké keur dimekarkeun. GUI tambihan-ons loba kawas plugins, tapi teu kawas plugins, aranjeunna initiate nelepon ka fungsi Neovim, bari plugins disebut ti jeroeun Neovim.

Sababaraha parobahan dina versi anyar:

  • Ditambahkeun klien LSP diwangun-di (Language Server Protocol) di Lua, anu tiasa dianggo pikeun nyambung ka jasa éksternal pikeun analisis sareng ngalengkepan kode.
  • Ditambahkeun API pikeun ngadalikeun desain panyangga alokasi.
  • Nambahkeun API pikeun nganggo tag anu diperpanjang pikeun ngalacak parobahan dina tingkat bait.
  • Ngalegaan rojongan pikeun Lua salaku basa pikeun ngembangkeun plugin sarta manajemén konfigurasi.
  • Ditambahkeun dukungan ékspérimén pikeun mesin parsing tangkal-sitter.

sumber: opennet.ru

Tambahkeun komentar