Nim versions 1.4.4 and 1.2.10
nim-lang.org
nim-lang.org
I know Nim and Rust have good VS Code plugins that do that to some extent but it is not something I can rely upon.
Maybe I'm just spoiled.
In my experience a lot of stuff that is auto-completed in java is boilerplate, stuff that I don't really need in python.
Just as one example (more fully elaborated here [1]), there is no pointer arithmetic by default, but one can write a tiny little template to add those operators and then invoke it in a local scope like:
...surrounding code...
ptrMath:
let address = base + offset
...surrounding code...
In this way many different & arbitrary "generally unsafe but also sometimes very convenient" constructs can still be used at an author's discretion, but be used in a way to make a reader (perhaps) pay better attention in a way that is more specific than some "generically 'unsafe'" block.This is, of course, just the tip of a meta-programming iceberg.
Arguably, this puts more pressure on code completion systems figuring out parameter names. So, I am not really disagreeing with @rob74 -- just adding some color related to this specific programming language.
I've always been a bit mystified that named parameter calling was not far more popular. Its use in programming languages seems quantitatively rare, but the upsides seem far more valuable than any downsides. Its use for either short or long options when calling commands has been a very strong de facto standard since, well, the dawn of commands (there are always exceptions, of course).
C and C++ development on VC++ on Windows and XEmacs on UNIX.
[1] https://github.com/bluenote10/NimData
[2] https://github.com/Vindaar/ggplotnim
Now I think we should demand autocompletion, and much more.
We should want both our languages to be smarter (type inference) so we can type less, and our tools are should know what we want to type.
And if you don't remember a lot of methods it means you might be out of your league and need to read the documentation and go through a tutorial to understand what you are doing.
Keyword, method and variable completion is ok, but overzealous completion encourage churning out code on "autopilot".
If you are not Torvalds it's better to write code good slowly than the opposite.
Lastly, at least the auto completion I used in intellij and visual studio is a peak into the documentation, it lists the full method signature, including all other methods, and opens the documentation on click.
If you want good auto-complete for less popular languages, you need to use an editor which is both popular enough and makes writing completers easy enough. From my experience, Emacs with company or auto-complete packages is just like that, and I have auto-completion set up for 10+ languages, but I'm sure there are other editors out there you could use.
Frameworks/simplifications are better left to the broader community that knows their own web-needs. It took many years for things like Django for Python or Rails for Ruby to appear. Even now, those are not part of the respective core languages, but external projects.
Anyway, it's open source. Instead of just wishing for more effort, adding your own effort might be even better! :-)
(By the way, Rust lacks union types too, and it makes the language absolutely insufferable. Simply adding, say, a print statement as the last expression in one branch of an if statement changes that branches type, producing an error due to A/B type mismatches There is often no valid reason, e.g. in the case your branch isn't assigned to an expression. Even if it were, the type of that expression should be a union type: problem solved. It's so basic and so obvious, that Algol 68 got it right back in the 60s. Why on earth would you add discriminated unions but _not_ unions? It makes no sense.)
(I'm going to go off on a second tangent now: can we please just dust off the cool ideas in that language, like references represented in the type system, rather than replicating C++'s god-awful value categories and even _more_ reference squiggles? Consider how C++'s awfully complex [] move semantics could be expressed in that language!]).
[] https://www.reddit.com/r/cpp/comments/ll2azr/move_simply_sut...
[1] https://nim-lang.org/1.4.4/manual.html#types
[2] https://nim-lang.org/1.4.4/manual.html#generics
[3] https://nim-lang.github.io/Nim/manual_experimental.html#conc...