1 poin oleh GN⁺ 2025-07-17 | 1 komentar | Bagikan ke WhatsApp
  • Helix 25.07 mencakup penggantian komponen inti dan penambahan banyak fitur baru
  • Kegunaan dan alur kerja meningkat signifikan melalui penjelajah file, tampilan warna dokumen LSP, dan peningkatan mode perintah
  • Diperkenalkan crate baru Tree-house untuk penyorotan sintaks dan optimasi kueri
  • Tree-house sangat meningkatkan kemampuan injection dan pemrosesan lokal, sekaligus performa dan kemudahan pemeliharaan
  • Fondasi untuk peningkatan pengalaman multibahasa dan kecepatan yang lebih luas di masa depan kini telah disiapkan

Pembaruan utama Helix 25.07

Rilis Helix 25.07 menghadirkan penggantian fitur inti yang telah lama dinantikan serta berbagai fitur baru. Versi ini melibatkan 195 kontributor. Helix adalah editor teks modal dengan dukungan multiple selection, LSP, Tree-sitter, dan DAP eksperimental.

Fitur utama baru

Penjelajah file

  • Pada 25.07, ditambahkan fitur penjelajah file yang bisa digunakan dengan <space>e
  • Penjelajah ini menyediakan UI yang mirip dengan telescope
  • Navigasi struktur hierarkis di dalam direktori menjadi lebih mudah, dan memungkinkan kontrol yang lebih presisi saat menjelajahi proyek berskala besar

Tampilan warna dokumen LSP

  • Kini Helix dapat meminta informasi warna dokumen ke server LSP dan menampilkan rentang warna RGB secara inline
  • Misalnya, warna dari tailwindcss-language-server atau vscode-css-language-server dapat diterima lalu kotak warna bisa langsung dilihat secara visual di dalam kode

Peningkatan fitur mode perintah (:)

  • Kode parsing perintah dan pelengkapan otomatis ditulis ulang sepenuhnya, sehingga bug diperbaiki dan kegunaan meningkat
  • Ditambahkan dukungan flag seperti --no-format pada perintah keluarga :write
  • Diperkenalkan ekspansi variabel/nilai dalam perintah (%{variable_name}, %sh{command} dan sebagainya) beserta pelengkapan otomatis
  • Struktur parser diubah menjadi arsitektur yang mudah diperluas untuk menangani input kompleks, sehingga pengembangan perintah di masa depan menjadi lebih mudah

Tree-house: struktur baru untuk integrasi Tree-sitter

Apa itu Tree-sitter

  • Tree-sitter adalah framework untuk membuat dan menggunakan parser yang cepat serta tahan terhadap error
  • Aturan parser ditulis dengan DSL tata bahasa, lalu pohon sintaks dibuat dan dimanfaatkan di dalam editor atau tool
  • Sebagai contoh, digunakan untuk penelusuran kode dan highlight di GitHub, spell-check di code server, diff tool, dan lain-lain
  • Kueri Tree-sitter digunakan untuk pencocokan pola subtree dan penangkapan node sintaks

Integrasi Tree-sitter lama di Helix dan masalahnya

  • Pada awalnya Helix menggunakan binding Rust resmi (crate tree-sitter) dan highlighter tree-sitter-highlight
  • tree-sitter-highlight bersifat non-incremental, sehingga seluruh dokumen harus selalu diparse ulang, yang menimbulkan penurunan performa dan pemborosan resource
  • Helix sempat melakukan fork pada highlighter tersebut untuk memperbaikinya, tetapi kompleksitasnya makin meningkat sehingga sulit dipelihara

Penerapan Tree-house dan keuntungannya

  • Tree-house berfokus pada struktur parsing/kueri yang terpisah, kode yang bersih, penyelesaian bug kronis yang sudah lama ada, serta arsitektur yang siap masa depan seperti parsing paralel
  • Kekuatan utamanya adalah penanganan injection yang tangguh

Injection: dukungan banyak bahasa/layer

  • Injection adalah pendekatan yang, misalnya saat blok kode Rust muncul di dalam Markdown, hanya rentang tersebut yang diparse terpisah sebagai Rust
  • Kasus kompleks seperti Markdown di dalam komentar Rust, lalu Rust lagi di dalam blok kode di dalamnya, juga didukung secara akurat dengan mengelola layer dalam struktur pohon

