Please don't take this as criticism of the AFL editor, also, I'm just one anecdotal voice. The devs I work with have very different workflows ranging from vi/emacs to notepad++ and everything in between.
Having said that, I don't care for most of the "advanced" features in IDEs but across all the editors I've used, I've come to rely on a core set to navigate codebases which I can typically find in all IDEs ( MS Visual studios, sublime text, atom, intellij variants like webstorm, pycharm, etc..., now vscode )
So to answer your questions:
w.r.t superior searching
this screenshot shows two ways of navigation:
Ctrl + Shift + F finds strings in all files.
Ctrl + Shift + P lets me go to a file ( if I happen to remember the file name of what I'm looking for which is surprisingly not often... )
So let's say I want a color, but I've forgotten what color I want, I can either
- Ctrl + Shift + P, enu... (enums.afl is first match) , Ctrl + F, colo... (found line xyz) then
Ctrl + [ to cursor back to where I was or Ctrl + ] to go forward to colors again to pick another color.
- Ctrl + Shift + F, enum_color_ ( finds the color I want )
( I lied, I didn't use snake case but rather stayed with AB's camel case for AB globals )
Now, colorGreen is already defined in AB, so I leave this as comment for VSCode to pick up via intellisense and it doesn't conflict with my afl scripts. This is a workaround for using VSCode instead of the nice intellisense support in AB AFL editor.
w.r.t switching files
Part of it is demonstrated above with Ctrl + Shift + P, but it's also about easily splitting the screen, and being able to find definitions of my own functions and be able to navigate back/forth cursor positions so I can look at my implementation then go back to continue coding.
w.r.t multi cursor, sublime text was the first editor where I really found the power of it, and I've never looked back, it's just something that I ( no one else around me that I know of ) depend on. So I've converted AB's constants, enums, statuses across to global variables in a couple of minutes using multi cursor support. They sit in enums/status/constants.afl
And so this just allows me to be really confident that I don't have any typos, make it easy to reference all status types, strongly type the action as enums so I don't get the numbers mixed up ( eg. was actionBacktest 4 or 5? to me, it's
actionBacktest = 4 in enums.afl ). It's repeating what is already in AB... I know... but yeah.
( I know I don't need all these statuses... when it becomes a performance issue, I'll consider not including it everywhere, until then, I'd rather have it and not think about it )
w.r.t cursor history navigation
I've honestly never thought about it. The main usage is when I navigate to one of these places and want to go back to my code quickly:
- go to definition ( of a lib function )
- go to a search result
- go to a file, find what I want
- ctrl + f and find something within the same file
And so the ability to find code only using the keyboard and jump between own code, searched code, library code is the main motivation.
Given that, I would not expect the back navigation to take the cursor to the previous character that I've typed, but rather to a trigger point defined by some list of things like the points above.
@Tomasz I do want to stress that I'm not expecting these quality of life features in AB's AFL editor itself, nor would I likely be persuaded to go back to the editor.
I think I'm a niche use case who can look after myself to get what I want. I'm also not wedded to VSCode... honestly did not expect to be back on a M$ product... but it actually works well and has the extensions I need for CMake, cpp, rust, elm, js, react , dbt/sql, terraform, markdown etc... all the stuff I use during the day so why not.
As a suggestion, perhaps looking into making a language server for AFL is a powerful way to tap into existing editor support for the major IDE vendors. Rather than adding IDE features to your editor, it's exposing your language to existing editors through a common interface and will widen your audience.
This is actually what @empottasch was asking about and what I would have used/contributed to had it existed as an open source project.
Sorry for the long post, hope it's been useful,