Gagasan Sublime CudaText

Sejak 2012, saya menggunakan editor yang dibuat oleh Alexey Torgashin untuk melihat dan memodifikasi hampir semua file teks, log, dan kode program dalam bahasa VFP / JS / Python / XML / HTML : pada awalnya itu adalah SynWrite , sekarang CudaText turunannya. Dia sengaja memilih editornya dari daftar yang diuji, yang termasuk, termasuk AkelPad , Notepad ++, dan Sublime Text . Responsif dari dukungan teknis ternyata sangat menentukan - Alexey menerima sejumlah besar keinginan / keluhan dari pengguna dan dengan cepat mengimplementasikannya. Saya akan jelaskan. Jumlah keinginan / keluhan hampir seragam selama bertahun-tahun, dan setelah beralih ke GitHub tiga tahun lalu, itu menjadi terukur dan diperkirakan oleh saya sebagai 400 keinginan / tahun dan 100 bug / tahun. Sangat mengherankan bahwa perluasan fungsionalitas atas permintaan pekerja tidak mempengaruhi keandalan editor secara keseluruhan. Dan ketika sumber daya pembangunan berkelanjutan SynWrite habis, CudaText muncul.


Saya melewati lantai ke Alexei.

Saya memiliki percakapan dengan Alexey tentang berbagai topik. Dia baru-baru ini mendaftar "kekurangan Sublime." Tampaknya menarik bagi saya, dan kami sepakat untuk menyajikan ide-ide ini pada Habré. Selanjutnya akan ada presentasi tesis dari Alexei dalam pengeditan saya.


Setelah menghabiskan beberapa tahun membuat program Anda, Anda melihat secara berbeda pada hasil pesaing Anda. Anda memperhatikan di dalamnya bukan hanya sifat-sifat baik (mereka sudah menerapkannya, atau Anda ingin menerapkannya), tetapi juga kerugiannya. Saya akan menunjukkan apa yang bisa ditingkatkan dalam Teks Sublime (selanjutnya Sublime ), jika kita membandingkannya dengan CudaText saya (selanjutnya Cuda ). Pada saat yang sama, saya menekankan bahwa editor saya muncul ketika Sublime sudah tersebar luas, banyak dari gagasannya yang mendasar bagi Cuda :


  • File Konfigurasi Teks
  • Pengaturan hamparan
  • Gerbong multi
  • Plugin Python
  • Palet semua tim

Luhur secara kaku memaksakan gaya kerja tim teks.
Sebagai contoh.


  • Tidak ada dialog untuk dikonfigurasikan - hanya ada file json (ada banyak sekali).
  • Tidak ada kontrol tambahan dalam dialog Cari Dengan File - sebagai gantinya, ada "bahasa" untuk mengisi bidang teks.

Gaya ini efisien, fleksibel dan dapat dikembangkan, tetapi membutuhkan pembelajaran terus menerus dari pengguna. Untuk pemula, ini menciptakan ambang masuk yang nyata.


Cuda berusaha menjadi alat yang lebih terjangkau. Ini dimungkinkan karena dibuat di lingkungan Lazarus , yang menyediakan arsenal GUI yang kaya dan portabilitas antara Win / Linux / Mac . Sebagai hasilnya, fleksibilitas pengaturan json di Cuda dikombinasikan dengan plug-in dialog, misalnya, Search By Files (ada gambaran umum ), editor pengaturan dan lainnya.
Saya akan mencoba untuk mengungkapkan beberapa ide tentang cara meningkatkan Sublime . Tentu saja, ini hanya pendapat pribadi saya.


Bilah alat


Tidak ada toolbar di Sublime . Jadi gaya tim teksnya terwujud. Tampaknya, diasumsikan bahwa tempat yang berguna untuk kode yang dapat diedit lebih penting. Anda dapat memanggil semua perintah baik dari menu, atau dari Palette dengan nama, atau melalui hotkey. Ada kelemahan yang jelas dari pendekatan ini - Anda harus tahu sebelumnya baik nama tim atau hotkey-nya. Namun keberadaan tim yang tepat dan namanya masih jauh dari jelas.
Toolbar yang dapat dikustomisasi, termasuk disconnectable, adalah salah satu detail yang menurunkan ambang penggunaan.


Cuda memiliki bilah alat kustom horizontal untuk menjalankan perintah dan bilah sisi vertikal untuk berpindah panel: Tree, Project, Console. API bertanggung jawab untuk mengatur bilah alat, yaitu dilakukan melalui plugin. Tombol baru dapat muncul di bilah sisi jika plugin menambahkan panel baru.


toolbar_sidebar


Menambahkan toolbar ke Sublime tidak akan melanggar teknologi sebelumnya.


Bilah status


Di Sublime, bilah status buruk.


sub_statusbar


