Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Textadept (orbitalquark.github.io)
181 points by giancarlostoro 23 hours ago | hide | past | favorite | 41 comments
 help



Glad to see this hit the front page again! I’ve been making some contributions lately and it introduced me to Lua. At its core it’s basically a very thin wrapper around the Scintilla editing component used by many open source editors. I’ve been working on getting some lower level APIs added for more control over the UI.

Mitchell is to be commended for maintaining the editor solo for so many years and keeping the LOC count really low (2000 lines of C, 4000 lines of Lua). If you’re willing to read the source it’s really easy to wrap your head around the whole thing, which can’t be said for Emacs or Vim. When I find the time I’ll finish my vi mode…


I've looked into TextAdept a few times. It appeals to me because it's got a standard Qt UI, is fast and lightweight and highly customizable with Lua. But I could never commit the time to fully customize it for daily use. Anyway, I'm committed to emacs. Other Scintilla-based editors with a similar feel (but missing the Lua angle) are Geany and Kate.

I downloaded it recently and found it to be quite useful for quick notes. And I can attest to its "fast" claim, using it on a heavily monitored corporate computer, with CrowStrike and what-not; curiously, and I may being hyperbolic here, but, I got the feeling that it was opening faster than MS Notepad, even with Copilot disabled.

The only thing missing is for me is the "save temporary file" behavior, as I have this habit of making a quick note, close to save up space, both in RAM and view, then later on, fire it up again. Will see if there's a Lua api for this later.


Sounds like you're looking for the scratch file extension [1]

[1]: https://github.com/orbitalquark/textadept-scratch


If I was malware, one of the first things I'd do is check that scratch files directory for secrets.

The default behavior of Notepad++ is a very real security risk. So many system admins and developers will throw passwords and API keys into there and just forget about it. The scratch files are all sitting there unencrypted and with easy to exploit permissions.

Alas, my first thought after seeing TextAdept was that it could serve as a more secure alternative to Notepad++.


Legitimately curious, how would you implement a “secure” scratch file functionality? Or is it just that the whole notion of scratch files is insecure?

The great thing about Textadept’s extensibility (and use of Lua specifically) is that it’s easy to pull in other Lua modules to add functionality. I don’t think it would be much work to modify the scratch file extension to prompt you for an encryption key on startup and then run the scratch files through libsodium (via luasodium) if you want to have your cake (scratch files) and eat it (some cursory level of security).


I have this view as well. After years of Notepad++, the last security problem made me want to switch, not because of just that, but that, overall, since the author has an active voice expressing his political views (which is totally fine), I have this unease feeling that it makes him, and his products, a notorious target.

Searching for alternatives, Textadept seemed to fill the gap between features, speed and simplicity.

The plugin mentioned by the parent is really easy to grasp and tailor to my needs, which would not be the case with Notepad++, well, not for me at least.


That is exactly it. Much appreciated.

> Unlimited split views.

Ok, well now I have to find out what hapoens if I get enough splits to make the width of each less than a pixel.


The splits functionality is one of its weaknesses right now IMO, but there are some improvements in the works.

Shameless plug: For anyone interested in new code editors, I'm working on a multi-platform one called ecode [1]. It's similar in spirit to Notepad++ and Textadept, and some of the newer ones like Zed. It tries to be a fresh take using modern tools like LSP and DAP. I started it after using Geany for many years but finding it lacking some essential features for my needs. Speed is a big focus and it has very fast startup time.

[1] https://github.com/SpartanJ/ecode/


This is a great project! Is there a place to look up the list of inbuilt lexers to understand the editor language support? Will forward to my (more hands-on devs) team members.

Lexing is handled by one of Mitchell's other projects, Scintillua. You'll find the source for all the built-in lexers in there. https://github.com/orbitalquark/scintillua

The documentation for Scintillua also gets pulled into Textadept's API documentation as a dependency, so the syntax is also explained there. It's basically a bridge between Scintilla's native lexing and LPeg.


I developed some plugins for Textadept some time ago. It's very lightweight and mature, but its dependence on different backends on different platforms introduced some frictions (QT vs. GTK etc.). We had a working Mermaid and image viewer plugin. It's really extensible. Never upstreamed them though.

