46 comments
  • Fwirt2d

    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…

  • jasperry2d

    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.

  • rickstanley2d

    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.

    • bccdee2d

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

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

      • evanjrowley1d

        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++.

        • Fwirt1d

          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).

        • rickstanley1d

          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.

      • rickstanley1d

        That is exactly it. Much appreciated.

  • benrutter2d

    > 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.

    • Fwirt2d

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

  • textadept-thrwy1d

    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.

  • rationably2d

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

  • SpartanJ1d

    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/

  • najarvg1d

    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.

    • Fwirt1d

      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.

  • mjtk2d

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

  • sea-gold2d

    Check out Lite XL (also Lua-based)

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

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

    • omgtehlion1d

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

  • dang2d

    Related. Others?

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

  • WalterGR2d

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

    I don’t see it mentioned.

    • Fwirt2d

      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.

    • jrm42d

      ? Seems to support GTK, Qt and ncurses?

      • davidkwast2d

        I saw that in the code on the github repo

    • keithnz2d

      looks like it uses scintilla

    • 2d
      [deleted]
  • larodi2d

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

    • Fwirt1d

      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.

    • deltarholamda1d

      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.

    • oneeyedpigeon1d

      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

    • throwaway2901d

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

      • larodi1d

        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.

        • throwaway2901d

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

  • Tepix1d

    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?

    • sigzero1d

      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.

  • ramoz2d

    Beautiful landing page

  • eleventyseven2d

    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????)

  • Surac2d

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

  • Paddyz2d

    [dead]

  • throwaw122d

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

    /s

    • rossant2d

      Now, everyone can vibe code their own text editor.

    • kalterdev2d

      We would need it when this era ends.

      /s