Injection inkremental

  • Hanya layer yang benar-benar berubah yang diparse ulang dan kuerinya dijalankan dengan cepat, sehingga hanya unit kerja minimum yang digunakan
  • Efisiensi dimaksimalkan pada dokumen Markdown dengan daftar yang sangat besar atau struktur bersarang

Highlight variabel lokal (lcals)

  • Variabel lokal seperti parameter di dalam fungsi dapat di-highlight secara akurat pada ruang lingkup deklarasi dan referensinya
  • Masalah kronis yang sebelumnya membuat highlight hilang saat definisi berada di luar tampilan kini diselesaikan di Tree-house

Dukungan injection yang diglobalisasi

  • Pada tipe Syntax, pencarian dan akses layer injection dapat dilakukan dalam waktu logaritmik
  • Seluruh layer injection kini dapat diterapkan melalui API seperti TreeCursor dan QueryIter
  • Fondasi untuk perilaku yang konsisten di batas antarbahasa seperti kode di dalam HTML <script> atau blok kode Markdown kini telah tersedia

Penutup

  • Helix 25.07 menghadirkan inovasi besar dalam kegunaan melalui penjelajah file, inlay warna, serta peningkatan mode perintah/parser, dan bersama struktur baru berbasis Tree-house, mulai tampil sebagai kandidat editor teks generasi berikutnya
  • Detail pembaruan lengkap dapat dilihat di changelog
  • Partisipasi komunitas dan kontribusi dapat dilakukan melalui Matrix dan repositori GitHub

