F-cked up with all IDE bloatware (for my purposes they are all overcomplicated and inconvenient), I came to an idea, that I'd probably better use a good editor than an IDE.
I DON'T need projects, I don't need build management (I'd prefer to build manually, from command line, and write build scripts myself), I don't need perspectives, workspaces, modules, etc.
I need (in importance descending order)
Nice GUI. (I am sorry to say this to be the first priority, but that's my taste, without it I feel uncomfortable and go unproductive). Please don't offer VIM (with no GUI) or [X]EMACS (with ugly GUI). No weird key scheme (like VIM has), no command modes (or optionally enablable and unimportant in the editor's usage), etc.
Manually-definable foldable regions (like in c#) (defined by special macroses, escaped by (any language's) comments) in any language. This is the most important requirement. If I find an editor meeting this point alongside with 1st one, I'd be happy already. In Windows, as far as I can remember, UltraEdit used to have this facility, but I am not sure (update: now I've installed UEx anc couldn't find such a feature there).
Simple, but swiss-clockwork-reliable refactoring, better to say sort of "multifile search-and-replace on steroids".
Syntax highlighting.
Corresponding open/close parentheses/braces/tags/quotes/etc. pairs highlighting.
Autocompletion. Probably simple, dictionary-based. Would be very nice if it could wok as an IDE, showing me class members after I put a dot and press Ctrl+Space, but I can afford lack of this feature if 1-4 features are there.
Code snippets / macrosses.
Explanation of point 2:
Those who are familiar with C# possibly know of #region/#endregion directives. I can place them anywhere in code, and the editor will offer an option to fold the block delimited into one line (with a title specified as the starting directive argument) and unfold it on demand (much as most of modern editors can do with language blocks, like function bodies for example, but I'd like to be able to do this with any particular block of code I want).
IMHO it could be pretty easily implemented (in editors, that have already implemented code folding for language blocks) for ANY language, no language syntax analysis required. A region defining directives syntax can be provided by an editor, escaping those directives by a language's comment line syntax.
For example, NetBeans IDE has this functionality for Java, it is well described here: http://wiki.netbeans.org/FaqCustomCodeFolds But in NetBeans this, unfortunately, works only with Java (and, maybe, some other) language, and doesn't work, for example, with Scala.
I mostly code Scala, but, as I wrote, I'd wish, and can't see any reasons why couldn't be it made available as a language-agnostic feature - if the line contains "(whatever) #region" - this is a foldable region start, if there's something after "#region" in the line - this is the region title, if the line contains "(whatever) #endregion" - this is the region finish. Just find a start and a corresponding finish and fold it. User can replace "(whatever)" with any particular's language comment sign.
UPDATE: answer found (just to summarize and share an answer in a more informative form, I'll include it here):
There vere many good suggestions (I am going to experiment with SciTE and try learning EMACS and VIM when I'll have a proper mood). Googling myself I've also find an interesting E-TextEditor (an open-source wxWidgets-based (means cross-platform, there were successful efforts to build and install it on Fedora 10 and on Ubuntu 9.04) Mac's TextMate clone for Windows).
But the answer for now, found thanks to fschmitt's suggestion, is Kate.
To get my point #2 (above, in the question) for Scala (easily adaptable for any other language the way I've explained), I had only to add 2 lines in "/usr/share/kde4/apps/katepart/syntax/scala.xml":
<RegExpr attribute="Decimal" context="#stay" String="//#region.*$" beginRegion="Region1"/>
<RegExpr attribute="Decimal" context="#stay" String="//#endregion.*$" endRegion="Region1"/>
I've taken the idea from C# syntax definition file, cs.xml. The only trick is that for this comment-aided hack to work these lines are to be placed before lines which define the language's comments.
And a pleasant surprise there: Kate does not depend on tons of KDE libraries as I used to suppose - in classic (Gnome) Ubuntu 10.10 "apt-get install kate" has only downloaded one humble (less than a MiB) package.