(1) Konsol / Cari / Ganti / Dengan File Panel Beralih
(2) Posting
(3) Pengkodean
(4) Ketik EOL
(5) Pengaturan Tab
(6) Sintaks
Dari enam bidang ini, hanya dua (Pengkodean dan EOL) yang dapat disembunyikan melalui konfigurasi, dan di bidang Pesan, plugin dapat menambah / menghapus kunci = pasangan nilai. Anda tidak dapat menyembunyikan, mengatur ulang, atau mengonfigurasi bidang yang tersisa. Sangat aneh bahwa informasi penting tentang carriage (s) / seleksi (s) masuk ke dalam bidang Pesan, di mana ia dicampur dengan teks-teks dari tim.


Di Cuda, pengguna bisa di user.json untuk bidang bilah status menunjukkan urutan, lebar, dan perataannya:


 "ui_statusbar_panels": "caret,L,250|msg,L,0|lexer,L,70|tabsize,L,70" 

dan mengisi bidang caret (informasi tentang kereta / pilihan) dapat dikonfigurasikan secara terpisah menggunakan substitusi makro. Misalnya saja


 "ui_statusbar_no_sel": "r={y}/{count} c={xx}", "ui_statusbar_carets": "carets={carets} top/bot={y}/{y2}", "ui_statusbar_col_sel":"r={y}/{count} c={xx} s=[{sel} x {cols}]", 

Sebagai hasil dari pengaturan ini, Cuda akan ditampilkan di bilah status


  • Jika satu kereta: 1crt
  • Jika ada empat gerbong: 4crt
  • Jika pemilihan vertikal: vert

Cuda juga memungkinkan Anda mengonfigurasi berapa lama untuk menampilkan teks di bidang Pesan.


Pohon kode


Keinginan Sublime untuk menyajikan segala sesuatu dalam bentuk teks bisa dimengerti. Namun, penolakan panel Tree, yang ditemukan di semua IDE dan editor teks tingkat lanjut, sangat menyakitkan. Anda dapat menggunakan "Text Tree" yang ditempatkan di tab reguler (misalnya, dengan plugin Outline ), tetapi tidak terintegrasi dengan antarmuka Sublime , dan bukan pengganti yang lengkap.


Cuda memiliki panel Code tree untuk menampilkan elemen sintaksis dari file yang aktif: fungsi / kelas / bidang untuk bahasa program, tag / kunci untuk bahasa markup.


pohon


Integrasi:


  • Layar sinkron, yaitu, pohon menampilkan status kode segera setelah mengubahnya (dengan penundaan khusus).
  • Node pohon yang dipilih disinkronkan dengan posisi carriage dalam kode.
  • Node pohon digunakan untuk memilih blok, memindahkan carriage, dan operasi lainnya.

Selain itu, API Cuda memungkinkan Anda membuat panel baru dengan pohon dan mengisinya. Plugin Project Manager tidak hanya itu.


Folder dengan pengaturan dan plugin


Untuk pengguna yang tidak tenggelam dalam manual Sublime , situasi dengan menempatkan pengaturan / paket / plugin dalam folder terlihat membingungkan. Langkah pertama di dalam editor yang baru saja diinstal mengejutkan: dengan perintah menu Preferences -- Settings dua file terbuka, salah satunya (pengaturan default) dalam judul editor terlihat sebagai (dalam Win)
Sublime Text 3/Packages/Default/Preferences.sublime-settings
tetapi tidak ada file atau folder pada disk. Secara umum, logika dalam tipuan seperti itu ditebak. Pengaturan default harus ditransfer ke kode editor, dan mereka akan digandakan dalam beberapa file atau tidak - ini adalah kebijaksanaan pengembang. Luhur berpura-pura berada dalam file.


Di Cuda, pengaturan default juga dilindungi, tetapi ada file nyata di majelis
settings_default\default.json
di mana mereka digandakan dan dikomentari. Kehadiran file seperti itu menciptakan kenyamanan tidak hanya bagi pengguna, tetapi juga untuk plug-in. Sebagai contoh, editor pengaturan mengekstrak dari file ini daftar opsi itu sendiri, serta komentar pada mereka, dan markup untuk mendistribusikan opsi di pohon.


Masalah serupa terjadi dengan paket di Sublime - Anda mencarinya di Packages dan tidak menemukannya.


Meskipun Cuda tidak memiliki basis yang kuat untuk paket tambahan seperti Sublime , logika penempatan Cuda transparan. Misalnya, untuk plugin ada satu folder py di mana semuanya terlihat - standar dan pra-instal. Ada folder data/themes untuk data/themes , data/snippets untuk data/snippets , data/lexlib untuk lexers.


Kontrol paket


