20 ms·
Hi everyone! I'm the lead developer of Zas Editor. I wanted to share some details about the editor you might be interested in. The text-storage data structure,
by Annili 4y ago
Hi everyone! I'm the lead developer of Zas Editor. I wanted to share some details about the editor you might be interested in.
The text-storage data structure, syntax highlighting and search features are written in Rust, and the UI is written in Swift since we wanted to create a native macOS experience. The Swift and Rust code talk to each other using C FFI, and no, that doesn’t take away the safety features of both languages.
We’re using the Rope data structure for text representation, and the tree-sitter parser for syntax highlighting and some smart features like file outline, local renaming and symbol search. All other language features are powered by LSP servers (rust-analzyer and gopls).
I’d be happy to answer any questions under this comment or anywhere else in this thread.
- andrem 4y agoThe payment process is a little tricky - it doesn't ask you for an email address and displays the license on the resulting page. If I don't record the license key manually I will need to get in touch with you to try and recover it. It would be better to get it emailed or get some prompt to record it etc.
- thamer 4y agoThis looks like a great start! There's one thing I couldn't find from this page, which I'm sure many developers would ask about: is there a Vim plugin, or Vim mode? And if not, are you planning to add one?
- wanderr 4y agoYou might want to put supported languages more front and center and not buried on a hard-to-find faq page. Might also want to allow folks to sign up to be alerted when their favorite language is supported, which will also let you gather data about where there's the most interest.
- Annili 4y agoThank you for the feedback. We made a change to the landing page, it should be more clear what languages are supported now. The first sentence now is "A new, capable, and fast code editor for Go and Rust, focused on both reading and writing code". A signup is missing, but you can follow us on Twitter @ZasEditor in the meanwhile.
- Aeolun 4y agoThis made it very clear to me that I shouldn’t get too enthusiastic yet ;) so I was spared the inevitable dissapointment. Thanks for that update!
- glenjamin 4y agoAre you planning to add support for other languages in future, or are those two your main focus?
- leaflets2 4y agoAnd it'd be nice to get notified if: It starts working on Linux, and it becomes open source or source-available. (Having to pay for it is fine :-) of course)
- raphlinus 4y agoFor the rope, are you using xi-rope, ropey, or did you roll your own? Any thoughts on how you made that decision? Glad to see stuff like this, it brings back memories.
- Annili 4y agoHi Raph. It amazing to see you here and thank you for all the xi crates. > Any thoughts on how you made that decision? The reason behind that is Zas Editor started out as a fork of Xi Editor! We're also using a fork of xi-rope, though we haven't made many changes to it. If you would like to discuss this more, DM me at twitter @ZasEditor
- mwcampbell 4y agoWhat do you think of the "no such thing as native GUI" section of the xi retrospective [1], particularly the surprisingly bad performance? [1]: https://raphlinus.github.io/xi/2020/06/27/xi-retrospective.html https://raphlinus.github.io/xi/2020/06/27/xi-retrospective.h...
- terhechte 4y agoFrom a purely macOS perspective, the major issue (apart from JSON being slow in Swift) was that there's no good native editor control for source code. There's NSTextView but it doesn't scale to large, syntax highlighted documents and lacks the required facilities that a source code editor needs. Hence, all proper third party text editors for macOS write their own source code control. I, personally, would contest that a native GUI is very much possible, but only for the chrome of the editor (e.g. searching, menus). This is also where native GUIS can shine. I'd wager that a proper source code control is such a domain specific requirement that each cross platform editor has to implement them whether they use native UI or not (maybe Qt has a fantastic one, I don't know)
- adamnemecek 4y agoHow long did it take you to build it?
- PaulDavisThe1st 4y ago> since we wanted to create a native macOS experience. Can you say more about this choice?
- Annili 4y agoDo you mean why we chose to make it native instead of making it cross-platform?
- PaulDavisThe1st 4y agoYes.
- obutora 4y agoSuper cool product!!
- pjmlp 4y agoIf the plan is to make a native UI for each platform, good approach. If it is to stay macOS only, also a possible decision not everything needs to be cross platform, why bring Rust into the picture?
- hajhatten 4y agoWhy would support for Rust be a problem here?
- pjmlp 4y agoTwo language development stack, with the complexity it entails, when the product is mac only.
- mindwok 4y agoThey mentioned elsewhere it started off as a fork of the Xi editor which is written in Rust. Xi separates the text-editor idea into backend and frontend, and Xi itself is primarily the Rust-based backend which concerns itself with making editing operations very fast, and then you can write a front-end client for whatever language/platform you want. In this case, they can use a fast Rust backend for multiple platforms (or just one) and then use Swift to make a nice, native front-end for MacOS and other native UI languages for other platforms if they wish.
- pjmlp 4y agoWhich is why I made the point on my comment about what the cross platform goals were, but the RIR folks are too quick to jump the gun in any kind of critic and only read half of it.
- irishsultan 4y agoBut you're making the exact opposite mistake, it was already written in Rust, you're asking them to Rewrite in Swift.
- fractallyte 4y agoOne typo: "dependancies" -> "dependencies"
- scrumper 4y agoThere's quite a few actually. In the hero image, "Documentation Exlporer"; "variable" needs to be pluralized in the "Automatic renaming" section; conversely "documentations" should be singular in the "Dependancies" (sic) bit you pointed out - this is probably non-native English usage as that pattern appears throughout; "different matches" not "difference matches" under multi find; I'm seeing some stretched images in Safari under the Minimap section; and finally when you download it the .dmg is called "Zzas editor"! Saying all this to be helpful, not snarky or nitty. It's early days and some missing polish is to be expected on the marketing side. I absolutely love that I this exists and that there's another native choice alongside Sublime (which is decently ok for Rust), I'm super excited to see it grow and once I figure out how to upgrade my Mac Pro to OSX 11 then I'll be trying it out. Congrats to the developer and I wish the team long success.
- newlisp 4y agoHow do you create a new file from Zas? seems like you can only open existing files
- coldtea 4y ago"Right click -> New file" in the sidebar
- artspb 4y agoIt's great to see more Go editors out there. All the best! A little feedback: it's spelled GoLand, not Goland.
- fmakunbound 4y agoHow do I extend it etc and what’s the extension language?
- terhechte 4y agoYou mentioned elsewhere that VIM bindings are upcoming. I think this product will be an insta-buy for me once there're (reasonably proper) vim bindings. Is there a newsletter or something to know once this feature has landed? Also as a hint, before you try to re-implement 30 years of VIM bindings and end up with something where everybody misses something, there's a great C library that could be of help: https://github.com/onivim/libvim https://github.com/onivim/libvim
- Annili 4y agoThanks for the hint. You can follow us on Twitter @ZasEditor for update announcements.
- albertzeyer 4y agoAs I understand the documentation, libvim would manage and manipulate the buffer, i.e. basically "own" the text. However, Zas (and most other editors) already handle that, and probably would want to keep it that way. Does this still work together with libvim then, that libvim operates on a shared custom data structure, whatever the editor (Zas) provides to represent the buffer?
- ghosty141 4y agothe curse of vim.
- johnsea 4y agoCan't you add some sort of impressum to the website where you give some information about you?
- mro_name 4y agolooks wonderful!
- notimetorelax 4y agoHi, the image in “Simplicity of Command Line + Expressivity of Graphical UIs.” section is not cropped leading to horizontal scroll on mobile.
- lewantmontreal 4y agoRust-analyzer destroys my Vscode experience in larger codebases (language features, formatting, version control becomes incredibly slow). I don’t know if there’s anything you can do about it but I hope it will be solved at some point.
- amarant 4y agoHi! This looks really cool, great work! It seems to be Mac-only for now, is Linux support on your roadmap at all?
- cute_boi 4y agoAs it is written in Swift, I highly doubt linux support is in their roadmap.
- Annili 4y agoThe more complex half is written in Rust. But you’re right, making it available for Linux isn’t something we plan to do soon
- ghosty141 4y agolook at xi editor, it doesn't "really" work out even if it's not a technical one but a human one. It's just too much work to maintain 3-4 GUI applications which have to be in sync with a server api.
- exikyut 4y agoThought experiment: Rust half gets open-sourced and semi-stable-API-ified... and then out of several dozen community attempts to build a Linux UI, one of them eventually wins after 5 years :) (and a couple of stragglers build up small followings besides). Realistically speaking, Linux (and Rust) UI is sufficiently incoherent at this point (heh shakes head "year of the desktop" for 3 decades at this point huh) I honestly don't think anything except "here's the code" would work because of the huge amount of keeping-up (unfortunately :/) necessary at this point.
- asimpletune 4y agoI really like that it’s a one time price. Thanks for your work!
- radiKal07 4y agoAny changes it will support more languages? I would love to use this for Kotlin.
- jamil7 4y ago+1 For Kotlin, Swift would be nice too.
- rob74 4y agoLooks really nice, and I wish you a lot of success with it - if you offer most of the features of VSCode and GoLand in a faster and more elegant way, you may be able to carve out a niche for your product, even if it's not cross platform like all the other major editors/IDEs - but since I'm not a macOS user, I'm not in the market for it.
- grncdr 4y agoThis looks really great, do you have any plans to support either arbitrary LSP servers, or integrate any more in a "blessed" way? I'd love to use this with Ruby & Solargraph for example.
- JaggerJo 4y agoReally cool project! Did you consider using ANTLR instead of tree-sitter parser? Don't know too much about tree-sitter but is seems to be a batteries included approach to building parsers?
- throwawaybner3 4y agoWhat editor were you using in the past? emacs, vim, vs?
- leephillips 4y agoMentioning that it’s Mac only, and that it’s not free software, would help keep plenty of people from wasting their time.
- klibertp 4y agoThank you - not sure about others, but I'd probably waste some time if not for your comment. I would like to say a bit more, but basically anything of value I could add to the discussion would start a flame war, so I'll have to abstain :(
- madduci 4y agoIt's 2022 and still shipping [insert platform here]-only binaries?
- bovermyer 4y agoIf you want performance, then yes. Shoo! Go back to Electron!
- dr-detroit 4y ago
- smoldesu 4y agoIt's still possible to ship cross-platform native software. People just pretend like it doesn't exist because it's too hard, and so I respond by pretending like their software doesn't exist.
- bovermyer 4y agoYou're making the assumption that everyone _wants_ to target as many platforms as possible, have the resources to do so, and are just too lazy to do so. In other words, you're assuming that people don't build for your platform because they're "bad." Why so cynical?
- hasukimchi 4y agoIn the preferences, the code analysis icon is missing. And auto-updater tells me that I have version 1.0 and there is a new version 1.0.0 . And if I try to update, there is an update error. It is also a bit confusing if you buy it, because you go to download and can then decide to download for trial or purchase. If you purchase, you just get a screen with the key. But no download. It is not nessasary clear, that the trial is also the main download. And after purchasing, there is no invoice.
- bovermyer 4y agoWhen you say there's no invoice, do you mean there's no email at all with license key/etc. to confirm your purchase, or are you specifically referring to an invoice email?
- blipmusic 4y agoThere’s no email or anywhere to fill it in the first place during/after purchase, just a screen with the license code. An invoice or purchase confirmation mail would have been nice… I do hope there’s a way to retrieve the license for clumsy people like me. :)
- btat1-2 4y ago"Why should I use Zas Editor instead of free XXXX?". I don't know, I have no Mac.
- from_endor 4y agoCongratulations on the launch. There is a demand for a native, fast IDE. I gave Zas a quick spin in our fairly large Go codebase: Pros: - really fast - clean, fresh, minimal UI Cons: - Maybe I did something wrong, but one thing I do almost every day is rename something. Right-click a function name (or press F2), pick a better name, done. Zas seems to only rename the occurrences in the current file vs. the declaration. - The "Open file" suggestions are not great. If I search for a file `moo.go`, one of the first suggestions is `some/folder/moo/some/more/other.go` and then further down the list somewhere it shows `moo.go` - CMD + click on a symbol should jump to the declaration (or usages) EDIT: we use GoLand today. Functionality-wise it is great (also builtin TypeScript/JS support is a real plus) but it is slow and hungry.
- prime31 4y agoAny plans to support other languages, specifically Zig? It would be nice if it even just supported wiring in any LSP like Sublime Text LSP and Neovim LSP do.
- efreak 4y agoYou may want to make it more obvious this is a native Mac app, not cross-platform. I ignored the window decorations and shortcuts (like I usually do), as those are commonly shown under the assumption of the developer's preferred OS; there's no definitive statement that this is a Mac-only app until the very bottom.