Znowu robi臋 w艂asny edytor 馃槅
Znowu robi臋 w艂asny edytor.
Ale tym razem edytor kodu. W sumie jeszcze takiego nie robi艂em. Tzn. chcia艂em kiedy艣 zrobi膰 w艂asne IDE, ale wykorzystuj膮c gotowy wid偶et edytora (u偶ywa艂em wtedy CodeMirror). Jednak teraz id臋 dalej i chc臋 zrobi膰 ca艂y edytor kodu, tak 偶eby mie膰 nad wszystkim kontrol臋.
Na razie my艣l臋, 偶e to tak zrobi臋 (to mo偶e si臋 zmieni膰 jeszcze):
- do trzymania tekstu w edytorze planuj臋 u偶y膰 struktury danych zwanej "piece table", mo偶e dodatkowo ka偶da linijka b臋dzie mia艂a osobn膮 tablic臋 kawa艂k贸w. Zobacz臋.
- Zaczn臋 to pisa膰 w JS u偶ywaj膮c HTML/CSS do wy艣wietlania kodu. Nie b臋dzie to docelowa technologia - planuj臋 p贸藕niej stopniowo to przepisywa膰 na Rust i wgpu. Docelowo b臋dzie to apka desktopowa, natywna (偶eby edytor szybko dzia艂a艂, bez jakich艣 Electron贸w), ale z mo偶liwo艣ci膮 odpalania jej r贸wnie偶 w przegl膮darce (bo lepsza promocja - wi臋cej os贸b wejdzie na stron臋 i potestuje sobie online, ni偶 b臋dzie 艣ci膮ga膰 ca艂y edytor i instalowa膰 u siebie).
- Do renderingu font贸w u偶yj臋 jakiej艣 biblioteki w Rust. Og贸lnie to jest rzecz, kt贸r膮 potrzebuj臋 ogarn膮膰 jeszcze. Poza samym renderingiem, b臋d臋 potrzebowa膰 przelicza膰 je z pikseli na pozycj臋 kursora itp.
- Sprawdza艂em jak zrobi膰 copy/paste i w przegl膮darce s膮 eventy do tego https://developer.mozilla.org/en-US/docs/Web/API/Element/paste_event Nie wiem natomiast jak to natywnie wygl膮da, integracja z systemem, i czy b臋d臋 m贸g艂 raz napisa膰 i odpala膰 na wszystkich systemach, czy mo偶e b臋d臋 potrzebowa艂 napisa膰 w Rust osobny kod do obs艂ugi copy/paste dla Maka, Windowsa i Linuksa osobno? Nie wiem. Temat do sprawdzenia. Jeszcze te偶 nie wiem, jak zrobi膰 w Rust integracj臋 z okienkami wyboru plik贸w (a chcia艂bym, 偶eby by艂y natywne - o ile reszt臋 GUI zrobi臋 customowo, to jednak okna wyboru plik贸w lepiej 偶eby by艂y zintegrowane z systemem
- Do pod艣wietlania sk艂adni/parsowania plik贸w rozwa偶am wykorzystanie tree-sittera, ale nie znam jego mo偶liwo艣ci i parametr贸w (ile b臋dzie zajmowa膰 bundle wasmowe u偶ywaj膮ce tree-sittera? Czy nie za du偶o? Zobacz臋 dopiero
No i na razie jestem na etapie ekscytacji, ale pewnej demotywacji, bo na razie b臋dzie grunt work - porobi膰 prototypy, posprawdza膰 pewne rzeczy, napisa膰 mas臋 boilerplate'u zwi膮zanego z renderingiem, zobaczy膰 co si臋 da zrobi膰 艂atwo, czego nie. Mo偶e zrezygnowa膰 z czego艣. Du偶o takiej rutynowej nudnej roboty, ale jednocze艣nie eksperymentalnej. Wi臋c b臋d臋 co艣 pisa膰 (ten etap eksperyment贸w mo偶e mi zaj膮膰 z kilka tygodni), a nie b臋d臋 mia艂 si臋 za bardzo czym pochwali膰 i z czego by膰 dumny jeszcze. Chocia偶 patrz膮c d艂ugofalowo - b臋dzie to fajne.
Pisz臋 edytor do Javy w Javie FX, chc臋 zaprojektowa膰 go tak aby by艂 modu艂owy. 呕eby 艂atwo by艂o dodawa膰 podpowiadanie sk艂adni w innych j臋zykach. Og贸lnie kopiuj臋 wszystko z Intellij i VSCode. One maj膮 najbardziej intuicyjne interfejsy.
OdpowiedzUsu艅