Den mån 3 jan. 2022 18:34Bram Moolenaar <b...@moolenaar.net> skrev: > > > On 2022-01-03, Marvin Renich <m...@renich.org> wrote: > > > Don't bother with the > > > > > import MyClass from "myclass.vim" > > > import {someValue, MyClass} from "thatscript.vim" > > > > > > syntax, and only provide > > > > > > import "myclass.vim" > > > import "myclass.vim" as Other > > > > > > and require use of the namespace prefix: > > > > > > Other.MyClass > > > > > > The first case, without the "as" would default to the file name, with > > > leading directories and trailing ".vim" removed > > > > I do not think that using a filename as an identifier is a good idea. > > For instance, calling a script 1.vim would automatically make it > > non-importable (without "as"). > > Since a script needs to use "export" to be able to be imported, having > to use a nice name for the script is clearly needed. The only thing is > that it may be a long name to avoid name collisions, but then the "as > {name}" form can be used to shorten the name. > > > I personally find that using an imported name without a prefix (as it is > > currently possible) makes my code terse, and I think that in the limited > > scope a plugin that works well. But I understand that Vim9 scripts might > > have a broader use, such as generic libraries of functions that can be > > used by many scripts. In that context, stricter scoping rules, such as > > in Go, are likely a cleaner approach. > > > > How about always requiring a prefix, but allowing explicit namespace > > pollution? As in > > > > import "myclass.vim" as Other > > use Other # Makes Other.F() available as just F() > > Throwing everything from "Other" into the current namespace is going to > cause trouble, because someone may add an item to myclass.vim that > conflicts with what is in your script. Thus extending one script may > break another script, that is bad. > > A kind of an alias mechanism would work. Since most of the items are > going to be functions, might as well use a function reference: > > final Func = Other.Func >
This looks like a reasonable compromise. You get both a short identifier and self-documentation of where the function comes from. > That's an existing mechanism, thus keeps things simple. > > It also works for constants and read-only variables: > > const MAX = Other.MAX_VALUE > > This does not work for variables that can be set, but you should > probably use a setter function for that anyway. > > I'm just pointing out what valid pro's and con's are, I'm not suggesting > this means the alternate import syntax is best. > > -- > hundred-and-one symptoms of being an internet addict: > 208. Your goals for the future are obtaining a second Gbit connection > and upgrade your NAS to all SSD > > /// Bram Moolenaar -- b...@moolenaar.net -- http://www.Moolenaar.net > \\\ > /// > \\\ > \\\ sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ > /// > \\\ help me help AIDS victims -- http://ICCF-Holland.org > /// > > -- > -- > You received this message from the "vim_use" maillist. > Do not top-post! Type your reply below the text you are replying to. > For more information, visit http://www.vim.org/maillist.php > > --- > You received this message because you are subscribed to the Google Groups > "vim_use" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to vim_use+unsubscr...@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/vim_use/20220103173324.A57551C110C%40moolenaar.net > . > -- -- You received this message from the "vim_use" maillist. Do not top-post! Type your reply below the text you are replying to. For more information, visit http://www.vim.org/maillist.php --- You received this message because you are subscribed to the Google Groups "vim_use" group. To unsubscribe from this group and stop receiving emails from it, send an email to vim_use+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/vim_use/CADAJKhAK%3DrXACnG3h1jx3c_GLeBd9u18pM0%3DZ5p59tuvO1SKHg%40mail.gmail.com.