Geany 2.0 – Flyweight IDE
geany.org
geany.org
I always found Geany a real gem among the regular crop of IDEs. (and I did spend quite some time exploring the synaptic app store back in the day)
The level of focus and simplicity is hardly seen among its peers.
Python has pycharm, Java has intelliJ, but ruby has just RubyMine which doesn't have a community edition and also isn't very good (at least when I tried it like 5-8 years ago).
Geany was nice because while it didn't have autocomplete for anything but just text symbols, it did have enough Project-related features that it matched how I liked to view my files as a directory tree rooted at a project dir. And the syntax highlighting was good and so on.
I ended up switching to vscode (well, vscodium, anyway) after I used vscode at work. Maybe I should check up on Geany again as of this big 2.0 release. I'd like to use an actually-free editor, though I settle for vscodium-style "free" when there's a big delta in productivity and features.
I have a great deal of sympathy for RubyMine (and shudder at working for the CLion team, whew) because Ruby isn't doing the IDE author any favors. Given:
https://gitlab.com/gitlab-org/gitlab/-/blob/v16.5.0-ee/lib/g...
- what types are client_email and private_key? they are whatever type they're called with lolol
- the symbol Google::Auth::ServiceAccountCredentials just materializes; was it required in some containing context and thus is in scope by _this_ required file? are those symbols visible in every context from one of the various Gemfile lines? a hard-core rubyist knows
- where did the symbol StringIO come from? well, from require 'stringio' obviously, which is on .. err, which line exactly? I guess that lends weight to the 'this file is obviously running as a child context of some other file' theory
I think half of it is the culture of Rubyists and half of it is "productivity hacks" of "if it runs, then it must be correct"
I also recognize that I'm very clearly a static typing snob, and firmly in the camp of "please import symbols you use," but that doesn't stop me from having a great deal of sympathy for anyone who has to implement an IDE for such a monkey-patch friendly language
Honestly I'm right with you. I was complaining in another ruby thread [0] the other day about how opaque ruby is in terms of context around what's actually happening and where things come from in a given block of code.
I'm about a year into working at a Rails shop and it's been a wild ride coming from a background of Swift/C++/Python. There's some cool syntax niceties in Ruby around writing functional blocks which I really like, but beyond that I find myself just endlessly frustrated with it as a tool. A lot of the senior folk at my org swear by ruby and know enough of Rails to have a good intuition about what's going on and how the system is organized, but for someone new to the whole enchilada it's so hard to find mental purchase in any given chunk of code.
> "if it runs, then it must be correct"
this has described the root of so many of the bugs I've had to chase down, holy crap.
I suppose it could load the interface first, then load the files, then parse and highlight them after the window is up, but don't feel like it would make a lot of difference until its done.
You may find projects useful. Can open the dozen files for one project, then close it, then open the next group from another project. Instead of every file you potentially might want to work on.
Following Geany updates fixed the issue, as far as I remember.
However I have seen mystery hangs in general, which can happen to almost anything.
I had a machine one time where a self-built version of midnight commander would always hang for several seconds on startup. Never saw that before or since. You can not say "mc takes something like 5-10 seconds to start up" even though it did on that machine that time.
I don't remember the details, but it turned out to be some combination of environment/context ie a particular terminal on a particular client sshing to a particular server where mc itself was, env variables, and/or setting in a mc config file. Might have been something to do with locale or TERM, or.. . I really have no idea anymore. But the hang was fixed by hunting down the config problem, and I've never seen it before that, nor since.
Was it of sufficient speed for your needs? It certainly takes longer to open than a couple of milliseconds. But I'm not aware of any GUI application that does.
Not that I would actually notice anyhow, given display latency of ~16ms at 60 Hz anyways :D
Previous threads:
Geany most common keyword auto completion - https://news.ycombinator.com/item?id=29257010 - Nov 2021 (1 comment)
Geany – A flyweight IDE - https://news.ycombinator.com/item?id=23524336 - June 2020 (113 comments)
Geany – Lightweight IDE for Linux and Windows - https://news.ycombinator.com/item?id=16557128 - March 2018 (92 comments)
Really? Quote from the second paragraph of the present news:
> Geany aims to be a fast and easy to use code and text editor (some may call it even IDE).
From other comments, it seems the link to the news has low accessibility for those who enable JS by default. So a direct link may help.
I mean, there's nothing bad about this particular feature of Geany... but, let's be honest, nothing special either.
As for Emacs, I either use Hexl mode or I used to use a modified version of this: https://github.com/mbriggs/emacs-pager but cannot find a source at the moment.
But, even if not used as a pager, Gigabyte file will work. That's still far from the breaking point. Not as snappy, and if you have a Python source file that's Gigabyte big you will have to disable Python mode, for example. But with logs / database dumps that's usually not a problem.
Also, what does it mean for the text editor to be fast? What speed do you measure?
For a alternative development environment example, the The Glasgow Haskell Compiler is 191.4 MiB by itself and it doesn't have a text editor.
For example Visual Studio Code is 89.6 MiB, but then you have electron25 as a dependency and that is 212.7 MiB extra.
As a somewhat larger example JetBrains bundle it's own customized Jetbrains Runtime JRE with it's 3.5 GiB IDEA IDE.
It's for sure no vim-minimal, but it's pretty lightweight as far as "IDEs" go.
But, even if you add a bunch of Emacs Lisp code, that will put you in the lower 3-digit number of Megabytes. Which would be equivalent to a hello-world Electron app after a lot of optimizations.
The notepad++ plugin ecosystem is a resource that no other software is likely to offer.
Also:
* instead of giving an error message when it lacks permission to read a file (like mousepad) it instead prompts for credentials and attempts to open the file.
* it lets you put the tabs on either side. Or use a panel with a list of open files instead of tabs ("split mode").
Featherpad does have a qt dependency, which may be a dealbreaker for some.
(I am already on KDE so the QT requirement is OK)
EDIT: Tested leafpad. I will keep it around but it doesn't have tabs which I quite like to have. :)
right-click -> Format -> Send selection to...
I hope the plug-in API hasn't changed too much, I have a tiny git plugin [1] I wrote that I hope still builds! Plug: if you think jumping to a known file quickly in a large repo sounds useful, maybe give it a try.
Edit: typo fixo.
I used to use geany a decade ago on my personal linux laptop. I use kate now for a notepad app, but Sublime for a programming editor, which is ok for its pls support. I'm going to buy a license for it on Monday.
and Kate has really quite good LSP support if you haven't tried it out, I was pleasantly surprised when I gave it a spin recently
Cool, I'll have to try out the kate lsp support.
Still, great editor, super fast, and the fact you can easily open a file in your currently open session (and that it supports the <filename>:<line number> convention) makes it super for checking out error message/warnings etc when compiling code that you don't have in an IDE...
Thus, if the maintainers did not think the patch is worth carrying the burden, I can understand.
And if the patch would be easy to carry and there was a demand for it, it would be trivial to run a fork, wouldn't it?
Nevertheless, I agree with you that I would not call it religious reasoning. When something is implemented in a way that does not follow existing patterns well, or forges a new path, it can make maintenance much more difficult. Given that the original author is rarely available to help with bugs and other maintenance for the new code, it is very reasonable in my opinion to reject changes that Don't conform well to existing patterns, or do things in a way that the future maintainers would not approve of.
A suggestion for people contributing to open source projects: try as much as possible to follow the existing patterns in the code base. It can be a pain to try to learn the patterns, particularly when you just want to add something simple, but it greatly increases the odds of acceptance, and added value in the future. If you want your code to be appreciated by the maintainers, it needs to look like code they would have written themselves. The best way to determine what that code would look like, is by emulating the patterns of the existing code.
I understand the intent, but this is a really bad take, and honestly an awful vision of what programming is. You write lines of code to solve problems, implement a vision, create a product, improve behaviors or fix bugs. If a line of code goes in this direction, it’s definitely an asset. If a line of code goes against this, it’s a liability.
With your vision, the best program is no program, which can be true when there’s no problem to solve. But the thing is we actually have problems to solve that require lines of code.
One often forgotten feature is snippets, where you can make custom macros for whatever language you're using.
Glad to see 2.0, it has a fix to something that was bugging me, having my conf files in git was problematic because session info was stored in the same file as general config.
And due to my limited understanding of IT, I have at times opened large SQL database to apply changes by hand :-(
But alas it is just syntax highlighting. Granted it does work pretty well and editor feels snappy, but no compile errors or completions. One can hope..
But doesn't show Unicode characters (that aren't English characters) automatically.
does 2.0 provide LSP intelligence? interested in trying sometime.
I generally use vim on a server but I find it somewhat limited as the main IDE. Of course, I probably just haven’t spent enough time configuring it
its configuration is different from vim if you want to customize, there are quite some learning curve for anything advanced, tried it but vim was working so well and I don't see the point to switch either, at least by far.
That is usually my approach, I always prefer open source, if I am using some closed source paid software when I am able to replace it, I donate the amount to the project
I am actually in the market for a IDE, after jetbrains took the rust open source plugin and said fuck all
That said, I already pay for an all products pack, so splitting out the IDE doesn't impact me financially at all.
CHANGE MY MIND
Open https://www.geany.org/ in a web browser like chrome or firefox