Situasi aneh dengan plugin Package Control . Di satu sisi, di luar kotak, Sublime hadir tanpa plugin ini. Di sisi lain, hampir tidak ada yang serius yang bisa dilakukan tanpanya - tanpa tambahan, editornya sangat sedikit. Bahkan menempatkan plugin di menu Preferences , dan tidak di Tools--Packages menunjukkan status khusus. Rupanya, beberapa "hak cipta" menghalangi kami untuk menyertakan plugin ini di majelis Sublim .


Cuda memiliki beberapa plugin (sekarang 10), termasuk Addons Manager , termasuk dalam distribusi.


Panel mengambang


Sublime memiliki tata letak jendela monolitik, yaitu, Konsol dan grup tab terletak bersama. Anda dapat menjalankan beberapa instance, tetapi masing-masing akan selalu memiliki tab dan, mungkin, sebuah Konsol.


Cuda memiliki pengaturan dan perintah untuk menampilkan Konsol di jendela terpisah. Ini memungkinkan Anda untuk meregangkannya dengan mudah tanpa memengaruhi ketinggian teks utama dan, misalnya, meletakkannya di monitor kedua. Selain itu, Anda dapat memisahkan panel dengan Pohon agar tidak membatasi lebar teks utama.
panel flow_


Ngomong-ngomong, pengguna Atom (atau VS Code ) ingin memiliki panel apung, tetapi pengembang menolak, dengan alasan pembatasan dalam Electron . Jadi ini bisa menjadi keunggulan Sublime dibandingkan pesaing langsung.


Plugin konfigurasi


Sublime memiliki lebih dari seratus pengaturan kernel (107 dalam versi 3.1.1) dan enam level tumpang tindih tambahan untuk mengakomodasi nilai yang diubah:
(1) Packages/Default/Preferences (<platform>).sublime-settings
(2) Packages/User/Preferences.sublime-settings
(3) <Project Settings>
(4) Packages/<syntax>/<syntax>.sublime-settings
(5) Packages/User/<syntax>.sublime-settings
(6) <Buffer Specific Settings>
Sangat mudah untuk membayangkan situasi di mana pelacakan manual murni bahkan bagian kecil dari 700 nilai (100 kunci pada 7 level) menjadi masalah.


Di Cuda, ada hampir 300 pengaturan kernel, dan ada tiga level tambahan untuk tumpang tindih:
(1) settings/user.json
(2) settings/lexer <syntax>.json
(3) <File Settings>
Masalahnya sama - terlalu banyak nilai (hingga 300 * 4) harus diperhitungkan. Untuk membantu pengguna, ada plug-in yang menampilkan semua pengaturan di semua level dalam sebuah tabel, menyederhanakan pencarian dan pengeditan.
ops-dlg
Perhatikan kolom Section - pengaturan ditugaskan ke simpul pohon. Ini memberikan penyortiran dan filter tambahan. Markup untuk membangun pohon ini termasuk dalam komentar pengaturan di file settings_default\default.json . Misalnya, komentar


 // [UI/Listbox]` 

akan menetapkan opsi yang mengikutinya ke simpul UI/Listbox . Seluruh pohon juga bisa dilihat
ops-tree


Untuk Sublime, dialog serupa dimungkinkan:


  • Nama dan tujuh tingkat tumpang tindih hanya delapan kolom di tabel.
  • Bentuk dan kontrol dapat diambil dari Tk atau pustaka Python GUI yang lebih maju.
  • Mengubah opsi dapat menyebabkan perubahan pada file dan memuatnya kembali saat disimpan.

Hal-hal kecil


Ada beberapa keluhan kecil, yang, tentu saja, tidak di tempat yang tepat di sini, tetapi di forum dukungan teknis Sublime . Biarkan mereka untuk kelengkapan.


  1. PgDn / PgUp tidak berfungsi dalam dialog daftar, misalnya, di Palet Perintah.
  2. Seringkali Anda perlu memasukkan beberapa karakter yang rumit , misalnya panah atau sebagian. Tidak ada alat yang cukup untuk melihat / memilih semua karakter Unicode. Di Cuda, alat semacam itu berbentuk dialog Char map .
    char-map
  3. Tidak ada cara untuk mengatur label pewarnaan individu. Ketika banyak file terbuka, seringkali ada keinginan untuk mewarnai label beberapa dari mereka. Di Cuda , perintah Set tab color... ada di menu lokal di atas pintasan. Warna yang dikonfigurasikan dengan cara ini disimpan dalam sesi.

Kesimpulan


Betapa mudahnya memberikan tips!


Namun pertimbangan di atas, menurut saya, bukan tanpa manfaat. Jika ada sesuatu yang berguna dalam versi Sublime Text berikutnya, tidak apa-apa. Ngomong-ngomong, mungkin seseorang akan menerjemahkan dan meneruskan ide ke Skinner (Jon Skinner).

Source: https://habr.com/ru/post/id427751/


All Articles