1 komentar

 
GN⁺ 2025-07-17
Opini Hacker News
  • Helix benar-benar luar biasa; banyak fitur seperti pemilih file, penyorotan sintaks, linting, dan lain-lain langsung tersedia tanpa perlu memasang plugin atau konfigurasi rumit, sedangkan vim atau neovim pada dasarnya memerlukan banyak pengaturan. Saya ingin memakainya, tetapi kelemahan utamanya adalah key binding-nya bekerja berbeda dari vim. Saya bingung dan kesal kalau tombol yang sudah akrab seperti x tidak menghapus karakter di bawah kursor atau d malah menunggu operasi berikutnya; kalau perilaku tombol vim yang sudah saya pakai bertahun-tahun tidak sama persis, rasanya mengganggu. Mungkin banyak pengguna vim merasakan hal yang sama di titik ini, dan mengubah kebiasaan itu sangat sulit, apalagi vim tersedia secara default hampir di mana-mana, jadi sulit lepas dari lingkungan itu. Untungnya ada soft fork Helix bernama evil-helix yang menambahkan key binding Vim, jadi saya ingin merekomendasikannya untuk orang yang punya kendala yang sama seperti saya. Selain itu, Helix dan evil-helix juga berjalan baik di Windows(cmd) cukup dengan mengunduh file .exe tanpa perlu memasang Rust.

    • Bagi saya masalahnya bukan karena tidak ingin belajar hal baru, tetapi karena key binding ini tidak bisa dipakai di tempat lain. Hampir semua editor online dan workstation menyediakan key binding vim, dan saat SSH ke Linux, hampir selalu ada vim. Ini seperti keyboard QWERTY: walaupun mungkin ada layout yang lebih baik, saya merasa tidak bisa melepaskan fleksibilitas untuk langsung beradaptasi di hampir semua lingkungan.

    • Saya sama sekali tidak punya masalah belajar tool baru. Saya sudah cukup lama mencoba Helix, tetapi model kata benda-kata kerja justru terlihat kurang baik, dan umpan balik visualnya malah mengganggu saat membaca kode. Di vim, hal-hal sederhana seperti mengulang perintah terakhir (binding . dan semacamnya) bisa dilakukan dengan nyaman, tetapi di Helix hal seperti itu harus dikorbankan. Manajemen state juga perlu lebih diperhatikan daripada vim; kalau di vim saya hanya perlu menjaga posisi saat ini di dalam file, di Helix saya juga harus mempertimbangkan dari mana saya tadi berasal. Saya ingin editor dengan pengaturan bawaan, modal editing, dan tanpa memaksa sinkronisasi visual yang berlebihan. Kalau sinkronisasinya terlalu banyak, keunggulannya sebagai bahasa pengeditan jadi hilang. Saya ingin fokus pada pemrograman yang lebih menarik daripada aktivitas mengedit itu sendiri. Editor yang menuntut perhatian lebih justru menjadi editor yang kurang baik.

    • Setelah memakai vim(neovim) hampir 20 tahun lalu pindah ke helix, ternyata sama sekali tidak sulit, dan sekarang saya jauh lebih menyukainya. Saya memang mengubah beberapa perilaku modal, tetapi tetap memakainya mengikuti logika helix. Fitur seperti multi-selection atau LSP tersedia secara bawaan, dan bantuan kuat yang menampilkan petunjuk aksi yang mungkin dilakukan saat input multi-langkah adalah kelebihan besar. Walaupun kadang masih perlu memakai vim murni, meski ada mapping di kepala yang sudah berubah, saya masih ingat perintah-perintah dasarnya jadi bisa cepat menyesuaikan.

    • Helix saat ini sedang menambahkan Scheme untuk konfigurasi yang dapat diprogram. Setelah fitur programmable masuk, tampaknya penyesuaian halus seperti repeat/transient map ala emacs, pelacakan per state, dan sebagainya akan dimungkinkan. Berkat revolusi LLMs, di dunia tempat orang bisa dengan mudah menyentuh bahasa ke-8 atau ke-9, saya rasa tool yang memungkinkan konfigurasi detail akan makin menonjol di pasar.

    • Key binding vim adalah satu-satunya alasan saya tidak memakai Helix. Kalau dukungan vim dimungkinkan lewat fork eksternal, saya jadi berpikir Helix resmi pun sebenarnya bisa mendukungnya jika mau; apakah mereka sengaja tidak melakukannya?

  • Saya sangat suka Helix; sangat direkomendasikan bagi orang yang tidak cocok dengan vim, atau yang menyukai konsep vim tetapi sulit beradaptasi dengannya. Dibanding keluarga vim yang sudah ada, Helix jauh lebih mudah dipelajari dan digunakan, dan konfigurasi bawaan yang disertakan juga sangat praktis.

    • Saya sangat suka Helix. Sejujurnya, kalau ia diberi sedikit kenyamanan GUI seperti penjelajah file berbasis mouse, saya rasa daya saingnya akan cukup kuat untuk menantang vscode.
  • Menyenangkan melihat editor dengan kemampuan sehebat ini tetap minimalis dan tidak berfokus pada fitur AI yang tidak perlu.

  • Selamat, saya harap Helix sukses, tetapi rasanya tidak cocok untuk saya. Saya menggunakan Neovim dan hampir semua yang saya inginkan bisa dilakukan di sana. Meski begitu, saya juga tidak sepenuhnya puas. Editor yang saya inginkan punya syarat seperti berikut:

    • codebase modern, ditulis ulang sepenuhnya
    • Key binding Vim; karena muscle memory ini sangat kuat, saya tetap bersikeras dengan gaya Vim, tidak goyah meski dibilang ada yang lebih baik, dan ingin perilakunya benar-benar seperti Vim
    • default yang bagus; Neovim punya terlalu banyak konfigurasi dan default-nya tidak selalu memuaskan
    • berbasis Treesitter, dan akan lebih bagus jika bisa berjalan di atas WASM (seperti Zed, Neovim modern)
    • sistem ekstensi dengan Lua; JS dan Scheme kurang cocok, idealnya sebatas modul WASM yang hanya mengekspos fungsi penting, dan saya ingin bahasa konfigurasi plugin yang tidak Turing-complete
    • TUI dan GUI opsional
    • LSP, DAP, snippet, autocomplete, UI pengujian/debug bawaan
    • tampilan filesystem bawaan seperti Oil.nvim
    • pencarian bawaan bergaya Telescope/FZF-lua
    • integrasi git, dan UI git bawaan seperti magit/neogit juga disambut
    • manipulasi AST berbasis Treesitter dan lompatan berlabel ala Flash.nvim bawaan
    • macro dan multi-cursor
    • integrasi AI berbasis kursor opsional (Chat UI)
    • Saya juga mengakui muscle memory Vim, tetapi saya merasa banyak orang terlalu terobsesi dengan hal ini. Saya sudah beberapa kali mengganti OS, editor, dan IDE; pada beberapa hari pertama setelah berganti memang terasa sangat tidak nyaman, membuat kesal, dan rasanya ingin jadi petani saja, tetapi setelah masa itu lewat, muscle memory baru selalu terbentuk. Menurut saya sayang sekali kalau harus melepaskan banyak kelebihan lain dari software hanya karena beberapa hari ketidaknyamanan.

    • Saya tidak begitu jelas bagian mana dari syarat yang disebut tadi yang tidak dipenuhi Helix. Di mata saya, Helix tampak memenuhi hampir semuanya.

    • Melihat daftar kebutuhannya, pada akhirnya yang diinginkan hanyalah Neovim dengan Lua diganti bahasa lain.

  • Saya menyukai Helix, selamat untuknya; tema bawaannya indah, konfigurasi default-nya juga luar biasa, setelah dipasang bisa langsung dipakai tanpa perlu pengaturan khusus. Memang belum sepenuhnya menggantikan IDE, tetapi saya sudah membuat alias vi dan juga menjadikan Helix sebagai $EDITOR. Saat butuh perbaikan cepat atau debugging dari CLI, saya akhirnya selalu memakai Helix.

  • Saya sangat suka dan punya kesan positif pada Helix, tetapi perilaku undo terasa kurang logis dan tidak natural, seperti membatalkan terlalu banyak hal sekaligus. Karena ini, saya bahkan pernah benar-benar kehilangan pekerjaan saya.

    • Ada dua hal yang terasa tidak nyaman terkait undo:

      • saat melakukan undo, jika hasil edit tidak terlihat di layar, memang akan melompat ke area itu, tetapi dengan penekanan tombol yang sama undo-nya juga langsung terjadi, sehingga membingungkan. Editor lain biasanya kalau kontennya tidak terlihat hanya melompat dulu dan belum membatalkan. Di Helix, setiap kali menekan sekali saya harus memastikan apakah ada sesuatu yang berubah.
      • undo dilakukan dalam blok yang terlalu besar. Bahkan kalau saya mengetik selama 30 menit dalam insert mode, semuanya di-undo sekaligus sampai pergantian mode. Save point harus didaftarkan secara manual, dan saya sempat mengikatnya ke tombol spasi agar undo bisa lebih rinci, tetapi ini menimbulkan efek samping seperti area seleksi yang hilang. Saya belum menemukan solusi yang rapi. Secara umum saya puas dengan Helix, tetapi sangat disayangkan bahwa kedalaman undo menuntut intervensi manual.
    • Undo dan "mengulang perintah terakhir" memang agak aneh, tetapi fitur lainnya bagus sehingga saya tetap memakai Helix sebagai editor utama. Tapi soal kehilangan pekerjaan tadi, saya jadi penasaran apakah redo-nya juga tidak bisa mengembalikannya.

  • Saya berharap ada "mode Kakoune" di Helix. Karena saya memakai Windows di kantor, Kakoune bukan pilihan yang ideal dan Helix terlihat sempurna, tetapi sulit melewati perbedaan key binding. Filosofi key binding Helix terasa lebih bertele-tele dibanding kesederhanaan Kakoune, dan itu mengganggu saya. Selain itu, konfigurasi key binding Helix juga tidak cukup kuat untuk benar-benar mengikuti Kakoune, dan itu disayangkan. Saya pindah ke Kakoune karena kecewa dengan inkonsistensi dan perilaku tidak logis vim, dan dalam hal ini Helix terasa seperti satu langkah mundur.

  • Istilah editor "post-modern" itu lucu. Rasanya seperti lelucon terbaik kedua setelah slogan Fish shell "shell untuk tahun 90-an". Dari videonya, kesan berbasis TUI cukup menonjol, dan sedikit terasa seperti Emacs TUI.

  • Kita benar-benar membutuhkan editor mirip vim dengan tingkat kelengkapan all-in-one seperti Helix. Distribusi Neovim menggabungkan tiap elemennya terlalu longgar sehingga selalu ada rasa sedikit canggung di suatu bagian. Saya juga merasa antarmuka Vim secara keseluruhan perlu didesain ulang, tetapi pendekatan modal berbasis aksi-objek tetap sebaiknya dipertahankan.

    • Evil-Helix tampaknya cocok untuk kebutuhan seperti ini. Sepertinya masih cukup kasar di beberapa sisi, tetapi layak dicoba https://github.com/usagi-flow/evil-helix

    • Saya penasaran apa yang dimaksud dengan pendekatan modal Action-Object.

  • Penjelasan rinci tentang penyorotan sintaks dan kemampuan pemahaman kode pada Helix dan editor serupa sangat mengesankan. Struktur dan fitur berbasis tree-sitter terasa sangat cocok dengan bahasa query, dan tampaknya bisa berkembang menjadi DSL query yang bersifat umum, melampaui pencarian simbol atau pencarian referensi; saya penasaran apakah fitur seperti ini sudah ada.