Hi!
I’ve been coded some 1++ million lines of code in the past 40 years on 70+ programming languages on 6 different platforms including supercomputers.
This means that I completely understand how complex and difficult to build such a system like Anvil.
I code with the highest efficiency (and there’s a lot more to tell about how I do my
I found the following things are missing from editor:
-
code completion sometimes handy (e.g. when importing from forms) but it is rather weirdly insufficient for fast coding:
(a) autocompletion for (), [.] or {} DOESN’T work in general compared to what VSCode or Wing can do, (Btw, I always turns off () related stuff and similar autocompletions in any IDE because they never work properly. I never seen in any IDE that ever worked in this matter. Simply who construct has too few experience in coding and can’t imaging many different ways how code can be edited, especially occasionally or at high pace.)
(b) It is unable to find simple keywords like “return” or “True” or “False” and most of the Python keywords as far as I experienced.
(c) Whenever something is already typed in the beginning of a line, autocomplete never find anything except if it has = or ( or similar after the letter. E. g. typing “a jq” to trigger “jQuery” after it won’t trigger any keyword. (At the end of a line it finds the usual autocomplete entry or after a special symbol. It should always find it.)
(d) It adds () almost always when it is totally disturbing and shouldn’t be added at all. E. g. I add a function name as a callback and the idiot always adds “()” that I must remove. A few hundred times I had to remove it already. (On the other hand, let ME decide when I want to write what, not an idiot like a machine. An autocomplete functionality is ONLY as good as it HELPS not disturbs or messes up code all the time.) -
Pasting code never worked as far as aligning Pyhton code indents are concerned: E. g. if I write a “def …:” code, I may add another “def …:” code just below it and that next line shouldn’t be indented at all because that will be a def on the same indent level.
It occurred with if statements too.
Somehow, it never indented correctly my pasted code. (Well, incidentally, 5 % of cases.)
Again, I HAVE TO DECIDE what I write not a dumb machine. -
There is not way to navigate the main code structure: e.g. to see what def are in code or what functions are in JS code. (And classes and their main parts.)
Without is, I always must page up/down where I want to add a piece of code. Also showing in what def/function the caret current is located is a feature often to be used.
This shouldn’t be a too complex code structure / navigation facility because the code constructed - hopefully - won’t be too complex. -
Going back and forward to previous places (code edition points) in code is not supported. E.g. by pressing Alt+Left/Right.
-
The column number in code editor can’t be see anywhere.
-
More or less minor issue: Ctrl+C doesn’t work in the debug console. It won’t copy off the code experienced. Triggering local menu with mouse however works. (I rather don’t use it.)
-
I think an intelligent code editor (for JS, HTML and Python) must have at least 50 setting available to customize the editor.
One may be to add often used keywords manually to autocompletion to trick any improperly working autocomplete case with ease.
I would prefer the following simple solution: adding keywords to the top of the autocomplete list manually in settings. This may not work all the time but is in general more handy for me than what the smartest AI (code) autocompletion can ever do. (That’s a joke that AI could ever generate any code of real value for professional users. People who can’t code can eat it with ease. But I question the skill, knowledge and intentions of those who try to feed people of such BS. These “smart boy” are so smart that they never understood the fundamentals and are free to totally mislead inexpert people and create huge confusion.)
-
About the debugger autocomplete: it has not any value but always disturbing and never finds any existing variable names, but enforces some strange keyword.
-
What I miss from debugger is to hover over a variable name and see its value. Or to select a part of the code and evaluate it and show its value (as done e.g. in DevTools in Chrome).
I can understand that this may be pretty complex to implement. Yet, many debuggers has this feature and it is pretty much essential. -
Some additional issues: please, don’t create PEP or lint-related warnings without the ability to turn them off. I won’t ever follow but a few very crucial PEPs. Most of them are useless. Linting in general belong to the waste basket. (First, a human language[s] must be extremely well understood and used. Then someone need to completely understand the fundamentals of software. Then we may talk about what linting should do. Otherwise, it is just total waste of time. A programming language does what it does.)
-
Full keyboard navigation of the IDE (almost) all functionality is not supported. Including to customize any shortcut key / operation.
E. g. Ctrl+B is often “Set breakpoint” not to show any menu.
A shortcut key to start code in a new tab is missing to amongst approx. 50 other at least somewhat useful shortcut keys. -
I fairly often experienced that the last editing point in code isn’t recovered. Normally it works, the caret is at the last position where it was before closing the file but fairly often it is lost.
-
I had to relocate the Anvil logo from top left corner to elsewhere because I clicked. (But I wouldn’t click it if everything is accessible using shortcut keys.
-
Anyhow, I still have a solution: I still can patch the Anvil editor with my own editor on the website. It is a big complicated because I will need e.g. find a correctly working language server and an editor and place it over the current editor and link the two editors together: what I type in the customized (properly working) editor will be automatically put into the normal Anvil editor. (I can patch the debugger console too.)
It needs approx. 120-250 hrs work to correct what is missing (and can be remedied with approx. 20-40 hrs of work when someone has the source code for it and knows his/her stuff). (Btw, I always use e. g. JS components that I have the source code or I have to reverse engineer it because I never see any component I used often that had no error. Some only extremely seldom.) -
There is a way to create a GUI fast but that is rather a text editor with correct autocomplete. (Similar to a few helper that I use occasionally with Bash when it autocomplete almost all bash commands or system commands correctly.)
But in these case the “language” is strictly related to creating a GUI.
Eg.
cf form name
to create a form.
And then opens up a text editor where I enter
afp v:d b:“1px solid red” bg:#ccc os oh
to create a flow panel with visibility disable with a border and background provided and it automatically show and hide functions.
Entering these to create a flow panel on the form open is way much faster for a practice individual than messing with the toolbox. And in fact, I almost need only to provide what I actually need. It is totally concise and fast.
In this way, the split mode of the IDE can make sense. Currently, for me, it is not useful at all.
In fact, a similar approach could be used to define the database fast and probably the whole app.
Anvil then could be used really fast.
What I really miss from the database part is to add comment to fields and to the database table.
- I would mention a few policies to construct and editor.
- Anyone who creates such automations MUST be aware of the fact that how code can be edited especially very fast and those annoying totally useless automations are just to inhibit (in fact, completely stops) fast work. Over the years I several times damned top software developers (who designed different IDEs) to the deepest hell due to the fact that what they can comprehend to the slightest degree how code can be constructed in several different ways fast. These “top guys” knew nothing (!) about efficient coding at all. (No matter if they are in business for 20-30 years or more. They still had not the faintest idea about efficient coding.)
In 2-3 mins I can test out any editor pretty fully and tell if it is usable and to what degree. It more than a few years to experience out all available IDE to get their strengths and weaknesses. - IN AUTOMATIONS AUTOMATE ONLY WHAT IS ALWAYS DONE. If these estimates and assumption are wrong (short sided or incomplete), the end result will be useless and always annoying. In summary, I hardly found any editor that worked without customization.
(E. g. I would NEVER furnish any job to Power Automate or similar automation software. Amongst other things, their error handling is highly insufficient and you will know that there was an error only days, weeks or years after it had worked incorrectly. - But people are not even care about whether it worked correctly or didn’t. - You CAN’T fully control the whole sequence of activities in these cases. You don’t have fully control over what is done and what are the results in detail. So, that will never work, no matter how many billions of people may consider or are convinced otherwise. It just never worked and never will work if they oversimplify it.)
All estimates about how to code fast - and with comfort and precision - are wrong. (I surely checked 100+ editors and IDEs over the years.)
What I currently use is customized and works fairly well.
Well, this is the summary of the IDE related features of what I miss.
George