It uses Lua LPEG lexers, which are extremely easy way to de develop syntax parsers/LSPs for new or unsupported languages.

Eventually our project moved to Pragtical, which has SDL as a cross-platform backend and uses the more modern meson as the build system, which made developing for it much easier.


Without any sarcasm, really, what is the value proposition in this one, that would make someone ditch Sublime Text for it?

For starters, Sublime Text is closed-source. A better parallel would be something like Neovim, which also is extensible with Lua. What draws me to Textadept over Neovim is that it's intentionally kept very small, which means it's very easy to understand and extend. Contrast with Vim and its massive manual. However, like Emacs, almost everything is fair game for customization. For example, I wanted minimap functionality, so I implemented it:

https://github.com/Fwirt/textadept-minimap

Textadept's biggest strength is also its biggest weakness: Scintilla allows for a lot of features that are nigh-impossible in the likes of Vim and Emacs due to their reliance on terminal behavior. However, Scintilla is not terribly well optimized and does not support GPU rendering, meaning that while there is very little bloat, Textadept can still chug in some edge cases. The most notable instance right now is large files with no line breaks (e.g. minified js libraries). Other Scintilla-based editors also suffer from this to varying degrees, although Notepad++ has some performance optimizations that seem to mostly mitigate it. Notepad++ is also Windows only and not as easily extensible.


Can't speak to ditching a preferred text editor for this one, as text editors are one of the most highly personal preferences in computing.

But as a guy that teaches kids about computing and system administration, having another option to demonstrate is excellent. For many things something like nano is fine, but for something a bit more robust? And is available for many platforms? And is small and self-contained? It's a great option. The Lua extensibility is also a bonus.

Teaching teenagers how to use vim or emacs is, not surprisingly, a bit of a chore.


I haven't spent much time with it at all, but my very early impressions are:

- (Fairly) low memory footprint

- Nice approach to buffers which seems to borrow from vi

- Apparent very high extensibility using lua


No sarcasm intended, but probably same reasons lots of people ditch sublime after trying it for a day;)

hm... whole industry embraced its approach to palette of tools, dunno what you mean really :D I still try to avoid it for more than 10 years now, but is on all my compatible boxes.

of course, knowledge of VIM is essential to anyone when doing CLIs.


I don't know anybody using Sublime:) what means "palette of tools"?

Check out Lite XL (also Lua-based)

[1] https://github.com/lite-xl/lite-xl

[2] https://lite-xl.com/


tried this one: failed to open any file in my home directory, as it contains non-latin characters...

There is also NotepadNext which is oddly similar, sans the Lua: https://github.com/dail8859/NotepadNext

Related. Others?

TextAdept - https://news.ycombinator.com/item?id=39571814 - March 2024 (31 comments)


What's the point of this comment?

dang is a mod—as far as I'm aware, they are the mod. When a previously-covered story crops up again, they typically add a comment like this with links to previous discussions, so you can easily see what was said before.

What GUI text editor widget does it use, or is it home-grown?

I don’t see it mentioned.


It uses Scintilla. In fact, at its core, it’s basically just a wrapper around the Scintilla message passing API. There’s a Lua script that parses the Scintilla header files to create the Lua tables that interface with the Scintilla library.

? Seems to support GTK, Qt and ncurses?

I saw that in the code on the github repo

looks like it uses scintilla

The features list mentions:

- Configurable key bindings, including language-specific keys, key chains, and key modes.

Does this include being able to make it feel like vi/vim?


From the web page: You can also group key bindings into modes such that while a mode is active, Textadept ignores all key bindings outside that mode until the mode is unset (e.g. Vim-style modal editing). The keys documentation describes all of this in more detail.

Always nice to see open source text editors, in my opinion. Textadept's codebase is a fine example.

Beautiful landing page

I recommend capitalizing TextAdept, as it took me way way way too long to figure out it wasn't text a dept (SMS which department????)

Nice. Im looking for such projects. Will give it a try

Do we still need text editors in the AI agents era?

/s


Now, everyone can vibe code their own text editor.

We would need it when this era ends.

/s




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: